1.0.4 • Published 2 years ago

op-result v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

ts-result

A lib to encapsute operation result and manage logs.

Logs

process.env.LOG_LEVEL = 'info' | 'debug' | 'none'

Case LOG_LEVEL is defined as info all Result state will print basic information on terminal

Case LOG_LEVEL is defined as debug all Result state will show result state and file name execution


How it works?

First you need to have an operation like example below

import { Payload, Ok, Fail, Error } from 'op-result';

class MyOperation {

    // operation
    execute(value: number): Payload<string, Error> {

        // success result
        if(value % 2 === 0) return Ok('success');

        // failure result
        return Fail({ message: 'invalid value' });
    }
}

const myOp = new MyOperation();

const result = myOp.execute(10);

// ok state
console.log(result.isOk());

> true

// data state
console.log(result.data());

> "success"

// error state
console.log(result.error());

> null

Hooks

Lets see an example to signup

import { Payload, Ok, Fail, Error } from 'op-result';

class SignUp {

    execute(data: Auth): Payload<User, Error> {
        
        // create user instance
        const user = User.create(data);

        // check user instance
        if(user.isFail()) return Fail({ message: 'oops' });

        // success state
        return Ok(user.data());

    }
}

const mailer = new Mailer();

const auth = new SignUp();

const result = auth.execute({ name, email, password });

// This will be executed only case result is Ok
// sendEmail function will receive Auth arg data
result.on('OK').execute(mailer.sendEmail);

// This will be executed only case result is Fail
// console.log function will receive error state
result.on('FAIL').execute(console.log);

Combine

You can check many results state with combine

import { Ok, Fail, Combine } from 'op-result';

const resultsA = [ Ok(), Ok(), Ok() ];

// check many results 
const resA = Combine(resultsA);

const isOkA = resA.isOk();

console.log(isOkA);

> true


const resultsB = [ Ok(), Fail(), Ok() ];

// check many results 
const resB = Combine(resultsB);

const isOkB = resB.isOk();

console.log(isOkB);

> false