Catalog npm
Back to packageRELEASE DETAILS

1.7.0

npm

@0devs/error

custom typescript and javascript errors with codes and causes for node and browsers

error
Published6 May 2021
Direct dependencies14
Transitive dependenciesNot calculated

README

Current package documentation

@0devs/error

custom typescript and javascript errors with codes and causes for node and browsers (without any dependencies)

install

npm i @0devs/error

usage

  1. extend your error class from @0devs/error
// typescript - see javascript examples below
import Zerror from "@0devs/error";

class MyError extends Zerror {
  // this required for typescript types and autocomplete
  public static CODES = {
    BAD_REQUEST: "bad request: %status%"
  };
}

// this required for correctly set codes in error class
MyError.setCodes(MyError.CODES);
  1. you can create errors in several ways:
// pass only error code
new MyError(MyError.CODES.BAD_REQUEST);
/* output:
    MyError: BAD_REQUEST
    bad request: %status%
*/

// pass error code and message
new MyError(MyError.CODES.BAD_REQUEST, "really bad request");
/* output:
     MyError: BAD_REQUEST
     really bad request
*/

// pass error code and cause error
new MyError(MyError.CODES.BAD_REQUEST, new Error("shit happens"));
/* output:
     MyError: BAD_REQUEST
     bad request: %status%
         <error stack trace>

         Error: shit happens
           <cause error stack trace>
*/

// pass any of options as object
new MyError({
  code: MyError.CODES.BAD_REQUEST,
  message: "really bad request",
  cause: new Error("shit happens"),
});
/* output:
     MyError: BAD_REQUEST
     really bad request
     ...
        Error: shit happens
*/

// pass data if you need replace placeholder in error message
//
// MyError.CODES.BAD_REQUEST below has placeholder in message
//     BAD_REQUEST: "bad request: %status%"
new MyError({
  code: MyError.CODES.BAD_REQUEST,
  data: {
    status: 500,
  }
});
/* output:
    MyError: BAD_REQUEST
    bad request: 500
 */

