webpack 5.59.0 → 5.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- 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 +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- 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 +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- 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 +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- 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 +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- 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 +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- 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 +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- 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/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
@@ -5,16 +5,28 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
10
11
|
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
13
|
/** @typedef {import("../Compiler")} Compiler */
|
12
14
|
|
13
15
|
// TODO webpack 6 remove
|
14
16
|
|
17
|
+
const PLUGIN_NAME = "FetchCompileWasmPlugin";
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @typedef {object} FetchCompileWasmPluginOptions
|
21
|
+
* @property {boolean} [mangleImports] mangle imports
|
22
|
+
*/
|
23
|
+
|
15
24
|
class FetchCompileWasmPlugin {
|
16
|
-
|
17
|
-
|
25
|
+
/**
|
26
|
+
* @param {FetchCompileWasmPluginOptions} [options] options
|
27
|
+
*/
|
28
|
+
constructor(options = {}) {
|
29
|
+
this.options = options;
|
18
30
|
}
|
19
31
|
|
20
32
|
/**
|
@@ -23,48 +35,53 @@ class FetchCompileWasmPlugin {
|
|
23
35
|
* @returns {void}
|
24
36
|
*/
|
25
37
|
apply(compiler) {
|
26
|
-
compiler.hooks.thisCompilation.tap(
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
|
39
|
+
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
40
|
+
/**
|
41
|
+
* @param {Chunk} chunk chunk
|
42
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
43
|
+
*/
|
44
|
+
const isEnabledForChunk = chunk => {
|
45
|
+
const options = chunk.getEntryOptions();
|
46
|
+
const wasmLoading =
|
47
|
+
options && options.wasmLoading !== undefined
|
48
|
+
? options.wasmLoading
|
49
|
+
: globalWasmLoading;
|
50
|
+
return wasmLoading === "fetch";
|
51
|
+
};
|
52
|
+
/**
|
53
|
+
* @param {string} path path to the wasm file
|
54
|
+
* @returns {string} code to load the wasm file
|
55
|
+
*/
|
56
|
+
const generateLoadBinaryCode = path =>
|
57
|
+
`fetch(${RuntimeGlobals.publicPath} + ${path})`;
|
40
58
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
chunk,
|
49
|
-
m => m.type === "webassembly/sync"
|
50
|
-
)
|
51
|
-
) {
|
52
|
-
return;
|
53
|
-
}
|
54
|
-
set.add(RuntimeGlobals.moduleCache);
|
55
|
-
set.add(RuntimeGlobals.publicPath);
|
56
|
-
compilation.addRuntimeModule(
|
59
|
+
compilation.hooks.runtimeRequirementInTree
|
60
|
+
.for(RuntimeGlobals.ensureChunkHandlers)
|
61
|
+
.tap(PLUGIN_NAME, (chunk, set) => {
|
62
|
+
if (!isEnabledForChunk(chunk)) return;
|
63
|
+
const chunkGraph = compilation.chunkGraph;
|
64
|
+
if (
|
65
|
+
!chunkGraph.hasModuleInGraph(
|
57
66
|
chunk,
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
67
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
68
|
+
)
|
69
|
+
) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
set.add(RuntimeGlobals.moduleCache);
|
73
|
+
set.add(RuntimeGlobals.publicPath);
|
74
|
+
compilation.addRuntimeModule(
|
75
|
+
chunk,
|
76
|
+
new WasmChunkLoadingRuntimeModule({
|
77
|
+
generateLoadBinaryCode,
|
78
|
+
supportsStreaming: true,
|
79
|
+
mangleImports: this.options.mangleImports,
|
80
|
+
runtimeRequirements: set
|
81
|
+
})
|
82
|
+
);
|
83
|
+
});
|
84
|
+
});
|
68
85
|
}
|
69
86
|
}
|
70
87
|
|
@@ -8,6 +8,7 @@
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
9
|
const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
12
|
/** @typedef {import("../Compiler")} Compiler */
|
12
13
|
|
13
14
|
class JsonpChunkLoadingPlugin {
|
@@ -21,6 +22,10 @@ class JsonpChunkLoadingPlugin {
|
|
21
22
|
"JsonpChunkLoadingPlugin",
|
22
23
|
compilation => {
|
23
24
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
25
|
+
/**
|
26
|
+
* @param {Chunk} chunk chunk
|
27
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
28
|
+
*/
|
24
29
|
const isEnabledForChunk = chunk => {
|
25
30
|
const options = chunk.getEntryOptions();
|
26
31
|
const chunkLoading =
|
@@ -30,6 +35,10 @@ class JsonpChunkLoadingPlugin {
|
|
30
35
|
return chunkLoading === "jsonp";
|
31
36
|
};
|
32
37
|
const onceForChunkSet = new WeakSet();
|
38
|
+
/**
|
39
|
+
* @param {Chunk} chunk chunk
|
40
|
+
* @param {Set<string>} set runtime requirements
|
41
|
+
*/
|
33
42
|
const handler = (chunk, set) => {
|
34
43
|
if (onceForChunkSet.has(chunk)) return;
|
35
44
|
onceForChunkSet.add(chunk);
|
@@ -14,9 +14,11 @@ const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
14
14
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
15
15
|
|
16
16
|
/** @typedef {import("../Chunk")} Chunk */
|
17
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
18
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
17
19
|
|
18
20
|
/**
|
19
|
-
* @typedef {
|
21
|
+
* @typedef {object} JsonpCompilationPluginHooks
|
20
22
|
* @property {SyncWaterfallHook<[string, Chunk]>} linkPreload
|
21
23
|
* @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
|
22
24
|
*/
|
@@ -46,26 +48,42 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
46
48
|
return hooks;
|
47
49
|
}
|
48
50
|
|
51
|
+
/**
|
52
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
53
|
+
*/
|
49
54
|
constructor(runtimeRequirements) {
|
50
55
|
super("jsonp chunk loading", RuntimeModule.STAGE_ATTACH);
|
51
56
|
this._runtimeRequirements = runtimeRequirements;
|
52
57
|
}
|
53
58
|
|
54
59
|
/**
|
55
|
-
* @
|
60
|
+
* @private
|
61
|
+
* @param {Chunk} chunk chunk
|
62
|
+
* @returns {string} generated code
|
63
|
+
*/
|
64
|
+
_generateBaseUri(chunk) {
|
65
|
+
const options = chunk.getEntryOptions();
|
66
|
+
if (options && options.baseUri) {
|
67
|
+
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
68
|
+
}
|
69
|
+
return `${RuntimeGlobals.baseURI} = document.baseURI || self.location.href;`;
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* @returns {string | null} runtime code
|
56
74
|
*/
|
57
75
|
generate() {
|
58
|
-
const
|
76
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
59
77
|
const {
|
60
78
|
runtimeTemplate,
|
61
79
|
outputOptions: {
|
62
|
-
globalObject,
|
63
80
|
chunkLoadingGlobal,
|
64
81
|
hotUpdateGlobal,
|
65
82
|
crossOriginLoading,
|
66
83
|
scriptType
|
67
84
|
}
|
68
85
|
} = compilation;
|
86
|
+
const globalObject = runtimeTemplate.globalObject;
|
69
87
|
const { linkPreload, linkPrefetch } =
|
70
88
|
JsonpChunkLoadingRuntimeModule.getCompilationHooks(compilation);
|
71
89
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
@@ -91,23 +109,24 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
91
109
|
const withPreload = this._runtimeRequirements.has(
|
92
110
|
RuntimeGlobals.preloadChunkHandlers
|
93
111
|
);
|
112
|
+
const withFetchPriority = this._runtimeRequirements.has(
|
113
|
+
RuntimeGlobals.hasFetchPriority
|
114
|
+
);
|
94
115
|
const chunkLoadingGlobalExpr = `${globalObject}[${JSON.stringify(
|
95
116
|
chunkLoadingGlobal
|
96
117
|
)}]`;
|
118
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
119
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
97
120
|
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs);
|
98
121
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
99
|
-
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph);
|
122
|
+
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
100
123
|
|
101
124
|
const stateExpression = withHmr
|
102
125
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_jsonp`
|
103
126
|
: undefined;
|
104
127
|
|
105
128
|
return Template.asString([
|
106
|
-
withBaseURI
|
107
|
-
? Template.asString([
|
108
|
-
`${RuntimeGlobals.baseURI} = document.baseURI || self.location.href;`
|
109
|
-
])
|
110
|
-
: "// no baseURI",
|
129
|
+
withBaseURI ? this._generateBaseUri(chunk) : "// no baseURI",
|
111
130
|
"",
|
112
131
|
"// object to store loaded and loading chunks",
|
113
132
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
@@ -125,7 +144,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
125
144
|
withLoading
|
126
145
|
? Template.asString([
|
127
146
|
`${fn}.j = ${runtimeTemplate.basicFunction(
|
128
|
-
|
147
|
+
`chunkId, promises${withFetchPriority ? ", fetchPriority" : ""}`,
|
129
148
|
hasJsMatcher !== false
|
130
149
|
? Template.indent([
|
131
150
|
"// JSONP chunk loading for javascript",
|
@@ -146,7 +165,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
146
165
|
Template.indent([
|
147
166
|
"// setup Promise in chunk cache",
|
148
167
|
`var promise = new Promise(${runtimeTemplate.expressionFunction(
|
149
|
-
|
168
|
+
"installedChunkData = installedChunks[chunkId] = [resolve, reject]",
|
150
169
|
"resolve, reject"
|
151
170
|
)});`,
|
152
171
|
"promises.push(installedChunkData[2] = promise);",
|
@@ -177,23 +196,29 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
177
196
|
"}"
|
178
197
|
]
|
179
198
|
)};`,
|
180
|
-
`${
|
199
|
+
`${
|
200
|
+
RuntimeGlobals.loadScript
|
201
|
+
}(url, loadingEnded, "chunk-" + chunkId, chunkId${
|
202
|
+
withFetchPriority ? ", fetchPriority" : ""
|
203
|
+
});`
|
181
204
|
]),
|
182
|
-
|
205
|
+
hasJsMatcher === true
|
206
|
+
? "}"
|
207
|
+
: "} else installedChunks[chunkId] = 0;"
|
183
208
|
]),
|
184
209
|
"}"
|
185
210
|
]),
|
186
211
|
"}"
|
187
|
-
|
212
|
+
])
|
188
213
|
: Template.indent(["installedChunks[chunkId] = 0;"])
|
189
214
|
)};`
|
190
|
-
|
215
|
+
])
|
191
216
|
: "// no chunk on demand loading",
|
192
217
|
"",
|
193
218
|
withPrefetch && hasJsMatcher !== false
|
194
219
|
? `${
|
195
220
|
RuntimeGlobals.prefetchChunkHandlers
|
196
|
-
|
221
|
+
}.j = ${runtimeTemplate.basicFunction("chunkId", [
|
197
222
|
`if((!${
|
198
223
|
RuntimeGlobals.hasOwnProperty
|
199
224
|
}(installedChunks, chunkId) || installedChunks[chunkId] === undefined) && ${
|
@@ -207,7 +232,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
207
232
|
crossOriginLoading
|
208
233
|
? `link.crossOrigin = ${JSON.stringify(
|
209
234
|
crossOriginLoading
|
210
|
-
|
235
|
+
)};`
|
211
236
|
: "",
|
212
237
|
`if (${RuntimeGlobals.scriptNonce}) {`,
|
213
238
|
Template.indent(
|
@@ -223,13 +248,13 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
223
248
|
"document.head.appendChild(link);"
|
224
249
|
]),
|
225
250
|
"}"
|
226
|
-
|
251
|
+
])};`
|
227
252
|
: "// no prefetching",
|
228
253
|
"",
|
229
254
|
withPreload && hasJsMatcher !== false
|
230
255
|
? `${
|
231
256
|
RuntimeGlobals.preloadChunkHandlers
|
232
|
-
|
257
|
+
}.j = ${runtimeTemplate.basicFunction("chunkId", [
|
233
258
|
`if((!${
|
234
259
|
RuntimeGlobals.hasOwnProperty
|
235
260
|
}(installedChunks, chunkId) || installedChunks[chunkId] === undefined) && ${
|
@@ -240,7 +265,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
240
265
|
linkPreload.call(
|
241
266
|
Template.asString([
|
242
267
|
"var link = document.createElement('link');",
|
243
|
-
scriptType
|
268
|
+
scriptType && scriptType !== "module"
|
244
269
|
? `link.type = ${JSON.stringify(scriptType)};`
|
245
270
|
: "",
|
246
271
|
"link.charset = 'utf-8';",
|
@@ -249,19 +274,23 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
249
274
|
`link.setAttribute("nonce", ${RuntimeGlobals.scriptNonce});`
|
250
275
|
),
|
251
276
|
"}",
|
252
|
-
|
253
|
-
|
277
|
+
scriptType === "module"
|
278
|
+
? 'link.rel = "modulepreload";'
|
279
|
+
: 'link.rel = "preload";',
|
280
|
+
scriptType === "module" ? "" : 'link.as = "script";',
|
254
281
|
`link.href = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId);`,
|
255
282
|
crossOriginLoading
|
256
|
-
?
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
283
|
+
? crossOriginLoading === "use-credentials"
|
284
|
+
? 'link.crossOrigin = "use-credentials";'
|
285
|
+
: Template.asString([
|
286
|
+
"if (link.href.indexOf(window.location.origin + '/') !== 0) {",
|
287
|
+
Template.indent(
|
288
|
+
`link.crossOrigin = ${JSON.stringify(
|
289
|
+
crossOriginLoading
|
290
|
+
)};`
|
291
|
+
),
|
292
|
+
"}"
|
293
|
+
])
|
265
294
|
: ""
|
266
295
|
]),
|
267
296
|
chunk
|
@@ -269,15 +298,16 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
269
298
|
"document.head.appendChild(link);"
|
270
299
|
]),
|
271
300
|
"}"
|
272
|
-
|
301
|
+
])};`
|
273
302
|
: "// no preloaded",
|
274
303
|
"",
|
275
304
|
withHmr
|
276
305
|
? Template.asString([
|
277
306
|
"var currentUpdatedModulesList;",
|
278
307
|
"var waitingUpdateResolves = {};",
|
279
|
-
"function loadUpdateChunk(chunkId) {",
|
308
|
+
"function loadUpdateChunk(chunkId, updatedModulesList) {",
|
280
309
|
Template.indent([
|
310
|
+
"currentUpdatedModulesList = updatedModulesList;",
|
281
311
|
`return new Promise(${runtimeTemplate.basicFunction(
|
282
312
|
"resolve, reject",
|
283
313
|
[
|
@@ -353,7 +383,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
353
383
|
/\$hmrInvalidateModuleHandlers\$/g,
|
354
384
|
RuntimeGlobals.hmrInvalidateModuleHandlers
|
355
385
|
)
|
356
|
-
|
386
|
+
])
|
357
387
|
: "// no HMR",
|
358
388
|
"",
|
359
389
|
withHmrManifest
|
@@ -370,16 +400,16 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
370
400
|
"return response.json();"
|
371
401
|
])});`
|
372
402
|
])};`
|
373
|
-
|
403
|
+
])
|
374
404
|
: "// no HMR manifest",
|
375
405
|
"",
|
376
406
|
withOnChunkLoad
|
377
407
|
? `${
|
378
408
|
RuntimeGlobals.onChunksLoaded
|
379
|
-
|
409
|
+
}.j = ${runtimeTemplate.returningFunction(
|
380
410
|
"installedChunks[chunkId] === 0",
|
381
411
|
"chunkId"
|
382
|
-
|
412
|
+
)};`
|
383
413
|
: "// no on chunks loaded",
|
384
414
|
"",
|
385
415
|
withCallback || withLoading
|
@@ -409,7 +439,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
409
439
|
"}"
|
410
440
|
]),
|
411
441
|
"}",
|
412
|
-
|
442
|
+
`if(runtime) var result = runtime(${RuntimeGlobals.require});`
|
413
443
|
]),
|
414
444
|
"}",
|
415
445
|
"if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);",
|
@@ -419,7 +449,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
419
449
|
`if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) && installedChunks[chunkId]) {`,
|
420
450
|
Template.indent("installedChunks[chunkId][0]();"),
|
421
451
|
"}",
|
422
|
-
"installedChunks[
|
452
|
+
"installedChunks[chunkId] = 0;"
|
423
453
|
]),
|
424
454
|
"}",
|
425
455
|
withOnChunkLoad
|
@@ -431,7 +461,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
431
461
|
`var chunkLoadingGlobal = ${chunkLoadingGlobalExpr} = ${chunkLoadingGlobalExpr} || [];`,
|
432
462
|
"chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));",
|
433
463
|
"chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"
|
434
|
-
|
464
|
+
])
|
435
465
|
: "// no jsonp function"
|
436
466
|
]);
|
437
467
|
}
|
package/lib/webpack.js
CHANGED
@@ -20,6 +20,7 @@ const NodeEnvironmentPlugin = require("./node/NodeEnvironmentPlugin");
|
|
20
20
|
const memoize = require("./util/memoize");
|
21
21
|
|
22
22
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
|
23
|
+
/** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
|
23
24
|
/** @typedef {import("./Compiler").WatchOptions} WatchOptions */
|
24
25
|
/** @typedef {import("./MultiCompiler").MultiCompilerOptions} MultiCompilerOptions */
|
25
26
|
/** @typedef {import("./MultiStats")} MultiStats */
|
@@ -30,7 +31,7 @@ const getValidateSchema = memoize(() => require("./validateSchema"));
|
|
30
31
|
/**
|
31
32
|
* @template T
|
32
33
|
* @callback Callback
|
33
|
-
* @param {Error
|
34
|
+
* @param {Error | null} err
|
34
35
|
* @param {T=} stats
|
35
36
|
* @returns {void}
|
36
37
|
*/
|
@@ -41,7 +42,9 @@ const getValidateSchema = memoize(() => require("./validateSchema"));
|
|
41
42
|
* @returns {MultiCompiler} a multi-compiler
|
42
43
|
*/
|
43
44
|
const createMultiCompiler = (childOptions, options) => {
|
44
|
-
const compilers = childOptions.map(options =>
|
45
|
+
const compilers = childOptions.map((options, index) =>
|
46
|
+
createCompiler(options, index)
|
47
|
+
);
|
45
48
|
const compiler = new MultiCompiler(compilers, options);
|
46
49
|
for (const childCompiler of compilers) {
|
47
50
|
if (childCompiler.options.dependencies) {
|
@@ -56,26 +59,36 @@ const createMultiCompiler = (childOptions, options) => {
|
|
56
59
|
|
57
60
|
/**
|
58
61
|
* @param {WebpackOptions} rawOptions options object
|
62
|
+
* @param {number} [compilerIndex] index of compiler
|
59
63
|
* @returns {Compiler} a compiler
|
60
64
|
*/
|
61
|
-
const createCompiler = rawOptions => {
|
65
|
+
const createCompiler = (rawOptions, compilerIndex) => {
|
62
66
|
const options = getNormalizedWebpackOptions(rawOptions);
|
63
67
|
applyWebpackOptionsBaseDefaults(options);
|
64
|
-
const compiler = new Compiler(
|
65
|
-
|
68
|
+
const compiler = new Compiler(
|
69
|
+
/** @type {string} */ (options.context),
|
70
|
+
options
|
71
|
+
);
|
66
72
|
new NodeEnvironmentPlugin({
|
67
73
|
infrastructureLogging: options.infrastructureLogging
|
68
74
|
}).apply(compiler);
|
69
75
|
if (Array.isArray(options.plugins)) {
|
70
76
|
for (const plugin of options.plugins) {
|
71
77
|
if (typeof plugin === "function") {
|
72
|
-
|
73
|
-
|
78
|
+
/** @type {WebpackPluginFunction} */
|
79
|
+
(plugin).call(compiler, compiler);
|
80
|
+
} else if (plugin) {
|
74
81
|
plugin.apply(compiler);
|
75
82
|
}
|
76
83
|
}
|
77
84
|
}
|
78
|
-
applyWebpackOptionsDefaults(
|
85
|
+
const resolvedDefaultOptions = applyWebpackOptionsDefaults(
|
86
|
+
options,
|
87
|
+
compilerIndex
|
88
|
+
);
|
89
|
+
if (resolvedDefaultOptions.platform) {
|
90
|
+
compiler.platform = resolvedDefaultOptions.platform;
|
91
|
+
}
|
79
92
|
compiler.hooks.environment.call();
|
80
93
|
compiler.hooks.afterEnvironment.call();
|
81
94
|
new WebpackOptionsApply().process(options, compiler);
|
@@ -97,19 +110,33 @@ const createCompiler = rawOptions => {
|
|
97
110
|
* @returns {MultiCompiler} the multi compiler object
|
98
111
|
*/
|
99
112
|
|
113
|
+
/**
|
114
|
+
* @template T
|
115
|
+
* @param {Array<T> | T} options options
|
116
|
+
* @returns {Array<T>} array of options
|
117
|
+
*/
|
118
|
+
const asArray = options =>
|
119
|
+
Array.isArray(options) ? Array.from(options) : [options];
|
120
|
+
|
100
121
|
const webpack = /** @type {WebpackFunctionSingle & WebpackFunctionMulti} */ (
|
101
122
|
/**
|
102
123
|
* @param {WebpackOptions | (ReadonlyArray<WebpackOptions> & MultiCompilerOptions)} options options
|
103
124
|
* @param {Callback<Stats> & Callback<MultiStats>=} callback callback
|
104
|
-
* @returns {Compiler | MultiCompiler}
|
125
|
+
* @returns {Compiler | MultiCompiler | null} Compiler or MultiCompiler
|
105
126
|
*/
|
106
127
|
(options, callback) => {
|
107
128
|
const create = () => {
|
108
|
-
if (!
|
129
|
+
if (!asArray(options).every(webpackOptionsSchemaCheck)) {
|
109
130
|
getValidateSchema()(webpackOptionsSchema, options);
|
131
|
+
util.deprecate(
|
132
|
+
() => {},
|
133
|
+
"webpack bug: Pre-compiled schema reports error while real schema is happy. This has performance drawbacks.",
|
134
|
+
"DEP_WEBPACK_PRE_COMPILED_SCHEMA_INVALID"
|
135
|
+
)();
|
110
136
|
}
|
111
137
|
/** @type {MultiCompiler|Compiler} */
|
112
138
|
let compiler;
|
139
|
+
/** @type {boolean | undefined} */
|
113
140
|
let watch = false;
|
114
141
|
/** @type {WatchOptions|WatchOptions[]} */
|
115
142
|
let watchOptions;
|
@@ -138,13 +165,17 @@ const webpack = /** @type {WebpackFunctionSingle & WebpackFunctionMulti} */ (
|
|
138
165
|
} else {
|
139
166
|
compiler.run((err, stats) => {
|
140
167
|
compiler.close(err2 => {
|
141
|
-
callback(
|
168
|
+
callback(
|
169
|
+
err || err2,
|
170
|
+
/** @type {options extends WebpackOptions ? Stats : MultiStats} */
|
171
|
+
(stats)
|
172
|
+
);
|
142
173
|
});
|
143
174
|
});
|
144
175
|
}
|
145
176
|
return compiler;
|
146
177
|
} catch (err) {
|
147
|
-
process.nextTick(() => callback(err));
|
178
|
+
process.nextTick(() => callback(/** @type {Error} */ (err)));
|
148
179
|
return null;
|
149
180
|
}
|
150
181
|
} else {
|
@@ -6,10 +6,10 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
|
-
const CreateScriptUrlRuntimeModule = require("../runtime/CreateScriptUrlRuntimeModule");
|
10
9
|
const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
|
11
10
|
const ImportScriptsChunkLoadingRuntimeModule = require("./ImportScriptsChunkLoadingRuntimeModule");
|
12
11
|
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
13
13
|
/** @typedef {import("../Compiler")} Compiler */
|
14
14
|
|
15
15
|
class ImportScriptsChunkLoadingPlugin {
|
@@ -27,6 +27,10 @@ class ImportScriptsChunkLoadingPlugin {
|
|
27
27
|
"ImportScriptsChunkLoadingPlugin",
|
28
28
|
compilation => {
|
29
29
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
30
|
+
/**
|
31
|
+
* @param {Chunk} chunk chunk
|
32
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
33
|
+
*/
|
30
34
|
const isEnabledForChunk = chunk => {
|
31
35
|
const options = chunk.getEntryOptions();
|
32
36
|
const chunkLoading =
|
@@ -36,14 +40,22 @@ class ImportScriptsChunkLoadingPlugin {
|
|
36
40
|
return chunkLoading === "import-scripts";
|
37
41
|
};
|
38
42
|
const onceForChunkSet = new WeakSet();
|
43
|
+
/**
|
44
|
+
* @param {Chunk} chunk chunk
|
45
|
+
* @param {Set<string>} set runtime requirements
|
46
|
+
*/
|
39
47
|
const handler = (chunk, set) => {
|
40
48
|
if (onceForChunkSet.has(chunk)) return;
|
41
49
|
onceForChunkSet.add(chunk);
|
42
50
|
if (!isEnabledForChunk(chunk)) return;
|
43
|
-
const withCreateScriptUrl =
|
51
|
+
const withCreateScriptUrl = Boolean(
|
52
|
+
compilation.outputOptions.trustedTypes
|
53
|
+
);
|
44
54
|
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
45
55
|
set.add(RuntimeGlobals.hasOwnProperty);
|
46
|
-
if (withCreateScriptUrl)
|
56
|
+
if (withCreateScriptUrl) {
|
57
|
+
set.add(RuntimeGlobals.createScriptUrl);
|
58
|
+
}
|
47
59
|
compilation.addRuntimeModule(
|
48
60
|
chunk,
|
49
61
|
new ImportScriptsChunkLoadingRuntimeModule(set, withCreateScriptUrl)
|
@@ -61,15 +73,6 @@ class ImportScriptsChunkLoadingPlugin {
|
|
61
73
|
compilation.hooks.runtimeRequirementInTree
|
62
74
|
.for(RuntimeGlobals.baseURI)
|
63
75
|
.tap("ImportScriptsChunkLoadingPlugin", handler);
|
64
|
-
compilation.hooks.runtimeRequirementInTree
|
65
|
-
.for(RuntimeGlobals.createScriptUrl)
|
66
|
-
.tap("RuntimePlugin", (chunk, set) => {
|
67
|
-
compilation.addRuntimeModule(
|
68
|
-
chunk,
|
69
|
-
new CreateScriptUrlRuntimeModule()
|
70
|
-
);
|
71
|
-
return true;
|
72
|
-
});
|
73
76
|
|
74
77
|
compilation.hooks.runtimeRequirementInTree
|
75
78
|
.for(RuntimeGlobals.ensureChunkHandlers)
|