webpack 5.97.1 → 5.104.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/README.md +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/ExternalModule.js
CHANGED
|
@@ -12,13 +12,15 @@ const { UsageState } = require("./ExportsInfo");
|
|
|
12
12
|
const InitFragment = require("./InitFragment");
|
|
13
13
|
const Module = require("./Module");
|
|
14
14
|
const {
|
|
15
|
-
|
|
15
|
+
CSS_IMPORT_TYPES,
|
|
16
16
|
CSS_URL_TYPES,
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
JAVASCRIPT_TYPE,
|
|
18
|
+
JAVASCRIPT_TYPES
|
|
19
|
+
} = require("./ModuleSourceTypeConstants");
|
|
19
20
|
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
|
|
20
21
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
21
22
|
const Template = require("./Template");
|
|
23
|
+
const { DEFAULTS } = require("./config/defaults");
|
|
22
24
|
const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
|
|
23
25
|
const createHash = require("./util/createHash");
|
|
24
26
|
const extractUrlAndGlobal = require("./util/extractUrlAndGlobal");
|
|
@@ -27,20 +29,26 @@ const propertyAccess = require("./util/propertyAccess");
|
|
|
27
29
|
const { register } = require("./util/serialization");
|
|
28
30
|
|
|
29
31
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
30
|
-
/** @typedef {import("../declarations/WebpackOptions").
|
|
32
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalsType} ExternalsType */
|
|
33
|
+
/** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
|
|
34
|
+
/** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
|
|
31
35
|
/** @typedef {import("./Chunk")} Chunk */
|
|
32
36
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
|
33
37
|
/** @typedef {import("./Compilation")} Compilation */
|
|
38
|
+
/** @typedef {import("./Compilation").UnsafeCacheData} UnsafeCacheData */
|
|
34
39
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
|
35
|
-
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
|
|
36
40
|
/** @typedef {import("./ExportsInfo")} ExportsInfo */
|
|
37
41
|
/** @typedef {import("./Generator").GenerateContext} GenerateContext */
|
|
38
42
|
/** @typedef {import("./Generator").SourceTypes} SourceTypes */
|
|
43
|
+
/** @typedef {import("./Module").ModuleId} ModuleId */
|
|
44
|
+
/** @typedef {import("./Module").BuildCallback} BuildCallback */
|
|
39
45
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
40
46
|
/** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
|
|
41
47
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
|
42
48
|
/** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
|
43
49
|
/** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
|
|
50
|
+
/** @typedef {import("./Module").LibIdent} LibIdent */
|
|
51
|
+
/** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
|
|
44
52
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
|
45
53
|
/** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
|
46
54
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
@@ -48,13 +56,11 @@ const { register } = require("./util/serialization");
|
|
|
48
56
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
|
49
57
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
50
58
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
|
51
|
-
/** @typedef {import("./WebpackError")} WebpackError */
|
|
52
59
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
|
|
53
60
|
/** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
54
61
|
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
55
62
|
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
56
63
|
/** @typedef {import("./util/Hash")} Hash */
|
|
57
|
-
/** @typedef {typeof import("./util/Hash")} HashConstructor */
|
|
58
64
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
|
59
65
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
60
66
|
|
|
@@ -71,17 +77,20 @@ const { register } = require("./util/serialization");
|
|
|
71
77
|
* @property {string} expression
|
|
72
78
|
* @property {InitFragment<ChunkRenderContext>[]=} chunkInitFragments
|
|
73
79
|
* @property {ReadOnlyRuntimeRequirements=} runtimeRequirements
|
|
80
|
+
* @property {[string, string][]=} specifiers
|
|
74
81
|
*/
|
|
75
82
|
|
|
83
|
+
/** @typedef {true | [string, string][]} Imported */
|
|
84
|
+
|
|
76
85
|
const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
|
|
77
86
|
const RUNTIME_REQUIREMENTS_FOR_SCRIPT = new Set([RuntimeGlobals.loadScript]);
|
|
78
87
|
const RUNTIME_REQUIREMENTS_FOR_MODULE = new Set([
|
|
79
88
|
RuntimeGlobals.definePropertyGetters
|
|
80
89
|
]);
|
|
81
|
-
const EMPTY_RUNTIME_REQUIREMENTS = new Set(
|
|
90
|
+
const EMPTY_RUNTIME_REQUIREMENTS = new Set();
|
|
82
91
|
|
|
83
92
|
/**
|
|
84
|
-
* @param {string|string[]} variableName the variable name or path
|
|
93
|
+
* @param {string | string[]} variableName the variable name or path
|
|
85
94
|
* @param {string} type the module system
|
|
86
95
|
* @returns {SourceData} the generated source
|
|
87
96
|
*/
|
|
@@ -92,18 +101,22 @@ const getSourceForGlobalVariableExternal = (variableName, type) => {
|
|
|
92
101
|
}
|
|
93
102
|
|
|
94
103
|
// needed for e.g. window["some"]["thing"]
|
|
95
|
-
const objectLookup = variableName
|
|
104
|
+
const objectLookup = variableName
|
|
105
|
+
.map((r) => `[${JSON.stringify(r)}]`)
|
|
106
|
+
.join("");
|
|
96
107
|
return {
|
|
97
108
|
iife: type === "this",
|
|
98
109
|
expression: `${type}${objectLookup}`
|
|
99
110
|
};
|
|
100
111
|
};
|
|
101
112
|
|
|
113
|
+
/** @typedef {string | string[]} ModuleAndSpecifiers */
|
|
114
|
+
|
|
102
115
|
/**
|
|
103
|
-
* @param {
|
|
116
|
+
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
104
117
|
* @returns {SourceData} the generated source
|
|
105
118
|
*/
|
|
106
|
-
const getSourceForCommonJsExternal = moduleAndSpecifiers => {
|
|
119
|
+
const getSourceForCommonJsExternal = (moduleAndSpecifiers) => {
|
|
107
120
|
if (!Array.isArray(moduleAndSpecifiers)) {
|
|
108
121
|
return {
|
|
109
122
|
expression: `require(${JSON.stringify(moduleAndSpecifiers)})`
|
|
@@ -119,30 +132,38 @@ const getSourceForCommonJsExternal = moduleAndSpecifiers => {
|
|
|
119
132
|
};
|
|
120
133
|
|
|
121
134
|
/**
|
|
122
|
-
* @param {
|
|
123
|
-
* @
|
|
124
|
-
|
|
135
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
136
|
+
* @returns {InitFragment<ChunkRenderContext>} code
|
|
137
|
+
*/
|
|
138
|
+
const getExternalModuleNodeCommonjsInitFragment = (runtimeTemplate) => {
|
|
139
|
+
const importMetaName = runtimeTemplate.outputOptions.importMetaName;
|
|
140
|
+
|
|
141
|
+
return new InitFragment(
|
|
142
|
+
`import { createRequire as __WEBPACK_EXTERNAL_createRequire } from ${runtimeTemplate.renderNodePrefixForCoreModule(
|
|
143
|
+
"module"
|
|
144
|
+
)};\n${runtimeTemplate.renderConst()} __WEBPACK_EXTERNAL_createRequire_require = __WEBPACK_EXTERNAL_createRequire(${importMetaName}.url);\n`,
|
|
145
|
+
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
146
|
+
0,
|
|
147
|
+
"external module node-commonjs"
|
|
148
|
+
);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
153
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
125
154
|
* @returns {SourceData} the generated source
|
|
126
155
|
*/
|
|
127
156
|
const getSourceForCommonJsExternalInNodeModule = (
|
|
128
157
|
moduleAndSpecifiers,
|
|
129
|
-
|
|
130
|
-
needPrefix
|
|
158
|
+
runtimeTemplate
|
|
131
159
|
) => {
|
|
132
160
|
const chunkInitFragments = [
|
|
133
|
-
|
|
134
|
-
`import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "${
|
|
135
|
-
needPrefix ? "node:" : ""
|
|
136
|
-
}module";\n`,
|
|
137
|
-
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
138
|
-
0,
|
|
139
|
-
"external module node-commonjs"
|
|
140
|
-
)
|
|
161
|
+
getExternalModuleNodeCommonjsInitFragment(runtimeTemplate)
|
|
141
162
|
];
|
|
142
163
|
if (!Array.isArray(moduleAndSpecifiers)) {
|
|
143
164
|
return {
|
|
144
165
|
chunkInitFragments,
|
|
145
|
-
expression: `
|
|
166
|
+
expression: `__WEBPACK_EXTERNAL_createRequire_require(${JSON.stringify(
|
|
146
167
|
moduleAndSpecifiers
|
|
147
168
|
)})`
|
|
148
169
|
};
|
|
@@ -150,14 +171,14 @@ const getSourceForCommonJsExternalInNodeModule = (
|
|
|
150
171
|
const moduleName = moduleAndSpecifiers[0];
|
|
151
172
|
return {
|
|
152
173
|
chunkInitFragments,
|
|
153
|
-
expression: `
|
|
174
|
+
expression: `__WEBPACK_EXTERNAL_createRequire_require(${JSON.stringify(
|
|
154
175
|
moduleName
|
|
155
176
|
)})${propertyAccess(moduleAndSpecifiers, 1)}`
|
|
156
177
|
};
|
|
157
178
|
};
|
|
158
179
|
|
|
159
180
|
/**
|
|
160
|
-
* @param {
|
|
181
|
+
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
161
182
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
162
183
|
* @param {ImportDependencyMeta=} dependencyMeta the dependency meta
|
|
163
184
|
* @returns {SourceData} the generated source
|
|
@@ -212,8 +233,8 @@ const getSourceForImportExternal = (
|
|
|
212
233
|
|
|
213
234
|
/**
|
|
214
235
|
* @param {string} key key
|
|
215
|
-
* @param {
|
|
216
|
-
* @returns {
|
|
236
|
+
* @param {ImportAttributes | string | boolean | undefined} value value
|
|
237
|
+
* @returns {ImportAttributes | string | boolean | undefined} replaced value
|
|
217
238
|
*/
|
|
218
239
|
const importAssertionReplacer = (key, value) => {
|
|
219
240
|
if (key === "_isLegacyAssert") {
|
|
@@ -224,16 +245,23 @@ const importAssertionReplacer = (key, value) => {
|
|
|
224
245
|
};
|
|
225
246
|
|
|
226
247
|
/**
|
|
227
|
-
* @extends {InitFragment<
|
|
248
|
+
* @extends {InitFragment<GenerateContext>}
|
|
228
249
|
*/
|
|
229
250
|
class ModuleExternalInitFragment extends InitFragment {
|
|
230
251
|
/**
|
|
231
252
|
* @param {string} request import source
|
|
253
|
+
* @param {Imported} imported the imported specifiers
|
|
232
254
|
* @param {string=} ident recomputed ident
|
|
233
255
|
* @param {ImportDependencyMeta=} dependencyMeta the dependency meta
|
|
234
|
-
* @param {
|
|
256
|
+
* @param {HashFunction=} hashFunction the hash function to use
|
|
235
257
|
*/
|
|
236
|
-
constructor(
|
|
258
|
+
constructor(
|
|
259
|
+
request,
|
|
260
|
+
imported,
|
|
261
|
+
ident,
|
|
262
|
+
dependencyMeta,
|
|
263
|
+
hashFunction = DEFAULTS.HASH_FUNCTION
|
|
264
|
+
) {
|
|
237
265
|
if (ident === undefined) {
|
|
238
266
|
ident = Template.toIdentifier(request);
|
|
239
267
|
if (ident !== request) {
|
|
@@ -243,31 +271,102 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
243
271
|
.slice(0, 8)}`;
|
|
244
272
|
}
|
|
245
273
|
}
|
|
246
|
-
|
|
274
|
+
|
|
247
275
|
super(
|
|
248
|
-
|
|
249
|
-
dependencyMeta && dependencyMeta.attributes
|
|
250
|
-
? dependencyMeta.attributes._isLegacyAssert
|
|
251
|
-
? ` assert ${JSON.stringify(
|
|
252
|
-
dependencyMeta.attributes,
|
|
253
|
-
importAssertionReplacer
|
|
254
|
-
)}`
|
|
255
|
-
: ` with ${JSON.stringify(dependencyMeta.attributes)}`
|
|
256
|
-
: ""
|
|
257
|
-
};\n`,
|
|
276
|
+
"",
|
|
258
277
|
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
259
278
|
0,
|
|
260
|
-
`external module import ${ident}`
|
|
279
|
+
`external module import ${ident} ${imported === true ? imported : imported.join(" ")}`
|
|
261
280
|
);
|
|
262
281
|
this._ident = ident;
|
|
263
282
|
this._request = request;
|
|
264
|
-
this._dependencyMeta =
|
|
265
|
-
this._identifier =
|
|
283
|
+
this._dependencyMeta = dependencyMeta;
|
|
284
|
+
this._identifier = this.buildIdentifier(ident);
|
|
285
|
+
this._imported = this.buildImported(imported);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* @returns {Imported} imported
|
|
290
|
+
*/
|
|
291
|
+
getImported() {
|
|
292
|
+
return this._imported;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* @param {Imported} imported imported
|
|
297
|
+
*/
|
|
298
|
+
setImported(imported) {
|
|
299
|
+
this._imported = imported;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* @param {GenerateContext} context context
|
|
304
|
+
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
305
|
+
*/
|
|
306
|
+
getContent(context) {
|
|
307
|
+
const {
|
|
308
|
+
_dependencyMeta: dependencyMeta,
|
|
309
|
+
_imported: imported,
|
|
310
|
+
_request: request,
|
|
311
|
+
_identifier: identifier
|
|
312
|
+
} = this;
|
|
313
|
+
const attributes =
|
|
314
|
+
dependencyMeta && dependencyMeta.attributes
|
|
315
|
+
? dependencyMeta.attributes._isLegacyAssert &&
|
|
316
|
+
dependencyMeta.attributes._isLegacyAssert
|
|
317
|
+
? ` assert ${JSON.stringify(
|
|
318
|
+
dependencyMeta.attributes,
|
|
319
|
+
importAssertionReplacer
|
|
320
|
+
)}`
|
|
321
|
+
: ` with ${JSON.stringify(dependencyMeta.attributes)}`
|
|
322
|
+
: "";
|
|
323
|
+
let content = "";
|
|
324
|
+
if (imported === true) {
|
|
325
|
+
// namespace
|
|
326
|
+
content = `import * as ${identifier} from ${JSON.stringify(request)}${
|
|
327
|
+
attributes
|
|
328
|
+
};\n`;
|
|
329
|
+
} else if (imported.length === 0) {
|
|
330
|
+
// just import, no use
|
|
331
|
+
content = `import ${JSON.stringify(request)}${attributes};\n`;
|
|
332
|
+
} else {
|
|
333
|
+
content = `import { ${imported
|
|
334
|
+
.map(([name, finalName]) => {
|
|
335
|
+
if (name !== finalName) {
|
|
336
|
+
return `${name} as ${finalName}`;
|
|
337
|
+
}
|
|
338
|
+
return name;
|
|
339
|
+
})
|
|
340
|
+
.join(", ")} } from ${JSON.stringify(request)}${attributes};\n`;
|
|
341
|
+
}
|
|
342
|
+
return content;
|
|
266
343
|
}
|
|
267
344
|
|
|
268
345
|
getNamespaceIdentifier() {
|
|
269
346
|
return this._identifier;
|
|
270
347
|
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* @param {string} ident ident
|
|
351
|
+
* @returns {string} identifier
|
|
352
|
+
*/
|
|
353
|
+
buildIdentifier(ident) {
|
|
354
|
+
return `__WEBPACK_EXTERNAL_MODULE_${ident}__`;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* @param {Imported} imported imported
|
|
359
|
+
* @returns {Imported} normalized imported
|
|
360
|
+
*/
|
|
361
|
+
buildImported(imported) {
|
|
362
|
+
if (Array.isArray(imported)) {
|
|
363
|
+
return imported.map(([name]) => {
|
|
364
|
+
const ident = `${this._ident}_${name}`;
|
|
365
|
+
return [name, this.buildIdentifier(ident)];
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return imported;
|
|
369
|
+
}
|
|
271
370
|
}
|
|
272
371
|
|
|
273
372
|
register(
|
|
@@ -277,11 +376,12 @@ register(
|
|
|
277
376
|
{
|
|
278
377
|
serialize(obj, { write }) {
|
|
279
378
|
write(obj._request);
|
|
379
|
+
write(obj._imported);
|
|
280
380
|
write(obj._ident);
|
|
281
381
|
write(obj._dependencyMeta);
|
|
282
382
|
},
|
|
283
383
|
deserialize({ read }) {
|
|
284
|
-
return new ModuleExternalInitFragment(read(), read(), read());
|
|
384
|
+
return new ModuleExternalInitFragment(read(), read(), read(), read());
|
|
285
385
|
}
|
|
286
386
|
}
|
|
287
387
|
);
|
|
@@ -328,11 +428,12 @@ const generateModuleRemapping = (
|
|
|
328
428
|
};
|
|
329
429
|
|
|
330
430
|
/**
|
|
331
|
-
* @param {
|
|
431
|
+
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
332
432
|
* @param {ExportsInfo} exportsInfo exports info of this module
|
|
333
433
|
* @param {RuntimeSpec} runtime the runtime
|
|
334
434
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
335
435
|
* @param {ImportDependencyMeta} dependencyMeta the dependency meta
|
|
436
|
+
* @param {ConcatenationScope=} concatenationScope concatenationScope
|
|
336
437
|
* @returns {SourceData} the generated source
|
|
337
438
|
*/
|
|
338
439
|
const getSourceForModuleExternal = (
|
|
@@ -340,27 +441,63 @@ const getSourceForModuleExternal = (
|
|
|
340
441
|
exportsInfo,
|
|
341
442
|
runtime,
|
|
342
443
|
runtimeTemplate,
|
|
343
|
-
dependencyMeta
|
|
444
|
+
dependencyMeta,
|
|
445
|
+
concatenationScope
|
|
344
446
|
) => {
|
|
345
|
-
|
|
447
|
+
/** @type {Imported} */
|
|
448
|
+
let imported = true;
|
|
449
|
+
if (concatenationScope) {
|
|
450
|
+
const usedExports = exportsInfo.getUsedExports(runtime);
|
|
451
|
+
switch (usedExports) {
|
|
452
|
+
case true:
|
|
453
|
+
case null:
|
|
454
|
+
// unknown exports
|
|
455
|
+
imported = true;
|
|
456
|
+
break;
|
|
457
|
+
case false:
|
|
458
|
+
// no used exports
|
|
459
|
+
imported = [];
|
|
460
|
+
break;
|
|
461
|
+
default:
|
|
462
|
+
imported = [...usedExports.entries()];
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
if (!Array.isArray(moduleAndSpecifiers)) {
|
|
346
467
|
moduleAndSpecifiers = [moduleAndSpecifiers];
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// Return to `namespace` when the external request includes a specific export
|
|
471
|
+
if (moduleAndSpecifiers.length > 1) {
|
|
472
|
+
imported = true;
|
|
473
|
+
}
|
|
474
|
+
|
|
347
475
|
const initFragment = new ModuleExternalInitFragment(
|
|
348
476
|
moduleAndSpecifiers[0],
|
|
477
|
+
imported,
|
|
349
478
|
undefined,
|
|
350
479
|
dependencyMeta,
|
|
351
480
|
runtimeTemplate.outputOptions.hashFunction
|
|
352
481
|
);
|
|
482
|
+
const normalizedImported = initFragment.getImported();
|
|
483
|
+
|
|
353
484
|
const baseAccess = `${initFragment.getNamespaceIdentifier()}${propertyAccess(
|
|
354
485
|
moduleAndSpecifiers,
|
|
355
486
|
1
|
|
356
487
|
)}`;
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
488
|
+
let expression = baseAccess;
|
|
489
|
+
|
|
490
|
+
const useNamespace = imported === true;
|
|
491
|
+
let moduleRemapping;
|
|
492
|
+
if (useNamespace) {
|
|
493
|
+
moduleRemapping = generateModuleRemapping(
|
|
494
|
+
baseAccess,
|
|
495
|
+
exportsInfo,
|
|
496
|
+
runtime,
|
|
497
|
+
runtimeTemplate
|
|
498
|
+
);
|
|
499
|
+
expression = moduleRemapping || baseAccess;
|
|
500
|
+
}
|
|
364
501
|
return {
|
|
365
502
|
expression,
|
|
366
503
|
init: moduleRemapping
|
|
@@ -372,15 +509,18 @@ const getSourceForModuleExternal = (
|
|
|
372
509
|
"x"
|
|
373
510
|
)}`
|
|
374
511
|
: undefined,
|
|
512
|
+
specifiers: normalizedImported === true ? undefined : normalizedImported,
|
|
375
513
|
runtimeRequirements: moduleRemapping
|
|
376
514
|
? RUNTIME_REQUIREMENTS_FOR_MODULE
|
|
377
515
|
: undefined,
|
|
378
|
-
chunkInitFragments: [
|
|
516
|
+
chunkInitFragments: [
|
|
517
|
+
/** @type {InitFragment<EXPECTED_ANY>} */ (initFragment)
|
|
518
|
+
]
|
|
379
519
|
};
|
|
380
520
|
};
|
|
381
521
|
|
|
382
522
|
/**
|
|
383
|
-
* @param {string|string[]} urlAndGlobal the script request
|
|
523
|
+
* @param {string | string[]} urlAndGlobal the script request
|
|
384
524
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
385
525
|
* @returns {SourceData} the generated source
|
|
386
526
|
*/
|
|
@@ -428,9 +568,9 @@ const checkExternalVariable = (variableName, request, runtimeTemplate) =>
|
|
|
428
568
|
)} }\n`;
|
|
429
569
|
|
|
430
570
|
/**
|
|
431
|
-
* @param {string
|
|
571
|
+
* @param {ModuleId | string} id the module id
|
|
432
572
|
* @param {boolean} optional true, if the module is optional
|
|
433
|
-
* @param {string|string[]} request the request path
|
|
573
|
+
* @param {string | string[]} request the request path
|
|
434
574
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
435
575
|
* @returns {SourceData} the generated source
|
|
436
576
|
*/
|
|
@@ -457,7 +597,7 @@ const getSourceForAmdOrUmdExternal = (
|
|
|
457
597
|
|
|
458
598
|
/**
|
|
459
599
|
* @param {boolean} optional true, if the module is optional
|
|
460
|
-
* @param {string|string[]} request the request path
|
|
600
|
+
* @param {string | string[]} request the request path
|
|
461
601
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
462
602
|
* @returns {SourceData} the generated source
|
|
463
603
|
*/
|
|
@@ -478,11 +618,12 @@ const getSourceForDefaultCase = (optional, request, runtimeTemplate) => {
|
|
|
478
618
|
};
|
|
479
619
|
|
|
480
620
|
/** @typedef {Record<string, string | string[]>} RequestRecord */
|
|
621
|
+
/** @typedef {string | string[] | RequestRecord} ExternalModuleRequest */
|
|
481
622
|
|
|
482
623
|
class ExternalModule extends Module {
|
|
483
624
|
/**
|
|
484
|
-
* @param {
|
|
485
|
-
* @param {
|
|
625
|
+
* @param {ExternalModuleRequest} request request
|
|
626
|
+
* @param {ExternalsType} type type
|
|
486
627
|
* @param {string} userRequest user request
|
|
487
628
|
* @param {DependencyMeta=} dependencyMeta dependency meta
|
|
488
629
|
*/
|
|
@@ -490,9 +631,9 @@ class ExternalModule extends Module {
|
|
|
490
631
|
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
|
491
632
|
|
|
492
633
|
// Info from Factory
|
|
493
|
-
/** @type {
|
|
634
|
+
/** @type {ExternalModuleRequest} */
|
|
494
635
|
this.request = request;
|
|
495
|
-
/** @type {
|
|
636
|
+
/** @type {ExternalsType} */
|
|
496
637
|
this.externalType = type;
|
|
497
638
|
/** @type {string} */
|
|
498
639
|
this.userRequest = userRequest;
|
|
@@ -515,12 +656,12 @@ class ExternalModule extends Module {
|
|
|
515
656
|
return CSS_IMPORT_TYPES;
|
|
516
657
|
}
|
|
517
658
|
|
|
518
|
-
return
|
|
659
|
+
return JAVASCRIPT_TYPES;
|
|
519
660
|
}
|
|
520
661
|
|
|
521
662
|
/**
|
|
522
663
|
* @param {LibIdentOptions} options options
|
|
523
|
-
* @returns {
|
|
664
|
+
* @returns {LibIdent | null} an identifier for library inclusion
|
|
524
665
|
*/
|
|
525
666
|
libIdent(options) {
|
|
526
667
|
return this.userRequest;
|
|
@@ -554,7 +695,7 @@ class ExternalModule extends Module {
|
|
|
554
695
|
|
|
555
696
|
/**
|
|
556
697
|
* @param {NeedBuildContext} context context info
|
|
557
|
-
* @param {
|
|
698
|
+
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
558
699
|
* @returns {void}
|
|
559
700
|
*/
|
|
560
701
|
needBuild(context, callback) {
|
|
@@ -566,7 +707,7 @@ class ExternalModule extends Module {
|
|
|
566
707
|
* @param {Compilation} compilation the compilation
|
|
567
708
|
* @param {ResolverWithOptions} resolver the resolver
|
|
568
709
|
* @param {InputFileSystem} fs the file system
|
|
569
|
-
* @param {
|
|
710
|
+
* @param {BuildCallback} callback callback function
|
|
570
711
|
* @returns {void}
|
|
571
712
|
*/
|
|
572
713
|
build(options, compilation, resolver, fs, callback) {
|
|
@@ -577,7 +718,7 @@ class ExternalModule extends Module {
|
|
|
577
718
|
this.buildInfo = {
|
|
578
719
|
strict: true,
|
|
579
720
|
topLevelDeclarations: new Set(),
|
|
580
|
-
|
|
721
|
+
javascriptModule: compilation.outputOptions.module
|
|
581
722
|
};
|
|
582
723
|
const { request, externalType } = this._getRequestAndExternalType();
|
|
583
724
|
this.buildMeta.exportsType = "dynamic";
|
|
@@ -594,7 +735,7 @@ class ExternalModule extends Module {
|
|
|
594
735
|
}
|
|
595
736
|
break;
|
|
596
737
|
case "module":
|
|
597
|
-
if (this.buildInfo.
|
|
738
|
+
if (this.buildInfo.javascriptModule) {
|
|
598
739
|
if (!Array.isArray(request) || request.length === 1) {
|
|
599
740
|
this.buildMeta.exportsType = "namespace";
|
|
600
741
|
canMangle = true;
|
|
@@ -647,7 +788,7 @@ class ExternalModule extends Module {
|
|
|
647
788
|
|
|
648
789
|
/**
|
|
649
790
|
* restore unsafe cache data
|
|
650
|
-
* @param {
|
|
791
|
+
* @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
|
|
651
792
|
* @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
|
|
652
793
|
*/
|
|
653
794
|
restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
|
|
@@ -658,7 +799,7 @@ class ExternalModule extends Module {
|
|
|
658
799
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
659
800
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
660
801
|
*/
|
|
661
|
-
getConcatenationBailoutReason(
|
|
802
|
+
getConcatenationBailoutReason(context) {
|
|
662
803
|
switch (this.externalType) {
|
|
663
804
|
case "amd":
|
|
664
805
|
case "amd-require":
|
|
@@ -671,10 +812,15 @@ class ExternalModule extends Module {
|
|
|
671
812
|
return undefined;
|
|
672
813
|
}
|
|
673
814
|
|
|
815
|
+
/**
|
|
816
|
+
* @private
|
|
817
|
+
* @returns {{ request: string | string[], externalType: ExternalsType }} the request and external type
|
|
818
|
+
*/
|
|
674
819
|
_getRequestAndExternalType() {
|
|
675
820
|
let { request, externalType } = this;
|
|
676
|
-
if (typeof request === "object" && !Array.isArray(request))
|
|
821
|
+
if (typeof request === "object" && !Array.isArray(request)) {
|
|
677
822
|
request = request[externalType];
|
|
823
|
+
}
|
|
678
824
|
externalType = this._resolveExternalType(externalType);
|
|
679
825
|
return { request, externalType };
|
|
680
826
|
}
|
|
@@ -682,8 +828,8 @@ class ExternalModule extends Module {
|
|
|
682
828
|
/**
|
|
683
829
|
* Resolve the detailed external type from the raw external type.
|
|
684
830
|
* e.g. resolve "module" or "import" from "module-import" type
|
|
685
|
-
* @param {
|
|
686
|
-
* @returns {
|
|
831
|
+
* @param {ExternalsType} externalType raw external type
|
|
832
|
+
* @returns {ExternalsType} resolved external type
|
|
687
833
|
*/
|
|
688
834
|
_resolveExternalType(externalType) {
|
|
689
835
|
if (externalType === "module-import") {
|
|
@@ -715,12 +861,13 @@ class ExternalModule extends Module {
|
|
|
715
861
|
/**
|
|
716
862
|
* @private
|
|
717
863
|
* @param {string | string[]} request request
|
|
718
|
-
* @param {
|
|
864
|
+
* @param {ExternalsType} externalType the external type
|
|
719
865
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
720
866
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
721
867
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
722
868
|
* @param {RuntimeSpec} runtime the runtime
|
|
723
869
|
* @param {DependencyMeta | undefined} dependencyMeta the dependency meta
|
|
870
|
+
* @param {ConcatenationScope=} concatenationScope concatenationScope
|
|
724
871
|
* @returns {SourceData} the source data
|
|
725
872
|
*/
|
|
726
873
|
_getSourceData(
|
|
@@ -730,7 +877,8 @@ class ExternalModule extends Module {
|
|
|
730
877
|
moduleGraph,
|
|
731
878
|
chunkGraph,
|
|
732
879
|
runtime,
|
|
733
|
-
dependencyMeta
|
|
880
|
+
dependencyMeta,
|
|
881
|
+
concatenationScope
|
|
734
882
|
) {
|
|
735
883
|
switch (externalType) {
|
|
736
884
|
case "this":
|
|
@@ -748,14 +896,8 @@ class ExternalModule extends Module {
|
|
|
748
896
|
case "commonjs-static":
|
|
749
897
|
return getSourceForCommonJsExternal(request);
|
|
750
898
|
case "node-commonjs":
|
|
751
|
-
return /** @type {BuildInfo} */ (this.buildInfo).
|
|
752
|
-
? getSourceForCommonJsExternalInNodeModule(
|
|
753
|
-
request,
|
|
754
|
-
/** @type {string} */
|
|
755
|
-
(runtimeTemplate.outputOptions.importMetaName),
|
|
756
|
-
/** @type {boolean} */
|
|
757
|
-
(runtimeTemplate.supportNodePrefixForCoreModules())
|
|
758
|
-
)
|
|
899
|
+
return /** @type {BuildInfo} */ (this.buildInfo).javascriptModule
|
|
900
|
+
? getSourceForCommonJsExternalInNodeModule(request, runtimeTemplate)
|
|
759
901
|
: getSourceForCommonJsExternal(request);
|
|
760
902
|
case "amd":
|
|
761
903
|
case "amd-require":
|
|
@@ -780,7 +922,7 @@ class ExternalModule extends Module {
|
|
|
780
922
|
case "script":
|
|
781
923
|
return getSourceForScriptExternal(request, runtimeTemplate);
|
|
782
924
|
case "module": {
|
|
783
|
-
if (!(/** @type {BuildInfo} */ (this.buildInfo).
|
|
925
|
+
if (!(/** @type {BuildInfo} */ (this.buildInfo).javascriptModule)) {
|
|
784
926
|
if (!runtimeTemplate.supportsDynamicImport()) {
|
|
785
927
|
throw new Error(
|
|
786
928
|
`The target environment doesn't support dynamic import() syntax so it's not possible to use external type 'module' within a script${
|
|
@@ -806,13 +948,12 @@ class ExternalModule extends Module {
|
|
|
806
948
|
moduleGraph.getExportsInfo(this),
|
|
807
949
|
runtime,
|
|
808
950
|
runtimeTemplate,
|
|
809
|
-
/** @type {ImportDependencyMeta} */ (dependencyMeta)
|
|
951
|
+
/** @type {ImportDependencyMeta} */ (dependencyMeta),
|
|
952
|
+
concatenationScope
|
|
810
953
|
);
|
|
811
954
|
}
|
|
812
955
|
case "var":
|
|
813
956
|
case "promise":
|
|
814
|
-
case "const":
|
|
815
|
-
case "let":
|
|
816
957
|
case "assign":
|
|
817
958
|
default:
|
|
818
959
|
return getSourceForDefaultCase(
|
|
@@ -839,7 +980,7 @@ class ExternalModule extends Module {
|
|
|
839
980
|
case "asset": {
|
|
840
981
|
const sources = new Map();
|
|
841
982
|
sources.set(
|
|
842
|
-
|
|
983
|
+
JAVASCRIPT_TYPE,
|
|
843
984
|
new RawSource(`module.exports = ${JSON.stringify(request)};`)
|
|
844
985
|
);
|
|
845
986
|
const data = new Map();
|
|
@@ -886,24 +1027,34 @@ class ExternalModule extends Module {
|
|
|
886
1027
|
moduleGraph,
|
|
887
1028
|
chunkGraph,
|
|
888
1029
|
runtime,
|
|
889
|
-
this.dependencyMeta
|
|
1030
|
+
this.dependencyMeta,
|
|
1031
|
+
concatenationScope
|
|
890
1032
|
);
|
|
891
1033
|
|
|
1034
|
+
// sourceString can be empty str only when there is concatenationScope
|
|
892
1035
|
let sourceString = sourceData.expression;
|
|
893
|
-
if (sourceData.iife)
|
|
1036
|
+
if (sourceData.iife) {
|
|
894
1037
|
sourceString = `(function() { return ${sourceString}; }())`;
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
const specifiers = sourceData.specifiers;
|
|
1041
|
+
if (specifiers) {
|
|
1042
|
+
sourceString = "";
|
|
1043
|
+
const scope = /** @type {ConcatenationScope} */ (concatenationScope);
|
|
1044
|
+
for (const [specifier, finalName] of specifiers) {
|
|
1045
|
+
scope.registerRawExport(specifier, finalName);
|
|
1046
|
+
}
|
|
1047
|
+
} else if (concatenationScope) {
|
|
1048
|
+
sourceString = `${runtimeTemplate.renderConst()} ${ConcatenationScope.NAMESPACE_OBJECT_EXPORT} = ${sourceString};`;
|
|
899
1049
|
concatenationScope.registerNamespaceExport(
|
|
900
1050
|
ConcatenationScope.NAMESPACE_OBJECT_EXPORT
|
|
901
1051
|
);
|
|
902
1052
|
} else {
|
|
903
1053
|
sourceString = `module.exports = ${sourceString};`;
|
|
904
1054
|
}
|
|
905
|
-
if (sourceData.init)
|
|
1055
|
+
if (sourceData.init) {
|
|
906
1056
|
sourceString = `${sourceData.init}\n${sourceString}`;
|
|
1057
|
+
}
|
|
907
1058
|
|
|
908
1059
|
let data;
|
|
909
1060
|
if (sourceData.chunkInitFragments) {
|
|
@@ -914,11 +1065,11 @@ class ExternalModule extends Module {
|
|
|
914
1065
|
const sources = new Map();
|
|
915
1066
|
if (this.useSourceMap || this.useSimpleSourceMap) {
|
|
916
1067
|
sources.set(
|
|
917
|
-
|
|
1068
|
+
JAVASCRIPT_TYPE,
|
|
918
1069
|
new OriginalSource(sourceString, this.identifier())
|
|
919
1070
|
);
|
|
920
1071
|
} else {
|
|
921
|
-
sources.set(
|
|
1072
|
+
sources.set(JAVASCRIPT_TYPE, new RawSource(sourceString));
|
|
922
1073
|
}
|
|
923
1074
|
|
|
924
1075
|
let runtimeRequirements = sourceData.runtimeRequirements;
|
|
@@ -997,3 +1148,6 @@ class ExternalModule extends Module {
|
|
|
997
1148
|
makeSerializable(ExternalModule, "webpack/lib/ExternalModule");
|
|
998
1149
|
|
|
999
1150
|
module.exports = ExternalModule;
|
|
1151
|
+
module.exports.ModuleExternalInitFragment = ModuleExternalInitFragment;
|
|
1152
|
+
module.exports.getExternalModuleNodeCommonjsInitFragment =
|
|
1153
|
+
getExternalModuleNodeCommonjsInitFragment;
|