• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

chimurai / http-proxy-middleware / 18263701359

05 Oct 2025 08:07PM UTC coverage: 97.15%. Remained the same
18263701359

push

github

web-flow
ci(ci.yml): unpin node 24 (#1148)

* ci(ci.yml): unpin node 24

* chore(package): reinstall mockttp deps

* build(mockttp): use 2048 bits in generateCACertificate

170 of 183 branches covered (92.9%)

409 of 421 relevant lines covered (97.15%)

24.55 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.22
/src/legacy/options-adapter.ts
1
import * as url from 'node:url';
12✔
2

3
import { Debug } from '../debug';
12✔
4
import { getLogger } from '../logger';
12✔
5
import { Filter, Options } from '../types';
6
import { Logger } from '../types';
7
import { LegacyOptions } from './types';
8

9
const debug = Debug.extend('legacy-options-adapter');
12✔
10

11
// https://github.com/chimurai/http-proxy-middleware/blob/7341704d0aa9d1606dfd37ebfdffddd34c894784/src/_handlers.ts#L20-L27
12
const proxyEventMap = {
12✔
13
  onError: 'error',
14
  onProxyReq: 'proxyReq',
15
  onProxyRes: 'proxyRes',
16
  onProxyReqWs: 'proxyReqWs',
17
  onOpen: 'open',
18
  onClose: 'close',
19
};
20

21
/**
22
 * Convert {@link LegacyOptions legacy Options} to new {@link Options}
23
 */
24
export function legacyOptionsAdapter<TReq, TRes>(
12✔
25
  legacyContext: Filter<TReq> | LegacyOptions<TReq, TRes>,
26
  legacyOptions: LegacyOptions<TReq, TRes>,
27
): Options<TReq, TRes> {
28
  let options: LegacyOptions<TReq, TRes> = {};
7✔
29
  let logger: Logger;
30

31
  // https://github.com/chimurai/http-proxy-middleware/pull/716
32
  if (typeof legacyContext === 'string' && !!url.parse(legacyContext).host) {
7✔
33
    throw new Error(
1✔
34
      `Shorthand syntax is removed from legacyCreateProxyMiddleware().
35
      Please use "legacyCreateProxyMiddleware({ target: 'http://www.example.org' })" instead.
36

37
      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-shorthand-usage
38
      `,
39
    );
40
  }
41

42
  // detect old "context" argument and convert to "options.pathFilter"
43
  // https://github.com/chimurai/http-proxy-middleware/pull/722/files#diff-a2a171449d862fe29692ce031981047d7ab755ae7f84c707aef80701b3ea0c80L4
44
  if (legacyContext && legacyOptions) {
6✔
45
    debug('map legacy context/filter to options.pathFilter');
1✔
46
    options = { ...legacyOptions, pathFilter: legacyContext as Filter<TReq> };
1✔
47
    logger = getLegacyLogger(options);
1✔
48

49
    logger.warn(
1✔
50
      `[http-proxy-middleware] Legacy "context" argument is deprecated. Migrate your "context" to "options.pathFilter":
51

52
      const options = {
53
        pathFilter: '${legacyContext}',
54
      }
55

56
      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-context-argument
57
      `,
58
    );
59
  } else if (legacyContext && !legacyOptions) {
5!
60
    options = { ...(legacyContext as LegacyOptions<TReq, TRes>) };
5✔
61
    logger = getLegacyLogger(options);
5✔
62
  } else {
63
    logger = getLegacyLogger({}) as never;
×
64
  }
65

66
  // map old event names to new event names
67
  // https://github.com/chimurai/http-proxy-middleware/pull/745/files#diff-c54113cf61ec99691748a3890bfbeb00e10efb3f0a76f03a0fd9ec49072e410aL48-L53
68
  Object.entries(proxyEventMap).forEach(([legacyEventName, proxyEventName]) => {
6✔
69
    if (options[legacyEventName]) {
36✔
70
      options.on = { ...options.on };
1✔
71
      options.on[proxyEventName] = options[legacyEventName];
1✔
72
      debug('map legacy event "%s" to "on.%s"', legacyEventName, proxyEventName);
1✔
73

74
      logger.warn(
1✔
75
        `[http-proxy-middleware] Legacy "${legacyEventName}" is deprecated. Migrate to "options.on.${proxyEventName}":
76

77
        const options = {
78
          on: {
79
            ${proxyEventName}: () => {},
80
          },
81
        }
82

83
        More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#refactored-proxy-events
84
        `,
85
      );
86
    }
87
  });
88

89
  // map old logProvider to new logger
90
  // https://github.com/chimurai/http-proxy-middleware/pull/749
91
  const logProvider = options.logProvider && options.logProvider();
6✔
92
  const logLevel = options.logLevel;
6✔
93
  debug('legacy logLevel', logLevel);
6✔
94
  debug('legacy logProvider: %O', logProvider);
6✔
95

96
  if (typeof logLevel === 'string' && logLevel !== 'silent') {
6✔
97
    debug('map "logProvider" to "logger"');
1✔
98

99
    logger.warn(
1✔
100
      `[http-proxy-middleware] Legacy "logLevel" and "logProvider" are deprecated. Migrate to "options.logger":
101

102
      const options = {
103
        logger: console,
104
      }
105

106
      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-logprovider-and-loglevel-options
107
      `,
108
    );
109
  }
110

111
  return options;
6✔
112
}
113

114
function getLegacyLogger(options): Logger {
115
  const legacyLogger = options.logProvider && options.logProvider();
6✔
116
  if (legacyLogger) {
6✔
117
    options.logger = legacyLogger;
1✔
118
  }
119
  return getLogger(options);
6✔
120
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc