webpack 5.76.1 → 5.88.2
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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
@@ -18,6 +18,12 @@ const Compilation = require("../Compilation");
|
|
18
18
|
const { tryRunOrWebpackError } = require("../HookWebpackError");
|
19
19
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
20
20
|
const InitFragment = require("../InitFragment");
|
21
|
+
const {
|
22
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
23
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
24
|
+
JAVASCRIPT_MODULE_TYPE_ESM,
|
25
|
+
WEBPACK_MODULE_TYPE_RUNTIME
|
26
|
+
} = require("../ModuleTypeConstants");
|
21
27
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
22
28
|
const Template = require("../Template");
|
23
29
|
const { last, someInIterable } = require("../util/IterableHelpers");
|
@@ -54,14 +60,27 @@ const chunkHasJs = (chunk, chunkGraph) => {
|
|
54
60
|
: false;
|
55
61
|
};
|
56
62
|
|
63
|
+
/**
|
64
|
+
* @param {Module} module a module
|
65
|
+
* @param {string} code the code
|
66
|
+
* @returns {string} generated code for the stack
|
67
|
+
*/
|
57
68
|
const printGeneratedCodeForStack = (module, code) => {
|
58
69
|
const lines = code.split("\n");
|
59
70
|
const n = `${lines.length}`.length;
|
60
71
|
return `\n\nGenerated code for ${module.identifier()}\n${lines
|
61
|
-
.map(
|
62
|
-
|
63
|
-
|
64
|
-
|
72
|
+
.map(
|
73
|
+
/**
|
74
|
+
* @param {string} line the line
|
75
|
+
* @param {number} i the index
|
76
|
+
* @param {string[]} lines the lines
|
77
|
+
* @returns {string} the line with line number
|
78
|
+
*/
|
79
|
+
(line, i, lines) => {
|
80
|
+
const iStr = `${i + 1}`;
|
81
|
+
return `${" ".repeat(n - iStr.length)}${iStr} | ${line}`;
|
82
|
+
}
|
83
|
+
)
|
65
84
|
.join("\n")}`;
|
66
85
|
};
|
67
86
|
|
@@ -124,8 +143,8 @@ const printGeneratedCodeForStack = (module, code) => {
|
|
124
143
|
* @property {SyncWaterfallHook<[Source, Module, StartupRenderContext]>} renderStartup
|
125
144
|
* @property {SyncWaterfallHook<[string, RenderBootstrapContext]>} renderRequire
|
126
145
|
* @property {SyncBailHook<[Module, RenderBootstrapContext], string>} inlineInRuntimeBailout
|
127
|
-
* @property {SyncBailHook<[Module, RenderContext], string>} embedInRuntimeBailout
|
128
|
-
* @property {SyncBailHook<[RenderContext], string>} strictRuntimeBailout
|
146
|
+
* @property {SyncBailHook<[Module, RenderContext], string | void>} embedInRuntimeBailout
|
147
|
+
* @property {SyncBailHook<[RenderContext], string | void>} strictRuntimeBailout
|
129
148
|
* @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
|
130
149
|
* @property {SyncBailHook<[Chunk, RenderContext], boolean>} useSourceMap
|
131
150
|
*/
|
@@ -133,6 +152,8 @@ const printGeneratedCodeForStack = (module, code) => {
|
|
133
152
|
/** @type {WeakMap<Compilation, CompilationHooks>} */
|
134
153
|
const compilationHooksMap = new WeakMap();
|
135
154
|
|
155
|
+
const PLUGIN_NAME = "JavascriptModulesPlugin";
|
156
|
+
|
136
157
|
class JavascriptModulesPlugin {
|
137
158
|
/**
|
138
159
|
* @param {Compilation} compilation the compilation
|
@@ -196,154 +217,147 @@ class JavascriptModulesPlugin {
|
|
196
217
|
*/
|
197
218
|
apply(compiler) {
|
198
219
|
compiler.hooks.compilation.tap(
|
199
|
-
|
220
|
+
PLUGIN_NAME,
|
200
221
|
(compilation, { normalModuleFactory }) => {
|
201
222
|
const hooks = JavascriptModulesPlugin.getCompilationHooks(compilation);
|
202
223
|
normalModuleFactory.hooks.createParser
|
203
|
-
.for(
|
204
|
-
.tap(
|
224
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
225
|
+
.tap(PLUGIN_NAME, options => {
|
205
226
|
return new JavascriptParser("auto");
|
206
227
|
});
|
207
228
|
normalModuleFactory.hooks.createParser
|
208
|
-
.for(
|
209
|
-
.tap(
|
229
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
230
|
+
.tap(PLUGIN_NAME, options => {
|
210
231
|
return new JavascriptParser("script");
|
211
232
|
});
|
212
233
|
normalModuleFactory.hooks.createParser
|
213
|
-
.for(
|
214
|
-
.tap(
|
234
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
235
|
+
.tap(PLUGIN_NAME, options => {
|
215
236
|
return new JavascriptParser("module");
|
216
237
|
});
|
217
238
|
normalModuleFactory.hooks.createGenerator
|
218
|
-
.for(
|
219
|
-
.tap(
|
239
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
240
|
+
.tap(PLUGIN_NAME, () => {
|
220
241
|
return new JavascriptGenerator();
|
221
242
|
});
|
222
243
|
normalModuleFactory.hooks.createGenerator
|
223
|
-
.for(
|
224
|
-
.tap(
|
244
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
245
|
+
.tap(PLUGIN_NAME, () => {
|
225
246
|
return new JavascriptGenerator();
|
226
247
|
});
|
227
248
|
normalModuleFactory.hooks.createGenerator
|
228
|
-
.for(
|
229
|
-
.tap(
|
249
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
250
|
+
.tap(PLUGIN_NAME, () => {
|
230
251
|
return new JavascriptGenerator();
|
231
252
|
});
|
232
|
-
compilation.hooks.renderManifest.tap(
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
codeGenerationResults
|
244
|
-
} = options;
|
253
|
+
compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
|
254
|
+
const {
|
255
|
+
hash,
|
256
|
+
chunk,
|
257
|
+
chunkGraph,
|
258
|
+
moduleGraph,
|
259
|
+
runtimeTemplate,
|
260
|
+
dependencyTemplates,
|
261
|
+
outputOptions,
|
262
|
+
codeGenerationResults
|
263
|
+
} = options;
|
245
264
|
|
246
|
-
|
247
|
-
chunk instanceof HotUpdateChunk ? chunk : null;
|
265
|
+
const hotUpdateChunk = chunk instanceof HotUpdateChunk ? chunk : null;
|
248
266
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
267
|
+
let render;
|
268
|
+
const filenameTemplate =
|
269
|
+
JavascriptModulesPlugin.getChunkFilenameTemplate(
|
270
|
+
chunk,
|
271
|
+
outputOptions
|
272
|
+
);
|
273
|
+
if (hotUpdateChunk) {
|
274
|
+
render = () =>
|
275
|
+
this.renderChunk(
|
276
|
+
{
|
277
|
+
chunk,
|
278
|
+
dependencyTemplates,
|
279
|
+
runtimeTemplate,
|
280
|
+
moduleGraph,
|
281
|
+
chunkGraph,
|
282
|
+
codeGenerationResults,
|
283
|
+
strictMode: runtimeTemplate.isModule()
|
284
|
+
},
|
285
|
+
hooks
|
254
286
|
);
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
chunk,
|
275
|
-
dependencyTemplates,
|
276
|
-
runtimeTemplate,
|
277
|
-
moduleGraph,
|
278
|
-
chunkGraph,
|
279
|
-
codeGenerationResults,
|
280
|
-
strictMode: runtimeTemplate.isModule()
|
281
|
-
},
|
282
|
-
hooks,
|
283
|
-
compilation
|
284
|
-
);
|
285
|
-
} else {
|
286
|
-
if (!chunkHasJs(chunk, chunkGraph)) {
|
287
|
-
return result;
|
288
|
-
}
|
289
|
-
|
290
|
-
render = () =>
|
291
|
-
this.renderChunk(
|
292
|
-
{
|
293
|
-
chunk,
|
294
|
-
dependencyTemplates,
|
295
|
-
runtimeTemplate,
|
296
|
-
moduleGraph,
|
297
|
-
chunkGraph,
|
298
|
-
codeGenerationResults,
|
299
|
-
strictMode: runtimeTemplate.isModule()
|
300
|
-
},
|
301
|
-
hooks
|
302
|
-
);
|
287
|
+
} else if (chunk.hasRuntime()) {
|
288
|
+
render = () =>
|
289
|
+
this.renderMain(
|
290
|
+
{
|
291
|
+
hash,
|
292
|
+
chunk,
|
293
|
+
dependencyTemplates,
|
294
|
+
runtimeTemplate,
|
295
|
+
moduleGraph,
|
296
|
+
chunkGraph,
|
297
|
+
codeGenerationResults,
|
298
|
+
strictMode: runtimeTemplate.isModule()
|
299
|
+
},
|
300
|
+
hooks,
|
301
|
+
compilation
|
302
|
+
);
|
303
|
+
} else {
|
304
|
+
if (!chunkHasJs(chunk, chunkGraph)) {
|
305
|
+
return result;
|
303
306
|
}
|
304
307
|
|
305
|
-
|
306
|
-
|
307
|
-
filenameTemplate,
|
308
|
-
pathOptions: {
|
309
|
-
hash,
|
310
|
-
runtime: chunk.runtime,
|
311
|
-
chunk,
|
312
|
-
contentHashType: "javascript"
|
313
|
-
},
|
314
|
-
info: {
|
315
|
-
javascriptModule: compilation.runtimeTemplate.isModule()
|
316
|
-
},
|
317
|
-
identifier: hotUpdateChunk
|
318
|
-
? `hotupdatechunk${chunk.id}`
|
319
|
-
: `chunk${chunk.id}`,
|
320
|
-
hash: chunk.contentHash.javascript
|
321
|
-
});
|
322
|
-
|
323
|
-
return result;
|
324
|
-
}
|
325
|
-
);
|
326
|
-
compilation.hooks.chunkHash.tap(
|
327
|
-
"JavascriptModulesPlugin",
|
328
|
-
(chunk, hash, context) => {
|
329
|
-
hooks.chunkHash.call(chunk, hash, context);
|
330
|
-
if (chunk.hasRuntime()) {
|
331
|
-
this.updateHashWithBootstrap(
|
332
|
-
hash,
|
308
|
+
render = () =>
|
309
|
+
this.renderChunk(
|
333
310
|
{
|
334
|
-
hash: "0000",
|
335
311
|
chunk,
|
336
|
-
|
337
|
-
|
338
|
-
moduleGraph
|
339
|
-
|
312
|
+
dependencyTemplates,
|
313
|
+
runtimeTemplate,
|
314
|
+
moduleGraph,
|
315
|
+
chunkGraph,
|
316
|
+
codeGenerationResults,
|
317
|
+
strictMode: runtimeTemplate.isModule()
|
340
318
|
},
|
341
319
|
hooks
|
342
320
|
);
|
343
|
-
}
|
344
321
|
}
|
345
|
-
|
346
|
-
|
322
|
+
|
323
|
+
result.push({
|
324
|
+
render,
|
325
|
+
filenameTemplate,
|
326
|
+
pathOptions: {
|
327
|
+
hash,
|
328
|
+
runtime: chunk.runtime,
|
329
|
+
chunk,
|
330
|
+
contentHashType: "javascript"
|
331
|
+
},
|
332
|
+
info: {
|
333
|
+
javascriptModule: compilation.runtimeTemplate.isModule()
|
334
|
+
},
|
335
|
+
identifier: hotUpdateChunk
|
336
|
+
? `hotupdatechunk${chunk.id}`
|
337
|
+
: `chunk${chunk.id}`,
|
338
|
+
hash: chunk.contentHash.javascript
|
339
|
+
});
|
340
|
+
|
341
|
+
return result;
|
342
|
+
});
|
343
|
+
compilation.hooks.chunkHash.tap(PLUGIN_NAME, (chunk, hash, context) => {
|
344
|
+
hooks.chunkHash.call(chunk, hash, context);
|
345
|
+
if (chunk.hasRuntime()) {
|
346
|
+
this.updateHashWithBootstrap(
|
347
|
+
hash,
|
348
|
+
{
|
349
|
+
hash: "0000",
|
350
|
+
chunk,
|
351
|
+
codeGenerationResults: context.codeGenerationResults,
|
352
|
+
chunkGraph: context.chunkGraph,
|
353
|
+
moduleGraph: context.moduleGraph,
|
354
|
+
runtimeTemplate: context.runtimeTemplate
|
355
|
+
},
|
356
|
+
hooks
|
357
|
+
);
|
358
|
+
}
|
359
|
+
});
|
360
|
+
compilation.hooks.contentHash.tap(PLUGIN_NAME, chunk => {
|
347
361
|
const {
|
348
362
|
chunkGraph,
|
349
363
|
codeGenerationResults,
|
@@ -394,7 +408,7 @@ class JavascriptModulesPlugin {
|
|
394
408
|
}
|
395
409
|
const runtimeModules = chunkGraph.getChunkModulesIterableBySourceType(
|
396
410
|
chunk,
|
397
|
-
|
411
|
+
WEBPACK_MODULE_TYPE_RUNTIME
|
398
412
|
);
|
399
413
|
if (runtimeModules) {
|
400
414
|
const xor = new StringXor();
|
@@ -410,7 +424,7 @@ class JavascriptModulesPlugin {
|
|
410
424
|
);
|
411
425
|
});
|
412
426
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
413
|
-
|
427
|
+
PLUGIN_NAME,
|
414
428
|
(chunk, set, { chunkGraph }) => {
|
415
429
|
if (
|
416
430
|
!set.has(RuntimeGlobals.startupNoDefault) &&
|
@@ -421,58 +435,54 @@ class JavascriptModulesPlugin {
|
|
421
435
|
}
|
422
436
|
}
|
423
437
|
);
|
424
|
-
compilation.hooks.executeModule.tap(
|
425
|
-
"
|
426
|
-
(
|
427
|
-
|
428
|
-
|
429
|
-
if (source === undefined) return;
|
430
|
-
const { module, moduleObject } = options;
|
431
|
-
const code = source.source();
|
438
|
+
compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
|
439
|
+
const source = options.codeGenerationResult.sources.get("javascript");
|
440
|
+
if (source === undefined) return;
|
441
|
+
const { module, moduleObject } = options;
|
442
|
+
const code = source.source();
|
432
443
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
}
|
439
|
-
);
|
440
|
-
try {
|
441
|
-
fn.call(
|
442
|
-
moduleObject.exports,
|
443
|
-
moduleObject,
|
444
|
-
moduleObject.exports,
|
445
|
-
context.__webpack_require__
|
446
|
-
);
|
447
|
-
} catch (e) {
|
448
|
-
e.stack += printGeneratedCodeForStack(options.module, code);
|
449
|
-
throw e;
|
444
|
+
const fn = vm.runInThisContext(
|
445
|
+
`(function(${module.moduleArgument}, ${module.exportsArgument}, ${RuntimeGlobals.require}) {\n${code}\n/**/})`,
|
446
|
+
{
|
447
|
+
filename: module.identifier(),
|
448
|
+
lineOffset: -1
|
450
449
|
}
|
450
|
+
);
|
451
|
+
try {
|
452
|
+
fn.call(
|
453
|
+
moduleObject.exports,
|
454
|
+
moduleObject,
|
455
|
+
moduleObject.exports,
|
456
|
+
context.__webpack_require__
|
457
|
+
);
|
458
|
+
} catch (e) {
|
459
|
+
e.stack += printGeneratedCodeForStack(
|
460
|
+
options.module,
|
461
|
+
/** @type {string} */ (code)
|
462
|
+
);
|
463
|
+
throw e;
|
451
464
|
}
|
452
|
-
);
|
453
|
-
compilation.hooks.executeModule.tap(
|
454
|
-
"
|
455
|
-
(
|
456
|
-
|
457
|
-
|
458
|
-
let code = source.source();
|
459
|
-
if (typeof code !== "string") code = code.toString();
|
465
|
+
});
|
466
|
+
compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
|
467
|
+
const source = options.codeGenerationResult.sources.get("runtime");
|
468
|
+
if (source === undefined) return;
|
469
|
+
let code = source.source();
|
470
|
+
if (typeof code !== "string") code = code.toString();
|
460
471
|
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
}
|
467
|
-
);
|
468
|
-
try {
|
469
|
-
fn.call(null, context.__webpack_require__);
|
470
|
-
} catch (e) {
|
471
|
-
e.stack += printGeneratedCodeForStack(options.module, code);
|
472
|
-
throw e;
|
472
|
+
const fn = vm.runInThisContext(
|
473
|
+
`(function(${RuntimeGlobals.require}) {\n${code}\n/**/})`,
|
474
|
+
{
|
475
|
+
filename: options.module.identifier(),
|
476
|
+
lineOffset: -1
|
473
477
|
}
|
478
|
+
);
|
479
|
+
try {
|
480
|
+
fn.call(null, context.__webpack_require__);
|
481
|
+
} catch (e) {
|
482
|
+
e.stack += printGeneratedCodeForStack(options.module, code);
|
483
|
+
throw e;
|
474
484
|
}
|
475
|
-
);
|
485
|
+
});
|
476
486
|
}
|
477
487
|
);
|
478
488
|
}
|
@@ -563,7 +573,7 @@ class JavascriptModulesPlugin {
|
|
563
573
|
? module.exportsArgument
|
564
574
|
: "__unused_webpack_" + module.exportsArgument
|
565
575
|
);
|
566
|
-
if (needRequire) args.push(
|
576
|
+
if (needRequire) args.push(RuntimeGlobals.require);
|
567
577
|
if (!needThisAsExports && runtimeTemplate.supportsArrowFunction()) {
|
568
578
|
factorySource.add("/***/ ((" + args.join(", ") + ") => {\n\n");
|
569
579
|
} else {
|
@@ -697,6 +707,7 @@ class JavascriptModulesPlugin {
|
|
697
707
|
);
|
698
708
|
|
699
709
|
const hasEntryModules = chunkGraph.getNumberOfEntryModules(chunk) > 0;
|
710
|
+
/** @type {Set<Module> | undefined} */
|
700
711
|
let inlinedModules;
|
701
712
|
if (bootstrap.allowInlineStartup && hasEntryModules) {
|
702
713
|
inlinedModules = new Set(chunkGraph.getChunkEntryModulesIterable(chunk));
|
@@ -738,7 +749,9 @@ class JavascriptModulesPlugin {
|
|
738
749
|
const chunkModules = Template.renderChunkModules(
|
739
750
|
chunkRenderContext,
|
740
751
|
inlinedModules
|
741
|
-
? allModules.filter(
|
752
|
+
? allModules.filter(
|
753
|
+
m => !(/** @type {Set<Module>} */ (inlinedModules).has(m))
|
754
|
+
)
|
742
755
|
: allModules,
|
743
756
|
module => this.renderModule(module, chunkRenderContext, hooks, true),
|
744
757
|
prefix
|
@@ -804,7 +817,7 @@ class JavascriptModulesPlugin {
|
|
804
817
|
}
|
805
818
|
const lastInlinedModule = last(inlinedModules);
|
806
819
|
const startupSource = new ConcatSource();
|
807
|
-
startupSource.add(`var
|
820
|
+
startupSource.add(`var ${RuntimeGlobals.exports} = {};\n`);
|
808
821
|
for (const m of inlinedModules) {
|
809
822
|
const renderedModule = this.renderModule(
|
810
823
|
m,
|
@@ -820,7 +833,7 @@ class JavascriptModulesPlugin {
|
|
820
833
|
);
|
821
834
|
const exports = runtimeRequirements.has(RuntimeGlobals.exports);
|
822
835
|
const webpackExports =
|
823
|
-
exports && m.exportsArgument ===
|
836
|
+
exports && m.exportsArgument === RuntimeGlobals.exports;
|
824
837
|
let iife = innerStrict
|
825
838
|
? "it need to be in strict mode."
|
826
839
|
: inlinedModules.size > 1
|
@@ -852,9 +865,9 @@ class JavascriptModulesPlugin {
|
|
852
865
|
if (exports) {
|
853
866
|
if (m !== lastInlinedModule)
|
854
867
|
startupSource.add(`var ${m.exportsArgument} = {};\n`);
|
855
|
-
else if (m.exportsArgument !==
|
868
|
+
else if (m.exportsArgument !== RuntimeGlobals.exports)
|
856
869
|
startupSource.add(
|
857
|
-
`var ${m.exportsArgument} =
|
870
|
+
`var ${m.exportsArgument} = ${RuntimeGlobals.exports};\n`
|
858
871
|
);
|
859
872
|
}
|
860
873
|
startupSource.add(renderedModule);
|
@@ -863,7 +876,7 @@ class JavascriptModulesPlugin {
|
|
863
876
|
}
|
864
877
|
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
865
878
|
startupSource.add(
|
866
|
-
|
879
|
+
`${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});\n`
|
867
880
|
);
|
868
881
|
}
|
869
882
|
source.add(
|
@@ -915,7 +928,7 @@ class JavascriptModulesPlugin {
|
|
915
928
|
hasEntryModules &&
|
916
929
|
runtimeRequirements.has(RuntimeGlobals.returnExportsFromRuntime)
|
917
930
|
) {
|
918
|
-
source.add(`${prefix}return
|
931
|
+
source.add(`${prefix}return ${RuntimeGlobals.exports};\n`);
|
919
932
|
}
|
920
933
|
if (iife) {
|
921
934
|
source.add("/******/ })()\n");
|
@@ -940,6 +953,7 @@ class JavascriptModulesPlugin {
|
|
940
953
|
"JavascriptModulesPlugin error: JavascriptModulesPlugin.getCompilationHooks().renderContent plugins should return something"
|
941
954
|
);
|
942
955
|
}
|
956
|
+
|
943
957
|
finalSource = InitFragment.addToSource(
|
944
958
|
finalSource,
|
945
959
|
chunkRenderContext.chunkInitFragments,
|
@@ -1009,6 +1023,9 @@ class JavascriptModulesPlugin {
|
|
1009
1023
|
const useRequire =
|
1010
1024
|
requireFunction || interceptModuleExecution || moduleUsed;
|
1011
1025
|
|
1026
|
+
/**
|
1027
|
+
* @type {{startup: string[], beforeStartup: string[], header: string[], afterStartup: string[], allowInlineStartup: boolean}}
|
1028
|
+
*/
|
1012
1029
|
const result = {
|
1013
1030
|
header: [],
|
1014
1031
|
beforeStartup: [],
|
@@ -1044,13 +1061,13 @@ class JavascriptModulesPlugin {
|
|
1044
1061
|
|
1045
1062
|
if (useRequire) {
|
1046
1063
|
buf.push("// The require function");
|
1047
|
-
buf.push(`function
|
1064
|
+
buf.push(`function ${RuntimeGlobals.require}(moduleId) {`);
|
1048
1065
|
buf.push(Template.indent(this.renderRequire(renderContext, hooks)));
|
1049
1066
|
buf.push("}");
|
1050
1067
|
buf.push("");
|
1051
1068
|
} else if (runtimeRequirements.has(RuntimeGlobals.requireScope)) {
|
1052
1069
|
buf.push("// The require scope");
|
1053
|
-
buf.push(
|
1070
|
+
buf.push(`var ${RuntimeGlobals.require} = {};`);
|
1054
1071
|
buf.push("");
|
1055
1072
|
}
|
1056
1073
|
|
@@ -1164,32 +1181,32 @@ class JavascriptModulesPlugin {
|
|
1164
1181
|
}
|
1165
1182
|
if (chunks.length > 0) {
|
1166
1183
|
buf2.push(
|
1167
|
-
`${i === 0 ?
|
1184
|
+
`${i === 0 ? `var ${RuntimeGlobals.exports} = ` : ""}${
|
1168
1185
|
RuntimeGlobals.onChunksLoaded
|
1169
1186
|
}(undefined, ${JSON.stringify(
|
1170
1187
|
chunks.map(c => c.id)
|
1171
1188
|
)}, ${runtimeTemplate.returningFunction(
|
1172
|
-
|
1189
|
+
`${RuntimeGlobals.require}(${moduleIdExpr})`
|
1173
1190
|
)})`
|
1174
1191
|
);
|
1175
1192
|
} else if (useRequire) {
|
1176
1193
|
buf2.push(
|
1177
|
-
`${
|
1178
|
-
|
1179
|
-
}
|
1194
|
+
`${i === 0 ? `var ${RuntimeGlobals.exports} = ` : ""}${
|
1195
|
+
RuntimeGlobals.require
|
1196
|
+
}(${moduleIdExpr});`
|
1180
1197
|
);
|
1181
1198
|
} else {
|
1182
|
-
if (i === 0) buf2.push(
|
1199
|
+
if (i === 0) buf2.push(`var ${RuntimeGlobals.exports} = {};`);
|
1183
1200
|
if (requireScopeUsed) {
|
1184
1201
|
buf2.push(
|
1185
1202
|
`__webpack_modules__[${moduleIdExpr}](0, ${
|
1186
|
-
i === 0 ?
|
1187
|
-
},
|
1203
|
+
i === 0 ? RuntimeGlobals.exports : "{}"
|
1204
|
+
}, ${RuntimeGlobals.require});`
|
1188
1205
|
);
|
1189
1206
|
} else if (entryRuntimeRequirements.has(RuntimeGlobals.exports)) {
|
1190
1207
|
buf2.push(
|
1191
1208
|
`__webpack_modules__[${moduleIdExpr}](0, ${
|
1192
|
-
i === 0 ?
|
1209
|
+
i === 0 ? RuntimeGlobals.exports : "{}"
|
1193
1210
|
});`
|
1194
1211
|
);
|
1195
1212
|
} else {
|
@@ -1199,7 +1216,7 @@ class JavascriptModulesPlugin {
|
|
1199
1216
|
}
|
1200
1217
|
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
1201
1218
|
buf2.push(
|
1202
|
-
|
1219
|
+
`${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
|
1203
1220
|
);
|
1204
1221
|
}
|
1205
1222
|
if (
|
@@ -1212,13 +1229,13 @@ class JavascriptModulesPlugin {
|
|
1212
1229
|
buf.push(
|
1213
1230
|
`${RuntimeGlobals.startup} = ${runtimeTemplate.basicFunction("", [
|
1214
1231
|
...buf2,
|
1215
|
-
|
1232
|
+
`return ${RuntimeGlobals.exports};`
|
1216
1233
|
])};`
|
1217
1234
|
);
|
1218
1235
|
buf.push("");
|
1219
1236
|
startup.push("// run startup");
|
1220
1237
|
startup.push(
|
1221
|
-
`var
|
1238
|
+
`var ${RuntimeGlobals.exports} = ${RuntimeGlobals.startup}();`
|
1222
1239
|
);
|
1223
1240
|
} else if (runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore)) {
|
1224
1241
|
buf.push("// the startup function");
|
@@ -1266,7 +1283,9 @@ class JavascriptModulesPlugin {
|
|
1266
1283
|
`${RuntimeGlobals.startup} = ${runtimeTemplate.emptyFunction()};`
|
1267
1284
|
);
|
1268
1285
|
startup.push("// run startup");
|
1269
|
-
startup.push(
|
1286
|
+
startup.push(
|
1287
|
+
`var ${RuntimeGlobals.exports} = ${RuntimeGlobals.startup}();`
|
1288
|
+
);
|
1270
1289
|
}
|
1271
1290
|
return result;
|
1272
1291
|
}
|
@@ -1287,17 +1306,17 @@ class JavascriptModulesPlugin {
|
|
1287
1306
|
RuntimeGlobals.interceptModuleExecution
|
1288
1307
|
)
|
1289
1308
|
? Template.asString([
|
1290
|
-
|
1309
|
+
`var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: ${RuntimeGlobals.require} };`,
|
1291
1310
|
`${RuntimeGlobals.interceptModuleExecution}.forEach(function(handler) { handler(execOptions); });`,
|
1292
1311
|
"module = execOptions.module;",
|
1293
1312
|
"execOptions.factory.call(module.exports, module, module.exports, execOptions.require);"
|
1294
1313
|
])
|
1295
1314
|
: runtimeRequirements.has(RuntimeGlobals.thisAsExports)
|
1296
1315
|
? Template.asString([
|
1297
|
-
|
1316
|
+
`__webpack_modules__[moduleId].call(module.exports, module, module.exports, ${RuntimeGlobals.require});`
|
1298
1317
|
])
|
1299
1318
|
: Template.asString([
|
1300
|
-
|
1319
|
+
`__webpack_modules__[moduleId](module, module.exports, ${RuntimeGlobals.require});`
|
1301
1320
|
]);
|
1302
1321
|
const needModuleId = runtimeRequirements.has(RuntimeGlobals.moduleId);
|
1303
1322
|
const needModuleLoaded = runtimeRequirements.has(
|
@@ -1352,7 +1371,7 @@ class JavascriptModulesPlugin {
|
|
1352
1371
|
? Template.asString([
|
1353
1372
|
"",
|
1354
1373
|
"// Flag the module as loaded",
|
1355
|
-
|
1374
|
+
`${RuntimeGlobals.moduleLoaded} = true;`,
|
1356
1375
|
""
|
1357
1376
|
])
|
1358
1377
|
: "",
|