JSPM

  • Created
  • Published
  • Downloads 1132
  • Score
    100M100P100Q101330F
  • License MIT

Error with more than just a message, stacktrace parsing and sourcemap loading.

Package Exports

  • @visulima/error
  • @visulima/error/error
  • @visulima/error/package.json
  • @visulima/error/sourcemap
  • @visulima/error/stacktrace

Readme

Visulima error

Error with more than just a message, stacktrace parsing and sourcemap loading.


typescript-image npm-image license-image


Daniel Bannert's open source work is supported by the community on GitHub Sponsors


Install

npm install @visulima/error
yarn add @visulima/error
pnpm add @visulima/error

Usage

Extend the VisulimaError

import { VisulimaError } from "@visulima/error";

class MyError extends VisulimaError {
    constructor(message: string) {
        super({
            name: "MyError",
            message,
        });
    }
}

throw new MyError("My error message");

// or

const error = new MyError("My error message");

error.hint = "My error hint";

throw error;

Pretty code frame

import { codeFrame } from "@visulima/error";

const source = "const x = 10;\nconst error = x.y;\n";
const loc = { column: 16, line: 2 };

const frame = codeFrame(source, loc);

console.log(frame);
//   1 | const x = 10;
// > 2 | const error = x.y;
//     |                ^

Stacktrace

Browser older than 6 years are not supported.

Currently supported browsers/platforms:

  • Firefox
  • Chrome
  • Webkit / Safari
  • Edge
  • Node / Node V8
  • Opera (Chromium based)
import { parseStack } from "@visulima/error";

const error = new Error("My error message");

const stack = parseStack(error);

console.log(stack);

// [
//     {
//         column: 16,
//         file: "file:///Users/danielbannert/Projects/visulima/packages/error/src/index.ts",
//         line: 2,
//         methodName: "Object.<anonymous>",
//         raw: "    at Object.<anonymous> (/visulima/packages/error/src/index.ts:2:16)",
//         type: undefined, // optional property, can be undefined, "eval", "native", or "internal"
//         evalOrigin: undefined, // optional property only available if the stacktrace contains eval
//     },
//     ...and so on
// ];

Source Map

import { loadSourceMap, originalPositionFor, sourceContentFor } from "@visulima/error";

const sourceMap = loadSourceMap("your_path/src/index.js"); // returns a TraceMap

const traced = originalPositionFor(sourceMap, { column: 13, line: 30 });

console.log(traced);

// {
//     column: 9,
//     line: 15,
//     name: "setState",
//     source: "your_path/src/index.js"
// }

console.log(sourceContentFor(sourceMap, traced.source)); // 'content for your_path/src/index.js'

For more information about the TraceMap see @jridgewell/trace-mapping

Supported Node.js Versions

Libraries in this ecosystem make the best effort to track Node.js’ release schedule. Here’s a post on why we think this is important.

Contributing

If you would like to help take a look at the list of issues and check our Contributing guild.

Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Credits

About

License

The visulima error is open-sourced software licensed under the MIT