|
1 | | -const Module = require("module"); |
| 1 | +const Module = require("node:module"); |
2 | 2 | const MODULE_MAP: Record<string, typeof Module._resolveFilename> = {}; |
3 | 3 | const RESOLVER_MAP: Record<string, typeof require.resolve> = {}; |
| 4 | + |
4 | 5 | export const addResolveAlias = ( |
5 | 6 | name: string, |
6 | | - aliasMap: Record<string, string> |
| 7 | + aliasMap: Record<string, string>, |
7 | 8 | ) => { |
8 | 9 | const modulePath = require.resolve(name); |
9 | | - if (RESOLVER_MAP[modulePath]) { |
| 10 | + if (modulePath in RESOLVER_MAP) { |
10 | 11 | throw new Error(`Should not add resolve alias to ${name} again.`); |
11 | 12 | } |
12 | 13 | const m = require.cache[modulePath]; |
13 | 14 | if (!m) { |
14 | 15 | throw new Error("Failed to resolve webpack-dev-server."); |
15 | 16 | } |
16 | 17 | RESOLVER_MAP[modulePath] = m.require.resolve; |
| 18 | + // biome-ignore lint/suspicious/noExplicitAny: <explanation> |
17 | 19 | m.require.resolve = ((id: string, options?: any) => |
18 | 20 | aliasMap[id] || |
19 | | - RESOLVER_MAP[modulePath]!.apply(m.require, [ |
| 21 | + RESOLVER_MAP[modulePath].apply(m.require, [ |
20 | 22 | id, |
21 | | - options |
| 23 | + options, |
22 | 24 | ])) as typeof require.resolve; |
23 | 25 | MODULE_MAP[modulePath] = Module._resolveFilename; |
24 | | - Module._resolveFilename = Module._resolveFilename = (request: string, mod: NodeModule, ...args: unknown[]) => { |
25 | | - if (mod.filename === modulePath && aliasMap[request]) { |
26 | | - return aliasMap[request]; |
27 | | - } |
28 | | - return MODULE_MAP[modulePath](request, mod, ...args); |
| 26 | + Module._resolveFilename = ( |
| 27 | + request: string, |
| 28 | + mod: NodeModule, |
| 29 | + ...args: unknown[] |
| 30 | + ) => { |
| 31 | + if (mod.filename === modulePath && aliasMap[request]) { |
| 32 | + return aliasMap[request]; |
| 33 | + } |
| 34 | + return MODULE_MAP[modulePath](request, mod, ...args); |
29 | 35 | }; |
30 | 36 | }; |
31 | 37 |
|
32 | 38 | export const removeResolveAlias = (name: string) => { |
33 | 39 | const modulePath = require.resolve(name); |
34 | | - if (!RESOLVER_MAP[modulePath]) { |
| 40 | + if (!(modulePath in RESOLVER_MAP)) { |
35 | 41 | return; |
36 | 42 | } |
37 | 43 | const m = require.cache[modulePath]; |
38 | 44 | if (!m) { |
39 | 45 | throw new Error("Failed to resolve webpack-dev-server"); |
40 | 46 | } |
41 | | - if (RESOLVER_MAP[modulePath]) { |
42 | | - Module._resolveFilename = RESOLVER_MAP[modulePath]!; |
43 | | - m.require.resolve = RESOLVER_MAP[modulePath]!; |
44 | | - delete RESOLVER_MAP[modulePath]; |
45 | | - } |
| 47 | + |
| 48 | + Module._resolveFilename = MODULE_MAP[modulePath]; |
| 49 | + m.require.resolve = RESOLVER_MAP[modulePath]; |
| 50 | + delete RESOLVER_MAP[modulePath]; |
46 | 51 | }; |
0 commit comments