From ce2df6078b90cd6e1b8709d756193fdf7449f818 Mon Sep 17 00:00:00 2001 From: Rolando Santamaria Maso Date: Sun, 15 Jun 2025 14:49:16 +0200 Subject: [PATCH 1/2] chore: update installation commands from npm to bun in middleware documentation --- lib/middleware/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/middleware/README.md b/lib/middleware/README.md index 4a155d0..2ec2fe6 100644 --- a/lib/middleware/README.md +++ b/lib/middleware/README.md @@ -10,13 +10,13 @@ Install only the dependencies you need: ```bash # For JWT Authentication middleware -npm install jose +bun install jose # For Logger middleware -npm install pino +bun install pino # For Prometheus Metrics middleware -npm install prom-client +bun install prom-client ``` **Benefits of Lazy Loading:** @@ -224,7 +224,7 @@ router.use(createCORS(corsOptions)) JSON Web Token authentication and authorization middleware with support for static secrets, JWKS endpoints, and API key authentication. -> 📦 **Required dependency**: `npm install jose` +> 📦 **Required dependency**: `bun install jose` #### Basic JWT with Static Secret @@ -477,7 +477,7 @@ router.get('/api/profile', (req) => { Request logging middleware with customizable output formats. -> 📦 **Required dependency for structured logging**: `npm install pino` +> 📦 **Required dependency for structured logging**: `bun install pino` > ✅ **Simple logger** (`simpleLogger`) has no dependencies - uses `console.log` ```javascript @@ -542,7 +542,7 @@ router.use(createLogger(loggerOptions)) Comprehensive Prometheus metrics integration for monitoring and observability with built-in security and performance optimizations. -> 📦 **Required dependency**: `npm install prom-client` +> 📦 **Required dependency**: `bun install prom-client` ```javascript import {createPrometheusIntegration} from '0http-bun/lib/middleware/prometheus' @@ -1112,14 +1112,14 @@ For your convenience, here's a quick reference of which dependencies you need to | **CORS** | ✅ None | Built-in | | **Rate Limiting** | ✅ None | Built-in | | **Logger** (simple) | ✅ None | Built-in | -| **Logger** (structured) | 📦 `pino` | `npm install pino` | -| **JWT Authentication** | 📦 `jose` | `npm install jose` | -| **Prometheus Metrics** | 📦 `prom-client` | `npm install prom-client` | +| **Logger** (structured) | 📦 `pino` | `bun install pino` | +| **JWT Authentication** | 📦 `jose` | `bun install jose` | +| **Prometheus Metrics** | 📦 `prom-client` | `bun install prom-client` | **Install all optional dependencies at once:** ```bash -npm install pino jose prom-client +bun install pino jose prom-client ``` This middleware stack provides a solid foundation for most web applications with security, logging, and performance features built-in. From c612a9aaf43d92f8815a09c813e0d4b0227789fe Mon Sep 17 00:00:00 2001 From: Rolando Santamaria Maso Date: Sun, 15 Jun 2025 15:00:24 +0200 Subject: [PATCH 2/2] feat: add Prometheus middleware functions for enhanced metrics integration --- lib/middleware/README.md | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/middleware/README.md b/lib/middleware/README.md index 2ec2fe6..a3c20d9 100644 --- a/lib/middleware/README.md +++ b/lib/middleware/README.md @@ -91,6 +91,9 @@ const { createJWTAuth, createLogger, createRateLimit, + createPrometheusMiddleware, + createMetricsHandler, + createPrometheusIntegration, } = require('0http-bun/lib/middleware') ``` @@ -104,6 +107,9 @@ import { createJWTAuth, createLogger, createRateLimit, + createPrometheusMiddleware, + createMetricsHandler, + createPrometheusIntegration, } from '0http-bun/lib/middleware' // Import types @@ -545,7 +551,11 @@ Comprehensive Prometheus metrics integration for monitoring and observability wi > 📦 **Required dependency**: `bun install prom-client` ```javascript -import {createPrometheusIntegration} from '0http-bun/lib/middleware/prometheus' +const { + createPrometheusMiddleware, + createMetricsHandler, + createPrometheusIntegration, +} = require('0http-bun/lib/middleware') // Simple setup with default metrics const prometheus = createPrometheusIntegration() @@ -568,6 +578,12 @@ The Prometheus middleware automatically collects: #### Advanced Configuration ```javascript +const { + createPrometheusMiddleware, + createMetricsHandler, + createPrometheusIntegration, +} = require('0http-bun/lib/middleware') + const prometheus = createPrometheusIntegration({ // Control default Node.js metrics collection collectDefaultMetrics: true, @@ -602,6 +618,12 @@ const prometheus = createPrometheusIntegration({ #### Custom Business Metrics ```javascript +const { + createPrometheusIntegration, +} = require('0http-bun/lib/middleware') + +// Get the prometheus client from the integration +const prometheus = createPrometheusIntegration() const {promClient} = prometheus // Create custom metrics @@ -644,6 +666,8 @@ router.post('/orders', async (req) => { #### Metrics Endpoint Options ```javascript +const {createMetricsHandler} = require('0http-bun/lib/middleware') + // Custom metrics endpoint const metricsHandler = createMetricsHandler({ endpoint: '/custom-metrics', // Default: '/metrics' @@ -1029,8 +1053,8 @@ Apply middleware only to specific paths: ```typescript // API-only middleware -router.use('/api/*', jwtAuth({secret: 'api-secret'})) -router.use('/api/*', rateLimit({max: 1000})) +router.use('/api/*', createJWTAuth({secret: 'api-secret'})) +router.use('/api/*', createRateLimit({max: 1000})) // Admin-only middleware router.use('/admin/*', adminAuthMiddleware)