@thadeu/ts-utility
v1.0.13
Published
A simple and lightweight way to create a safe result in Typescript
Downloads
25
Maintainers
Readme
Motivation
Because in sometimes, we need to use safe conditions with try/catch, but we not want use blocks
Documentation
Version | Documentation ---------- | ------------- unreleased | https://github.com/thadeu/ts-utility/blob/main/README.md
Table of Contents
Compatibility
| kind | branch | javascript | | -------------- | ------- | ------------------ | | unreleased | main | >= 14.x, <= 21.x |
Installation
Use Yarn
yarn add @thadeu/ts-utility
or use NPM
npm i @thadeu/ts-utility
or use PNPM
pnpm add @thadeu/ts-utility
or use Github directly
pnpm add github:thadeu/ts-utility
and then, enjoy!
For example:
Imagine that you have an class like this:
class User {
static async all() {
return [{ id: 1 }, { id: 2 }]
}
static async throwed() {
throw new Error(`User not found`)
}
}
Now, look it.
import { Try } from '@thadeu/ts-utility'
When success, you receive promise resolved.
let tryOptions = {
onError: error => {
// console.log(error)
return []
},
}
let result = await Try(User.all, tryOptions)
// or
let result = await Try(_ => User.all(), tryOptions)
// result => [{ id: 1 }, { id: 2 }]
When fail you receive onError callback OR null
let tryOptions = {
onError: async error => {
// console.log(error)
return []
},
}
let result = await Try(User.throwed, tryOptions)
// result => []
let tryOptions = {
onError: async error => {
// console.log(error)
return []
},
}
let result = await Try(async () => User.throwed(params), tryOptions)
// result => []
Others examples.
let counter = 0
let tryOptions = { max: 3, onError: {}, onRetry: (count, isReached) => (counter = count) }
await Try(_ => JSON.parse('{'), tryOptions)
expect(counter).toEqual(3)
let counter = 0
let tryOptions = {
max: 3,
onError: {},
onRetry: count => (counter = count)
}
let result = await Try(_ => JSON.parse('{ "user": "1" }'), tryOptions)
expect(counter).toEqual(0)
expect(result).toEqual({ user: '1' })
Using exponential parameter
let result = await Try(_ => JSON.parse('{'), {
onError: {},
max: 3,
exponential: 2
})
expect(result).toEqual({})
Configuration
Without configuration, because we use only JavaScript. ❤️
Usage Try
Development
After checking out the repo, install dependencies. Then, run test
to run the tests.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/thadeu/ts-utility. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The gem is available as open source under the terms of the MIT License.