From 02a60467b1f1a1cb42d965b5be47215fbb9e546e Mon Sep 17 00:00:00 2001 From: chimurai <655241+chimurai@users.noreply.github.com> Date: Sat, 20 Apr 2024 10:27:46 +0000 Subject: [PATCH 1/3] fix(logger-plugin): fix missing target port --- src/plugins/default/logger-plugin.ts | 9 ++++++++- test/e2e/http-proxy-middleware.spec.ts | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/default/logger-plugin.ts b/src/plugins/default/logger-plugin.ts index 00c70bae..b541abcf 100644 --- a/src/plugins/default/logger-plugin.ts +++ b/src/plugins/default/logger-plugin.ts @@ -1,3 +1,4 @@ +import { URL } from 'url'; import { Plugin } from '../../types'; import { getLogger } from '../../logger'; @@ -26,7 +27,13 @@ export const loggerPlugin: Plugin = (proxyServer, options) => { // BrowserSync uses req.originalUrl // Next.js doesn't have req.baseUrl const originalUrl = req.originalUrl ?? `${req.baseUrl || ''}${req.url}`; - const exchange = `[HPM] ${req.method} ${originalUrl} -> ${proxyRes.req.protocol}//${proxyRes.req.host}${proxyRes.req.path} [${proxyRes.statusCode}]`; + + // construct targetUrl + const target = new URL(options.target as URL); + target.pathname = proxyRes.req.path; + const targetUrl = target.toString(); + + const exchange = `[HPM] ${req.method} ${originalUrl} -> ${targetUrl} [${proxyRes.statusCode}]`; logger.info(exchange); }); diff --git a/test/e2e/http-proxy-middleware.spec.ts b/test/e2e/http-proxy-middleware.spec.ts index db6ddb3a..96f2cd80 100644 --- a/test/e2e/http-proxy-middleware.spec.ts +++ b/test/e2e/http-proxy-middleware.spec.ts @@ -459,7 +459,9 @@ describe('E2E http-proxy-middleware', () => { expect(logMessages).not.toBeUndefined(); expect(logMessages.length).toBe(1); - expect(logMessages[0]).toBe('[HPM] GET /api/foo/bar -> http://localhost/api/foo/bar [200]'); + expect(logMessages.at(0)).toBe( + `[HPM] GET /api/foo/bar -> http://localhost:${mockTargetServer.port}/api/foo/bar [200]`, + ); }); }); }); From e0ce3dac5b1c32cec3de276f60c3117a2c31c63e Mon Sep 17 00:00:00 2001 From: chimurai <655241+chimurai@users.noreply.github.com> Date: Sat, 20 Apr 2024 10:37:33 +0000 Subject: [PATCH 2/3] refactor(logger-plugin): improve req type --- src/plugins/default/logger-plugin.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/default/logger-plugin.ts b/src/plugins/default/logger-plugin.ts index b541abcf..5e368030 100644 --- a/src/plugins/default/logger-plugin.ts +++ b/src/plugins/default/logger-plugin.ts @@ -1,6 +1,20 @@ import { URL } from 'url'; import { Plugin } from '../../types'; import { getLogger } from '../../logger'; +import type { IncomingMessage } from 'node:http'; + +type ExpressRequest = { + /** Express req.baseUrl */ + baseUrl?: string; +}; + +type BrowserSyncRequest = { + /** BrowserSync req.originalUrl */ + originalUrl?: string; +}; + +/** Request Types from different server libs */ +type FrameworkRequest = IncomingMessage & ExpressRequest & BrowserSyncRequest; export const loggerPlugin: Plugin = (proxyServer, options) => { const logger = getLogger(options); @@ -23,7 +37,7 @@ export const loggerPlugin: Plugin = (proxyServer, options) => { * [HPM] GET /users/ -> http://jsonplaceholder.typicode.com/users/ [304] * ``` */ - proxyServer.on('proxyRes', (proxyRes: any, req: any, res) => { + proxyServer.on('proxyRes', (proxyRes: any, req: FrameworkRequest, res) => { // BrowserSync uses req.originalUrl // Next.js doesn't have req.baseUrl const originalUrl = req.originalUrl ?? `${req.baseUrl || ''}${req.url}`; From 457398f14f897bc5c6749967716f0fcdd6ab5a75 Mon Sep 17 00:00:00 2001 From: chimurai <655241+chimurai@users.noreply.github.com> Date: Sat, 20 Apr 2024 10:42:32 +0000 Subject: [PATCH 3/3] docs(CHANGELOG.md): update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d25e2d8..dcc44e7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - fix(type): fix RequestHandler return type - refactor(errors): improve pathFilter error message +- fix(logger-plugin): fix missing target port ## [v3.0.0](https://github.com/chimurai/http-proxy-middleware/releases/tag/v3.0.0)