mazaid-error

checkable errors

Usage no npm install needed!

<script type="module">
  import mazaidError from 'https://cdn.skypack.dev/mazaid-error';
</script>

README

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