cero

Base error class which helps you better organize and track your errors.

Usage no npm install needed!

<script type="module">
  import cero from 'https://cdn.skypack.dev/cero';
</script>

README

cero

npm license github-issues travis-status

Base error class which helps you better organize and track your errors.

nodei.co

Features

  • Predefined error codes for better error structuring and reusing common errors,
  • Custom error message formatters,
  • Scoped errors.

Install

npm i cero

Usage

import createErrorFactory from 'cero';

// Create custom errors fabric, which will alows us to create scoped errors.
// If you describe all your module errors like this, it will be easy to be consistent
// and change error messages and their formats from single place.
const myErrorFactory = createErrorFactory('MyProjectError', {
  NOT_FOUND: 'Object "{name}" not found!',

  HTTP_ERROR(data) {
    const msg = data.msg + (data.reason ? ''data.reason : '');

    return '[' + data.code + ']  HTTP Error — ' + msg;
  }
});


// Now we can create scopped error.
// Scope might be your module name or something else.
const MyModuleError = myErrorFactory('awesome-module');


// And now we can throw an error with specified code.
try {
  throw new MyModuleError('NOT_FOUND', { name: 'Blog post about cero' });
} catch (e) {
  console.error(e); //eslint-disable-line

  // { [MyProjectError: #awesome-module [NOT_FOUND] — Object "Blog post about cero" not found!]
  // name: 'MyProjectError',
  // code: 'NOT_FOUND',
  // message: '#awesome-module [NOT_FOUND] — Object "Blog post about cero" not found!' }
}


// Or with more complex formatter
try {
  throw new MyModuleError('HTTP_ERROR', {
    msg: 'Blog post about cero doesnt`t exist yet',
    reason: 'I haven`t written it yet!'
  });
} catch (e) {
  console.error(e); //eslint-disable-line

  // { [MyProjectError: #awesome-module [HTTP_ERROR] — [undefined] HTTP Error — Blog post about cero doesnt`t exist yet — I haven`t written it // yet!]
  // name: 'MyProjectError',
  // code: 'HTTP_ERROR',
  // message: '#awesome-module [HTTP_ERROR] — [undefined] HTTP Error — Blog post about cero doesnt`t exists yet — I haven`t written it yet!' }
}

More usage

See: Examples. See: Tests.

Dependencies

Package Version Dev
babel ^5.8.5
babel-eslint ^4.0.0
blue-tape ^0.1.10
coveralls ^2.11.3
eslint ^0.24.1
faucet 0.0.1
isparta ^3.0.3
node-readme ^0.1.8
nsp ^1.0.3
pre-commit ^1.0.10

Author

Stanislav Sysoev d4rkr00t@gmail.com http://github.com/d4rkr00t

License