From c739f7f29e51b277db7c1de04ba3f38d691a509b Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Fri, 10 Oct 2025 15:20:57 -0600 Subject: [PATCH 1/7] feat: add optional params to middleware for client id and secret --- package-lock.json | 4 ++-- package.json | 2 +- src/sdk/middleware.ts | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08a6f78..5507b41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.3.6", + "version": "2.4.0-beta.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@envoy/envoy-integrations-sdk", - "version": "2.3.6", + "version": "2.4.0-beta.1", "license": "ISC", "dependencies": { "@types/dotenv": "^8.2.0", diff --git a/package.json b/package.json index 3130d13..437da4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.3.6", + "version": "2.4.0-beta.1", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/sdk/middleware.ts b/src/sdk/middleware.ts index f2f31f5..6b1d4f7 100644 --- a/src/sdk/middleware.ts +++ b/src/sdk/middleware.ts @@ -9,6 +9,16 @@ import EnvoyPluginJobAttachment from './EnvoyPluginJobAttachment'; import EnvoyPluginSDK from './EnvoyPluginSDK'; import EnvoyPluginAPI from './EnvoyPluginAPI'; +/** + * Options for configuring the Envoy middleware. + */ +export interface EnvoyMiddlewareOptions extends EnvoySignatureVerifierOptions { + /** Optional custom client ID to use for API authentication instead of environment variable */ + customClientId?: string; + /** Optional custom client secret to use for API authentication instead of environment variable */ + customClientSecret?: string; +} + /** * Sets up an {@link EnvoyPluginSDK} object in the path `req.envoy`. * Modifies the `res` object to include Envoy's helpers, per {@link EnvoyResponse}. @@ -18,7 +28,7 @@ import EnvoyPluginAPI from './EnvoyPluginAPI'; * * @category Middleware */ -export function envoyMiddleware(options?: EnvoySignatureVerifierOptions): RequestHandler { +export function envoyMiddleware(options?: EnvoyMiddlewareOptions): RequestHandler { const signatureVerifier = new EnvoySignatureVerifier(options); const verify = (req: VerifiedRequest, res: Response, rawBody: Buffer) => { req[VERIFIED] = signatureVerifier.verify(req, rawBody); @@ -35,7 +45,10 @@ export function envoyMiddleware(options?: EnvoySignatureVerifierOptions): Reques try { const now = Date.now(); if (now > threshold) { - const { access_token: rawAccessToken, expires_in: expiresIn } = await EnvoyPluginAPI.loginAsPlugin(); + const hasCustomCredentials = options?.customClientId && options?.customClientSecret; + const { access_token: rawAccessToken, expires_in: expiresIn } = hasCustomCredentials + ? await EnvoyPluginAPI.loginAsPlugin(options?.customClientId, options?.customClientSecret) + : await EnvoyPluginAPI.loginAsPlugin(); accessToken = rawAccessToken; threshold = now + expiresIn * 1000 - 1000 * 60 * 10; } From 1c3daafcd1d447449d0cb9e6280fe2fcc3d19339 Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 14:57:15 -0600 Subject: [PATCH 2/7] fix: signatureOptions to be optional --- package.json | 2 +- src/sdk/middleware.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 437da4e..73b9b6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.1", + "version": "2.4.0-beta.2", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/sdk/middleware.ts b/src/sdk/middleware.ts index 6b1d4f7..451ca21 100644 --- a/src/sdk/middleware.ts +++ b/src/sdk/middleware.ts @@ -12,7 +12,7 @@ import EnvoyPluginAPI from './EnvoyPluginAPI'; /** * Options for configuring the Envoy middleware. */ -export interface EnvoyMiddlewareOptions extends EnvoySignatureVerifierOptions { +export interface EnvoyMiddlewareOptions extends Partial { /** Optional custom client ID to use for API authentication instead of environment variable */ customClientId?: string; /** Optional custom client secret to use for API authentication instead of environment variable */ @@ -29,7 +29,7 @@ export interface EnvoyMiddlewareOptions extends EnvoySignatureVerifierOptions { * @category Middleware */ export function envoyMiddleware(options?: EnvoyMiddlewareOptions): RequestHandler { - const signatureVerifier = new EnvoySignatureVerifier(options); + const signatureVerifier = new EnvoySignatureVerifier(options as EnvoySignatureVerifierOptions); const verify = (req: VerifiedRequest, res: Response, rawBody: Buffer) => { req[VERIFIED] = signatureVerifier.verify(req, rawBody); }; From c474e577d5b6e3c9f7cc0cd1fe2a2bc9cecf7da6 Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 15:20:51 -0600 Subject: [PATCH 3/7] use different version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 73b9b6a..a631311 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.2", + "version": "2.4.1-beta.1", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts", From c046da636a2eaa0d7313fd13123458463b4c1faa Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 17:45:45 -0600 Subject: [PATCH 4/7] fix: add middleware for backward compatibility --- package.json | 2 +- src/sdk/middleware.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a631311..4a3c31f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.1-beta.1", + "version": "2.4.0-beta.3", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/sdk/middleware.ts b/src/sdk/middleware.ts index 451ca21..878286e 100644 --- a/src/sdk/middleware.ts +++ b/src/sdk/middleware.ts @@ -114,3 +114,9 @@ export function errorMiddleware(onError: (err: Error) => void = () => {}): Error res.end(JSON.stringify({ message: err.message })); }; } + +/** + * Backward compatibility alias for envoyMiddleware + * @deprecated Use envoyMiddleware instead + */ +export const middleware = envoyMiddleware; From 5d3b2c59a26f421f55ad5b4995b5c92297c0cb3c Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 18:00:38 -0600 Subject: [PATCH 5/7] move to beta4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4a3c31f..92b00f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.3", + "version": "2.4.0-beta.4", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts", From d3d654119d1d09c4229260497648c0d037fcfa20 Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 18:09:21 -0600 Subject: [PATCH 6/7] update package-lock version --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5507b41..b744e14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.1", + "version": "2.4.0-beta.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.1", + "version": "2.4.0-beta.4", "license": "ISC", "dependencies": { "@types/dotenv": "^8.2.0", From b24ebfbba2ea1eb30e47c20a9a8a17857e111dca Mon Sep 17 00:00:00 2001 From: Cedric Luckie Date: Mon, 13 Oct 2025 18:14:05 -0600 Subject: [PATCH 7/7] beta 5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b744e14..c197640 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.4", + "version": "2.4.0-beta.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.4", + "version": "2.4.0-beta.5", "license": "ISC", "dependencies": { "@types/dotenv": "^8.2.0", diff --git a/package.json b/package.json index 92b00f6..aa4f51d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@envoy/envoy-integrations-sdk", - "version": "2.4.0-beta.4", + "version": "2.4.0-beta.5", "description": "SDK for building Envoy integrations.", "main": "dist/index.js", "types": "dist/index.d.ts",