( isDynamicRequireModulesEnabled, dynamicRequireModules, commonDir, ignoreDynamicRequires )
| 74 | export const CREATE_COMMONJS_REQUIRE_EXPORT = 'createCommonjsRequire'; |
| 75 | |
| 76 | export function getDynamicModuleRegistry( |
| 77 | isDynamicRequireModulesEnabled, |
| 78 | dynamicRequireModules, |
| 79 | commonDir, |
| 80 | ignoreDynamicRequires |
| 81 | ) { |
| 82 | if (!isDynamicRequireModulesEnabled) { |
| 83 | return `export function ${COMMONJS_REQUIRE_EXPORT}(path) { |
| 84 | ${FAILED_REQUIRE_ERROR} |
| 85 | }`; |
| 86 | } |
| 87 | const dynamicModuleImports = [...dynamicRequireModules.values()] |
| 88 | .map( |
| 89 | (id, index) => |
| 90 | `import ${ |
| 91 | id.endsWith('.json') ? `json${index}` : `{ __require as require${index} }` |
| 92 | } from ${JSON.stringify(id)};` |
| 93 | ) |
| 94 | .join('\n'); |
| 95 | const dynamicModuleProps = [...dynamicRequireModules.keys()] |
| 96 | .map( |
| 97 | (id, index) => |
| 98 | `\t\t${JSON.stringify(getVirtualPathForDynamicRequirePath(id, commonDir))}: ${ |
| 99 | id.endsWith('.json') ? `function () { return json${index}; }` : `require${index}` |
| 100 | }` |
| 101 | ) |
| 102 | .join(',\n'); |
| 103 | return `${dynamicModuleImports} |
| 104 | |
| 105 | var dynamicModules; |
| 106 | |
| 107 | function getDynamicModules() { |
| 108 | return dynamicModules || (dynamicModules = { |
| 109 | ${dynamicModuleProps} |
| 110 | }); |
| 111 | } |
| 112 | |
| 113 | export function ${CREATE_COMMONJS_REQUIRE_EXPORT}(originalModuleDir) { |
| 114 | function handleRequire(path) { |
| 115 | var resolvedPath = commonjsResolve(path, originalModuleDir); |
| 116 | if (resolvedPath !== null) { |
| 117 | return getDynamicModules()[resolvedPath](); |
| 118 | } |
| 119 | ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} |
| 120 | } |
| 121 | handleRequire.resolve = function (path) { |
| 122 | var resolvedPath = commonjsResolve(path, originalModuleDir); |
| 123 | if (resolvedPath !== null) { |
| 124 | return resolvedPath; |
| 125 | } |
| 126 | return require.resolve(path); |
| 127 | } |
| 128 | return handleRequire; |
| 129 | } |
| 130 | |
| 131 | function commonjsResolve (path, originalModuleDir) { |
| 132 | var shouldTryNodeModules = isPossibleNodeModulesPath(path); |
| 133 | path = normalize(path); |
no test coverage detected