From 1fc84d153610f2a692ee0f92c109d985fde5f24a Mon Sep 17 00:00:00 2001 From: David Oliveira Date: Wed, 23 Jul 2025 17:03:43 +0100 Subject: [PATCH 1/3] Add preliminary support for instrumenting Express v5 --- src/clients/express.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/clients/express.ts b/src/clients/express.ts index d3bcfe4..93722a1 100644 --- a/src/clients/express.ts +++ b/src/clients/express.ts @@ -11,18 +11,16 @@ export const instrumentExpress = ( redMiddleware: Express.RequestHandler, openapm: OpenAPM ) => { - let redMiddlewareAdded = false; - const routerProto = express.Router as unknown as Express.Router['prototype']; - wrap(routerProto, 'use', (original) => { + wrap(routerProto.prototype, 'use', (original) => { return function wrappedUse( this: typeof original, ...args: Parameters ) { - if (!redMiddlewareAdded) { + if (!this._redMiddlewareAdded) { original.apply(this, [redMiddleware]); - redMiddlewareAdded = true; + this._redMiddlewareAdded = true; } return original.apply(this, args); }; From 44b52286abe8b3493f07ac5f5db9de8780242cfc Mon Sep 17 00:00:00 2001 From: David Oliveira Date: Wed, 23 Jul 2025 18:21:26 +0100 Subject: [PATCH 2/3] Remove express v4 peer dependency declaration --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 245d813..ef72599 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,6 @@ "Tushar Choudhari (https://github.com/chtushar)", "Aniket Rao (https://github.com/anik3tra0)" ], - "peerDependencies": { - "express": "4.x" - }, "keywords": [ "last9", "metrics", From fcf651556dc901d76bd2c865f30846a35583ad85 Mon Sep 17 00:00:00 2001 From: David Oliveira Date: Thu, 24 Jul 2025 16:33:34 +0100 Subject: [PATCH 3/3] Check if there's a routerProto.use() to decide which method to wrap --- src/clients/express.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clients/express.ts b/src/clients/express.ts index 93722a1..7f97634 100644 --- a/src/clients/express.ts +++ b/src/clients/express.ts @@ -13,7 +13,7 @@ export const instrumentExpress = ( ) => { const routerProto = express.Router as unknown as Express.Router['prototype']; - wrap(routerProto.prototype, 'use', (original) => { + wrap(routerProto.use ? routerProto : routerProto.prototype, 'use', (original) => { return function wrappedUse( this: typeof original, ...args: Parameters