webpack 5.108.4 → 5.109.1
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.
- package/bin/webpack.js +12 -0
- package/lib/APIPlugin.js +48 -29
- package/lib/CacheFacade.js +8 -0
- package/lib/ChunkGraph.js +17 -15
- package/lib/ChunkGroup.js +1 -0
- package/lib/CompatibilityPlugin.js +62 -29
- package/lib/Compilation.js +58 -6
- package/lib/ConstPlugin.js +11 -11
- package/lib/ContextModule.js +239 -6
- package/lib/ContextModuleFactory.js +139 -14
- package/lib/DefinePlugin.js +433 -112
- package/lib/Entrypoint.js +1 -1
- package/lib/ExportsInfo.js +22 -5
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +107 -5
- package/lib/ExternalModuleFactoryPlugin.js +20 -1
- package/lib/FileSystemInfo.js +256 -100
- package/lib/FlagDependencyUsagePlugin.js +33 -12
- package/lib/HotModuleReplacementPlugin.js +18 -15
- package/lib/InitFragment.js +20 -32
- package/lib/Module.js +3 -0
- package/lib/ModuleFilenameHelpers.js +2 -2
- package/lib/ModuleTypeConstants.js +8 -1
- package/lib/MultiCompiler.js +13 -2
- package/lib/MultiWatching.js +1 -0
- package/lib/NodeStuffPlugin.js +51 -33
- package/lib/NormalModule.js +175 -401
- package/lib/NormalModuleFactory.js +76 -2
- package/lib/ProgressPlugin.js +211 -119
- package/lib/ProvidePlugin.js +2 -2
- package/lib/RuntimeGlobals.js +47 -0
- package/lib/RuntimePlugin.js +67 -107
- package/lib/RuntimeTemplate.js +304 -16
- package/lib/Template.js +23 -3
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WebpackIsIncludedPlugin.js +1 -1
- package/lib/WebpackOptionsApply.js +24 -19
- package/lib/asset/AssetGenerator.js +110 -28
- package/lib/asset/AssetModulesPlugin.js +92 -2
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +14 -4
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/cache/PackFileCacheStrategy.js +9 -3
- package/lib/config/browserslistTargetHandler.js +40 -0
- package/lib/config/defaults.js +219 -29
- package/lib/config/normalization.js +26 -0
- package/lib/config/target.js +9 -1
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/css/CssGenerator.js +40 -31
- package/lib/css/CssLoadingRuntimeModule.js +5 -1
- package/lib/css/CssModulesPlugin.js +13 -0
- package/lib/css/CssParser.js +729 -313
- package/lib/css/syntax.js +1371 -861
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -6
- package/lib/dependencies/AMDPlugin.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +13 -13
- package/lib/dependencies/CommonJsDependencyHelpers.js +39 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +47 -2
- package/lib/dependencies/CommonJsExportsParserPlugin.js +10 -10
- package/lib/dependencies/CommonJsImportsParserPlugin.js +18 -18
- package/lib/dependencies/CommonJsPlugin.js +2 -2
- package/lib/dependencies/CommonJsRequireDependency.js +26 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +32 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/CreateRequireParserPlugin.js +6 -6
- package/lib/dependencies/CssIcssExportDependency.js +162 -71
- package/lib/dependencies/CssUrlDependency.js +35 -4
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +2 -2
- package/lib/dependencies/HarmonyCompatibilityDependency.js +32 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +43 -13
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +7 -19
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +17 -9
- package/lib/dependencies/HarmonyImportDependency.js +13 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +11 -11
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +10 -7
- package/lib/dependencies/HarmonyModulesPlugin.js +6 -0
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -1
- package/lib/dependencies/HtmlEntryDependency.js +797 -172
- package/lib/dependencies/HtmlSourceDependency.js +26 -0
- package/lib/dependencies/ImportDependency.js +43 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +31 -18
- package/lib/dependencies/ImportMetaContextPlugin.js +38 -7
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaPlugin.js +532 -180
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +80 -17
- package/lib/dependencies/ImportPhase.js +10 -8
- package/lib/dependencies/LoaderPlugin.js +5 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +3 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -11
- package/lib/dependencies/SystemPlugin.js +2 -4
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLDependency.js +141 -21
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +324 -112
- package/lib/dependencies/WorkerDependency.js +86 -18
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dll/DelegatedModuleFactoryPlugin.js +19 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +1 -1
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/errors/ModuleParseError.js +39 -22
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +47 -14
- package/lib/esm/ModuleChunkLoadingPlugin.js +8 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +29 -1
- package/lib/hmr/lazyCompilationBackend.js +51 -12
- package/lib/html/HtmlGenerator.js +907 -15
- package/lib/html/HtmlModule.js +2 -2
- package/lib/html/HtmlModulesPlugin.js +610 -166
- package/lib/html/HtmlParser.js +603 -247
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +3451 -2762
- package/lib/ids/IdHelpers.js +25 -11
- package/lib/index.js +6 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +366 -48
- package/lib/javascript/JavascriptGenerator.js +197 -49
- package/lib/javascript/JavascriptModulesPlugin.js +178 -24
- package/lib/javascript/JavascriptParser.js +704 -355
- package/lib/javascript/JavascriptParserHelpers.js +3 -6
- package/lib/javascript/syntax.js +5037 -0
- package/lib/library/ModuleLibraryPlugin.js +38 -1
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +29 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +24 -2
- package/lib/optimize/AggressiveMergingPlugin.js +19 -15
- package/lib/optimize/ConcatenatedModule.js +139 -31
- package/lib/optimize/FlagIncludedChunksPlugin.js +13 -3
- package/lib/optimize/InnerGraphPlugin.js +50 -30
- package/lib/optimize/ModuleConcatenationPlugin.js +139 -24
- package/lib/optimize/SideEffectsFlagPlugin.js +86 -43
- package/lib/optimize/SplitChunksPlugin.js +146 -44
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +15 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +24 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/RuleSetCompiler.js +114 -0
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +24 -8
- package/lib/runtime/AutoPublicPathRuntimeModule.js +7 -1
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +204 -8
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +4 -1
- package/lib/schemes/HttpUriPlugin.js +40 -1
- package/lib/schemes/VirtualUrlPlugin.js +1 -2
- package/lib/serialization/BinaryMiddleware.js +270 -938
- package/lib/serialization/FileMiddleware.js +29 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +229 -194
- package/lib/stats/DefaultStatsPresetPlugin.js +2 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -168
- package/lib/stats/StatsFactory.js +46 -17
- package/lib/url/URLParserPlugin.js +66 -13
- package/lib/util/AsyncQueue.js +122 -72
- package/lib/util/SetHelpers.js +1 -1
- package/lib/util/StackedMap.js +122 -48
- package/lib/util/binarySearchBounds.js +2 -2
- package/lib/util/concatenate.js +40 -14
- package/lib/util/createHooksRegistry.js +13 -5
- package/lib/util/dataURL.js +2 -2
- package/lib/util/deterministicGrouping.js +7 -5
- package/lib/util/formatSize.js +6 -2
- package/lib/util/globUtils.js +710 -0
- package/lib/util/identifier.js +23 -6
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +88 -71
- package/lib/util/magicComment.js +121 -25
- package/lib/util/numberHash.js +2 -2
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +24 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +33 -22
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +79 -16
- package/lib/web/FetchCompileAsyncWasmPlugin.js +19 -0
- package/lib/web/FetchCompileWasmPlugin.js +14 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -0
- package/lib/webpack.js +65 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +3 -0
- package/module.d.ts +21 -0
- package/package.json +12 -11
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +759 -36
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +17 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +1212 -99
|
@@ -145,11 +145,11 @@ class AMDDefineDependencyParserPlugin {
|
|
|
145
145
|
} else if ((localModule = getLocalModule(parser.state, request))) {
|
|
146
146
|
localModule.flagUsed();
|
|
147
147
|
dep = new LocalModuleDependency(localModule, undefined, false);
|
|
148
|
-
dep.loc =
|
|
148
|
+
dep.loc = parser.getLocation(expr);
|
|
149
149
|
parser.state.module.addPresentationalDependency(dep);
|
|
150
150
|
} else {
|
|
151
151
|
dep = this.newRequireItemDependency(request);
|
|
152
|
-
dep.loc =
|
|
152
|
+
dep.loc = parser.getLocation(expr);
|
|
153
153
|
dep.optional = Boolean(parser.scope.inTry);
|
|
154
154
|
parser.state.current.addDependency(dep);
|
|
155
155
|
}
|
|
@@ -159,7 +159,7 @@ class AMDDefineDependencyParserPlugin {
|
|
|
159
159
|
deps,
|
|
160
160
|
/** @type {Range} */ (param.range)
|
|
161
161
|
);
|
|
162
|
-
dep.loc =
|
|
162
|
+
dep.loc = parser.getLocation(expr);
|
|
163
163
|
dep.optional = Boolean(parser.scope.inTry);
|
|
164
164
|
parser.state.module.addPresentationalDependency(dep);
|
|
165
165
|
return true;
|
|
@@ -227,7 +227,7 @@ class AMDDefineDependencyParserPlugin {
|
|
|
227
227
|
parser.state.current.addDependency(dep);
|
|
228
228
|
return true;
|
|
229
229
|
}
|
|
230
|
-
dep.loc =
|
|
230
|
+
dep.loc = parser.getLocation(expr);
|
|
231
231
|
parser.state.module.addPresentationalDependency(dep);
|
|
232
232
|
return true;
|
|
233
233
|
}
|
|
@@ -253,7 +253,7 @@ class AMDDefineDependencyParserPlugin {
|
|
|
253
253
|
parser
|
|
254
254
|
);
|
|
255
255
|
if (!dep) return;
|
|
256
|
-
dep.loc =
|
|
256
|
+
dep.loc = parser.getLocation(expr);
|
|
257
257
|
dep.optional = Boolean(parser.scope.inTry);
|
|
258
258
|
parser.state.current.addDependency(dep);
|
|
259
259
|
return true;
|
|
@@ -465,7 +465,7 @@ class AMDDefineDependencyParserPlugin {
|
|
|
465
465
|
obj ? /** @type {Range} */ (obj.range) : null,
|
|
466
466
|
namedModule || null
|
|
467
467
|
);
|
|
468
|
-
dep.loc =
|
|
468
|
+
dep.loc = parser.getLocation(expr);
|
|
469
469
|
if (namedModule) {
|
|
470
470
|
dep.localModule = addLocalModule(parser.state, namedModule);
|
|
471
471
|
}
|
|
@@ -197,7 +197,7 @@ class AMDPlugin {
|
|
|
197
197
|
/** @type {Range} */ (expr.range),
|
|
198
198
|
[RuntimeGlobals.amdDefine]
|
|
199
199
|
);
|
|
200
|
-
dep.loc =
|
|
200
|
+
dep.loc = parser.getLocation(expr);
|
|
201
201
|
parser.state.module.addPresentationalDependency(dep);
|
|
202
202
|
return true;
|
|
203
203
|
});
|
|
@@ -217,7 +217,7 @@ class AMDPlugin {
|
|
|
217
217
|
/** @type {Range} */ (expr.range),
|
|
218
218
|
[RuntimeGlobals.amdDefine]
|
|
219
219
|
);
|
|
220
|
-
dep.loc =
|
|
220
|
+
dep.loc = parser.getLocation(expr);
|
|
221
221
|
parser.state.module.addPresentationalDependency(dep);
|
|
222
222
|
return false;
|
|
223
223
|
});
|
|
@@ -122,11 +122,11 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
122
122
|
} else if ((localModule = getLocalModule(parser.state, request))) {
|
|
123
123
|
localModule.flagUsed();
|
|
124
124
|
dep = new LocalModuleDependency(localModule, undefined, false);
|
|
125
|
-
dep.loc =
|
|
125
|
+
dep.loc = parser.getLocation(expr);
|
|
126
126
|
parser.state.module.addPresentationalDependency(dep);
|
|
127
127
|
} else {
|
|
128
128
|
dep = this.newRequireItemDependency(request);
|
|
129
|
-
dep.loc =
|
|
129
|
+
dep.loc = parser.getLocation(expr);
|
|
130
130
|
dep.optional = Boolean(parser.scope.inTry);
|
|
131
131
|
parser.state.current.addDependency(dep);
|
|
132
132
|
}
|
|
@@ -137,7 +137,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
137
137
|
/** @type {Range} */
|
|
138
138
|
(param.range)
|
|
139
139
|
);
|
|
140
|
-
dep.loc =
|
|
140
|
+
dep.loc = parser.getLocation(expr);
|
|
141
141
|
dep.optional = Boolean(parser.scope.inTry);
|
|
142
142
|
parser.state.module.addPresentationalDependency(dep);
|
|
143
143
|
return true;
|
|
@@ -203,12 +203,12 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
203
203
|
(param.string),
|
|
204
204
|
param.range
|
|
205
205
|
);
|
|
206
|
-
dep.loc =
|
|
206
|
+
dep.loc = parser.getLocation(expr);
|
|
207
207
|
dep.optional = Boolean(parser.scope.inTry);
|
|
208
208
|
parser.state.current.addDependency(dep);
|
|
209
209
|
return true;
|
|
210
210
|
}
|
|
211
|
-
dep.loc =
|
|
211
|
+
dep.loc = parser.getLocation(expr);
|
|
212
212
|
parser.state.module.addPresentationalDependency(dep);
|
|
213
213
|
return true;
|
|
214
214
|
}
|
|
@@ -235,7 +235,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
235
235
|
parser
|
|
236
236
|
);
|
|
237
237
|
if (!dep) return;
|
|
238
|
-
dep.loc =
|
|
238
|
+
dep.loc = parser.getLocation(expr);
|
|
239
239
|
dep.optional = Boolean(parser.scope.inTry);
|
|
240
240
|
parser.state.current.addDependency(dep);
|
|
241
241
|
return true;
|
|
@@ -296,7 +296,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
296
296
|
/** @type {Expression} */ (expr.arguments[0])
|
|
297
297
|
);
|
|
298
298
|
depBlock = this.newRequireDependenciesBlock(
|
|
299
|
-
|
|
299
|
+
parser.getLocation(expr),
|
|
300
300
|
this.processArrayForRequestString(param)
|
|
301
301
|
);
|
|
302
302
|
dep = this.newRequireDependency(
|
|
@@ -309,7 +309,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
309
309
|
? /** @type {Range} */ (expr.arguments[2].range)
|
|
310
310
|
: null
|
|
311
311
|
);
|
|
312
|
-
dep.loc =
|
|
312
|
+
dep.loc = parser.getLocation(expr);
|
|
313
313
|
depBlock.addDependency(dep);
|
|
314
314
|
|
|
315
315
|
parser.state.current = /** @type {EXPECTED_ANY} */ (depBlock);
|
|
@@ -351,13 +351,13 @@ class AMDRequireDependenciesBlockParserPlugin {
|
|
|
351
351
|
);
|
|
352
352
|
old.addPresentationalDependency(dep);
|
|
353
353
|
if (parser.state.module) {
|
|
354
|
+
const loc = /** @type {SourceLocation} */ (
|
|
355
|
+
parser.getLocation(expr)
|
|
356
|
+
);
|
|
354
357
|
parser.state.module.addError(
|
|
355
358
|
new UnsupportedFeatureWarning(
|
|
356
|
-
`Cannot statically analyse 'require(…, …)' in line ${
|
|
357
|
-
|
|
358
|
-
}`,
|
|
359
|
-
/** @type {DependencyLocation} */
|
|
360
|
-
(expr.loc)
|
|
359
|
+
`Cannot statically analyse 'require(…, …)' in line ${loc.start.line}`,
|
|
360
|
+
loc
|
|
361
361
|
)
|
|
362
362
|
);
|
|
363
363
|
}
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const InitFragment = require("../InitFragment");
|
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
+
const Template = require("../Template");
|
|
9
11
|
const { propertyAccess } = require("../util/property");
|
|
10
12
|
|
|
13
|
+
/** @typedef {import("../ConcatenationScope")} ConcatenationScope */
|
|
14
|
+
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
11
15
|
/** @typedef {import("../Module")} Module */
|
|
12
16
|
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
13
17
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
@@ -70,6 +74,41 @@ const getRequireEsmModuleExportsAccess = (
|
|
|
70
74
|
};
|
|
71
75
|
|
|
72
76
|
module.exports.ESM_MODULE_EXPORTS_NAME = ESM_MODULE_EXPORTS_NAME;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Rewrites an `exports.<names>` reference of a concatenated CommonJS module to
|
|
80
|
+
* a hoisted module-scope variable and registers that variable as the export's
|
|
81
|
+
* symbol, so other concatenated modules bind to it directly.
|
|
82
|
+
* @param {ConcatenationScope} concatenationScope the concatenation scope
|
|
83
|
+
* @param {InitFragment<GenerateContext>[]} initFragments init fragments (receives the `var` declaration)
|
|
84
|
+
* @param {string[]} names full member chain of the reference (at least one entry)
|
|
85
|
+
* @returns {string} replacement expression for the whole reference
|
|
86
|
+
*/
|
|
87
|
+
module.exports.getConcatenatedExportAccess = (
|
|
88
|
+
concatenationScope,
|
|
89
|
+
initFragments,
|
|
90
|
+
names
|
|
91
|
+
) => {
|
|
92
|
+
const name = names[0];
|
|
93
|
+
const identifier = Template.toIdentifier(name);
|
|
94
|
+
// A sanitized name could collide with another export ("a-b" vs "a_b"),
|
|
95
|
+
// so non-identifier names get a hex suffix of the raw name.
|
|
96
|
+
const symbol = `__WEBPACK_CJS_EXPORT_${
|
|
97
|
+
identifier === name
|
|
98
|
+
? name
|
|
99
|
+
: `${identifier}_${Buffer.from(name, "utf8").toString("hex")}`
|
|
100
|
+
}__`;
|
|
101
|
+
initFragments.push(
|
|
102
|
+
new InitFragment(
|
|
103
|
+
`var ${symbol};\n`,
|
|
104
|
+
InitFragment.STAGE_CONSTANTS,
|
|
105
|
+
0,
|
|
106
|
+
`cjs concatenated export ${name}`
|
|
107
|
+
)
|
|
108
|
+
);
|
|
109
|
+
concatenationScope.registerExport(name, symbol);
|
|
110
|
+
return `${symbol}${propertyAccess(names, 1)}`;
|
|
111
|
+
};
|
|
73
112
|
module.exports.getRequireEsmModuleExportsAccess =
|
|
74
113
|
getRequireEsmModuleExportsAccess;
|
|
75
114
|
|
|
@@ -240,6 +240,25 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
240
240
|
dependencies: [from.module]
|
|
241
241
|
};
|
|
242
242
|
}
|
|
243
|
+
// The imported namespace ESM hasn't been flagged by
|
|
244
|
+
// FlagDependencyExportsPlugin yet (no exports determined), so its
|
|
245
|
+
// `"module.exports"` unwrap eligibility is still unknown. Star-reexporting
|
|
246
|
+
// now would add `__esModule` (and names) the monotonic merge can't retract
|
|
247
|
+
// once the module turns out to unwrap, making the result order-dependent
|
|
248
|
+
// across runtimes; defer — the `from.module` dependency re-queues us once
|
|
249
|
+
// its exports (owned names, or dynamic `other`) become known.
|
|
250
|
+
if (
|
|
251
|
+
importedModule &&
|
|
252
|
+
importedModule.getExportsType(moduleGraph, false) === "namespace"
|
|
253
|
+
) {
|
|
254
|
+
const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
255
|
+
if (
|
|
256
|
+
importedExportsInfo.otherExportsInfo.provided === false &&
|
|
257
|
+
importedExportsInfo.ownedExports[Symbol.iterator]().next().done
|
|
258
|
+
) {
|
|
259
|
+
return { exports: [], dependencies: [from.module] };
|
|
260
|
+
}
|
|
261
|
+
}
|
|
243
262
|
const reexportInfo = this.getStarReexports(
|
|
244
263
|
moduleGraph,
|
|
245
264
|
undefined,
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
const InitFragment = require("../InitFragment");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
const { propertyAccess } = require("../util/property");
|
|
11
|
-
const {
|
|
11
|
+
const {
|
|
12
|
+
getConcatenatedExportAccess,
|
|
13
|
+
handleDependencyBase
|
|
14
|
+
} = require("./CommonJsDependencyHelpers");
|
|
12
15
|
const NullDependency = require("./NullDependency");
|
|
13
16
|
|
|
14
17
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
@@ -114,7 +117,14 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
|
|
|
114
117
|
apply(
|
|
115
118
|
dependency,
|
|
116
119
|
source,
|
|
117
|
-
{
|
|
120
|
+
{
|
|
121
|
+
module,
|
|
122
|
+
moduleGraph,
|
|
123
|
+
initFragments,
|
|
124
|
+
runtimeRequirements,
|
|
125
|
+
runtime,
|
|
126
|
+
concatenationScope
|
|
127
|
+
}
|
|
118
128
|
) {
|
|
119
129
|
const dep = /** @type {CommonJsExportsDependency} */ (dependency);
|
|
120
130
|
// CJS exports are never inlined
|
|
@@ -122,6 +132,41 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
|
|
|
122
132
|
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
123
133
|
);
|
|
124
134
|
|
|
135
|
+
if (concatenationScope) {
|
|
136
|
+
// eligibility is enforced by JavascriptGenerator.getConcatenationBailoutReason
|
|
137
|
+
if (dep.base !== "exports" && dep.base !== "module.exports") {
|
|
138
|
+
throw new Error(
|
|
139
|
+
`Unsupported base ${dep.base} in concatenated CommonJS module`
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
if (!used) {
|
|
143
|
+
initFragments.push(
|
|
144
|
+
new InitFragment(
|
|
145
|
+
"var __webpack_unused_export__;\n",
|
|
146
|
+
InitFragment.STAGE_CONSTANTS,
|
|
147
|
+
0,
|
|
148
|
+
"__webpack_unused_export__"
|
|
149
|
+
)
|
|
150
|
+
);
|
|
151
|
+
source.replace(
|
|
152
|
+
dep.range[0],
|
|
153
|
+
dep.range[1] - 1,
|
|
154
|
+
"__webpack_unused_export__"
|
|
155
|
+
);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
source.replace(
|
|
159
|
+
dep.range[0],
|
|
160
|
+
dep.range[1] - 1,
|
|
161
|
+
getConcatenatedExportAccess(
|
|
162
|
+
concatenationScope,
|
|
163
|
+
initFragments,
|
|
164
|
+
dep.names
|
|
165
|
+
)
|
|
166
|
+
);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
125
170
|
const [type, base] = handleDependencyBase(
|
|
126
171
|
dep.base,
|
|
127
172
|
module,
|
|
@@ -353,7 +353,7 @@ class CommonJsExportsParserPlugin {
|
|
|
353
353
|
keptAllExportsForState = parser.state;
|
|
354
354
|
bailoutHint(
|
|
355
355
|
`this in exported function may access any export, so all exports are kept, at ${formatLocation(
|
|
356
|
-
|
|
356
|
+
parser.getLocation(thisExpr)
|
|
357
357
|
)}`
|
|
358
358
|
);
|
|
359
359
|
const dep = new CommonJsSelfReferenceDependency(
|
|
@@ -362,7 +362,7 @@ class CommonJsExportsParserPlugin {
|
|
|
362
362
|
[],
|
|
363
363
|
false
|
|
364
364
|
);
|
|
365
|
-
dep.loc =
|
|
365
|
+
dep.loc = parser.getLocation(thisExpr);
|
|
366
366
|
parser.state.module.addDependency(dep);
|
|
367
367
|
};
|
|
368
368
|
|
|
@@ -404,7 +404,7 @@ class CommonJsExportsParserPlugin {
|
|
|
404
404
|
requireCall.ids,
|
|
405
405
|
!parser.isStatementLevelExpression(expr)
|
|
406
406
|
);
|
|
407
|
-
dep.loc =
|
|
407
|
+
dep.loc = parser.getLocation(expr);
|
|
408
408
|
dep.optional = Boolean(parser.scope.inTry);
|
|
409
409
|
parser.state.module.addDependency(dep);
|
|
410
410
|
/** @type {JavascriptModuleBuildMeta} */ (
|
|
@@ -429,7 +429,7 @@ class CommonJsExportsParserPlugin {
|
|
|
429
429
|
base,
|
|
430
430
|
remainingMembers
|
|
431
431
|
);
|
|
432
|
-
dep.loc =
|
|
432
|
+
dep.loc = parser.getLocation(expr);
|
|
433
433
|
parser.state.module.addDependency(dep);
|
|
434
434
|
/** @type {JavascriptModuleBuildMeta} */ (
|
|
435
435
|
parser.state.module.buildMeta
|
|
@@ -495,7 +495,7 @@ class CommonJsExportsParserPlugin {
|
|
|
495
495
|
false
|
|
496
496
|
);
|
|
497
497
|
dep.getter = reexport.getter;
|
|
498
|
-
dep.loc =
|
|
498
|
+
dep.loc = parser.getLocation(expr);
|
|
499
499
|
dep.optional = Boolean(parser.scope.inTry);
|
|
500
500
|
parser.state.module.addDependency(dep);
|
|
501
501
|
/** @type {JavascriptModuleBuildMeta} */ (
|
|
@@ -517,7 +517,7 @@ class CommonJsExportsParserPlugin {
|
|
|
517
517
|
`Object.defineProperty(${exportsArg.identifier})`,
|
|
518
518
|
[property]
|
|
519
519
|
);
|
|
520
|
-
dep.loc =
|
|
520
|
+
dep.loc = parser.getLocation(expr);
|
|
521
521
|
parser.state.module.addDependency(dep);
|
|
522
522
|
/** @type {JavascriptModuleBuildMeta} */ (
|
|
523
523
|
parser.state.module.buildMeta
|
|
@@ -554,7 +554,7 @@ class CommonJsExportsParserPlugin {
|
|
|
554
554
|
if (members.length === 0) {
|
|
555
555
|
bailout(
|
|
556
556
|
`${base} is used directly at ${formatLocation(
|
|
557
|
-
|
|
557
|
+
parser.getLocation(expr)
|
|
558
558
|
)}`
|
|
559
559
|
);
|
|
560
560
|
}
|
|
@@ -563,7 +563,7 @@ class CommonJsExportsParserPlugin {
|
|
|
563
563
|
`${base}${propertyAccess(
|
|
564
564
|
members
|
|
565
565
|
)}(...) prevents optimization as ${base} is passed as call context at ${formatLocation(
|
|
566
|
-
|
|
566
|
+
parser.getLocation(expr)
|
|
567
567
|
)}`
|
|
568
568
|
);
|
|
569
569
|
}
|
|
@@ -573,7 +573,7 @@ class CommonJsExportsParserPlugin {
|
|
|
573
573
|
members,
|
|
574
574
|
Boolean(call)
|
|
575
575
|
);
|
|
576
|
-
dep.loc =
|
|
576
|
+
dep.loc = parser.getLocation(expr);
|
|
577
577
|
parser.state.module.addDependency(dep);
|
|
578
578
|
/** @type {JavascriptModuleBuildMeta} */ (
|
|
579
579
|
parser.state.module.buildMeta
|
|
@@ -646,7 +646,7 @@ class CommonJsExportsParserPlugin {
|
|
|
646
646
|
: RuntimeGlobals.nodeModuleDecorator,
|
|
647
647
|
!isHarmony
|
|
648
648
|
);
|
|
649
|
-
dep.loc =
|
|
649
|
+
dep.loc = parser.getLocation(expr);
|
|
650
650
|
parser.state.module.addDependency(dep);
|
|
651
651
|
return true;
|
|
652
652
|
});
|
|
@@ -146,7 +146,7 @@ const createRequireAsExpressionHandler =
|
|
|
146
146
|
dep.critical =
|
|
147
147
|
options.unknownContextCritical &&
|
|
148
148
|
"require function is used in a way in which dependencies cannot be statically extracted";
|
|
149
|
-
dep.loc =
|
|
149
|
+
dep.loc = parser.getLocation(expr);
|
|
150
150
|
dep.optional = Boolean(parser.scope.inTry);
|
|
151
151
|
parser.state.current.addDependency(dep);
|
|
152
152
|
return true;
|
|
@@ -194,7 +194,7 @@ const createRequireCallHandler = (
|
|
|
194
194
|
/** @type {Range} */ (expr.range)
|
|
195
195
|
);
|
|
196
196
|
if (binding) binding.dep = dep;
|
|
197
|
-
dep.loc =
|
|
197
|
+
dep.loc = parser.getLocation(expr);
|
|
198
198
|
dep.optional = Boolean(parser.scope.inTry);
|
|
199
199
|
parser.state.current.addDependency(dep);
|
|
200
200
|
getHarmonyImportGuard().attachDependencyGuards(parser, dep);
|
|
@@ -227,7 +227,7 @@ const createRequireCallHandler = (
|
|
|
227
227
|
getContext()
|
|
228
228
|
);
|
|
229
229
|
if (!dep) return;
|
|
230
|
-
dep.loc =
|
|
230
|
+
dep.loc = parser.getLocation(expr);
|
|
231
231
|
dep.optional = Boolean(parser.scope.inTry);
|
|
232
232
|
parser.state.current.addDependency(dep);
|
|
233
233
|
return true;
|
|
@@ -244,7 +244,7 @@ const createRequireCallHandler = (
|
|
|
244
244
|
parser.state.module.addWarning(
|
|
245
245
|
new CommentCompilationWarning(
|
|
246
246
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
247
|
-
|
|
247
|
+
parser.getLocation(comment)
|
|
248
248
|
)
|
|
249
249
|
);
|
|
250
250
|
}
|
|
@@ -254,7 +254,7 @@ const createRequireCallHandler = (
|
|
|
254
254
|
parser.state.module.addWarning(
|
|
255
255
|
new UnsupportedFeatureWarning(
|
|
256
256
|
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
|
257
|
-
|
|
257
|
+
parser.getLocation(expr)
|
|
258
258
|
)
|
|
259
259
|
);
|
|
260
260
|
} else if (requireOptions.webpackIgnore) {
|
|
@@ -282,7 +282,7 @@ const createRequireCallHandler = (
|
|
|
282
282
|
const dep = new RequireHeaderDependency(
|
|
283
283
|
/** @type {Range} */ (expr.callee.range)
|
|
284
284
|
);
|
|
285
|
-
dep.loc =
|
|
285
|
+
dep.loc = parser.getLocation(expr);
|
|
286
286
|
parser.state.module.addPresentationalDependency(dep);
|
|
287
287
|
return true;
|
|
288
288
|
}
|
|
@@ -300,7 +300,7 @@ const createRequireCallHandler = (
|
|
|
300
300
|
/** @type {Range} */ (expr.range),
|
|
301
301
|
callNew
|
|
302
302
|
);
|
|
303
|
-
dep.loc =
|
|
303
|
+
dep.loc = parser.getLocation(expr);
|
|
304
304
|
parser.state.module.addPresentationalDependency(dep);
|
|
305
305
|
} else {
|
|
306
306
|
const result = processRequireItem(expr, param);
|
|
@@ -310,7 +310,7 @@ const createRequireCallHandler = (
|
|
|
310
310
|
const dep = new RequireHeaderDependency(
|
|
311
311
|
/** @type {Range} */ (expr.callee.range)
|
|
312
312
|
);
|
|
313
|
-
dep.loc =
|
|
313
|
+
dep.loc = parser.getLocation(expr);
|
|
314
314
|
parser.state.module.addPresentationalDependency(dep);
|
|
315
315
|
}
|
|
316
316
|
}
|
|
@@ -340,7 +340,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
340
340
|
/** @type {Range} */ (param.range),
|
|
341
341
|
getContext()
|
|
342
342
|
);
|
|
343
|
-
dep.loc =
|
|
343
|
+
dep.loc = parser.getLocation(expr);
|
|
344
344
|
dep.optional = Boolean(parser.scope.inTry);
|
|
345
345
|
dep.weak = weak;
|
|
346
346
|
parser.state.current.addDependency(dep);
|
|
@@ -369,7 +369,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
369
369
|
getContext()
|
|
370
370
|
);
|
|
371
371
|
if (!dep) return;
|
|
372
|
-
dep.loc =
|
|
372
|
+
dep.loc = parser.getLocation(expr);
|
|
373
373
|
dep.optional = Boolean(parser.scope.inTry);
|
|
374
374
|
parser.state.current.addDependency(dep);
|
|
375
375
|
return true;
|
|
@@ -386,7 +386,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
386
386
|
parser.state.module.addWarning(
|
|
387
387
|
new CommentCompilationWarning(
|
|
388
388
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
389
|
-
|
|
389
|
+
parser.getLocation(comment)
|
|
390
390
|
)
|
|
391
391
|
);
|
|
392
392
|
}
|
|
@@ -396,7 +396,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
396
396
|
parser.state.module.addWarning(
|
|
397
397
|
new UnsupportedFeatureWarning(
|
|
398
398
|
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
|
399
|
-
|
|
399
|
+
parser.getLocation(expr)
|
|
400
400
|
)
|
|
401
401
|
);
|
|
402
402
|
} else if (requireOptions.webpackIgnore) {
|
|
@@ -420,7 +420,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
420
420
|
const dep = new RequireResolveHeaderDependency(
|
|
421
421
|
/** @type {Range} */ (expr.callee.range)
|
|
422
422
|
);
|
|
423
|
-
dep.loc =
|
|
423
|
+
dep.loc = parser.getLocation(expr);
|
|
424
424
|
parser.state.module.addPresentationalDependency(dep);
|
|
425
425
|
return true;
|
|
426
426
|
}
|
|
@@ -431,7 +431,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
431
431
|
const dep = new RequireResolveHeaderDependency(
|
|
432
432
|
/** @type {Range} */ (expr.callee.range)
|
|
433
433
|
);
|
|
434
|
-
dep.loc =
|
|
434
|
+
dep.loc = parser.getLocation(expr);
|
|
435
435
|
parser.state.module.addPresentationalDependency(dep);
|
|
436
436
|
return true;
|
|
437
437
|
};
|
|
@@ -502,7 +502,7 @@ class CommonJsImportsParserPlugin {
|
|
|
502
502
|
parser.hooks.assign.for("require").tap(PLUGIN_NAME, (expr) => {
|
|
503
503
|
// to not leak to global "require", we need to define a local require here.
|
|
504
504
|
const dep = new ConstDependency("var require;", 0);
|
|
505
|
-
dep.loc =
|
|
505
|
+
dep.loc = parser.getLocation(expr);
|
|
506
506
|
parser.state.module.addPresentationalDependency(dep);
|
|
507
507
|
return true;
|
|
508
508
|
});
|
|
@@ -549,7 +549,7 @@ class CommonJsImportsParserPlugin {
|
|
|
549
549
|
"undefined",
|
|
550
550
|
/** @type {Range} */ (expr.range)
|
|
551
551
|
);
|
|
552
|
-
dep.loc =
|
|
552
|
+
dep.loc = parser.getLocation(expr);
|
|
553
553
|
parser.state.module.addPresentationalDependency(dep);
|
|
554
554
|
return false;
|
|
555
555
|
};
|
|
@@ -640,7 +640,7 @@ class CommonJsImportsParserPlugin {
|
|
|
640
640
|
/** @type {Range} */ (expr.range)[0]
|
|
641
641
|
);
|
|
642
642
|
dep.optional = Boolean(parser.scope.inTry);
|
|
643
|
-
dep.loc =
|
|
643
|
+
dep.loc = parser.getLocation(expr);
|
|
644
644
|
parser.state.current.addDependency(dep);
|
|
645
645
|
return true;
|
|
646
646
|
}
|
|
@@ -678,7 +678,7 @@ class CommonJsImportsParserPlugin {
|
|
|
678
678
|
/** @type {Range} */ (expr.range)[0]
|
|
679
679
|
);
|
|
680
680
|
dep.optional = Boolean(parser.scope.inTry);
|
|
681
|
-
dep.loc =
|
|
681
|
+
dep.loc = parser.getLocation(expr.callee);
|
|
682
682
|
parser.state.current.addDependency(dep);
|
|
683
683
|
parser.walkExpressions(expr.arguments);
|
|
684
684
|
return true;
|
|
@@ -220,7 +220,7 @@ class CommonJsPlugin {
|
|
|
220
220
|
const dep = new RuntimeRequirementsDependency([
|
|
221
221
|
RuntimeGlobals.moduleLoaded
|
|
222
222
|
]);
|
|
223
|
-
dep.loc =
|
|
223
|
+
dep.loc = parser.getLocation(expr);
|
|
224
224
|
parser.state.module.addPresentationalDependency(dep);
|
|
225
225
|
return true;
|
|
226
226
|
});
|
|
@@ -234,7 +234,7 @@ class CommonJsPlugin {
|
|
|
234
234
|
const dep = new RuntimeRequirementsDependency([
|
|
235
235
|
RuntimeGlobals.moduleId
|
|
236
236
|
]);
|
|
237
|
-
dep.loc =
|
|
237
|
+
dep.loc = parser.getLocation(expr);
|
|
238
238
|
parser.state.module.addPresentationalDependency(dep);
|
|
239
239
|
return true;
|
|
240
240
|
});
|
|
@@ -30,6 +30,28 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
30
30
|
|
|
31
31
|
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Trims a member-access path at the first segment that is definitively not a
|
|
35
|
+
* provided export of the module. Such a segment is a runtime property (e.g. an
|
|
36
|
+
* array/object prototype method like `arr.includes`), so only the value up to
|
|
37
|
+
* that point is observed; referencing the whole value keeps its data intact
|
|
38
|
+
* instead of tree-shaking it away. Real named exports (`utils.foo`) are kept.
|
|
39
|
+
* @param {import("../ExportsInfo")} exportsInfo module exports info
|
|
40
|
+
* @param {string[]} name member-access path
|
|
41
|
+
* @returns {string[]} the provided prefix of the path
|
|
42
|
+
*/
|
|
43
|
+
const trimToProvidedPrefix = (exportsInfo, name) => {
|
|
44
|
+
let current = exportsInfo;
|
|
45
|
+
for (let i = 0; i < name.length; i++) {
|
|
46
|
+
const exportInfo = current.getReadOnlyExportInfo(name[i]);
|
|
47
|
+
if (exportInfo.provided === false) return name.slice(0, i);
|
|
48
|
+
const nested = exportInfo.exportsInfo;
|
|
49
|
+
if (!nested) return name;
|
|
50
|
+
current = nested;
|
|
51
|
+
}
|
|
52
|
+
return name;
|
|
53
|
+
};
|
|
54
|
+
|
|
33
55
|
class CommonJsRequireDependency extends ModuleDependency {
|
|
34
56
|
/**
|
|
35
57
|
* Creates an instance of CommonJsRequireDependency.
|
|
@@ -94,8 +116,11 @@ class CommonJsRequireDependency extends ModuleDependency {
|
|
|
94
116
|
return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
|
|
95
117
|
}
|
|
96
118
|
if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
119
|
+
const exportsInfo = importedModule
|
|
120
|
+
? moduleGraph.getExportsInfo(importedModule)
|
|
121
|
+
: undefined;
|
|
97
122
|
return this.referencedExports.map((name) => ({
|
|
98
|
-
name,
|
|
123
|
+
name: exportsInfo ? trimToProvidedPrefix(exportsInfo, name) : name,
|
|
99
124
|
canMangle: false,
|
|
100
125
|
canInline: false
|
|
101
126
|
}));
|
|
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const { equals } = require("../util/ArrayHelpers");
|
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
11
|
const { propertyAccess } = require("../util/property");
|
|
12
|
+
const { getConcatenatedExportAccess } = require("./CommonJsDependencyHelpers");
|
|
12
13
|
const NullDependency = require("./NullDependency");
|
|
13
14
|
|
|
14
15
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
@@ -115,7 +116,14 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
|
|
115
116
|
apply(
|
|
116
117
|
dependency,
|
|
117
118
|
source,
|
|
118
|
-
{
|
|
119
|
+
{
|
|
120
|
+
module,
|
|
121
|
+
moduleGraph,
|
|
122
|
+
runtime,
|
|
123
|
+
runtimeRequirements,
|
|
124
|
+
initFragments,
|
|
125
|
+
concatenationScope
|
|
126
|
+
}
|
|
119
127
|
) {
|
|
120
128
|
const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
|
|
121
129
|
// CJS exports are never inlined
|
|
@@ -131,6 +139,29 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
|
|
131
139
|
);
|
|
132
140
|
}
|
|
133
141
|
|
|
142
|
+
if (concatenationScope) {
|
|
143
|
+
// eligibility (non-empty names, exports/module.exports base) is enforced
|
|
144
|
+
// by JavascriptGenerator.getConcatenationBailoutReason
|
|
145
|
+
if (
|
|
146
|
+
dep.names.length === 0 ||
|
|
147
|
+
(dep.base !== "exports" && dep.base !== "module.exports")
|
|
148
|
+
) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
`Unsupported self-reference ${dep.base} in concatenated CommonJS module`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
source.replace(
|
|
154
|
+
dep.range[0],
|
|
155
|
+
dep.range[1] - 1,
|
|
156
|
+
getConcatenatedExportAccess(
|
|
157
|
+
concatenationScope,
|
|
158
|
+
initFragments,
|
|
159
|
+
dep.names
|
|
160
|
+
)
|
|
161
|
+
);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
134
165
|
/** @type {string} */
|
|
135
166
|
let base;
|
|
136
167
|
switch (dep.base) {
|