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

use-http-error

v1.0.9

Published

A TypeScript library that provides a robust and type-safe way to handle HTTP errors in modern JavaScript applications.

Downloads

36

Readme

Use HTTP Error

A TypeScript library that provides a robust and type-safe way to handle HTTP errors in modern JavaScript applications.

TypeScript Vitest MIT License

🚀 Features

  • ✅ Type-safe HTTP error handling
  • 🔍 Built-in support for common HTTP status codes
  • 📦 Stack trace parsing and formatting
  • 🔄 Easy conversion between different formats (JSON, Response, String)
  • 🔒 Context and custom headers support
  • 🎯 Error wrapping and type checking
  • 🔗 Fully compatible with Web API Response interface

📦 Installation

yarn add use-http-error

🛠️ Usage

Basic Usage

import HttpError from 'use-http-error';

// Create a basic HTTP error
const error = new HttpError(404);
console.log(error.message); // "Not Found"
console.log(error.status); // 404

// Create an error with custom message
const customError = new HttpError(400, 'Invalid input parameters');

Advanced Configuration

// Create error with context and headers
const error = new HttpError(500, 'Internal Server Error', {
	context: { errorCode: 'DB_CONNECTION_FAILED' },
	headers: new Headers({
		'retry-after': '30'
	})
});

Error Conversion

// Convert to JSON
const jsonError = error.toJson();
/*
{
  context: { errorCode: 'DB_CONNECTION_FAILED' },
  message: 'Internal Server Error',
  stack: [...],
  status: 500
}
*/

// Convert to Response
const response = error.toResponse();
// Returns Web API Response object

// Convert to string
console.log(error.toString()); // "500 - Internal Server Error"

Static Methods

Error Wrapping

// Wrap number status
const numberError = HttpError.wrap(404);

// Wrap string message
const messageError = HttpError.wrap('Not Found', 404);

// Wrap regular Error
const regularError = new Error('Database connection failed');
const wrappedError = HttpError.wrap(regularError, 500);

Type Checking

const error = new HttpError(404);
const regularError = new Error('Regular error');

console.log(HttpError.is(error)); // true
console.log(HttpError.is(regularError)); // false

JSON Conversion

// Create from JSON
const json = {
	context: { foo: 'bar' },
	message: 'Unauthorized Access',
	stack: [],
	status: 401
};

const error = HttpError.fromJson(json);

Quick Conversions

// Convert to JSON directly
const jsonError = HttpError.json(404);
// or
const jsonError = HttpError.json('Not Found', 404);
// or
const jsonError = HttpError.json(new Error('Custom error'), 500);

// Convert to Response directly
const response = HttpError.response(404);
// or with custom message and status
const response = HttpError.response('Service unavailable', 503);

// Convert to string directly
const errorString = HttpError.string(404); // "404 - Not Found"
// or with custom message
const errorString = HttpError.string('Invalid input', 400);

Stack Trace Control

// Disable stack traces globally
HttpError.includeStack = false;

const error = new HttpError(500);
console.log(error.toJson().stack); // []

// Re-enable stack traces
HttpError.includeStack = true;

🧪 Testing

# Run tests
yarn test

📄 Types

Error Types

type Context = Record<string, any> | null;

type Json = {
	context: Context;
	message: string;
	stack: ErrorStackParser.StackFrame[];
	status: number;
};

Constructor Options

type HttpErrorOptions = {
	context?: Context;
	headers?: Headers;
};

📝 Notes

  • Status codes are automatically clamped between 400 and 599
  • Default messages are provided for common HTTP status codes
  • Stack traces can be globally enabled/disabled
  • All instances include a httpError: true property for type checking
  • Headers are automatically merged when converting to Response

🤝 Contributing

Contributions, issues and feature requests are welcome!

📝 License

MIT © Felipe Rohde

⭐ Show your support

Give a ⭐️ if this project helped you!

👨‍💻 Author

Felipe Rohde