* Create the module-scoped `require` function to pass into CommonJS modules. * @param {Module} mod - The module to create the `require` function for. * @returns {function(string): unknown}
(mod)
| 181 | * @returns {function(string): unknown} |
| 182 | */ |
| 183 | function makeRequireFunction(mod) { |
| 184 | // lazy due to cycle |
| 185 | const Module = lazyModule(); |
| 186 | if (mod instanceof Module !== true) { |
| 187 | throw new ERR_INVALID_ARG_TYPE('mod', 'Module', mod); |
| 188 | } |
| 189 | |
| 190 | function require(path) { |
| 191 | return mod.require(path); |
| 192 | } |
| 193 | |
| 194 | /** |
| 195 | * The `resolve` method that gets attached to module-scope `require`. |
| 196 | * @param {string} request |
| 197 | * @param {Parameters<Module['_resolveFilename']>[3]} options |
| 198 | * @returns {string} |
| 199 | */ |
| 200 | function resolve(request, options) { |
| 201 | validateString(request, 'request'); |
| 202 | const { resolveForCJSWithHooks } = lazyCJSLoader(); |
| 203 | // require.resolve() has different behaviors from the internal resolution used by |
| 204 | // Module._load: |
| 205 | // 1. When the request resolves to a non-existent built-in, it throws MODULE_NOT_FOUND |
| 206 | // instead of UNKNOWN_BUILTIN_MODULE. This is handled by resolveForCJSWithHooks. |
| 207 | // 2. If the request is a prefixed built-in, the returned value is also prefixed. This |
| 208 | // is handled below. |
| 209 | const { filename, url } = resolveForCJSWithHooks( |
| 210 | request, mod, /* isMain */ false, { |
| 211 | __proto__: null, |
| 212 | shouldSkipModuleHooks: false, |
| 213 | requireResolveOptions: options ?? {}, |
| 214 | }); |
| 215 | if (url === request && StringPrototypeStartsWith(request, 'node:')) { |
| 216 | return url; |
| 217 | } |
| 218 | return filename; |
| 219 | } |
| 220 | |
| 221 | require.resolve = resolve; |
| 222 | |
| 223 | /** |
| 224 | * The `paths` method that gets attached to module-scope `require`. |
| 225 | * @param {string} request |
| 226 | * @returns {object} |
| 227 | */ |
| 228 | function paths(request) { |
| 229 | validateString(request, 'request'); |
| 230 | return Module._resolveLookupPaths(request, mod); |
| 231 | } |
| 232 | |
| 233 | resolve.paths = paths; |
| 234 | |
| 235 | setOwnProperty(require, 'main', process.mainModule); |
| 236 | |
| 237 | // Enable support to add extra extension types. |
| 238 | require.extensions = Module._extensions; |
| 239 | |
| 240 | require.cache = Module._cache; |
no test coverage detected
searching dependent graphs…