Catalog npm
Back to packageRELEASE DETAILS

0.0.0

npm

@0devs/error

javascript errors with codes and causes

error
Published2 Jun 2018
Direct dependencies5
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 5

Native requirements
5 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^4.19.1development
eslint-config-airbnb-base
Environment
{
  "local_name": "eslint-config-airbnb-base",
  "alias": false,
  "peer_metadata": null
}
^12.1.0development
eslint-plugin-import
Environment
{
  "local_name": "eslint-plugin-import",
  "alias": false,
  "peer_metadata": null
}
^2.12.0development
eslint-plugin-jest
Environment
{
  "local_name": "eslint-plugin-jest",
  "alias": false,
  "peer_metadata": null
}
^21.17.0development
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^23.1.0development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-5D+f0eoXZRiC/GtJpvvlzq28BIXexnaW8Sy0F9tYQDKoO6DpbBFAHi17zl22vqBkSruM6G5pz9WT5Bgcz/Qbsg==",
  "shasum": "030dd15bbd2e21b82647c73a72355b60bd1c0b74",
  "tarball": "https://registry.npmjs.org/@0devs/error/-/error-0.0.0.tgz",
  "fileCount": 4,
  "unpackedSize": 4069,
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEirFCRA9TVsSAnZWagAAx3sP/A/bNeO3u5peJ8cvceZk\nGmX3prCKejRCqQS4APDjfxX3GTIxO4XTZ/qOmYxdbofriSbO8iGp050pT/uj\nhZQfqGfcYZX3Mlr+n5wo94AoWCOa2q9WlG+JWLhQN7Zntz0LTyPR6uaw2UjC\nDu3aJjKGSndrmL2hn+95feAiF/06kM478VAIvipWV877qwdXPPvWxTHp0h7M\nyxj/3tQCS0jS4DpevE0eUJcae9E0mMu4qHJjdT64BFbxRXQ3FTaNyosR9FiW\nXxSbCgv8V4uWMsIUIhUqLUcVOOW5rUXZpRK2bjIVNHlRrXRL/DP4LUv70iyE\n6pzMiplOCJm+b3kh8TPRxokanKRRJMm7KfN1JtU17YaoBe4hDfpbV3EqjLm4\nbV9E6Kw2VRzJ9NhtwyBvzGXGIUswRc6/Xau/iiAYQyLv7yaG+Sovcuq6s05t\n3Z5FOYXi5zCUOuYLm4GjYeDzXfpwAUP5g1UZ2Cp68Bp8cNProN4p4JVBd9MB\npexfQ0q8+bKiSGa0Cr/2NWfzTT44n6G2foabWznc4rMrJzBwGaWytG/nfluE\netzpKV4qJwPTOJhYKPIovtEqZs3sbRUDeu01dnzCtiKhBAFL3zu6UAEGe5CU\nRZ3BznjDPLCoxiRwN7SAxfQ5gX0vNTR0qoioA9mi/Jjs96IVuTANKVflltfk\npFAM\r\n=yN9k\r\n-----END PGP SIGNATURE-----\r\n",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEQCIBoqsYcSQHLTCXye9F5Q3/y7Pkm/Ckc94VBAYCAE5EbcAiAvdeVSLDeuKJ/2YPq6GaTaEKTj/awzeva0we6+7/Gtcw=="
    }
  ]
}

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:0333880ca72c4cb91efa9f115780ab9aa93249041110bd4bcfda9b6d298ec4b8

Other collected versions

1.7.06 May1.6.1-09 Oct1.6.0-09 Oct1.3.017 Apr1.2.110 Jan1.2.015 DecView all collected versions →