// you can use placeholders in custom error message
new MyError({
  code: MyError.CODES.BAD_REQUEST,
  message: "shit happens on %method% with status: %status%",
  data: {
    method: "GET",
    status: 500,
  },
}
/* output:
    MyError: BAD_REQUEST
    shit happens on GET with status: 500
 */

usage - javascript

const Zerror = require('@0devs/error');

class MyError extends Zerror {}

MyError.CODES = {
    BAD_REQUEST: 'bad request',
};

const causeErr = new Error('shit happens');
const err = new MyError(MyError.CODES.BAD_REQUEST, causeErr);

console.log(err.toString());

got rich output:

MyError: BAD_REQUEST
    at Object.<anonymous> (/private/tmp/test/test.js:10:13)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

    Error: shit happens
        at Object.<anonymous> (/private/tmp/test/test.js:9:18)
        at Module._compile (module.js:635:30)
        at Object.Module._extensions..js (module.js:646:10)
        at Module.load (module.js:554:32)
        at tryModuleLoad (module.js:497:12)
        at Function.Module._load (module.js:489:3)
        at Function.Module.runMain (module.js:676:10)
        at startup (bootstrap_node.js:187:16)
        at bootstrap_node.js:608:3

usage - typescript

import Zerror from "@0devs/error";

class MyError extends Zerror {
  // this required for typescript types and autocomplete
  public static CODES = {
    BAD_REQUEST: "bad request"
  };
}

// this required for correctly set codes in error object
MyError.setCodes(MyError.CODES);

// autocomplete works for codes
// MyError.CODES.BAD_

ready for bunyan stdSerializer.err

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
@0devs/package
Environment
{
  "local_name": "@0devs/package",
  "alias": false,
  "peer_metadata": null
}
^0.18.1development
@types/jest
Environment
{
  "local_name": "@types/jest",
  "alias": false,
  "peer_metadata": null
}
^26.0.23development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^15.0.2development
@typescript-eslint/eslint-plugin
Environment
{
  "local_name": "@typescript-eslint/eslint-plugin",
  "alias": false,
  "peer_metadata": null
}
^4.22.1development
@typescript-eslint/parser
Environment
{
  "local_name": "@typescript-eslint/parser",
  "alias": false,
  "peer_metadata": null
}
^4.22.1development
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^7.25.0development
eslint-config-airbnb-base
Environment
{
  "local_name": "eslint-config-airbnb-base",
  "alias": false,
  "peer_metadata": null
}
^14.2.1development
eslint-plugin-import
Environment
{
  "local_name": "eslint-plugin-import",
  "alias": false,
  "peer_metadata": null
}
^2.22.1development
eslint-plugin-jest
Environment
{
  "local_name": "eslint-plugin-jest",
  "alias": false,
  "peer_metadata": null
}
^24.3.6development
eslint-plugin-security
Environment
{
  "local_name": "eslint-plugin-security",
  "alias": false,
  "peer_metadata": null
}
^1.4.0development
eslint-plugin-sonarjs
Environment
{
  "local_name": "eslint-plugin-sonarjs",
  "alias": false,
  "peer_metadata": null
}
^0.7.0development
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^26.6.3development
ts-jest
Environment
{
  "local_name": "ts-jest",
  "alias": false,
  "peer_metadata": null
}
^26.5.6development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^4.2.4development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-z1EO9rvIqucKgciONXtFjTOq/q2vxY/4YE06uiBZkFJEApP4tXAUqojh5Aub7tt7P4LhludGPTrhDJ/58tDK5g==",
  "shasum": "b2fbfd04728be8e27b46389ce6fabf368f719cb9",
  "tarball": "https://registry.npmjs.org/@0devs/error/-/error-1.7.0.tgz",
  "fileCount": 7,
  "unpackedSize": 28396,
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk1EPCRA9TVsSAnZWagAA5cEP/2eaT4eR6KmTP7hGm7xo\ntShF2YYJ82MHMulGaRSLTYJBNPByNjhTOszI8vqXZ+1cJwXxQigzkke4+tF2\n5sK/Gly38gvO6w7w90+YvYOPNXCX9Zoq701Cf4JvfTkMlFMoXsktGSRc8evz\n6FaUkcV1A+5gSWincRCJAfBDhbBIt5F8uoNBhPu0F5WBOu/TTdG+mrYF/MCK\nkVpIPrLXql3DZsVCk0y85ElKe/0lLrtnolGMoAVecA5P0/ulDdsHBn2owJB/\nM0YTfcBxdlDbde4WyYTY8tprwtbHxzCjp9c93QWMHaeHLe+aU+5QgMp4TQ0D\nzBtX8lfRaZa0PACNhACOo0j+0+dWhjntOi/636lVFTnRU+OfJWIX6qcbaa8q\nby9rr8N1iZrZ32GO+iFzZZ6VM210Owx2nECaTySiqvo3ByKxUETeiOAeLrC4\nTgdJfqPU4RIeLVqj0oiosPHuSlC4HCqNApRBGiYEO0wacBfvZXyjUpmIEnNy\n1Oaf3NJ4pVs3UdK7qj/qhvRnpQIV5BxfRXrlQQvXpWv+m9or4im1vf6SWjf7\nEmeUO1UjkFw2eOdPvuo/MGaCVuoxVk1qmi2Bwh8frsP/I/AImrVfWLBVaF7L\nbZ1rRQWo6x2f8VnUvQyqHaAIxdlQpgcSdJpmwWwA6BoCgUJY/XQwTmJeaIgq\nkNt8\r\n=W7+i\r\n-----END PGP SIGNATURE-----\r\n",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEUCIQDPMRVpNCy57xpwmLjtbHzPNdxzsGow0Y4cSVmgZVWgTgIgCOCEYXIrxpZLL/uLqo+EOeZJH5K7LjS9UsnEjWQvXF0="
    }
  ]
}

Repository

PENDING
0devs/node-error

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:07 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:eab2a187aefc872c117a37bb5e667d7ee78daff226aed7d8a8f76daa9a789b80

Other collected versions

1.6.1-09 Oct1.6.0-09 Oct1.3.017 Apr1.2.110 Jan1.2.015 Dec1.1.014 DecView all collected versions →