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

3.0.3 • Public • Published

Fun and clear error-messages

GitHub package.json version (branch)

npm

npm install error-drawings

Get a picture of what the script does:

npm run test

ECMAScript Modules

Use the error object e as parameter in drawLog(e)

import drawLog from "error-drawings";

async function example() {
  try {
    // code that may throw an error
  } catch (err) {
    drawLog(err);
    throw err; // re-throw if you want to bubble up the error
  }
}

Expected output:

Visual example

Severity handling inside drawlog

  • "info" severity calls drawHappy, for informational messages.
  • "warning" severity calls drawWarning, for warnings.
  • "critical" severity calls drawError, for critical errors.
  • If no severity or unknown severity is given, drawError is used as default.

How to use severity with a CustomError type

throw {
  message: "Something might be wrong",
  severity: "warning",
};

You can also throw a normal Error without severity — it will fall back to the default drawing (critical error style).

Using CustomError vs native Error

Since native JavaScript Error objects don’t have a severity property, there are two ways to use this library clearly:

1. For native Error objects (no severity):

import { drawError, drawWarning, drawInfo } from "error-drawings";

drawError(new Error("This is a critical error"));
drawWarning(new Error("This is a warning"));
drawInfo(new Error("This is an informational message"));

This is recommended if you want to specify the drawing manually because you have no severity info.

2. For CustomError objects (with severity)

Use the default export drawLog, which reads the severity property and routes to the correct drawing automatically:

import drawLog, { type CustomError } from "error-drawings";

const error: CustomError = {
  message: "This is a warning with severity",
  severity: "warning",
};

drawLog(error);

This is the easiest way if you control or extend your errors with a severity field.

Types

The package exports the CustomError interface for strong typing:

import drawLog, { type CustomError } from "error-drawings";

const error: CustomError = {
  code: 123,
  message: "Example error",
  severity: "info",
};

CustomError shape:

export interface CustomError {
  code?: string | number;
  status?: string | number;
  message?: string;
  severity?: "info" | "warning" | "error" | "critical";
}

🎨 Works well with backend-error

npm downloads license

npm install backend-error

backend-error is a lightweight Node.js / TypeScript utility that formats all errors—custom or native—into standardized HTTP responses with correct status codes and user-friendly messages. The httpErrorFormatter ensures secure, consistent error output by controlling what is exposed to the frontend.

import { BackendError } from "backend-error";
import drawLog from "error-drawings";

try {
  throw BackendError.Forbidden("No access to resource");
} catch (err) {
  const isCritical = !(err instanceof BackendError && err.isOperational) || err.code >= 500;
  if (isCritical) {
    // 🔥 Draw dramatic error output to highlight critical issues during development
    // 🧠 Important: log BEFORE formatting, since the formatter may hide details if showUser is false
    drawLog(err);
  }
  const { status, body } = httpErrorFormatter(err); //Use the formatter as always
  res.status(status).json(body);
}

Package Sidebar

Install

npm i error-drawings

Weekly Downloads

1

Version

3.0.3

License

MIT

Unpacked Size

19.4 kB

Total Files

16

Last publish

Collaborators

  • eriksturesson