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 🙏

© 2026 – Pkg Stats / Ryan Hefner

error-drawings

v3.0.3

Published

Summarized error messages displayed with fun drawings

Downloads

15

Readme

Fun and clear error-messages

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);
}