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
@@ -10,18 +10,17 @@ const Template = require("../Template");
|
|
10
10
|
const { first } = require("../util/SetHelpers");
|
11
11
|
|
12
12
|
/** @typedef {import("../Chunk")} Chunk */
|
13
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
13
14
|
/** @typedef {import("../Compilation")} Compilation */
|
14
15
|
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
15
|
-
/** @typedef {import("../
|
16
|
-
|
17
|
-
/** @typedef {function(PathData, AssetInfo=): string} FilenameFunction */
|
16
|
+
/** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
|
18
17
|
|
19
18
|
class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
20
19
|
/**
|
21
20
|
* @param {string} contentType the contentType to use the content hash for
|
22
21
|
* @param {string} name kind of filename
|
23
22
|
* @param {string} global function name to be assigned
|
24
|
-
* @param {function(Chunk):
|
23
|
+
* @param {function(Chunk): TemplatePath} getFilenameForChunk functor to get the filename or function
|
25
24
|
* @param {boolean} allChunks when false, only async chunks are included
|
26
25
|
*/
|
27
26
|
constructor(contentType, name, global, getFilenameForChunk, allChunks) {
|
@@ -34,24 +33,19 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
34
33
|
}
|
35
34
|
|
36
35
|
/**
|
37
|
-
* @returns {string} runtime code
|
36
|
+
* @returns {string | null} runtime code
|
38
37
|
*/
|
39
38
|
generate() {
|
40
|
-
const {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
contentType,
|
45
|
-
getFilenameForChunk,
|
46
|
-
allChunks,
|
47
|
-
compilation
|
48
|
-
} = this;
|
39
|
+
const { global, contentType, getFilenameForChunk, allChunks } = this;
|
40
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
41
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
42
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
49
43
|
const { runtimeTemplate } = compilation;
|
50
44
|
|
51
|
-
/** @type {Map<string |
|
45
|
+
/** @type {Map<string | TemplatePath, Set<Chunk>>} */
|
52
46
|
const chunkFilenames = new Map();
|
53
47
|
let maxChunks = 0;
|
54
|
-
/** @type {string} */
|
48
|
+
/** @type {string | undefined} */
|
55
49
|
let dynamicFilename;
|
56
50
|
|
57
51
|
/**
|
@@ -69,9 +63,19 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
69
63
|
if (typeof chunkFilename === "string") {
|
70
64
|
if (set.size < maxChunks) return;
|
71
65
|
if (set.size === maxChunks) {
|
72
|
-
if (
|
73
|
-
|
74
|
-
|
66
|
+
if (
|
67
|
+
chunkFilename.length <
|
68
|
+
/** @type {string} */ (dynamicFilename).length
|
69
|
+
) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
|
73
|
+
if (
|
74
|
+
chunkFilename.length ===
|
75
|
+
/** @type {string} */ (dynamicFilename).length &&
|
76
|
+
chunkFilename < /** @type {string} */ (dynamicFilename)
|
77
|
+
) {
|
78
|
+
return;
|
75
79
|
}
|
76
80
|
}
|
77
81
|
maxChunks = set.size;
|
@@ -108,14 +112,14 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
108
112
|
addChunk(entrypoint.chunks[entrypoint.chunks.length - 1]);
|
109
113
|
}
|
110
114
|
|
111
|
-
/** @type {Map<string, Set<string | number>>} */
|
115
|
+
/** @type {Map<string, Set<string | number | null>>} */
|
112
116
|
const staticUrls = new Map();
|
113
117
|
/** @type {Set<Chunk>} */
|
114
118
|
const dynamicUrlChunks = new Set();
|
115
119
|
|
116
120
|
/**
|
117
121
|
* @param {Chunk} c the chunk
|
118
|
-
* @param {string |
|
122
|
+
* @param {string | TemplatePath} chunkFilename the filename template for the chunk
|
119
123
|
* @returns {void}
|
120
124
|
*/
|
121
125
|
const addStaticUrl = (c, chunkFilename) => {
|
@@ -130,8 +134,12 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
130
134
|
return '" + chunkId + "';
|
131
135
|
}
|
132
136
|
const s = JSON.stringify(str);
|
133
|
-
return s.slice(1,
|
137
|
+
return s.slice(1, -1);
|
134
138
|
};
|
139
|
+
/**
|
140
|
+
* @param {string} value string
|
141
|
+
* @returns {function(number): string} string to put in quotes with length
|
142
|
+
*/
|
135
143
|
const unquotedStringifyWithLength = value => length =>
|
136
144
|
unquotedStringify(`${value}`.slice(0, length));
|
137
145
|
const chunkFilenameValue =
|
@@ -141,17 +149,21 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
141
149
|
chunk: c,
|
142
150
|
contentHashType: contentType
|
143
151
|
})
|
144
|
-
|
152
|
+
)
|
145
153
|
: JSON.stringify(chunkFilename);
|
146
154
|
const staticChunkFilename = compilation.getPath(chunkFilenameValue, {
|
147
155
|
hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
|
148
156
|
hashWithLength: length =>
|
149
157
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
150
158
|
chunk: {
|
151
|
-
id: unquotedStringify(c.id),
|
152
|
-
hash: unquotedStringify(c.renderedHash),
|
153
|
-
hashWithLength: unquotedStringifyWithLength(
|
154
|
-
|
159
|
+
id: unquotedStringify(/** @type {number | string} */ (c.id)),
|
160
|
+
hash: unquotedStringify(/** @type {string} */ (c.renderedHash)),
|
161
|
+
hashWithLength: unquotedStringifyWithLength(
|
162
|
+
/** @type {string} */ (c.renderedHash)
|
163
|
+
),
|
164
|
+
name: unquotedStringify(
|
165
|
+
c.name || /** @type {number | string} */ (c.id)
|
166
|
+
),
|
155
167
|
contentHash: {
|
156
168
|
[contentType]: unquotedStringify(c.contentHash[contentType])
|
157
169
|
},
|
@@ -183,8 +195,10 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
183
195
|
* @returns {string} code with static mapping of results of fn
|
184
196
|
*/
|
185
197
|
const createMap = fn => {
|
198
|
+
/** @type {Record<number | string, number | string>} */
|
186
199
|
const obj = {};
|
187
200
|
let useId = false;
|
201
|
+
/** @type {number | string | undefined} */
|
188
202
|
let lastKey;
|
189
203
|
let entries = 0;
|
190
204
|
for (const c of dynamicUrlChunks) {
|
@@ -192,8 +206,8 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
192
206
|
if (value === c.id) {
|
193
207
|
useId = true;
|
194
208
|
} else {
|
195
|
-
obj[c.id] = value;
|
196
|
-
lastKey = c.id;
|
209
|
+
obj[/** @type {number | string} */ (c.id)] = value;
|
210
|
+
lastKey = /** @type {number | string} */ (c.id);
|
197
211
|
entries++;
|
198
212
|
}
|
199
213
|
}
|
@@ -201,9 +215,9 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
201
215
|
if (entries === 1) {
|
202
216
|
return useId
|
203
217
|
? `(chunkId === ${JSON.stringify(lastKey)} ? ${JSON.stringify(
|
204
|
-
obj[lastKey]
|
205
|
-
|
206
|
-
: JSON.stringify(obj[lastKey]);
|
218
|
+
obj[/** @type {number | string} */ (lastKey)]
|
219
|
+
)} : chunkId)`
|
220
|
+
: JSON.stringify(obj[/** @type {number | string} */ (lastKey)]);
|
207
221
|
}
|
208
222
|
return useId
|
209
223
|
? `(${JSON.stringify(obj)}[chunkId] || chunkId)`
|
@@ -214,17 +228,14 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
214
228
|
* @param {function(Chunk): string | number} fn function from chunk to value
|
215
229
|
* @returns {string} code with static mapping of results of fn for including in quoted string
|
216
230
|
*/
|
217
|
-
const mapExpr = fn => {
|
218
|
-
return `" + ${createMap(fn)} + "`;
|
219
|
-
};
|
231
|
+
const mapExpr = fn => `" + ${createMap(fn)} + "`;
|
220
232
|
|
221
233
|
/**
|
222
234
|
* @param {function(Chunk): string | number} fn function from chunk to value
|
223
235
|
* @returns {function(number): string} function which generates code with static mapping of results of fn for including in quoted string for specific length
|
224
236
|
*/
|
225
|
-
const mapExprWithLength = fn => length =>
|
226
|
-
|
227
|
-
};
|
237
|
+
const mapExprWithLength = fn => length =>
|
238
|
+
`" + ${createMap(c => `${fn(c)}`.slice(0, length))} + "`;
|
228
239
|
|
229
240
|
const url =
|
230
241
|
dynamicFilename &&
|
@@ -234,9 +245,11 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
234
245
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
235
246
|
chunk: {
|
236
247
|
id: `" + chunkId + "`,
|
237
|
-
hash: mapExpr(c => c.renderedHash),
|
238
|
-
hashWithLength: mapExprWithLength(
|
239
|
-
|
248
|
+
hash: mapExpr(c => /** @type {string} */ (c.renderedHash)),
|
249
|
+
hashWithLength: mapExprWithLength(
|
250
|
+
c => /** @type {string} */ (c.renderedHash)
|
251
|
+
),
|
252
|
+
name: mapExpr(c => c.name || /** @type {number | string} */ (c.id)),
|
240
253
|
contentHash: {
|
241
254
|
[contentType]: mapExpr(c => c.contentHash[contentType])
|
242
255
|
},
|
@@ -266,13 +279,13 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
266
279
|
: `{${Array.from(
|
267
280
|
ids,
|
268
281
|
id => `${JSON.stringify(id)}:1`
|
269
|
-
|
282
|
+
).join(",")}}[chunkId]`;
|
270
283
|
return `if (${condition}) return ${url};`;
|
271
284
|
})
|
272
285
|
),
|
273
286
|
"// return url for filenames based on template",
|
274
287
|
`return ${url};`
|
275
|
-
|
288
|
+
]
|
276
289
|
: ["// return url for filenames based on template", `return ${url};`]
|
277
290
|
)};`
|
278
291
|
]);
|
@@ -16,12 +16,13 @@ class GetFullHashRuntimeModule extends RuntimeModule {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
/**
|
19
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
20
20
|
*/
|
21
21
|
generate() {
|
22
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
23
24
|
return `${RuntimeGlobals.getFullHash} = ${runtimeTemplate.returningFunction(
|
24
|
-
JSON.stringify(
|
25
|
+
JSON.stringify(compilation.hash || "XXXX")
|
25
26
|
)}`;
|
26
27
|
}
|
27
28
|
}
|
@@ -8,6 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
const Template = require("../Template");
|
10
10
|
|
11
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
12
|
/** @typedef {import("../Compilation")} Compilation */
|
12
13
|
|
13
14
|
class GetMainFilenameRuntimeModule extends RuntimeModule {
|
@@ -23,10 +24,12 @@ class GetMainFilenameRuntimeModule extends RuntimeModule {
|
|
23
24
|
}
|
24
25
|
|
25
26
|
/**
|
26
|
-
* @returns {string} runtime code
|
27
|
+
* @returns {string | null} runtime code
|
27
28
|
*/
|
28
29
|
generate() {
|
29
|
-
const { global, filename
|
30
|
+
const { global, filename } = this;
|
31
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
32
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
30
33
|
const { runtimeTemplate } = compilation;
|
31
34
|
const url = compilation.getPath(JSON.stringify(filename), {
|
32
35
|
hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
|
@@ -0,0 +1,98 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
*/
|
4
|
+
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
8
|
+
const Template = require("../Template");
|
9
|
+
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
|
+
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
13
|
+
|
14
|
+
class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
15
|
+
/**
|
16
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
17
|
+
*/
|
18
|
+
constructor(runtimeRequirements) {
|
19
|
+
super("trusted types policy");
|
20
|
+
this.runtimeRequirements = runtimeRequirements;
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @returns {string | null} runtime code
|
25
|
+
*/
|
26
|
+
generate() {
|
27
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
28
|
+
const { runtimeTemplate, outputOptions } = compilation;
|
29
|
+
const { trustedTypes } = outputOptions;
|
30
|
+
const fn = RuntimeGlobals.getTrustedTypesPolicy;
|
31
|
+
const wrapPolicyCreationInTryCatch = trustedTypes
|
32
|
+
? trustedTypes.onPolicyCreationFailure === "continue"
|
33
|
+
: false;
|
34
|
+
|
35
|
+
return Template.asString([
|
36
|
+
"var policy;",
|
37
|
+
`${fn} = ${runtimeTemplate.basicFunction("", [
|
38
|
+
"// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.",
|
39
|
+
"if (policy === undefined) {",
|
40
|
+
Template.indent([
|
41
|
+
"policy = {",
|
42
|
+
Template.indent(
|
43
|
+
[
|
44
|
+
...(this.runtimeRequirements.has(RuntimeGlobals.createScript)
|
45
|
+
? [
|
46
|
+
`createScript: ${runtimeTemplate.returningFunction(
|
47
|
+
"script",
|
48
|
+
"script"
|
49
|
+
)}`
|
50
|
+
]
|
51
|
+
: []),
|
52
|
+
...(this.runtimeRequirements.has(RuntimeGlobals.createScriptUrl)
|
53
|
+
? [
|
54
|
+
`createScriptURL: ${runtimeTemplate.returningFunction(
|
55
|
+
"url",
|
56
|
+
"url"
|
57
|
+
)}`
|
58
|
+
]
|
59
|
+
: [])
|
60
|
+
].join(",\n")
|
61
|
+
),
|
62
|
+
"};",
|
63
|
+
...(trustedTypes
|
64
|
+
? [
|
65
|
+
'if (typeof trustedTypes !== "undefined" && trustedTypes.createPolicy) {',
|
66
|
+
Template.indent([
|
67
|
+
...(wrapPolicyCreationInTryCatch ? ["try {"] : []),
|
68
|
+
...[
|
69
|
+
`policy = trustedTypes.createPolicy(${JSON.stringify(
|
70
|
+
trustedTypes.policyName
|
71
|
+
)}, policy);`
|
72
|
+
].map(line =>
|
73
|
+
wrapPolicyCreationInTryCatch ? Template.indent(line) : line
|
74
|
+
),
|
75
|
+
...(wrapPolicyCreationInTryCatch
|
76
|
+
? [
|
77
|
+
"} catch (e) {",
|
78
|
+
Template.indent([
|
79
|
+
`console.warn('Could not create trusted-types policy ${JSON.stringify(
|
80
|
+
trustedTypes.policyName
|
81
|
+
)}');`
|
82
|
+
]),
|
83
|
+
"}"
|
84
|
+
]
|
85
|
+
: [])
|
86
|
+
]),
|
87
|
+
"}"
|
88
|
+
]
|
89
|
+
: [])
|
90
|
+
]),
|
91
|
+
"}",
|
92
|
+
"return policy;"
|
93
|
+
])};`
|
94
|
+
]);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
module.exports = GetTrustedTypesPolicyRuntimeModule;
|
@@ -9,16 +9,19 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
10
10
|
const Template = require("../Template");
|
11
11
|
|
12
|
+
/** @typedef {import("../Compilation")} Compilation */
|
13
|
+
|
12
14
|
class HasOwnPropertyRuntimeModule extends RuntimeModule {
|
13
15
|
constructor() {
|
14
16
|
super("hasOwnProperty shorthand");
|
15
17
|
}
|
16
18
|
|
17
19
|
/**
|
18
|
-
* @returns {string} runtime code
|
20
|
+
* @returns {string | null} runtime code
|
19
21
|
*/
|
20
22
|
generate() {
|
21
|
-
const
|
23
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
24
|
+
const { runtimeTemplate } = compilation;
|
22
25
|
|
23
26
|
return Template.asString([
|
24
27
|
`${RuntimeGlobals.hasOwnProperty} = ${runtimeTemplate.returningFunction(
|
@@ -14,7 +14,7 @@ const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
14
14
|
/** @typedef {import("../Compiler")} Compiler */
|
15
15
|
|
16
16
|
/**
|
17
|
-
* @typedef {
|
17
|
+
* @typedef {object} LoadScriptCompilationHooks
|
18
18
|
* @property {SyncWaterfallHook<[string, Chunk]>} createScript
|
19
19
|
*/
|
20
20
|
|
@@ -44,17 +44,19 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
44
44
|
|
45
45
|
/**
|
46
46
|
* @param {boolean=} withCreateScriptUrl use create script url for trusted types
|
47
|
+
* @param {boolean=} withFetchPriority use `fetchPriority` attribute
|
47
48
|
*/
|
48
|
-
constructor(withCreateScriptUrl) {
|
49
|
+
constructor(withCreateScriptUrl, withFetchPriority) {
|
49
50
|
super("load script");
|
50
51
|
this._withCreateScriptUrl = withCreateScriptUrl;
|
52
|
+
this._withFetchPriority = withFetchPriority;
|
51
53
|
}
|
52
54
|
|
53
55
|
/**
|
54
|
-
* @returns {string} runtime code
|
56
|
+
* @returns {string | null} runtime code
|
55
57
|
*/
|
56
58
|
generate() {
|
57
|
-
const
|
59
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
58
60
|
const { runtimeTemplate, outputOptions } = compilation;
|
59
61
|
const {
|
60
62
|
scriptType,
|
@@ -72,7 +74,7 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
72
74
|
"script = document.createElement('script');",
|
73
75
|
scriptType ? `script.type = ${JSON.stringify(scriptType)};` : "",
|
74
76
|
charset ? "script.charset = 'utf-8';" : "",
|
75
|
-
`script.timeout = ${loadTimeout / 1000};`,
|
77
|
+
`script.timeout = ${/** @type {number} */ (loadTimeout) / 1000};`,
|
76
78
|
`if (${RuntimeGlobals.scriptNonce}) {`,
|
77
79
|
Template.indent(
|
78
80
|
`script.setAttribute("nonce", ${RuntimeGlobals.scriptNonce});`
|
@@ -81,55 +83,69 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
81
83
|
uniqueName
|
82
84
|
? 'script.setAttribute("data-webpack", dataWebpackPrefix + key);'
|
83
85
|
: "",
|
86
|
+
this._withFetchPriority
|
87
|
+
? Template.asString([
|
88
|
+
"if(fetchPriority) {",
|
89
|
+
Template.indent(
|
90
|
+
'script.setAttribute("fetchpriority", fetchPriority);'
|
91
|
+
),
|
92
|
+
"}"
|
93
|
+
])
|
94
|
+
: "",
|
84
95
|
`script.src = ${
|
85
96
|
this._withCreateScriptUrl
|
86
97
|
? `${RuntimeGlobals.createScriptUrl}(url)`
|
87
98
|
: "url"
|
88
99
|
};`,
|
89
100
|
crossOriginLoading
|
90
|
-
?
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
101
|
+
? crossOriginLoading === "use-credentials"
|
102
|
+
? 'script.crossOrigin = "use-credentials";'
|
103
|
+
: Template.asString([
|
104
|
+
"if (script.src.indexOf(window.location.origin + '/') !== 0) {",
|
105
|
+
Template.indent(
|
106
|
+
`script.crossOrigin = ${JSON.stringify(crossOriginLoading)};`
|
107
|
+
),
|
108
|
+
"}"
|
109
|
+
])
|
97
110
|
: ""
|
98
111
|
]);
|
99
112
|
|
100
113
|
return Template.asString([
|
101
114
|
"var inProgress = {};",
|
102
115
|
uniqueName
|
103
|
-
? `var dataWebpackPrefix = ${JSON.stringify(uniqueName
|
116
|
+
? `var dataWebpackPrefix = ${JSON.stringify(`${uniqueName}:`)};`
|
104
117
|
: "// data-webpack is not used as build has no uniqueName",
|
105
118
|
"// loadScript function to load a script via script tag",
|
106
|
-
`${fn} = ${runtimeTemplate.basicFunction(
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
"
|
119
|
+
`${fn} = ${runtimeTemplate.basicFunction(
|
120
|
+
`url, done, key, chunkId${
|
121
|
+
this._withFetchPriority ? ", fetchPriority" : ""
|
122
|
+
}`,
|
123
|
+
[
|
124
|
+
"if(inProgress[url]) { inProgress[url].push(done); return; }",
|
125
|
+
"var script, needAttach;",
|
126
|
+
"if(key !== undefined) {",
|
127
|
+
Template.indent([
|
128
|
+
'var scripts = document.getElementsByTagName("script");',
|
129
|
+
"for(var i = 0; i < scripts.length; i++) {",
|
130
|
+
Template.indent([
|
131
|
+
"var s = scripts[i];",
|
132
|
+
`if(s.getAttribute("src") == url${
|
133
|
+
uniqueName
|
134
|
+
? ' || s.getAttribute("data-webpack") == dataWebpackPrefix + key'
|
135
|
+
: ""
|
136
|
+
}) { script = s; break; }`
|
137
|
+
]),
|
138
|
+
"}"
|
139
|
+
]),
|
140
|
+
"}",
|
141
|
+
"if(!script) {",
|
113
142
|
Template.indent([
|
114
|
-
"
|
115
|
-
|
116
|
-
uniqueName
|
117
|
-
? ' || s.getAttribute("data-webpack") == dataWebpackPrefix + key'
|
118
|
-
: ""
|
119
|
-
}) { script = s; break; }`
|
143
|
+
"needAttach = true;",
|
144
|
+
createScript.call(code, /** @type {Chunk} */ (this.chunk))
|
120
145
|
]),
|
121
|
-
"}"
|
122
|
-
|
123
|
-
|
124
|
-
"if(!script) {",
|
125
|
-
Template.indent([
|
126
|
-
"needAttach = true;",
|
127
|
-
createScript.call(code, this.chunk)
|
128
|
-
]),
|
129
|
-
"}",
|
130
|
-
"inProgress[url] = [done];",
|
131
|
-
"var onScriptComplete = " +
|
132
|
-
runtimeTemplate.basicFunction(
|
146
|
+
"}",
|
147
|
+
"inProgress[url] = [done];",
|
148
|
+
`var onScriptComplete = ${runtimeTemplate.basicFunction(
|
133
149
|
"prev, event",
|
134
150
|
Template.asString([
|
135
151
|
"// avoid mem leaks in IE.",
|
@@ -144,13 +160,13 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
144
160
|
)});`,
|
145
161
|
"if(prev) return prev(event);"
|
146
162
|
])
|
147
|
-
)
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
163
|
+
)}`,
|
164
|
+
`var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
|
165
|
+
"script.onerror = onScriptComplete.bind(null, script.onerror);",
|
166
|
+
"script.onload = onScriptComplete.bind(null, script.onload);",
|
167
|
+
"needAttach && document.head.appendChild(script);"
|
168
|
+
]
|
169
|
+
)};`
|
154
170
|
]);
|
155
171
|
}
|
156
172
|
}
|
@@ -8,16 +8,19 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const Template = require("../Template");
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("make namespace object");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
21
24
|
const fn = RuntimeGlobals.makeNamespaceObject;
|
22
25
|
return Template.asString([
|
23
26
|
"// define __esModule on exports",
|
@@ -0,0 +1,24 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
|
+
const RuntimeModule = require("../RuntimeModule");
|
10
|
+
|
11
|
+
class NonceRuntimeModule extends RuntimeModule {
|
12
|
+
constructor() {
|
13
|
+
super("nonce", RuntimeModule.STAGE_ATTACH);
|
14
|
+
}
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @returns {string | null} runtime code
|
18
|
+
*/
|
19
|
+
generate() {
|
20
|
+
return `${RuntimeGlobals.scriptNonce} = undefined;`;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
module.exports = NonceRuntimeModule;
|
@@ -8,16 +8,18 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
const Template = require("../Template");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("chunk loaded");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
21
23
|
const { runtimeTemplate } = compilation;
|
22
24
|
return Template.asString([
|
23
25
|
"var deferred = [];",
|
@@ -7,17 +7,24 @@
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
|
10
|
+
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputOptions */
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
10
13
|
class PublicPathRuntimeModule extends RuntimeModule {
|
14
|
+
/**
|
15
|
+
* @param {OutputOptions["publicPath"]} publicPath public path
|
16
|
+
*/
|
11
17
|
constructor(publicPath) {
|
12
18
|
super("publicPath", RuntimeModule.STAGE_BASIC);
|
13
19
|
this.publicPath = publicPath;
|
14
20
|
}
|
15
21
|
|
16
22
|
/**
|
17
|
-
* @returns {string} runtime code
|
23
|
+
* @returns {string | null} runtime code
|
18
24
|
*/
|
19
25
|
generate() {
|
20
|
-
const {
|
26
|
+
const { publicPath } = this;
|
27
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
21
28
|
|
22
29
|
return `${RuntimeGlobals.publicPath} = ${JSON.stringify(
|
23
30
|
compilation.getPath(publicPath || "", {
|
@@ -8,16 +8,19 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const Template = require("../Template");
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class RelativeUrlRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("relative url");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
21
24
|
return Template.asString([
|
22
25
|
`${RuntimeGlobals.relativeUrl} = function RelativeURL(url) {`,
|
23
26
|
Template.indent([
|