npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

oerror

v0.2.0

Published

Customizable Error using an Object.

Downloads

6

Readme

OError

Build Status Dependency Status Test Coverage Code Climate

Customizable Error using an Object. It is a subclass of Node.js standard Class: Error, with the overridden behavior when the constructor argument is a plain key-value Object.

Install

npm install -save oerror

Usage

var OError = require('./oerror');

var err = new OError({
  name: 'ServerError',
  statusCode: 500,
  message: 'DB Connection Lost',
  details: {
    component: 'MongoDB',
    timeout: 15000
  }
});

/* Type */
console.log(err instanceof OError); // true
console.log(err instanceof Error); // true

/* Inherited Properties */
console.log(err.message); // DB Connection Lost
console.log(err.name); // ServerError
console.error(err.stack);
// ServerError: DB Connection Lost
//     at Object.<anonymous> (/Users/woozyking/proj/personal/oerror/test.js:3:11)
//     at Module._compile (module.js:413:34)
//     at Object.Module._extensions..js (module.js:422:10)
//     at Module.load (module.js:357:32)
//     at Function.Module._load (module.js:314:12)
//     at Function.Module.runMain (module.js:447:10)
//     at startup (node.js:140:18)
//     at node.js:1001:3

/* Other Properties */
console.log(err.statusCode); // 500
console.log(err.details); // { component: 'MongoDB', timeout: 15000 }
console.log(err.details.component); // MongoDB

If you get too comfortable with OError:

Error = require('oerror'); // USE WITH CAUTION

Since 0.2 you can use the function wrapper if you prefer not to use the new OError syntax.

var oerror = require('oerror').oerror;
var err = oerror({ /* OError constructor options */ });

Properties

Class: OError inherits the following standard properties from Error:

  • name - when supplied through the constructor argument, it gets used; otherwise defaults to OError.
  • message - this behaves as the standard Error constructor argument, which specifies the error message. Although not required, it is recommended to set it.
  • stack - see Usage for example. It cannot be overridden even constructor argument contains one.

All other properties that are unowned by Error (therefore also OError) type will get copied over, see Usage for example.

Behaviors

Class: OError
  new OError([opt])
    ✓ should create an instance of OError when opt is a plain object.
    ✓ should return an Error object when opt is an Error object.
    ✓ should return an OError object when opt is an OError object.
    ✓ should return an Error object when opt is a string.
    ✓ should return an OError object when opt is null.
    ✓ should return an Error object when opt is not a plain object, string, null, or Error (including Error subclasses).
  oerror.name
    ✓ should have the name property default to "OError"
    ✓ should have the name property set to opt.name value
  oerror.message
    ✓ should have the message property default to ""
    ✓ should have the message property set to opt.message value
  oerror.stack
    ✓ cannot be overridden by constructor argument opt.stack
    ✓ should contain <name>: <message> in the first line
  oerror.<others>
    ✓ should copy over all Error unowned properties from opt

Function wrapper: oerror([opt])
  ✓ should create an instance of OError when opt is a plain object.
  ✓ should return an Error object when opt is an Error object.
  ✓ should return an OError object when opt is an OError object.
  ✓ should return an Error object when opt is a string.
  ✓ should return an OError object when opt is null.
  ✓ should return an Error object when opt is not a plain object, string, null, or Error (including Error subclasses).