webpack 5.93.0 → 5.94.0
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/README.md +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +126 -69
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +26 -24
- package/lib/css/CssGenerator.js +9 -4
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +91 -69
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +80 -48
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +8 -11
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +15 -14
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1 -0
- 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/types.d.ts +667 -347
@@ -50,7 +50,7 @@ const harmonySpecifierTag = Symbol("harmony import");
|
|
50
50
|
|
51
51
|
/**
|
52
52
|
* @param {ImportDeclaration | ExportNamedDeclaration | ExportAllDeclaration | (ImportExpression & { arguments?: ObjectExpression[] })} node node with assertions
|
53
|
-
* @returns {ImportAttributes} import attributes
|
53
|
+
* @returns {ImportAttributes | undefined} import attributes
|
54
54
|
*/
|
55
55
|
function getAttributes(node) {
|
56
56
|
if (
|
@@ -96,7 +96,7 @@ function getAttributes(node) {
|
|
96
96
|
? /** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions
|
97
97
|
: /** @type {{ attributes?: ImportAttributeNode[] }} */ (node).attributes;
|
98
98
|
if (attributes === undefined) {
|
99
|
-
return
|
99
|
+
return;
|
100
100
|
}
|
101
101
|
const result = /** @type {ImportAttributes} */ ({});
|
102
102
|
for (const attribute of attributes) {
|
@@ -138,12 +138,22 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
138
138
|
apply(parser) {
|
139
139
|
const { exportPresenceMode } = this;
|
140
140
|
|
141
|
+
/**
|
142
|
+
* @param {string[]} members members
|
143
|
+
* @param {boolean[]} membersOptionals members Optionals
|
144
|
+
* @returns {string[]} a non optional part
|
145
|
+
*/
|
141
146
|
function getNonOptionalPart(members, membersOptionals) {
|
142
147
|
let i = 0;
|
143
148
|
while (i < members.length && membersOptionals[i] === false) i++;
|
144
149
|
return i !== members.length ? members.slice(0, i) : members;
|
145
150
|
}
|
146
151
|
|
152
|
+
/**
|
153
|
+
* @param {TODO} node member expression
|
154
|
+
* @param {number} count count
|
155
|
+
* @returns {TODO} member expression
|
156
|
+
*/
|
147
157
|
function getNonOptionalMemberChain(node, count) {
|
148
158
|
while (count--) node = node.object;
|
149
159
|
return node;
|
@@ -221,7 +231,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
221
231
|
)
|
222
232
|
return;
|
223
233
|
const settings = rootInfo.tagInfo.data;
|
224
|
-
const members =
|
234
|
+
const members =
|
235
|
+
/** @type {(() => string[])} */
|
236
|
+
(rightPart.getMembers)();
|
225
237
|
const dep = new HarmonyEvaluatedImportSpecifierDependency(
|
226
238
|
settings.source,
|
227
239
|
settings.sourceOrder,
|
@@ -280,6 +292,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
280
292
|
members,
|
281
293
|
membersOptionals
|
282
294
|
);
|
295
|
+
/** @type {Range[]} */
|
283
296
|
const ranges = memberRanges.slice(
|
284
297
|
0,
|
285
298
|
memberRanges.length - (members.length - nonOptionalMembers.length)
|
@@ -326,6 +339,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
326
339
|
members,
|
327
340
|
membersOptionals
|
328
341
|
);
|
342
|
+
/** @type {Range[]} */
|
329
343
|
const ranges = memberRanges.slice(
|
330
344
|
0,
|
331
345
|
memberRanges.length - (members.length - nonOptionalMembers.length)
|
@@ -355,7 +369,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
355
369
|
);
|
356
370
|
// only in case when we strictly follow the spec we need a special case here
|
357
371
|
dep.namespaceObjectAsContext =
|
358
|
-
members.length > 0 &&
|
372
|
+
members.length > 0 &&
|
373
|
+
/** @type {boolean} */ (this.strictThisContextOnImports);
|
359
374
|
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
360
375
|
parser.state.module.addDependency(dep);
|
361
376
|
if (args) parser.walkExpressions(args);
|
@@ -42,7 +42,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
|
|
42
42
|
|
43
43
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
44
44
|
/**
|
45
|
-
* @param {
|
45
|
+
* @param {string} request request
|
46
46
|
* @param {number} sourceOrder source order
|
47
47
|
* @param {string[]} ids ids
|
48
48
|
* @param {string} name name
|
@@ -67,7 +67,6 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
67
67
|
this.range = range;
|
68
68
|
this.idRanges = idRanges;
|
69
69
|
this.exportPresenceMode = exportPresenceMode;
|
70
|
-
/** @type {boolean | undefined} */
|
71
70
|
this.namespaceObjectAsContext = false;
|
72
71
|
this.call = undefined;
|
73
72
|
this.directImport = undefined;
|
@@ -105,7 +104,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
105
104
|
getIds(moduleGraph) {
|
106
105
|
const meta = moduleGraph.getMetaIfExisting(this);
|
107
106
|
if (meta === undefined) return this.ids;
|
108
|
-
const ids = meta[idsSymbol];
|
107
|
+
const ids = meta[/** @type {keyof object} */ (idsSymbol)];
|
109
108
|
return ids !== undefined ? ids : this.ids;
|
110
109
|
}
|
111
110
|
|
@@ -149,7 +148,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
149
148
|
if (ids.length === 0) return this._getReferencedExportsInDestructuring();
|
150
149
|
let namespaceObjectAsContext = this.namespaceObjectAsContext;
|
151
150
|
if (ids[0] === "default") {
|
152
|
-
const selfModule =
|
151
|
+
const selfModule =
|
152
|
+
/** @type {Module} */
|
153
|
+
(moduleGraph.getParentModule(this));
|
153
154
|
const importedModule =
|
154
155
|
/** @type {Module} */
|
155
156
|
(moduleGraph.getModule(this));
|
@@ -196,9 +197,8 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
196
197
|
refs.push(ids ? ids.concat([id]) : [id]);
|
197
198
|
}
|
198
199
|
return refs;
|
199
|
-
} else {
|
200
|
-
return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
|
201
200
|
}
|
201
|
+
return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
|
202
202
|
}
|
203
203
|
|
204
204
|
/**
|
@@ -208,9 +208,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
208
208
|
_getEffectiveExportPresenceLevel(moduleGraph) {
|
209
209
|
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
|
210
210
|
return this.exportPresenceMode;
|
211
|
-
const buildMeta =
|
212
|
-
|
213
|
-
|
211
|
+
const buildMeta =
|
212
|
+
/** @type {BuildMeta} */
|
213
|
+
(
|
214
|
+
/** @type {Module} */
|
215
|
+
(moduleGraph.getParentModule(this)).buildMeta
|
216
|
+
);
|
214
217
|
return buildMeta.strictHarmonyModule
|
215
218
|
? ExportPresenceModes.ERROR
|
216
219
|
: ExportPresenceModes.WARN;
|
@@ -344,14 +347,34 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
344
347
|
}
|
345
348
|
|
346
349
|
if (dep.referencedPropertiesInDestructuring) {
|
347
|
-
|
348
|
-
|
350
|
+
let prefixedIds = ids;
|
351
|
+
|
352
|
+
if (ids[0] === "default") {
|
353
|
+
const selfModule = moduleGraph.getParentModule(dep);
|
354
|
+
const importedModule =
|
355
|
+
/** @type {Module} */
|
356
|
+
(moduleGraph.getModule(dep));
|
357
|
+
const exportsType = importedModule.getExportsType(
|
358
|
+
moduleGraph,
|
359
|
+
/** @type {BuildMeta} */
|
360
|
+
(selfModule.buildMeta).strictHarmonyModule
|
361
|
+
);
|
362
|
+
if (
|
363
|
+
(exportsType === "default-only" ||
|
364
|
+
exportsType === "default-with-named") &&
|
365
|
+
ids.length >= 1
|
366
|
+
) {
|
367
|
+
prefixedIds = ids.slice(1);
|
368
|
+
}
|
369
|
+
}
|
370
|
+
|
371
|
+
for (const {
|
349
372
|
id,
|
350
373
|
shorthand,
|
351
374
|
range
|
352
375
|
} of dep.referencedPropertiesInDestructuring) {
|
353
376
|
const concatedIds = prefixedIds.concat([id]);
|
354
|
-
const module = moduleGraph.getModule(dep);
|
377
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
355
378
|
const used = moduleGraph
|
356
379
|
.getExportsInfo(module)
|
357
380
|
.getUsedName(concatedIds, runtime);
|
@@ -360,11 +383,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
360
383
|
const name = concatedIds[concatedIds.length - 1];
|
361
384
|
if (newName === name) continue;
|
362
385
|
|
363
|
-
const comment = Template.toNormalComment(name)
|
386
|
+
const comment = `${Template.toNormalComment(name)} `;
|
364
387
|
const key = comment + JSON.stringify(newName);
|
365
388
|
source.replace(
|
366
|
-
|
367
|
-
range[
|
389
|
+
/** @type {Range} */
|
390
|
+
(range)[0],
|
391
|
+
/** @type {Range} */
|
392
|
+
(range)[1] - 1,
|
368
393
|
shorthand ? `${key}: ${name}` : `${key}`
|
369
394
|
);
|
370
395
|
}
|
@@ -124,7 +124,7 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
124
124
|
);
|
125
125
|
const content = runtimeTemplate.moduleNamespacePromise({
|
126
126
|
chunkGraph,
|
127
|
-
block
|
127
|
+
block,
|
128
128
|
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
129
129
|
request: dep.request,
|
130
130
|
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
@@ -57,14 +57,14 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
57
57
|
apply(parser) {
|
58
58
|
parser.hooks.evaluateIdentifier
|
59
59
|
.for("import.meta.webpackContext")
|
60
|
-
.tap("ImportMetaContextDependencyParserPlugin", expr =>
|
61
|
-
|
60
|
+
.tap("ImportMetaContextDependencyParserPlugin", expr =>
|
61
|
+
evaluateToIdentifier(
|
62
62
|
"import.meta.webpackContext",
|
63
63
|
"import.meta",
|
64
64
|
() => ["webpackContext"],
|
65
65
|
true
|
66
|
-
)(expr)
|
67
|
-
|
66
|
+
)(expr)
|
67
|
+
);
|
68
68
|
parser.hooks.call
|
69
69
|
.for("import.meta.webpackContext")
|
70
70
|
.tap("ImportMetaContextDependencyParserPlugin", expr => {
|
@@ -293,7 +293,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
293
293
|
/** @type {Range} */ (expr.range)
|
294
294
|
);
|
295
295
|
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
296
|
-
dep.optional =
|
296
|
+
dep.optional = Boolean(parser.scope.inTry);
|
297
297
|
parser.state.current.addDependency(dep);
|
298
298
|
return true;
|
299
299
|
});
|
@@ -49,9 +49,7 @@ class ImportMetaPlugin {
|
|
49
49
|
* @param {NormalModule} module module
|
50
50
|
* @returns {string} file url
|
51
51
|
*/
|
52
|
-
const getUrl = module =>
|
53
|
-
return pathToFileURL(module.resource).toString();
|
54
|
-
};
|
52
|
+
const getUrl = module => pathToFileURL(module.resource).toString();
|
55
53
|
/**
|
56
54
|
* @param {Parser} parser parser parser
|
57
55
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
@@ -76,8 +74,8 @@ class ImportMetaPlugin {
|
|
76
74
|
return;
|
77
75
|
}
|
78
76
|
|
79
|
-
|
80
|
-
const webpackVersion = parseInt(
|
77
|
+
// import.meta direct
|
78
|
+
const webpackVersion = Number.parseInt(
|
81
79
|
require("../../package.json").version,
|
82
80
|
10
|
83
81
|
);
|
@@ -90,7 +88,7 @@ class ImportMetaPlugin {
|
|
90
88
|
*/
|
91
89
|
const importMetaUnknownProperty = members =>
|
92
90
|
`${Template.toNormalComment(
|
93
|
-
|
91
|
+
`unsupported import.meta.${members.join(".")}`
|
94
92
|
)} undefined${propertyAccess(members, 1)}`;
|
95
93
|
parser.hooks.typeof
|
96
94
|
.for("import.meta")
|
@@ -162,7 +160,7 @@ class ImportMetaPlugin {
|
|
162
160
|
evaluateToIdentifier("import.meta", "import.meta", () => [], true)
|
163
161
|
);
|
164
162
|
|
165
|
-
|
163
|
+
// import.meta.url
|
166
164
|
parser.hooks.typeof
|
167
165
|
.for("import.meta.url")
|
168
166
|
.tap(
|
@@ -185,13 +183,13 @@ class ImportMetaPlugin {
|
|
185
183
|
.tap(PLUGIN_NAME, evaluateToString("string"));
|
186
184
|
parser.hooks.evaluateIdentifier
|
187
185
|
.for("import.meta.url")
|
188
|
-
.tap(PLUGIN_NAME, expr =>
|
189
|
-
|
186
|
+
.tap(PLUGIN_NAME, expr =>
|
187
|
+
new BasicEvaluatedExpression()
|
190
188
|
.setString(getUrl(parser.state.module))
|
191
|
-
.setRange(/** @type {Range} */ (expr.range))
|
192
|
-
|
189
|
+
.setRange(/** @type {Range} */ (expr.range))
|
190
|
+
);
|
193
191
|
|
194
|
-
|
192
|
+
// import.meta.webpack
|
195
193
|
parser.hooks.typeof
|
196
194
|
.for("import.meta.webpack")
|
197
195
|
.tap(
|
@@ -211,7 +209,7 @@ class ImportMetaPlugin {
|
|
211
209
|
.for("import.meta.webpack")
|
212
210
|
.tap(PLUGIN_NAME, evaluateToNumber(webpackVersion));
|
213
211
|
|
214
|
-
|
212
|
+
// Unknown properties
|
215
213
|
parser.hooks.unhandledExpressionMemberChain
|
216
214
|
.for("import.meta")
|
217
215
|
.tap(PLUGIN_NAME, (expr, members) => {
|
@@ -100,11 +100,9 @@ class ImportParserPlugin {
|
|
100
100
|
/** @type {DependencyLocation} */ (expr.loc)
|
101
101
|
)
|
102
102
|
);
|
103
|
-
} else {
|
103
|
+
} else if (importOptions.webpackIgnore) {
|
104
104
|
// Do not instrument `import()` if `webpackIgnore` is `true`
|
105
|
-
|
106
|
-
return false;
|
107
|
-
}
|
105
|
+
return false;
|
108
106
|
}
|
109
107
|
}
|
110
108
|
if (importOptions.webpackChunkName !== undefined) {
|
@@ -220,12 +218,10 @@ class ImportParserPlugin {
|
|
220
218
|
/** @type {DependencyLocation} */ (expr.loc)
|
221
219
|
)
|
222
220
|
);
|
221
|
+
} else if (typeof importOptions.webpackExports === "string") {
|
222
|
+
exports = [[importOptions.webpackExports]];
|
223
223
|
} else {
|
224
|
-
|
225
|
-
exports = [[importOptions.webpackExports]];
|
226
|
-
} else {
|
227
|
-
exports = exportsFromEnumerable(importOptions.webpackExports);
|
228
|
-
}
|
224
|
+
exports = exportsFromEnumerable(importOptions.webpackExports);
|
229
225
|
}
|
230
226
|
}
|
231
227
|
}
|
@@ -251,7 +247,7 @@ class ImportParserPlugin {
|
|
251
247
|
if (exports) {
|
252
248
|
parser.state.module.addWarning(
|
253
249
|
new UnsupportedFeatureWarning(
|
254
|
-
|
250
|
+
"`webpackExports` could not be used with destructuring assignment.",
|
255
251
|
/** @type {DependencyLocation} */ (expr.loc)
|
256
252
|
)
|
257
253
|
);
|
@@ -296,45 +292,44 @@ class ImportParserPlugin {
|
|
296
292
|
attributes
|
297
293
|
);
|
298
294
|
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
299
|
-
dep.optional =
|
295
|
+
dep.optional = Boolean(parser.scope.inTry);
|
300
296
|
depBlock.addDependency(dep);
|
301
297
|
parser.state.current.addBlock(depBlock);
|
302
298
|
}
|
303
299
|
return true;
|
304
|
-
} else {
|
305
|
-
if (mode === "weak") {
|
306
|
-
mode = "async-weak";
|
307
|
-
}
|
308
|
-
const dep = ContextDependencyHelpers.create(
|
309
|
-
ImportContextDependency,
|
310
|
-
/** @type {Range} */ (expr.range),
|
311
|
-
param,
|
312
|
-
expr,
|
313
|
-
this.options,
|
314
|
-
{
|
315
|
-
chunkName,
|
316
|
-
groupOptions,
|
317
|
-
include,
|
318
|
-
exclude,
|
319
|
-
mode,
|
320
|
-
namespaceObject: /** @type {BuildMeta} */ (
|
321
|
-
parser.state.module.buildMeta
|
322
|
-
).strictHarmonyModule
|
323
|
-
? "strict"
|
324
|
-
: true,
|
325
|
-
typePrefix: "import()",
|
326
|
-
category: "esm",
|
327
|
-
referencedExports: exports,
|
328
|
-
attributes: getAttributes(expr)
|
329
|
-
},
|
330
|
-
parser
|
331
|
-
);
|
332
|
-
if (!dep) return;
|
333
|
-
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
334
|
-
dep.optional = !!parser.scope.inTry;
|
335
|
-
parser.state.current.addDependency(dep);
|
336
|
-
return true;
|
337
300
|
}
|
301
|
+
if (mode === "weak") {
|
302
|
+
mode = "async-weak";
|
303
|
+
}
|
304
|
+
const dep = ContextDependencyHelpers.create(
|
305
|
+
ImportContextDependency,
|
306
|
+
/** @type {Range} */ (expr.range),
|
307
|
+
param,
|
308
|
+
expr,
|
309
|
+
this.options,
|
310
|
+
{
|
311
|
+
chunkName,
|
312
|
+
groupOptions,
|
313
|
+
include,
|
314
|
+
exclude,
|
315
|
+
mode,
|
316
|
+
namespaceObject: /** @type {BuildMeta} */ (
|
317
|
+
parser.state.module.buildMeta
|
318
|
+
).strictHarmonyModule
|
319
|
+
? "strict"
|
320
|
+
: true,
|
321
|
+
typePrefix: "import()",
|
322
|
+
category: "esm",
|
323
|
+
referencedExports: exports,
|
324
|
+
attributes: getAttributes(expr)
|
325
|
+
},
|
326
|
+
parser
|
327
|
+
);
|
328
|
+
if (!dep) return;
|
329
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
330
|
+
dep.optional = Boolean(parser.scope.inTry);
|
331
|
+
parser.state.current.addDependency(dep);
|
332
|
+
return true;
|
338
333
|
});
|
339
334
|
}
|
340
335
|
}
|
@@ -14,33 +14,35 @@ const NullDependency = require("./NullDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
15
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
16
|
/** @typedef {import("../json/JsonData")} JsonData */
|
17
|
+
/** @typedef {import("../json/JsonData").RawJsonData} RawJsonData */
|
17
18
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
18
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
19
20
|
/** @typedef {import("../util/Hash")} Hash */
|
20
21
|
|
22
|
+
/**
|
23
|
+
* @param {RawJsonData} data data
|
24
|
+
* @returns {TODO} value
|
25
|
+
*/
|
21
26
|
const getExportsFromData = data => {
|
22
27
|
if (data && typeof data === "object") {
|
23
28
|
if (Array.isArray(data)) {
|
24
29
|
return data.length < 100
|
25
|
-
? data.map((item, idx) => {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
};
|
31
|
-
})
|
30
|
+
? data.map((item, idx) => ({
|
31
|
+
name: `${idx}`,
|
32
|
+
canMangle: true,
|
33
|
+
exports: getExportsFromData(item)
|
34
|
+
}))
|
32
35
|
: undefined;
|
33
|
-
} else {
|
34
|
-
const exports = [];
|
35
|
-
for (const key of Object.keys(data)) {
|
36
|
-
exports.push({
|
37
|
-
name: key,
|
38
|
-
canMangle: true,
|
39
|
-
exports: getExportsFromData(data[key])
|
40
|
-
});
|
41
|
-
}
|
42
|
-
return exports;
|
43
36
|
}
|
37
|
+
const exports = [];
|
38
|
+
for (const key of Object.keys(data)) {
|
39
|
+
exports.push({
|
40
|
+
name: key,
|
41
|
+
canMangle: true,
|
42
|
+
exports: getExportsFromData(data[key])
|
43
|
+
});
|
44
|
+
}
|
45
|
+
return exports;
|
44
46
|
}
|
45
47
|
return undefined;
|
46
48
|
};
|
@@ -65,7 +67,9 @@ class JsonExportsDependency extends NullDependency {
|
|
65
67
|
*/
|
66
68
|
getExports(moduleGraph) {
|
67
69
|
return {
|
68
|
-
exports: getExportsFromData(
|
70
|
+
exports: getExportsFromData(
|
71
|
+
this.data && /** @type {RawJsonData} */ (this.data.get())
|
72
|
+
),
|
69
73
|
dependencies: undefined
|
70
74
|
};
|
71
75
|
}
|
@@ -10,17 +10,12 @@ const LazySet = require("../util/LazySet");
|
|
10
10
|
const LoaderDependency = require("./LoaderDependency");
|
11
11
|
const LoaderImportDependency = require("./LoaderImportDependency");
|
12
12
|
|
13
|
+
/** @typedef {import("../../declarations/LoaderContext").LoaderPluginLoaderContext} LoaderPluginLoaderContext */
|
13
14
|
/** @typedef {import("../Compilation").DepConstructor} DepConstructor */
|
15
|
+
/** @typedef {import("../Compilation").ExecuteModuleResult} ExecuteModuleResult */
|
14
16
|
/** @typedef {import("../Compiler")} Compiler */
|
15
17
|
/** @typedef {import("../Module")} Module */
|
16
|
-
|
17
|
-
/**
|
18
|
-
* @callback LoadModuleCallback
|
19
|
-
* @param {(Error | null)=} err error object
|
20
|
-
* @param {string | Buffer=} source source code
|
21
|
-
* @param {object=} map source map
|
22
|
-
* @param {Module=} module loaded module if successful
|
23
|
-
*/
|
18
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
24
19
|
|
25
20
|
/**
|
26
21
|
* @callback ImportModuleCallback
|
@@ -66,11 +61,6 @@ class LoaderPlugin {
|
|
66
61
|
NormalModule.getCompilationHooks(compilation).loader.tap(
|
67
62
|
"LoaderPlugin",
|
68
63
|
loaderContext => {
|
69
|
-
/**
|
70
|
-
* @param {string} request the request string to load the module from
|
71
|
-
* @param {LoadModuleCallback} callback callback returning the loaded module or error
|
72
|
-
* @returns {void}
|
73
|
-
*/
|
74
64
|
loaderContext.loadModule = (request, callback) => {
|
75
65
|
const dep = new LoaderDependency(request);
|
76
66
|
dep.loc = {
|
@@ -91,7 +81,9 @@ class LoaderPlugin {
|
|
91
81
|
{
|
92
82
|
factory,
|
93
83
|
dependencies: [dep],
|
94
|
-
originModule:
|
84
|
+
originModule:
|
85
|
+
/** @type {NormalModule} */
|
86
|
+
(loaderContext._module),
|
95
87
|
context: loaderContext.context,
|
96
88
|
recursive: false
|
97
89
|
},
|
@@ -117,7 +109,8 @@ class LoaderPlugin {
|
|
117
109
|
)
|
118
110
|
);
|
119
111
|
}
|
120
|
-
let
|
112
|
+
let map;
|
113
|
+
let source;
|
121
114
|
if (moduleSource.sourceAndMap) {
|
122
115
|
const sourceAndMap = moduleSource.sourceAndMap();
|
123
116
|
map = sourceAndMap.map;
|
@@ -149,15 +142,20 @@ class LoaderPlugin {
|
|
149
142
|
for (const d of buildDependencies) {
|
150
143
|
loaderContext.addBuildDependency(d);
|
151
144
|
}
|
152
|
-
return callback(
|
145
|
+
return callback(
|
146
|
+
null,
|
147
|
+
source,
|
148
|
+
/** @type {object | null} */ (map),
|
149
|
+
referencedModule
|
150
|
+
);
|
153
151
|
}
|
154
152
|
);
|
155
153
|
};
|
156
154
|
|
157
155
|
/**
|
158
156
|
* @param {string} request the request string to load the module from
|
159
|
-
* @param {ImportModuleOptions
|
160
|
-
* @param {ImportModuleCallback
|
157
|
+
* @param {ImportModuleOptions} options options
|
158
|
+
* @param {ImportModuleCallback} callback callback returning the exports
|
161
159
|
* @returns {void}
|
162
160
|
*/
|
163
161
|
const importModule = (request, options, callback) => {
|
@@ -180,7 +178,9 @@ class LoaderPlugin {
|
|
180
178
|
{
|
181
179
|
factory,
|
182
180
|
dependencies: [dep],
|
183
|
-
originModule:
|
181
|
+
originModule:
|
182
|
+
/** @type {NormalModule} */
|
183
|
+
(loaderContext._module),
|
184
184
|
contextInfo: {
|
185
185
|
issuerLayer: options.layer
|
186
186
|
},
|
@@ -207,42 +207,53 @@ class LoaderPlugin {
|
|
207
207
|
},
|
208
208
|
(err, result) => {
|
209
209
|
if (err) return callback(err);
|
210
|
-
|
210
|
+
const {
|
211
|
+
fileDependencies,
|
212
|
+
contextDependencies,
|
213
|
+
missingDependencies,
|
214
|
+
buildDependencies,
|
215
|
+
cacheable,
|
216
|
+
assets,
|
217
|
+
exports
|
218
|
+
} = /** @type {ExecuteModuleResult} */ (result);
|
219
|
+
for (const d of fileDependencies) {
|
211
220
|
loaderContext.addDependency(d);
|
212
221
|
}
|
213
|
-
for (const d of
|
222
|
+
for (const d of contextDependencies) {
|
214
223
|
loaderContext.addContextDependency(d);
|
215
224
|
}
|
216
|
-
for (const d of
|
225
|
+
for (const d of missingDependencies) {
|
217
226
|
loaderContext.addMissingDependency(d);
|
218
227
|
}
|
219
|
-
for (const d of
|
228
|
+
for (const d of buildDependencies) {
|
220
229
|
loaderContext.addBuildDependency(d);
|
221
230
|
}
|
222
|
-
if (
|
223
|
-
|
224
|
-
|
225
|
-
|
231
|
+
if (cacheable === false) loaderContext.cacheable(false);
|
232
|
+
for (const [name, { source, info }] of assets) {
|
233
|
+
const buildInfo =
|
234
|
+
/** @type {BuildInfo} */
|
235
|
+
(
|
236
|
+
/** @type {NormalModule} */ (loaderContext._module)
|
237
|
+
.buildInfo
|
238
|
+
);
|
226
239
|
if (!buildInfo.assets) {
|
227
240
|
buildInfo.assets = Object.create(null);
|
228
241
|
buildInfo.assetsInfo = new Map();
|
229
242
|
}
|
230
|
-
|
231
|
-
buildInfo.
|
243
|
+
/** @type {NonNullable<BuildInfo["assets"]>} */
|
244
|
+
(buildInfo.assets)[name] = source;
|
245
|
+
/** @type {NonNullable<BuildInfo["assetsInfo"]>} */
|
246
|
+
(buildInfo.assetsInfo).set(name, info);
|
232
247
|
}
|
233
|
-
callback(null,
|
248
|
+
callback(null, exports);
|
234
249
|
}
|
235
250
|
);
|
236
251
|
}
|
237
252
|
);
|
238
253
|
};
|
239
254
|
|
240
|
-
|
241
|
-
|
242
|
-
* @param {ImportModuleOptions} options options
|
243
|
-
* @param {ImportModuleCallback=} callback callback returning the exports
|
244
|
-
* @returns {Promise<any> | void} exports
|
245
|
-
*/
|
255
|
+
// eslint-disable-next-line no-warning-comments
|
256
|
+
// @ts-ignore Overloading doesn't work
|
246
257
|
loaderContext.importModule = (request, options, callback) => {
|
247
258
|
if (!callback) {
|
248
259
|
return new Promise((resolve, reject) => {
|
@@ -17,8 +17,8 @@ const LocalModule = require("./LocalModule");
|
|
17
17
|
const lookup = (parent, mod) => {
|
18
18
|
if (mod.charAt(0) !== ".") return mod;
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
const path = parent.split("/");
|
21
|
+
const segments = mod.split("/");
|
22
22
|
path.pop();
|
23
23
|
|
24
24
|
for (let i = 0; i < segments.length; i++) {
|
@@ -38,7 +38,7 @@ const lookup = (parent, mod) => {
|
|
38
38
|
* @param {string} name name
|
39
39
|
* @returns {LocalModule} local module
|
40
40
|
*/
|
41
|
-
exports.addLocalModule = (state, name) => {
|
41
|
+
module.exports.addLocalModule = (state, name) => {
|
42
42
|
if (!state.localModules) {
|
43
43
|
state.localModules = [];
|
44
44
|
}
|
@@ -53,7 +53,7 @@ exports.addLocalModule = (state, name) => {
|
|
53
53
|
* @param {string} [namedModule] named module
|
54
54
|
* @returns {LocalModule | null} local module or null
|
55
55
|
*/
|
56
|
-
exports.getLocalModule = (state, name, namedModule) => {
|
56
|
+
module.exports.getLocalModule = (state, name, namedModule) => {
|
57
57
|
if (!state.localModules) return null;
|
58
58
|
if (namedModule) {
|
59
59
|
// resolve dependency name relative to the defining named module
|