with-error

0.1.5 • Public • Published

with-error

Either monad for work with exceptions in JavaScript. Go-style.

NPM version Build Status Dependency Status Coverage percentage

Why?

Because, exceptions may be the way to callback-hell.

try{
    func();
}catch(e){
    try{
        func2()
    }catch(e){
        // HELL
    }    
}

Install

npm install with-error --save

or

yarn add with-error

Usage

import withError from "with-error";
 
// Non-promisify successfully result
const { result } = withError(() => "result1");
 
console.log(result.toUpperCase()); // RESULT1
 
// Non-promisify failure result
const { error, result } = withError((): string => { throw new Error("Error1"); } );
 
if (error) {
    console.log(error.toString()); // Error1
}
 
// Promisify successfully result
const { result } = await withError(() => Promise.resolve("result1"));
 
console.log(result.toUpperCase()); // RESULT1
 
// Non-promisify failure result
 
const { result, error } = await withError(() => Promise.reject(new Error("Error1")));
if (error) {
        console.log(error.toString()); // Error1
}
 
// Also supported array-like response
 
const [users, error] = await withError(() => Promise.resolve(["user1"]));
 

API

// Response
type IWithErrorReturn<R> = [
    R,
    any
] & { error: any, result: R };
// non-promisify with-error
interface IWithError {
    <R>(cb: () => R): IWithErrorReturn<R>;
}
// promisify with-error
interface IWithError {
    <R>(cb: () => Promise<R>): Promise<IWithErrorReturn<R>>;
}

Test

npm install
npm test

Readme

Keywords

none

Package Sidebar

Install

npm i with-error

Weekly Downloads

1

Version

0.1.5

License

ISC

Unpacked Size

10.4 kB

Total Files

13

Last publish

Collaborators

  • arvitaly