1.0.0 ā€¢ Published 5 years ago

lefu v1.0.0

Weekly downloads
6
License
-
Repository
github
Last release
5 years ago

lefu Build Status

Shit happens.

Always.

In every single line of code.

Handling errors is an hassle in JavaScript, because you do not have multiple catch block for typed errors.

This is a function way to handle try/catch constructs functionally.

Install

# npm
npm i lefu

# yarn
yarn add lefu

Usage

You can use this library as a full try/catch construct

import { Try, Catch } from 'lefu';

const result = Try(
    () => 1 + a,
    Catch.Error(() => 'OMG, an error'),
    Catch.TypeError(() => 'Darn! A type error'),
    Catch.CustomError(() => 'šŸ¦„'),
    // ... all other errors
  );

console.log(result) // 'Darn! A type error'

you can also try/catch async functions

import { TryAsync, Catch } from 'lefu';

const result = Try(
    async () => {
      throw new TypeError('šŸ’„šŸ’„šŸ›šŸ’„šŸ’„');
    },
    Catch.Error(() => 'OMG, an error'),
    Catch.TypeError(() => 'Darn! A type error'),
    Catch.CustomError(() => 'šŸ¦„'),
    // ... all other errors
  );

console.log(result) // Promise('Darn! A type error')

You can use this library for executing a function when an error is caught

import { handlers } from 'lefu';

try {
  1 + a
} catch (error) {
  handlers.Error(error)(() => console.log('it is an Error'));
  handlers.TypeError(error)(() => console.log('it is a TypeError'));
  handlers.MyCustomError(error)(() => console.log('it is a user defined error'));
}

// output:
//  it is a TypeError

Or you can use it to check if an error is of a certain type

import { match } from 'lefu';

try {
  1 + a
} catch (error) {
  console.log(match(error).Error); // false
  console.log(match(error).TypeError); // true
  console.log(match(error).MyCustomError); // false
}

try {
  throw { name: 'MyCustomError', message: 'I broke it' };
} catch (error) {
  console.log(match(error).Error); // false
  console.log(match(error).TypeError); // false
  console.log(match(error).MyCustomError); // true
}

// output:
//  it is a TypeError

Contributing

Read the contributing guidelines

Licence

Read the licence

šŸ’©šŸ’©šŸ’©