yandere
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

yandere

Javascript/Typescript library that provides browser- and Observable-friendly error wrappers, inspired by verror.

Installation

    npm install yandere --save
    yarn add yandere
    bower install pluralize --save

Usage

Javascript import

    var yandere = require('yandere');
    var YError = yandere.YError;

Typescript import

    import { YError } from 'yandere';

With try/catch

    try {
        hamSandwich.insert(thingy);
    } catch (originalError) {
        throw YError("cannot insert thingy into ham sandwich", originalError);
        // or throw new YError(...);
    }
  • Stack traces from the thrown YError include the original error's trace.
  • The YError's message field has both "cannot insert thingy into ham sandwich" and the original error's message.

With Observable subscriptions (RxJS)

    myObservable.subscribe(
        result => /* ... */,
        error => myHandler.panic(new YError("trouble with myObserver", error))
        );

The myHandler.panic method has information about both this code and whatever code caused the earlier error to occur.

Further, the Typescript compiler doesn't complain about mismatching types, as YError really does support any type for its second parameter -- even functions, symbols, and objects with circular references. While such values might not be pretty when displayed, YError is pretty good about handling them without crashing.

Technical details

String as a cause

    var yerr = new YError("Cannot fetch document", "HTTP failure");
  • yerr.message resembles, "Cannot fetch document: HTTP failure".
  • yerr.stack contains its own stack trace, plus "Caused by" ... "HTTP failure".

Multiple causes

    var yerr = new YError("Cannot fetch document",
        new YError("HTTP failure",
            new Error("Cannot resolve hostname")));
  • yerr.message === "Cannot fetch document: HTTP failure: Cannot resolve hostname"
  • yerr.stack resembles the following:
    YError: Cannot fetch document: HTTP failure: Cannot resolve hostname
        at apple (cactus.js:10:20)
        ...
        at banana (palm.js:30:40)
      ___________
    _/ Caused by \___________
    YError: HTTP failure: Cannot resolve hostname
        at cherry (oak.js:11:24)
        ...
        at kiwi (fuzz.js:31:36)
      ___________
    _/ Caused by \___________
    Error: Cannot resolve hostname
        at peach (keen.js:292:4)
        ...
        at orange (juice.js:384:12)

Unit-testing yandere

npm install
npm run build
npm run test

Package Sidebar

Install

npm i yandere

Weekly Downloads

773

Version

1.0.0

License

ISC

Unpacked Size

24.5 kB

Total Files

7

Last publish

Collaborators

  • alexhankins