From 843451a09743967e9e7d6f0f7a412c38c18fb100 Mon Sep 17 00:00:00 2001 From: Lisa Date: Tue, 24 Feb 2026 13:52:46 +0100 Subject: [PATCH 01/12] Make composable middleware pieces first-class (#28) - Add validateThresholds() to createMiddleware() in all 4 packages so standalone usage validates thresholds at creation time - Add loadProbeScript() utility to all 4 packages, extracting probe bundle loading from createDeviceRouter() into a reusable export - Refactor createDeviceRouter() to use loadProbeScript() internally - Add standalone API docs (option tables, examples, quickstart) to all 4 framework API docs and package READMEs - Fix test thresholds that became invalid with eager validation --- CHANGELOG.md | 5 + README.md | 21 +++ docs/api/middleware-express.md | 137 ++++++++++++++++ docs/api/middleware-fastify.md | 135 ++++++++++++++++ docs/api/middleware-hono.md | 133 ++++++++++++++++ docs/api/middleware-koa.md | 147 ++++++++++++++++++ packages/middleware-express/README.md | 29 +++- .../src/__tests__/middleware.test.ts | 5 +- packages/middleware-express/src/index.ts | 24 +-- packages/middleware-express/src/middleware.ts | 3 + packages/middleware-fastify/README.md | 29 +++- .../src/__tests__/middleware.test.ts | 2 +- packages/middleware-fastify/src/index.ts | 24 +-- packages/middleware-fastify/src/middleware.ts | 3 + packages/middleware-hono/README.md | 29 +++- .../src/__tests__/middleware.test.ts | 5 +- packages/middleware-hono/src/index.ts | 24 +-- packages/middleware-hono/src/middleware.ts | 3 + packages/middleware-koa/README.md | 28 +++- .../src/__tests__/middleware.test.ts | 2 +- packages/middleware-koa/src/index.ts | 24 +-- packages/middleware-koa/src/middleware.ts | 3 + 22 files changed, 759 insertions(+), 56 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 479bccf..52288a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +### Features + +- **Composable middleware** — `createMiddleware()`, `createProbeEndpoint()`, and `createInjectionMiddleware()` are now first-class exports with full threshold validation and documentation. Use them independently for fine-grained control without the `createDeviceRouter()` factory +- **`loadProbeScript()` utility** — New helper exported from all middleware packages that reads the minified probe bundle and optionally rewrites the endpoint URL. Pairs with `createInjectionMiddleware()` for standalone probe injection + ## 0.4.0 (2026-02-24) ### Features diff --git a/README.md b/README.md index d926db9..3f47100 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,27 @@ const { middleware, probeEndpoint, injectionMiddleware } = createDeviceRouter({ No need to manually add `