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

boo-boo

v1.0.0-alpha.10

Published

Opinionated better errors for Node.js, browsers and React Native.

Downloads

12

Readme

boo-boo · npm

Opinionated better errors for Node.js, browsers and React Native.

Working on a project I sooner or later come to a point where I would like to have my own errors, that can be easily distinguished from all other errors as well as from each other. Another quite important need is to send error messages and stack traces as JSON responses, but since native errors are missing toJSON() method they can't be properly stringified.

Table of Contents

Install

$ yarn add boo-boo

or

$ npm install --save boo-boo 

Usage

import boo from 'boo-boo';
// or
const boo = require('boo-boo');

// ...

try {
    JSON.parse(someJsonString);
}
catch (err) {
    throw new boo.Validation(err);
}

API

new boo.[name]([messageOrError])

A Boo constructor, inherited from Error. Each variant creates an instance of Boo with a specific name property. For a list of all available names see names.

Arguments

  • [messageOrError] (any|Error): Optional. Error description that will be coerced to a string. If the value is an instance of Error, its message property will be taken instead.

Examples

const err = new boo.Internal('boo!');
console.log(err.message); // 'boo!'

const err = new boo.Request(new TypeError('boo!'));
console.log(err.message); // 'boo!'

Boo

An instance of Boo created by one of constructors above.

Properties

  • name (String): Error name that is set upon creation. See names for all available names.
  • message (String): Optional. Human-readable description of the error.
  • stack (String): Stack trace.
  • isBoo (Boolean): A readonly property that always returns true to simplify error instance checking of Boo. It's intended to replace a somewhat ugly and counter-intuitive err instanceof boo.Internal with a much more slick err.isBoo.

Methods

  • toString()String: Overrides the default Error#toString() method in order to provide additional data.
  • toJSON()Object: A plain object representation that is required for JSON.stringify(). The resulting object contains name, message and stack properties (if exist).

names

A plain object of names used by Boo constructors:

  • Database
  • External
  • Internal
  • Request
  • Timeout
  • Validation

This list can be supplemented, PRs are welcome.

Examples

const err = new boo.Internal();
console.log(err.name === boo.names.Internal); // true