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

@kaushverse/middleware

v1.0.2

Published

A shared TypeScript middleware layer providing standardized authentication, authorization, logging, request context, and error handling for company backend services.

Readme

🚀 @kaushverse/middleware

Production‑ready TypeScript middleware package for authentication, logging, request tracing, and global error handling — designed for kaushverse backend services.


✨ Features

  • 🔐 Authentication Middleware (JWT + Cookies)
  • 🧵 Request ID / Tracing (per-request unique ID)
  • 📜 Centralized Logging (structured logs)
  • 💥 Global Error Handling (safe & consistent responses)
  • 🧠 TypeScript First (strict types, Express augmentation)
  • 🧩 Framework-friendly (Express-first, extendable)

📦 Installation

npm install @kaushverse/middleware

or

yarn add @kaushverse/middleware

ℹ️ This package expects Express to be installed in the consuming app.


⚙️ Prerequisites

  • Node.js >= 18
  • Express ^4.18
  • TypeScript (recommended)

Optional (for cookie auth):

npm install cookie-parser

🧱 Basic Setup

import express from "express";
import cookieParser from "cookie-parser";

import {
  requestIdMiddleware,
  loggerMiddleware,
  authMiddleware,
  errorMiddleware,
} from "@kaushverse/middleware";

const app = express();

app.use(express.json());
app.use(cookieParser());

app.use(requestIdMiddleware);
app.use(loggerMiddleware);

🧵 Request ID Middleware

Adds a unique requestId to every request for tracing and debugging.

app.use(requestIdMiddleware);

What it does

  • Reads X-Request-Id header if present
  • Otherwise generates a new UUID
  • Attaches it to:
    • req.requestId
    • response header X-Request-Id

Use cases

  • Distributed tracing
  • Debugging production issues
  • Log correlation

🔐 Authentication Middleware

Supports JWT tokens from headers or cookies.

app.get("/me", authMiddleware(), (req, res) => {
  res.json({ user: req.user });
});

With role-based access control

app.post("/admin", authMiddleware({ roles: ["admin"] }), handler);

Token sources (priority order)

  1. Authorization: Bearer <token> header
  2. access_token HTTP-only cookie

🍪 Cookie-based Auth (Web Apps)

Login example

res.cookie("access_token", token, {
  httpOnly: true,
  secure: true,
  sameSite: "strict",
  maxAge: 15 * 60 * 1000,
});

Frontend fetch

fetch("/api/me", {
  credentials: "include",
});

📜 Logger Middleware

Automatically logs every request with timing and requestId.

app.use(loggerMiddleware);

Logged fields

  • HTTP method
  • URL
  • Status code
  • Duration
  • requestId

Why this matters

  • Clean production logs
  • Easy monitoring
  • Faster incident response

💥 Global Error Middleware

Catches all unhandled errors and returns a safe response.

app.use(errorMiddleware); // MUST be last

Example response

{
  "message": "Internal Server Error",
  "requestId": "abc-123"
}

Benefits

  • No stack traces leaked to clients
  • Centralized error logging
  • Request-based debugging

🧠 TypeScript Support

This package extends Express types.

Available on req:

req.requestId?: string;
req.user?: {
  id: string;
  role?: string;
};

No extra imports required — works automatically.


🏗️ Recommended Middleware Order

app.use(requestIdMiddleware);
app.use(loggerMiddleware);
app.use(errorMiddleware); // always last

🧪 Example Full App

app.get("/health", (req, res) => {
  res.json({ status: "ok" });
});

app.get("/me", authMiddleware(), (req, res) => {
  res.json({ user: req.user });
});

app.use(errorMiddleware);

🔒 Security Best Practices

  • Always use httpOnly cookies
  • Enable HTTPS (secure: true)
  • Set sameSite for CSRF protection
  • Never hardcode secrets

📈 Use Cases

  • 🏢 Company backend services
  • 🧩 Microservices architecture
  • 🌐 Web apps (cookie auth)
  • 📱 Mobile APIs (Bearer tokens)
  • ☁️ Cloud / Kubernetes deployments

🛣️ Roadmap

  • Fastify adapter
  • NestJS Guard version
  • OpenTelemetry integration
  • Rate limiting middleware
  • RBAC / ABAC helpers

📄 License

UNLICENSED — Internal kaushverse use only.


❤️ Maintained By

Kaushik

If it breaks, we fix it. If it scales, we own it 🚀