@thadeu/ts-utility
TypeScript icon, indicating that this package has built-in type declarations

1.0.11 • Public • Published

🖇️ ts-utility

A simple and lightweight way to create a safe result in Typescript

Build Status GitHub package.json version (subfolder of monorepo) GitHub repo size

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

⬆️  Back to Top

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.

Package Sidebar

Install

npm i @thadeu/ts-utility

Weekly Downloads

14

Version

1.0.11

License

MIT

Unpacked Size

40.1 kB

Total Files

14

Last publish

Collaborators

  • thadeu