npm.io
1.0.1 • Published 1 year ago

handle-http-errors

Licence
MIT
Version
1.0.1
Deps
1
Size
24 kB
Vulns
0
Weekly
0
Stars
1

handle-http-errors

Type-safe HTTP error handling package providing error classes, standardized responses, error handler, and built-in Express middleware support. Available as NPM package.

Features

  • Error Classes
  • Error Handler
  • Express Middleware Support
  • TypeScript Support

Usage

Error Handler
import express from 'express';
import { errorHandler, ValidationError } from 'handle-http-errors';

const app = express();

app.post('/users', async (req, res) => {
  try {
    const { email } = req.body;
    if (!email) {
      throw new ValidationError('Email is required');
    }
  } catch (error) {
    return errorHandler(error, res);
  }
});
Express Middleware
import express from 'express';
import { errorMiddleware, NotFoundError } from 'handle-http-errors';

const app = express();

app.get('/users/:id', (req, res, next) => {
  try {
    throw new NotFoundError('User not found', { id: req.params.id });
  } catch (error) {
    next(error);
  }
});

app.use(errorMiddleware());

Configuration

interface ErrorHandlerOptions {
  includeStack?: boolean;                // Include stack traces
  onError?: (error: unknown) => void;    // onError callback
}

// Use with handler
app.post('/users', async (req, res) => {
  try {
    throw new ValidationError('Invalid data');
  } catch (error) {
    return errorHandler(error, res, {
      includeStack: process.env.NODE_ENV !== 'production',
      onError: (error) => console.error(error)
    });
  }
});

// Use with middleware
app.use(errorMiddleware({
  includeStack: process.env.NODE_ENV !== 'production',
  onError: (error) => console.error(error)
}));

Error Classes

import {
  HttpError,               // Base error class
  ValidationError,         // 400 - Validation errors
  BadRequestError,         // 400 - Malformed requests
  UnauthorizedError,       // 401 - Authentication errors
  ForbiddenError,          // 403 - Authorization errors
  NotFoundError,           // 404 - Resource not found
  InternalServerError      // 500 - Server errors
} from 'handle-http-errors';

Error Response Format

{
  status: number;       // HTTP status code
  code: string;         // Error code
  message: string;      // Error message
  timestamp: string;    // ISO timestamp
  details?: object;     // Optional error details
  stack?: string;       // Stack trace
}

Examples

Check out the examples directory for detailed usage examples:

git clone https://github.com/junjie-w/handle-http-errors.git
cd handle-http-errors/examples
npm install

# Try different examples
npm run dev:handler                 # Error handler usage
npm run dev:middleware              # Express middleware usage
npm run dev:custom-middleware       # Creating custom error-throwing middlewares

License

MIT