webpack 5.92.1 → 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 +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- 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 +132 -70
- 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/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -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 +39 -40
- package/lib/css/CssGenerator.js +11 -14
- 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 +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- 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 +41 -16
- 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 +11 -12
- 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 +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- 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 +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- 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 +144 -61
- 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 +56 -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/ChunkPrefetchPreloadPlugin.js +1 -0
- 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/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- 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 +10 -13
- 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 +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -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/types.d.ts +682 -347
@@ -27,7 +27,9 @@ const {
|
|
27
27
|
/** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumesConfig} ConsumesConfig */
|
28
28
|
/** @typedef {import("../Compiler")} Compiler */
|
29
29
|
/** @typedef {import("../ResolverFactory").ResolveOptionsWithDependencyType} ResolveOptionsWithDependencyType */
|
30
|
+
/** @typedef {import("../util/semver").SemVerRange} SemVerRange */
|
30
31
|
/** @typedef {import("./ConsumeSharedModule").ConsumeOptions} ConsumeOptions */
|
32
|
+
/** @typedef {import("./utils").DescriptionFile} DescriptionFile */
|
31
33
|
|
32
34
|
const validate = createSchemaValidation(
|
33
35
|
require("../../schemas/plugins/sharing/ConsumeSharedPlugin.check.js"),
|
@@ -57,7 +59,7 @@ class ConsumeSharedPlugin {
|
|
57
59
|
(item, key) => {
|
58
60
|
if (Array.isArray(item)) throw new Error("Unexpected array in options");
|
59
61
|
/** @type {ConsumeOptions} */
|
60
|
-
|
62
|
+
const result =
|
61
63
|
item === key || !isRequiredVersion(item)
|
62
64
|
? // item is a request/key
|
63
65
|
{
|
@@ -97,8 +99,8 @@ class ConsumeSharedPlugin {
|
|
97
99
|
? item.strictVersion
|
98
100
|
: item.import !== false && !item.singleton,
|
99
101
|
packageName: item.packageName,
|
100
|
-
singleton:
|
101
|
-
eager:
|
102
|
+
singleton: Boolean(item.singleton),
|
103
|
+
eager: Boolean(item.eager)
|
102
104
|
})
|
103
105
|
);
|
104
106
|
}
|
@@ -157,110 +159,127 @@ class ConsumeSharedPlugin {
|
|
157
159
|
config.import &&
|
158
160
|
/^(\.\.?(\/|$)|\/|[A-Za-z]:|\\\\)/.test(config.import);
|
159
161
|
return Promise.all([
|
160
|
-
new Promise(
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
missingDependencies: new LazySet()
|
169
|
-
};
|
170
|
-
resolver.resolve(
|
171
|
-
{},
|
172
|
-
directFallback ? compiler.context : context,
|
173
|
-
config.import,
|
174
|
-
resolveContext,
|
175
|
-
(err, result) => {
|
176
|
-
compilation.contextDependencies.addAll(
|
177
|
-
resolveContext.contextDependencies
|
178
|
-
);
|
179
|
-
compilation.fileDependencies.addAll(
|
180
|
-
resolveContext.fileDependencies
|
181
|
-
);
|
182
|
-
compilation.missingDependencies.addAll(
|
183
|
-
resolveContext.missingDependencies
|
184
|
-
);
|
185
|
-
if (err) {
|
186
|
-
compilation.errors.push(
|
187
|
-
new ModuleNotFoundError(null, err, {
|
188
|
-
name: `resolving fallback for shared module ${request}`
|
189
|
-
})
|
190
|
-
);
|
191
|
-
return resolve();
|
192
|
-
}
|
193
|
-
resolve(result);
|
194
|
-
}
|
195
|
-
);
|
196
|
-
}),
|
197
|
-
new Promise(resolve => {
|
198
|
-
if (config.requiredVersion !== undefined)
|
199
|
-
return resolve(config.requiredVersion);
|
200
|
-
let packageName = config.packageName;
|
201
|
-
if (packageName === undefined) {
|
202
|
-
if (/^(\/|[A-Za-z]:|\\\\)/.test(request)) {
|
203
|
-
// For relative or absolute requests we don't automatically use a packageName.
|
204
|
-
// If wished one can specify one with the packageName option.
|
205
|
-
return resolve();
|
162
|
+
new Promise(
|
163
|
+
/**
|
164
|
+
* @param {(value?: string) => void} resolve resolve
|
165
|
+
*/
|
166
|
+
resolve => {
|
167
|
+
if (!config.import) {
|
168
|
+
resolve();
|
169
|
+
return;
|
206
170
|
}
|
207
|
-
const
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
)
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
requiredVersionWarning(
|
224
|
-
`Unable to read description file: ${err}`
|
171
|
+
const resolveContext = {
|
172
|
+
/** @type {LazySet<string>} */
|
173
|
+
fileDependencies: new LazySet(),
|
174
|
+
/** @type {LazySet<string>} */
|
175
|
+
contextDependencies: new LazySet(),
|
176
|
+
/** @type {LazySet<string>} */
|
177
|
+
missingDependencies: new LazySet()
|
178
|
+
};
|
179
|
+
resolver.resolve(
|
180
|
+
{},
|
181
|
+
directFallback ? compiler.context : context,
|
182
|
+
config.import,
|
183
|
+
resolveContext,
|
184
|
+
(err, result) => {
|
185
|
+
compilation.contextDependencies.addAll(
|
186
|
+
resolveContext.contextDependencies
|
225
187
|
);
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
`Unable to find description file in ${context}.`
|
188
|
+
compilation.fileDependencies.addAll(
|
189
|
+
resolveContext.fileDependencies
|
190
|
+
);
|
191
|
+
compilation.missingDependencies.addAll(
|
192
|
+
resolveContext.missingDependencies
|
232
193
|
);
|
233
|
-
|
194
|
+
if (err) {
|
195
|
+
compilation.errors.push(
|
196
|
+
new ModuleNotFoundError(null, err, {
|
197
|
+
name: `resolving fallback for shared module ${request}`
|
198
|
+
})
|
199
|
+
);
|
200
|
+
return resolve();
|
201
|
+
}
|
202
|
+
resolve(/** @type {string} */ (result));
|
234
203
|
}
|
235
|
-
|
236
|
-
|
237
|
-
|
204
|
+
);
|
205
|
+
}
|
206
|
+
),
|
207
|
+
new Promise(
|
208
|
+
/**
|
209
|
+
* @param {(value?: SemVerRange) => void} resolve resolve
|
210
|
+
*/
|
211
|
+
resolve => {
|
212
|
+
if (config.requiredVersion !== undefined) {
|
213
|
+
resolve(/** @type {SemVerRange} */ (config.requiredVersion));
|
214
|
+
return;
|
215
|
+
}
|
216
|
+
let packageName = config.packageName;
|
217
|
+
if (packageName === undefined) {
|
218
|
+
if (/^(\/|[A-Za-z]:|\\\\)/.test(request)) {
|
219
|
+
// For relative or absolute requests we don't automatically use a packageName.
|
220
|
+
// If wished one can specify one with the packageName option.
|
221
|
+
resolve();
|
222
|
+
return;
|
238
223
|
}
|
239
|
-
const
|
240
|
-
|
241
|
-
packageName
|
242
|
-
);
|
243
|
-
if (typeof requiredVersion !== "string") {
|
224
|
+
const match = /^((?:@[^\\/]+[\\/])?[^\\/]+)/.exec(request);
|
225
|
+
if (!match) {
|
244
226
|
requiredVersionWarning(
|
245
|
-
|
227
|
+
"Unable to extract the package name from request."
|
246
228
|
);
|
247
|
-
|
229
|
+
resolve();
|
230
|
+
return;
|
248
231
|
}
|
249
|
-
|
232
|
+
packageName = match[0];
|
250
233
|
}
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
234
|
+
|
235
|
+
getDescriptionFile(
|
236
|
+
compilation.inputFileSystem,
|
237
|
+
context,
|
238
|
+
["package.json"],
|
239
|
+
(err, result) => {
|
240
|
+
if (err) {
|
241
|
+
requiredVersionWarning(
|
242
|
+
`Unable to read description file: ${err}`
|
243
|
+
);
|
244
|
+
return resolve();
|
245
|
+
}
|
246
|
+
const { data, path: descriptionPath } =
|
247
|
+
/** @type {DescriptionFile} */ (result);
|
248
|
+
if (!data) {
|
249
|
+
requiredVersionWarning(
|
250
|
+
`Unable to find description file in ${context}.`
|
251
|
+
);
|
252
|
+
return resolve();
|
253
|
+
}
|
254
|
+
if (data.name === packageName) {
|
255
|
+
// Package self-referencing
|
256
|
+
return resolve();
|
257
|
+
}
|
258
|
+
const requiredVersion =
|
259
|
+
getRequiredVersionFromDescriptionFile(data, packageName);
|
260
|
+
if (typeof requiredVersion !== "string") {
|
261
|
+
requiredVersionWarning(
|
262
|
+
`Unable to find required version for "${packageName}" in description file (${descriptionPath}). It need to be in dependencies, devDependencies or peerDependencies.`
|
263
|
+
);
|
264
|
+
return resolve();
|
265
|
+
}
|
266
|
+
resolve(parseRange(requiredVersion));
|
267
|
+
}
|
268
|
+
);
|
261
269
|
}
|
262
|
-
)
|
263
|
-
|
270
|
+
)
|
271
|
+
]).then(
|
272
|
+
([importResolved, requiredVersion]) =>
|
273
|
+
new ConsumeSharedModule(
|
274
|
+
directFallback ? compiler.context : context,
|
275
|
+
{
|
276
|
+
...config,
|
277
|
+
importResolved,
|
278
|
+
import: importResolved ? config.import : undefined,
|
279
|
+
requiredVersion
|
280
|
+
}
|
281
|
+
)
|
282
|
+
);
|
264
283
|
};
|
265
284
|
|
266
285
|
normalModuleFactory.hooks.factorize.tapPromise(
|
@@ -19,6 +19,7 @@ const {
|
|
19
19
|
/** @typedef {import("../Chunk")} Chunk */
|
20
20
|
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
21
21
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
22
|
+
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
22
23
|
/** @typedef {import("../Compilation")} Compilation */
|
23
24
|
/** @typedef {import("../Module")} Module */
|
24
25
|
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
@@ -47,15 +48,14 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
47
48
|
/** @type {(string | number)[]} */
|
48
49
|
const initialConsumes = [];
|
49
50
|
/**
|
50
|
-
*
|
51
51
|
* @param {Iterable<Module>} modules modules
|
52
52
|
* @param {Chunk} chunk the chunk
|
53
53
|
* @param {(string | number)[]} list list of ids
|
54
54
|
*/
|
55
55
|
const addModules = (modules, chunk, list) => {
|
56
56
|
for (const m of modules) {
|
57
|
-
const module =
|
58
|
-
const id = chunkGraph.getModuleId(module);
|
57
|
+
const module = m;
|
58
|
+
const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
|
59
59
|
list.push(id);
|
60
60
|
moduleIdToSourceMapping.set(
|
61
61
|
id,
|
@@ -95,63 +95,39 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
95
95
|
versionLtRuntimeCode(runtimeTemplate),
|
96
96
|
rangeToStringRuntimeCode(runtimeTemplate),
|
97
97
|
satisfyRuntimeCode(runtimeTemplate),
|
98
|
-
`var
|
99
|
-
`
|
100
|
-
|
101
|
-
|
98
|
+
`var exists = ${runtimeTemplate.basicFunction("scope, key", [
|
99
|
+
`return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key);`
|
100
|
+
])}`,
|
101
|
+
`var get = ${runtimeTemplate.basicFunction("entry", [
|
102
|
+
"entry.loaded = 1;",
|
103
|
+
"return entry.get()"
|
102
104
|
])};`,
|
103
|
-
`var
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
105
|
+
`var eagerOnly = ${runtimeTemplate.basicFunction("versions", [
|
106
|
+
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
107
|
+
"filtered, version",
|
108
|
+
Template.indent([
|
109
|
+
"if (versions[version].eager) {",
|
110
|
+
Template.indent(["filtered[version] = versions[version];"]),
|
111
|
+
"}",
|
112
|
+
"return filtered;"
|
113
|
+
])
|
114
|
+
)}, {});`
|
110
115
|
])};`,
|
111
|
-
`var
|
112
|
-
"scope, key",
|
116
|
+
`var findLatestVersion = ${runtimeTemplate.basicFunction(
|
117
|
+
"scope, key, eager",
|
113
118
|
[
|
114
|
-
"var versions = scope[key];",
|
115
|
-
`
|
119
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
120
|
+
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
116
121
|
"a, b",
|
117
|
-
["return !a ||
|
118
|
-
)}, 0)
|
119
|
-
|
120
|
-
)};`,
|
121
|
-
`var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
|
122
|
-
"scope, key, version, requiredVersion",
|
123
|
-
[
|
124
|
-
`return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"`
|
125
|
-
]
|
126
|
-
)};`,
|
127
|
-
`var getSingleton = ${runtimeTemplate.basicFunction(
|
128
|
-
"scope, scopeName, key, requiredVersion",
|
129
|
-
[
|
130
|
-
"var version = findSingletonVersionKey(scope, key);",
|
131
|
-
"return get(scope[key][version]);"
|
132
|
-
]
|
133
|
-
)};`,
|
134
|
-
`var getSingletonVersion = ${runtimeTemplate.basicFunction(
|
135
|
-
"scope, scopeName, key, requiredVersion",
|
136
|
-
[
|
137
|
-
"var version = findSingletonVersionKey(scope, key);",
|
138
|
-
"if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));",
|
139
|
-
"return get(scope[key][version]);"
|
140
|
-
]
|
141
|
-
)};`,
|
142
|
-
`var getStrictSingletonVersion = ${runtimeTemplate.basicFunction(
|
143
|
-
"scope, scopeName, key, requiredVersion",
|
144
|
-
[
|
145
|
-
"var version = findSingletonVersionKey(scope, key);",
|
146
|
-
"if (!satisfy(requiredVersion, version)) " +
|
147
|
-
"throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));",
|
148
|
-
"return get(scope[key][version]);"
|
122
|
+
["return !a || versionLt(a, b) ? b : a;"]
|
123
|
+
)}, 0);`,
|
124
|
+
"return key && versions[key];"
|
149
125
|
]
|
150
126
|
)};`,
|
151
|
-
`var
|
152
|
-
"scope, key, requiredVersion",
|
127
|
+
`var findSatisfyingVersion = ${runtimeTemplate.basicFunction(
|
128
|
+
"scope, key, requiredVersion, eager",
|
153
129
|
[
|
154
|
-
"var versions = scope[key];",
|
130
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
155
131
|
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
156
132
|
"a, b",
|
157
133
|
[
|
@@ -162,136 +138,127 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
162
138
|
"return key && versions[key]"
|
163
139
|
]
|
164
140
|
)};`,
|
141
|
+
`var findSingletonVersionKey = ${runtimeTemplate.basicFunction(
|
142
|
+
"scope, key, eager",
|
143
|
+
[
|
144
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
145
|
+
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
146
|
+
"a, b",
|
147
|
+
["return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;"]
|
148
|
+
)}, 0);`
|
149
|
+
]
|
150
|
+
)};`,
|
151
|
+
`var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
|
152
|
+
"scope, key, version, requiredVersion",
|
153
|
+
[
|
154
|
+
'return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"'
|
155
|
+
]
|
156
|
+
)};`,
|
165
157
|
`var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
|
166
|
-
"scope, scopeName, key, requiredVersion",
|
158
|
+
"scope, scopeName, key, requiredVersion, eager",
|
167
159
|
[
|
168
160
|
"var versions = scope[key];",
|
169
|
-
'return "No satisfying version (" + rangeToString(requiredVersion) + ") of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
|
161
|
+
'return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
|
170
162
|
`\t"Available versions: " + Object.keys(versions).map(${runtimeTemplate.basicFunction(
|
171
163
|
"key",
|
172
164
|
['return key + " from " + versions[key].from;']
|
173
165
|
)}).join(", ");`
|
174
166
|
]
|
175
167
|
)};`,
|
176
|
-
`var
|
177
|
-
"
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
)};`,
|
184
|
-
`var warn = ${
|
168
|
+
`var fail = ${runtimeTemplate.basicFunction("msg", [
|
169
|
+
"throw new Error(msg);"
|
170
|
+
])}`,
|
171
|
+
`var failAsNotExist = ${runtimeTemplate.basicFunction("scopeName, key", [
|
172
|
+
'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
|
173
|
+
])}`,
|
174
|
+
`var warn = /*#__PURE__*/ ${
|
185
175
|
compilation.outputOptions.ignoreBrowserWarnings
|
186
176
|
? runtimeTemplate.basicFunction("", "")
|
187
177
|
: runtimeTemplate.basicFunction("msg", [
|
188
178
|
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
189
179
|
])
|
190
180
|
};`,
|
191
|
-
`var warnInvalidVersion = ${runtimeTemplate.basicFunction(
|
192
|
-
"scope, scopeName, key, requiredVersion",
|
193
|
-
[
|
194
|
-
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
195
|
-
]
|
196
|
-
)};`,
|
197
|
-
`var get = ${runtimeTemplate.basicFunction("entry", [
|
198
|
-
"entry.loaded = 1;",
|
199
|
-
"return entry.get()"
|
200
|
-
])};`,
|
201
181
|
`var init = ${runtimeTemplate.returningFunction(
|
202
182
|
Template.asString([
|
203
|
-
"function(scopeName,
|
183
|
+
"function(scopeName, key, eager, c, d) {",
|
204
184
|
Template.indent([
|
205
185
|
`var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
|
206
|
-
|
207
|
-
|
186
|
+
// if we require eager shared, we expect it to be already loaded before it requested, no need to wait the whole scope loaded.
|
187
|
+
"if (promise && promise.then && !eager) { ",
|
188
|
+
Template.indent([
|
189
|
+
`return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, false, c, d));`
|
190
|
+
]),
|
191
|
+
"}",
|
192
|
+
`return fn(scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, eager, c, d);`
|
208
193
|
]),
|
209
194
|
"}"
|
210
195
|
]),
|
211
196
|
"fn"
|
212
197
|
)};`,
|
213
198
|
"",
|
199
|
+
`var useFallback = ${runtimeTemplate.basicFunction(
|
200
|
+
"scopeName, key, fallback",
|
201
|
+
["return fallback ? fallback() : failAsNotExist(scopeName, key);"]
|
202
|
+
)}`,
|
214
203
|
`var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
215
|
-
"scopeName, scope, key",
|
204
|
+
"scopeName, scope, key, eager, fallback",
|
216
205
|
[
|
217
|
-
"
|
218
|
-
"return get(
|
206
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
207
|
+
"return get(findLatestVersion(scope, key, eager));"
|
219
208
|
]
|
220
209
|
)});`,
|
221
|
-
`var
|
222
|
-
"scopeName, scope, key, fallback",
|
210
|
+
`var loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
211
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
223
212
|
[
|
224
|
-
|
213
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
214
|
+
"var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
|
215
|
+
"if (satisfyingVersion) return get(satisfyingVersion);",
|
216
|
+
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))",
|
217
|
+
"return get(findLatestVersion(scope, key, eager));"
|
225
218
|
]
|
226
219
|
)});`,
|
227
|
-
`var
|
228
|
-
"scopeName, scope, key,
|
220
|
+
`var loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
221
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
229
222
|
[
|
230
|
-
"
|
231
|
-
"
|
223
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
224
|
+
"var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
|
225
|
+
"if (satisfyingVersion) return get(satisfyingVersion);",
|
226
|
+
"if (fallback) return fallback();",
|
227
|
+
"fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));"
|
232
228
|
]
|
233
229
|
)});`,
|
234
230
|
`var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
235
|
-
"scopeName, scope, key",
|
236
|
-
[
|
237
|
-
"ensureExistence(scopeName, key);",
|
238
|
-
"return getSingleton(scope, scopeName, key);"
|
239
|
-
]
|
240
|
-
)});`,
|
241
|
-
`var loadSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
242
|
-
"scopeName, scope, key, version",
|
243
|
-
[
|
244
|
-
"ensureExistence(scopeName, key);",
|
245
|
-
"return getSingletonVersion(scope, scopeName, key, version);"
|
246
|
-
]
|
247
|
-
)});`,
|
248
|
-
`var loadStrictVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
249
|
-
"scopeName, scope, key, version",
|
231
|
+
"scopeName, scope, key, eager, fallback",
|
250
232
|
[
|
251
|
-
"
|
252
|
-
"
|
253
|
-
|
254
|
-
)});`,
|
255
|
-
`var loadStrictSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
256
|
-
"scopeName, scope, key, version",
|
257
|
-
[
|
258
|
-
"ensureExistence(scopeName, key);",
|
259
|
-
"return getStrictSingletonVersion(scope, scopeName, key, version);"
|
260
|
-
]
|
261
|
-
)});`,
|
262
|
-
`var loadVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
263
|
-
"scopeName, scope, key, version, fallback",
|
264
|
-
[
|
265
|
-
`if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,
|
266
|
-
"return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));"
|
267
|
-
]
|
268
|
-
)});`,
|
269
|
-
`var loadSingletonFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
270
|
-
"scopeName, scope, key, fallback",
|
271
|
-
[
|
272
|
-
`if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,
|
273
|
-
"return getSingleton(scope, scopeName, key);"
|
274
|
-
]
|
275
|
-
)});`,
|
276
|
-
`var loadSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
277
|
-
"scopeName, scope, key, version, fallback",
|
278
|
-
[
|
279
|
-
`if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,
|
280
|
-
"return getSingletonVersion(scope, scopeName, key, version);"
|
233
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
234
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
235
|
+
"return get(scope[key][version]);"
|
281
236
|
]
|
282
237
|
)});`,
|
283
|
-
`var
|
284
|
-
"scopeName, scope, key,
|
238
|
+
`var loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
239
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
285
240
|
[
|
286
|
-
|
287
|
-
|
241
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
242
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
243
|
+
"if (!satisfy(requiredVersion, version)) {",
|
244
|
+
Template.indent([
|
245
|
+
"warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
246
|
+
]),
|
247
|
+
"}",
|
248
|
+
"return get(scope[key][version]);"
|
288
249
|
]
|
289
250
|
)});`,
|
290
|
-
`var
|
291
|
-
"scopeName, scope, key,
|
251
|
+
`var loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
252
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
292
253
|
[
|
293
|
-
|
294
|
-
"
|
254
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
255
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
256
|
+
"if (!satisfy(requiredVersion, version)) {",
|
257
|
+
Template.indent([
|
258
|
+
"fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
259
|
+
]),
|
260
|
+
"}",
|
261
|
+
"return get(scope[key][version]);"
|
295
262
|
]
|
296
263
|
)});`,
|
297
264
|
"var installedModules = {};",
|
@@ -316,7 +283,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
316
283
|
`delete ${RuntimeGlobals.moduleCache}[id];`,
|
317
284
|
"var factory = moduleToHandlerMapping[id]();",
|
318
285
|
'if(typeof factory !== "function") throw new Error("Shared module is not available for eager consumption: " + id);',
|
319
|
-
|
286
|
+
"module.exports = factory();"
|
320
287
|
])}`
|
321
288
|
])});`
|
322
289
|
])
|
@@ -62,7 +62,7 @@ class ProvideSharedPlugin {
|
|
62
62
|
shareKey: item.shareKey,
|
63
63
|
version: item.version,
|
64
64
|
shareScope: item.shareScope || options.shareScope || "default",
|
65
|
-
eager:
|
65
|
+
eager: Boolean(item.eager)
|
66
66
|
})
|
67
67
|
)
|
68
68
|
);
|
@@ -129,7 +129,7 @@ class ProvideSharedPlugin {
|
|
129
129
|
if (version === undefined) {
|
130
130
|
let details = "";
|
131
131
|
if (!resourceResolveData) {
|
132
|
-
details =
|
132
|
+
details = "No resolve data provided from resolver.";
|
133
133
|
} else {
|
134
134
|
const descriptionFileData =
|
135
135
|
resourceResolveData.descriptionFileData;
|
@@ -28,7 +28,7 @@ const RESOLVE_OPTIONS = { dependencyType: "esm" };
|
|
28
28
|
* @param {[string, T][]} configs to be processed configs
|
29
29
|
* @returns {Promise<MatchedConfigs<T>>} resolved matchers
|
30
30
|
*/
|
31
|
-
exports.resolveMatchedConfigs = (compilation, configs) => {
|
31
|
+
module.exports.resolveMatchedConfigs = (compilation, configs) => {
|
32
32
|
/** @type {Map<string, T>} */
|
33
33
|
const resolved = new Map();
|
34
34
|
/** @type {Map<string, T>} */
|
@@ -47,6 +47,7 @@ exports.resolveMatchedConfigs = (compilation, configs) => {
|
|
47
47
|
const context = compilation.compiler.context;
|
48
48
|
|
49
49
|
return Promise.all(
|
50
|
+
// eslint-disable-next-line array-callback-return
|
50
51
|
configs.map(([request, config]) => {
|
51
52
|
if (/^\.\.?(\/|$)/.test(request)) {
|
52
53
|
// relative request
|