New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

typescript-chained-error

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typescript-chained-error

Chained custom errors for Typescript and Javascript. ('Caused by' in error stack)

  • 1.6.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Typescript chained error

npm build Code coverage License PRs Welcome

Highlights

  • Allows stacking errors with "Caused by: " keyword in stack
  • Preserves error class name in trace (uses ts-custom-error for that)
  • Automatically cleans up stack using clean-stack](https://github.com/sindresorhus/clean-stack)
  • Has a ChainedErrorFactory that can extend any already existing error with Caused by clause additional properties and
  • 100% test coverage. Used in healthcare-grade solutions

Installation

$ npm install --save typescript-chained-error

Usage

  1. Define custom error class with a constructor that has a cause as a second parameter
  2. Throw your custom error passing the causing error as a second parameter
  3. Error causes can be stacked (there may be many causes that are finally leading to the printed error)
import ChainedCustomError from "typescript-chained-error";

class CannotPerformCalculationsError extends ChainedCustomError {
    public constructor(msg?: string, cause?: Error) {
        super(msg, cause);
    }
}

// function that may throw
function buildArray(desiredLength: number) {
    try {
        return new Array(desiredLength);
    } catch (error) {
        throw new CannotPerformCalculationsError("Cannot build array", error);
    }
}

// call function with illegal parameter
buildArray(-5);

The output:

CannotPerformCalculationsError: Cannot build array
    at buildArray (/typescript-chained-error/src/test.ts:14:15)
    at Object.<anonymous> (/typescript-chained-error/src/test.ts:18:1)
    (...)
 Caused by: RangeError: Invalid array length
    at buildArray (/typescript-chained-error/src/test.ts:12:16)
    at Object.<anonymous> (/typescript-chained-error/src/test.ts:18:1)
    (...)

Options

interface Options {
    cleanStack: boolean; // default: true
}

// Pass options in constructor
public constructor(msg?: string, cause?: Error) {
    super(msg, cause, { cleanStack: false });
}

Using ChainedErrorFactory

Example with firebase-functions https error (which is the only error that is thrown at the call site).

import { ChainedErrorFactory } from "typescript-chained-error";
import * as functions from "firebase-functions";

throw ChainedErrorFactory.make(
    // primary error that will be extended (this error is preserved in the prototype chain):
    functions.https.HttpsError("resource-exhausted", "Message"),
    // Causing error:
    new TypeError("Cause error"),
    // (optional) Additional fields that will be assigned to the returned error object
    // e.g.: functions.https.HttpsError allow to add a details field to the error. That field will be reconstructed at the call site.
    /* optional: */ { details: { additional: "properties" } },
    // (optional) Options. Specified above.
);

Extends the brilliant ts-custom-error. Uses clean-stack by @sindresorhus for pretty output. | Made with ❤️ by Jędrzej Lewandowski.

Keywords

FAQs

Package last updated on 07 Apr 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc