http-proxy-middleware 4.0.0-beta.0 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +41 -40
  2. package/dist/configuration.d.ts +3 -2
  3. package/dist/configuration.js +3 -6
  4. package/dist/debug.d.ts +1 -1
  5. package/dist/debug.js +2 -5
  6. package/dist/errors.js +2 -5
  7. package/dist/factory-hono.d.ts +25 -0
  8. package/dist/factory-hono.js +42 -0
  9. package/dist/factory.d.ts +2 -2
  10. package/dist/factory.js +3 -6
  11. package/dist/get-plugins.d.ts +3 -2
  12. package/dist/get-plugins.js +4 -7
  13. package/dist/handlers/fix-request-body.js +18 -7
  14. package/dist/handlers/index.d.ts +1 -1
  15. package/dist/handlers/index.js +1 -17
  16. package/dist/handlers/public.d.ts +2 -2
  17. package/dist/handlers/public.js +2 -7
  18. package/dist/handlers/response-interceptor.js +6 -9
  19. package/dist/http-proxy-middleware.d.ts +4 -3
  20. package/dist/http-proxy-middleware.js +30 -41
  21. package/dist/index.d.ts +5 -8
  22. package/dist/index.js +4 -23
  23. package/dist/logger.d.ts +1 -1
  24. package/dist/logger.js +1 -4
  25. package/dist/path-filter.d.ts +2 -2
  26. package/dist/path-filter.js +7 -11
  27. package/dist/path-rewriter.js +8 -11
  28. package/dist/plugins/default/debug-proxy-errors-plugin.d.ts +1 -1
  29. package/dist/plugins/default/debug-proxy-errors-plugin.js +3 -7
  30. package/dist/plugins/default/error-response-plugin.d.ts +1 -1
  31. package/dist/plugins/default/error-response-plugin.js +5 -9
  32. package/dist/plugins/default/index.d.ts +4 -4
  33. package/dist/plugins/default/index.js +4 -20
  34. package/dist/plugins/default/logger-plugin.d.ts +1 -1
  35. package/dist/plugins/default/logger-plugin.js +8 -12
  36. package/dist/plugins/default/proxy-events.d.ts +1 -1
  37. package/dist/plugins/default/proxy-events.js +5 -9
  38. package/dist/router.js +5 -8
  39. package/dist/status-code.js +1 -4
  40. package/dist/types.d.ts +6 -6
  41. package/dist/types.js +1 -2
  42. package/dist/utils/function.js +1 -4
  43. package/dist/utils/logger-plugin.js +1 -4
  44. package/dist/utils/sanitize.js +1 -4
  45. package/package.json +36 -27
  46. package/dist/legacy/create-proxy-middleware.d.ts +0 -12
  47. package/dist/legacy/create-proxy-middleware.js +0 -16
  48. package/dist/legacy/index.d.ts +0 -1
  49. package/dist/legacy/index.js +0 -17
  50. package/dist/legacy/options-adapter.d.ts +0 -6
  51. package/dist/legacy/options-adapter.js +0 -97
  52. package/dist/legacy/public.d.ts +0 -2
  53. package/dist/legacy/public.js +0 -5
  54. package/dist/legacy/types.d.ts +0 -111
  55. package/dist/legacy/types.js +0 -2
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "http-proxy-middleware",
3
- "type": "commonjs",
4
- "version": "4.0.0-beta.0",
3
+ "type": "module",
4
+ "version": "4.0.0-beta.3",
5
5
  "description": "The one-liner node.js proxy middleware for connect, express, next.js and more",
6
6
  "main": "dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
7
14
  "types": "dist/index.d.ts",
8
15
  "files": [
9
16
  "dist"
@@ -13,13 +20,14 @@
13
20
  "install:all": "yarn && (cd examples && yarn)",
14
21
  "lint": "yarn prettier && yarn eslint",
15
22
  "lint:fix": "yarn prettier:fix && yarn eslint:fix",
16
- "eslint": "eslint '{src,test,examples}/**/*.{js,ts}' --cache",
23
+ "eslint": "eslint --cache '**/*.{js,ts,mjs,mts}'",
17
24
  "eslint:fix": "yarn eslint --fix",
18
- "prettier": "prettier --list-different \"**/*.{js,ts,md,yml,json,html}\"",
19
- "prettier:fix": "prettier --write \"**/*.{js,ts,md,yml,json,html}\"",
25
+ "prettier": "prettier --list-different \"**/*.{js,ts,mjs,mts,md,yml,json,html}\"",
26
+ "prettier:fix": "prettier --write \"**/*.{js,ts,mjs,mts,md,yml,json,html}\"",
20
27
  "build": "tsc --build",
21
- "test": "jest",
22
- "coverage": "jest --coverage",
28
+ "test": "vitest run",
29
+ "test:types": "tsc --project tsconfig.test.json --noEmit",
30
+ "coverage": "vitest run --coverage",
23
31
  "prepare": "husky && patch-package",
24
32
  "prepack": "yarn clean && yarn test && yarn build",
25
33
  "spellcheck": "npx --yes cspell --show-context --show-suggestions '**/*.*'"
@@ -56,50 +64,51 @@
56
64
  },
57
65
  "homepage": "https://github.com/chimurai/http-proxy-middleware#readme",
58
66
  "devDependencies": {
59
- "@commitlint/cli": "20.4.2",
60
- "@commitlint/config-conventional": "20.4.2",
67
+ "@commitlint/cli": "20.5.0",
68
+ "@commitlint/config-conventional": "20.5.0",
61
69
  "@eslint/js": "10.0.1",
70
+ "@hono/node-server": "1.19.12",
62
71
  "@trivago/prettier-plugin-sort-imports": "6.0.2",
63
- "@types/debug": "4.1.12",
72
+ "@types/debug": "4.1.13",
64
73
  "@types/eslint": "9.6.1",
65
74
  "@types/express": "5.0.6",
66
75
  "@types/is-glob": "4.0.4",
67
- "@types/jest": "30.0.0",
68
76
  "@types/micromatch": "4.0.10",
69
77
  "@types/node": "24.10.2",
70
78
  "@types/supertest": "7.2.0",
71
79
  "@types/ws": "8.18.1",
80
+ "@vitest/coverage-v8": "4.1.2",
72
81
  "body-parser": "2.2.2",
73
- "eslint": "10.0.2",
82
+ "eslint": "10.2.0",
74
83
  "express": "5.2.1",
75
- "get-port": "5.1.1",
76
- "globals": "17.3.0",
84
+ "get-port": "7.2.0",
85
+ "globals": "17.4.0",
86
+ "hono": "4.12.10",
77
87
  "husky": "9.1.7",
78
- "jest": "30.2.0",
79
- "lint-staged": "16.3.0",
80
- "mockttp": "4.2.1",
81
- "open": "8.4.2",
88
+ "lint-staged": "16.4.0",
89
+ "mockttp": "4.3.0",
90
+ "open": "11.0.0",
82
91
  "patch-package": "8.0.1",
83
- "pkg-pr-new": "0.0.65",
92
+ "pkg-pr-new": "0.0.66",
84
93
  "prettier": "3.8.1",
85
94
  "supertest": "7.2.2",
86
- "ts-jest": "29.4.6",
87
- "typescript": "5.9.3",
88
- "typescript-eslint": "8.56.1",
89
- "ws": "8.19.0"
95
+ "typescript": "6.0.2",
96
+ "typescript-eslint": "8.58.0",
97
+ "vitest": "4.1.2",
98
+ "ws": "8.20.0"
90
99
  },
91
100
  "dependencies": {
92
- "debug": "^4.3.6",
93
- "httpxy": "^0.2.2",
101
+ "debug": "^4.4.3",
102
+ "httpxy": "^0.5.0",
94
103
  "is-glob": "^4.0.3",
95
- "is-plain-object": "^5.0.0",
104
+ "is-plain-obj": "^4.1.0",
96
105
  "micromatch": "^4.0.8"
97
106
  },
98
107
  "resolutions": {
99
108
  "patch-package/**/tmp": "^0.2.4"
100
109
  },
101
110
  "engines": {
102
- "node": ">=20.0.0"
111
+ "node": "^22.12.0 || >=24.0.0"
103
112
  },
104
113
  "commitlint": {
105
114
  "extends": [
@@ -1,12 +0,0 @@
1
- import type * as http from 'node:http';
2
- import { Filter, RequestHandler } from '../types';
3
- import { LegacyOptions } from './types';
4
- /**
5
- * @deprecated
6
- * This function is deprecated and will be removed in a future version.
7
- *
8
- * Use {@link createProxyMiddleware} instead.
9
- */
10
- export declare function legacyCreateProxyMiddleware<TReq = http.IncomingMessage, TRes = http.ServerResponse>(shortHand: string): RequestHandler<TReq, TRes>;
11
- export declare function legacyCreateProxyMiddleware<TReq = http.IncomingMessage, TRes = http.ServerResponse>(legacyOptions: LegacyOptions<TReq, TRes>): RequestHandler<TReq, TRes>;
12
- export declare function legacyCreateProxyMiddleware<TReq = http.IncomingMessage, TRes = http.ServerResponse>(legacyContext: Filter<TReq>, legacyOptions: LegacyOptions<TReq, TRes>): RequestHandler<TReq, TRes>;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.legacyCreateProxyMiddleware = legacyCreateProxyMiddleware;
4
- const debug_1 = require("../debug");
5
- const factory_1 = require("../factory");
6
- const options_adapter_1 = require("./options-adapter");
7
- const debug = debug_1.Debug.extend('legacy-create-proxy-middleware');
8
- function legacyCreateProxyMiddleware(legacyContext, legacyOptions) {
9
- debug('init');
10
- const options = (0, options_adapter_1.legacyOptionsAdapter)(legacyContext, legacyOptions);
11
- const proxyMiddleware = (0, factory_1.createProxyMiddleware)(options);
12
- // https://github.com/chimurai/http-proxy-middleware/pull/731/files#diff-07e6ad10bda0df091b737caed42767657cd0bd74a01246a1a0b7ab59c0f6e977L118
13
- debug('add marker for patching req.url (old behavior)');
14
- proxyMiddleware.__LEGACY_HTTP_PROXY_MIDDLEWARE__ = true;
15
- return proxyMiddleware;
16
- }
@@ -1 +0,0 @@
1
- export * from './public';
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./public"), exports);
@@ -1,6 +0,0 @@
1
- import { Filter, Options } from '../types';
2
- import { LegacyOptions } from './types';
3
- /**
4
- * Convert {@link LegacyOptions legacy Options} to new {@link Options}
5
- */
6
- export declare function legacyOptionsAdapter<TReq, TRes>(legacyContext: Filter<TReq> | LegacyOptions<TReq, TRes>, legacyOptions: LegacyOptions<TReq, TRes>): Options<TReq, TRes>;
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.legacyOptionsAdapter = legacyOptionsAdapter;
4
- const url = require("node:url");
5
- const debug_1 = require("../debug");
6
- const logger_1 = require("../logger");
7
- const debug = debug_1.Debug.extend('legacy-options-adapter');
8
- // https://github.com/chimurai/http-proxy-middleware/blob/7341704d0aa9d1606dfd37ebfdffddd34c894784/src/_handlers.ts#L20-L27
9
- const proxyEventMap = {
10
- onError: 'error',
11
- onProxyReq: 'proxyReq',
12
- onProxyRes: 'proxyRes',
13
- onProxyReqWs: 'proxyReqWs',
14
- onOpen: 'open',
15
- onClose: 'close',
16
- };
17
- /**
18
- * Convert {@link LegacyOptions legacy Options} to new {@link Options}
19
- */
20
- function legacyOptionsAdapter(legacyContext, legacyOptions) {
21
- let options = {};
22
- let logger;
23
- // https://github.com/chimurai/http-proxy-middleware/pull/716
24
- if (typeof legacyContext === 'string' && !!url.parse(legacyContext).host) {
25
- throw new Error(`Shorthand syntax is removed from legacyCreateProxyMiddleware().
26
- Please use "legacyCreateProxyMiddleware({ target: 'http://www.example.org' })" instead.
27
-
28
- More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-shorthand-usage
29
- `);
30
- }
31
- // detect old "context" argument and convert to "options.pathFilter"
32
- // https://github.com/chimurai/http-proxy-middleware/pull/722/files#diff-a2a171449d862fe29692ce031981047d7ab755ae7f84c707aef80701b3ea0c80L4
33
- if (legacyContext && legacyOptions) {
34
- debug('map legacy context/filter to options.pathFilter');
35
- options = { ...legacyOptions, pathFilter: legacyContext };
36
- logger = getLegacyLogger(options);
37
- logger.warn(`[http-proxy-middleware] Legacy "context" argument is deprecated. Migrate your "context" to "options.pathFilter":
38
-
39
- const options = {
40
- pathFilter: '${legacyContext}',
41
- }
42
-
43
- More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-context-argument
44
- `);
45
- }
46
- else if (legacyContext && !legacyOptions) {
47
- options = { ...legacyContext };
48
- logger = getLegacyLogger(options);
49
- }
50
- else {
51
- logger = getLegacyLogger({});
52
- }
53
- // map old event names to new event names
54
- // https://github.com/chimurai/http-proxy-middleware/pull/745/files#diff-c54113cf61ec99691748a3890bfbeb00e10efb3f0a76f03a0fd9ec49072e410aL48-L53
55
- Object.entries(proxyEventMap).forEach(([legacyEventName, proxyEventName]) => {
56
- if (options[legacyEventName]) {
57
- options.on = { ...options.on };
58
- options.on[proxyEventName] = options[legacyEventName];
59
- debug('map legacy event "%s" to "on.%s"', legacyEventName, proxyEventName);
60
- logger.warn(`[http-proxy-middleware] Legacy "${legacyEventName}" is deprecated. Migrate to "options.on.${proxyEventName}":
61
-
62
- const options = {
63
- on: {
64
- ${proxyEventName}: () => {},
65
- },
66
- }
67
-
68
- More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#refactored-proxy-events
69
- `);
70
- }
71
- });
72
- // map old logProvider to new logger
73
- // https://github.com/chimurai/http-proxy-middleware/pull/749
74
- const logProvider = options.logProvider && options.logProvider();
75
- const logLevel = options.logLevel;
76
- debug('legacy logLevel', logLevel);
77
- debug('legacy logProvider: %O', logProvider);
78
- if (typeof logLevel === 'string' && logLevel !== 'silent') {
79
- debug('map "logProvider" to "logger"');
80
- logger.warn(`[http-proxy-middleware] Legacy "logLevel" and "logProvider" are deprecated. Migrate to "options.logger":
81
-
82
- const options = {
83
- logger: console,
84
- }
85
-
86
- More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-logprovider-and-loglevel-options
87
- `);
88
- }
89
- return options;
90
- }
91
- function getLegacyLogger(options) {
92
- const legacyLogger = options.logProvider && options.logProvider();
93
- if (legacyLogger) {
94
- options.logger = legacyLogger;
95
- }
96
- return (0, logger_1.getLogger)(options);
97
- }
@@ -1,2 +0,0 @@
1
- export { legacyCreateProxyMiddleware } from './create-proxy-middleware';
2
- export { LegacyOptions } from './types';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.legacyCreateProxyMiddleware = void 0;
4
- var create_proxy_middleware_1 = require("./create-proxy-middleware");
5
- Object.defineProperty(exports, "legacyCreateProxyMiddleware", { enumerable: true, get: function () { return create_proxy_middleware_1.legacyCreateProxyMiddleware; } });
@@ -1,111 +0,0 @@
1
- import type * as http from 'node:http';
2
- import { Options } from '../types';
3
- /**
4
- * @deprecated
5
- *
6
- * Will be removed in a future version.
7
- */
8
- export interface LegacyOptions<TReq = http.IncomingMessage, TRes = http.ServerResponse> extends Options<TReq, TRes> {
9
- /**
10
- * @deprecated
11
- * Use `on.error` instead.
12
- *
13
- * @example
14
- * ```js
15
- * {
16
- * on: {
17
- * error: () => {}
18
- * }
19
- * ```
20
- */
21
- onError?: (...args: any[]) => void;
22
- /**
23
- * @deprecated
24
- * Use `on.proxyRes` instead.
25
- *
26
- * @example
27
- * ```js
28
- * {
29
- * on: {
30
- * proxyRes: () => {}
31
- * }
32
- * ```
33
- */
34
- onProxyRes?: (...args: any[]) => void;
35
- /**
36
- * @deprecated
37
- * Use `on.proxyReq` instead.
38
- *
39
- * @example
40
- * ```js
41
- * {
42
- * on: {
43
- * proxyReq: () => {}
44
- * }
45
- * ```
46
- */
47
- onProxyReq?: (...args: any[]) => void;
48
- /**
49
- * @deprecated
50
- * Use `on.proxyReqWs` instead.
51
- *
52
- * @example
53
- * ```js
54
- * {
55
- * on: {
56
- * proxyReqWs: () => {}
57
- * }
58
- * ```
59
- */
60
- onProxyReqWs?: (...args: any[]) => void;
61
- /**
62
- * @deprecated
63
- * Use `on.open` instead.
64
- *
65
- * @example
66
- * ```js
67
- * {
68
- * on: {
69
- * open: () => {}
70
- * }
71
- * ```
72
- */
73
- onOpen?: (...args: any[]) => void;
74
- /**
75
- * @deprecated
76
- * Use `on.close` instead.
77
- *
78
- * @example
79
- * ```js
80
- * {
81
- * on: {
82
- * close: () => {}
83
- * }
84
- * ```
85
- */
86
- onClose?: (...args: any[]) => void;
87
- /**
88
- * @deprecated
89
- * Use `logger` instead.
90
- *
91
- * @example
92
- * ```js
93
- * {
94
- * logger: console
95
- * }
96
- * ```
97
- */
98
- logProvider?: any;
99
- /**
100
- * @deprecated
101
- * Use `logger` instead.
102
- *
103
- * @example
104
- * ```js
105
- * {
106
- * logger: console
107
- * }
108
- * ```
109
- */
110
- logLevel?: any;
111
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });