mazaid-error

0.3.1 • Public • Published

mazaid-error

Code Climate Test Coverage Build Status

checkable errors

install

npm i --save mazaid-error

error format

{
    message: '<error message>',
    code: '<error code, for example: notFound, invalidData>',
    entity: '<your service entity, for example: task, project, list ...>',
    list: [
        // human friendly error list in your custom format
        'title field required',
        // OR as object
        {
            message: 'field required',
            path: 'task.title'
        }
        
    ]
}

usage

throw errors

var error = require('mazaid-error');
 
// ...
 
throw error('my error message', 'myErrorCode')
        .setEntity('myEntity') // task - for example
        .setList([
            "some field required",
            "..."
        ]);
 
// ...
 
 

catch, check and process errors

 
try {
    // some your code throw mazaid-error, or .catch promise or ...
} catch (e) {
 
    if (!e.checkable) {
        // error not mazaid-error
        // log error
        return;
    }
 
    e.checkChain(function (error) { /* default error callback */})
        // create check chain for entity == myEntity
        .ifEntity("myEntity")
        // if entity == 'myEntity' && code == 'myEntityErrorCode1'
        .ifCode('myEntityErrorCode1', function (error) { /* process error */ })
        .ifCode('myEntityErrorCode2', function (error) { /* process error */ })
        .end()
        .ifCode('someErrorCodeWithoutEntity', function (error) { /* process error */ })
        .check();
}
 

parse and get error in your service clients

clients can get mazaid-errors and use check chains

For example, in http request

 
var request = require('superagent');
 
var parseError = require('mazaid-error/parse');
 
request.get('/myservice/method').query({q: 'asdasd'})
    .end(function (err, res) {
 
        if (err) {
 
            var mazaidError = parseError(err, 'response.body.error');
 
            if (!mazaidError) {
                logger.fatal(err);
                // send 500 Server Error
                return;
            }
 
            mazaidError.checkChain(/* default error callback ... */)
                .ifEntity('myEntity')
                .ifCode('myEntityCode1,' function(error) {/* ... */}))
                .end()
                .check();
 
            return;
        }
    })
 

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i mazaid-error

Weekly Downloads

2

Version

0.3.1

License

MIT

Last publish

Collaborators

  • alekzonder