webpack 5.76.1 → 5.88.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
@@ -8,16 +8,18 @@ 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 CreateScriptRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("trusted types script");
|
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, outputOptions } = compilation;
|
22
24
|
const { trustedTypes } = outputOptions;
|
23
25
|
const fn = RuntimeGlobals.createScript;
|
@@ -8,16 +8,18 @@ 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 CreateScriptUrlRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("trusted types script 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);
|
21
23
|
const { runtimeTemplate, outputOptions } = compilation;
|
22
24
|
const { trustedTypes } = outputOptions;
|
23
25
|
const fn = RuntimeGlobals.createScriptUrl;
|
@@ -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 DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("define property getters");
|
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.definePropertyGetters;
|
22
25
|
return Template.asString([
|
23
26
|
"// define getter functions for harmony exports",
|
@@ -8,30 +8,44 @@ 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 EnsureChunkRuntimeModule extends RuntimeModule {
|
14
|
+
/**
|
15
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
16
|
+
*/
|
12
17
|
constructor(runtimeRequirements) {
|
13
18
|
super("ensure chunk");
|
14
19
|
this.runtimeRequirements = runtimeRequirements;
|
15
20
|
}
|
16
21
|
|
17
22
|
/**
|
18
|
-
* @returns {string} runtime code
|
23
|
+
* @returns {string | null} runtime code
|
19
24
|
*/
|
20
25
|
generate() {
|
21
|
-
const
|
26
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
27
|
+
const { runtimeTemplate } = compilation;
|
22
28
|
// Check if there are non initial chunks which need to be imported using require-ensure
|
23
29
|
if (this.runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) {
|
30
|
+
const withFetchPriority = this.runtimeRequirements.has(
|
31
|
+
RuntimeGlobals.hasFetchPriority
|
32
|
+
);
|
24
33
|
const handlers = RuntimeGlobals.ensureChunkHandlers;
|
25
34
|
return Template.asString([
|
26
35
|
`${handlers} = {};`,
|
27
36
|
"// This file contains only the entry chunk.",
|
28
37
|
"// The chunk loading function for additional chunks",
|
29
38
|
`${RuntimeGlobals.ensureChunk} = ${runtimeTemplate.basicFunction(
|
30
|
-
|
39
|
+
`chunkId${withFetchPriority ? ", fetchPriority" : ""}`,
|
31
40
|
[
|
32
41
|
`return Promise.all(Object.keys(${handlers}).reduce(${runtimeTemplate.basicFunction(
|
33
42
|
"promises, key",
|
34
|
-
[
|
43
|
+
[
|
44
|
+
`${handlers}[key](chunkId, promises${
|
45
|
+
withFetchPriority ? ", fetchPriority" : ""
|
46
|
+
});`,
|
47
|
+
"return promises;"
|
48
|
+
]
|
35
49
|
)}, []));`
|
36
50
|
]
|
37
51
|
)};`
|
@@ -10,6 +10,7 @@ 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
16
|
/** @typedef {import("../Compilation").PathData} PathData */
|
@@ -34,24 +35,19 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
34
35
|
}
|
35
36
|
|
36
37
|
/**
|
37
|
-
* @returns {string} runtime code
|
38
|
+
* @returns {string | null} runtime code
|
38
39
|
*/
|
39
40
|
generate() {
|
40
|
-
const {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
contentType,
|
45
|
-
getFilenameForChunk,
|
46
|
-
allChunks,
|
47
|
-
compilation
|
48
|
-
} = this;
|
41
|
+
const { global, contentType, getFilenameForChunk, allChunks } = this;
|
42
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
43
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
44
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
49
45
|
const { runtimeTemplate } = compilation;
|
50
46
|
|
51
47
|
/** @type {Map<string | FilenameFunction, Set<Chunk>>} */
|
52
48
|
const chunkFilenames = new Map();
|
53
49
|
let maxChunks = 0;
|
54
|
-
/** @type {string} */
|
50
|
+
/** @type {string | undefined} */
|
55
51
|
let dynamicFilename;
|
56
52
|
|
57
53
|
/**
|
@@ -69,9 +65,20 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
69
65
|
if (typeof chunkFilename === "string") {
|
70
66
|
if (set.size < maxChunks) return;
|
71
67
|
if (set.size === maxChunks) {
|
72
|
-
if (
|
73
|
-
|
74
|
-
|
68
|
+
if (
|
69
|
+
chunkFilename.length <
|
70
|
+
/** @type {string} */ (dynamicFilename).length
|
71
|
+
) {
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
|
75
|
+
if (
|
76
|
+
chunkFilename.length ===
|
77
|
+
/** @type {string} */ (dynamicFilename).length
|
78
|
+
) {
|
79
|
+
if (chunkFilename < /** @type {string} */ (dynamicFilename)) {
|
80
|
+
return;
|
81
|
+
}
|
75
82
|
}
|
76
83
|
}
|
77
84
|
maxChunks = set.size;
|
@@ -108,7 +115,7 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
108
115
|
addChunk(entrypoint.chunks[entrypoint.chunks.length - 1]);
|
109
116
|
}
|
110
117
|
|
111
|
-
/** @type {Map<string, Set<string | number>>} */
|
118
|
+
/** @type {Map<string, Set<string | number | null>>} */
|
112
119
|
const staticUrls = new Map();
|
113
120
|
/** @type {Set<Chunk>} */
|
114
121
|
const dynamicUrlChunks = new Set();
|
@@ -132,6 +139,10 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
132
139
|
const s = JSON.stringify(str);
|
133
140
|
return s.slice(1, s.length - 1);
|
134
141
|
};
|
142
|
+
/**
|
143
|
+
* @param {string} value string
|
144
|
+
* @returns {function(number): string} string to put in quotes with length
|
145
|
+
*/
|
135
146
|
const unquotedStringifyWithLength = value => length =>
|
136
147
|
unquotedStringify(`${value}`.slice(0, length));
|
137
148
|
const chunkFilenameValue =
|
@@ -148,10 +159,14 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
148
159
|
hashWithLength: length =>
|
149
160
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
150
161
|
chunk: {
|
151
|
-
id: unquotedStringify(c.id),
|
152
|
-
hash: unquotedStringify(c.renderedHash),
|
153
|
-
hashWithLength: unquotedStringifyWithLength(
|
154
|
-
|
162
|
+
id: unquotedStringify(/** @type {number | string} */ (c.id)),
|
163
|
+
hash: unquotedStringify(/** @type {string} */ (c.renderedHash)),
|
164
|
+
hashWithLength: unquotedStringifyWithLength(
|
165
|
+
/** @type {string} */ (c.renderedHash)
|
166
|
+
),
|
167
|
+
name: unquotedStringify(
|
168
|
+
c.name || /** @type {number | string} */ (c.id)
|
169
|
+
),
|
155
170
|
contentHash: {
|
156
171
|
[contentType]: unquotedStringify(c.contentHash[contentType])
|
157
172
|
},
|
@@ -183,8 +198,10 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
183
198
|
* @returns {string} code with static mapping of results of fn
|
184
199
|
*/
|
185
200
|
const createMap = fn => {
|
201
|
+
/** @type {Record<number | string, number | string>} */
|
186
202
|
const obj = {};
|
187
203
|
let useId = false;
|
204
|
+
/** @type {number | string | undefined} */
|
188
205
|
let lastKey;
|
189
206
|
let entries = 0;
|
190
207
|
for (const c of dynamicUrlChunks) {
|
@@ -192,8 +209,8 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
192
209
|
if (value === c.id) {
|
193
210
|
useId = true;
|
194
211
|
} else {
|
195
|
-
obj[c.id] = value;
|
196
|
-
lastKey = c.id;
|
212
|
+
obj[/** @type {number | string} */ (c.id)] = value;
|
213
|
+
lastKey = /** @type {number | string} */ (c.id);
|
197
214
|
entries++;
|
198
215
|
}
|
199
216
|
}
|
@@ -201,9 +218,9 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
201
218
|
if (entries === 1) {
|
202
219
|
return useId
|
203
220
|
? `(chunkId === ${JSON.stringify(lastKey)} ? ${JSON.stringify(
|
204
|
-
obj[lastKey]
|
221
|
+
obj[/** @type {number | string} */ (lastKey)]
|
205
222
|
)} : chunkId)`
|
206
|
-
: JSON.stringify(obj[lastKey]);
|
223
|
+
: JSON.stringify(obj[/** @type {number | string} */ (lastKey)]);
|
207
224
|
}
|
208
225
|
return useId
|
209
226
|
? `(${JSON.stringify(obj)}[chunkId] || chunkId)`
|
@@ -234,9 +251,11 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
234
251
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
235
252
|
chunk: {
|
236
253
|
id: `" + chunkId + "`,
|
237
|
-
hash: mapExpr(c => c.renderedHash),
|
238
|
-
hashWithLength: mapExprWithLength(
|
239
|
-
|
254
|
+
hash: mapExpr(c => /** @type {string} */ (c.renderedHash)),
|
255
|
+
hashWithLength: mapExprWithLength(
|
256
|
+
c => /** @type {string} */ (c.renderedHash)
|
257
|
+
),
|
258
|
+
name: mapExpr(c => c.name || /** @type {number | string} */ (c.id)),
|
240
259
|
contentHash: {
|
241
260
|
[contentType]: mapExpr(c => c.contentHash[contentType])
|
242
261
|
},
|
@@ -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}() + "`,
|
@@ -8,9 +8,11 @@ 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 GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
12
14
|
/**
|
13
|
-
* @param {
|
15
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
14
16
|
*/
|
15
17
|
constructor(runtimeRequirements) {
|
16
18
|
super("trusted types policy");
|
@@ -18,13 +20,16 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
18
20
|
}
|
19
21
|
|
20
22
|
/**
|
21
|
-
* @returns {string} runtime code
|
23
|
+
* @returns {string | null} runtime code
|
22
24
|
*/
|
23
25
|
generate() {
|
24
|
-
const
|
26
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
25
27
|
const { runtimeTemplate, outputOptions } = compilation;
|
26
28
|
const { trustedTypes } = outputOptions;
|
27
29
|
const fn = RuntimeGlobals.getTrustedTypesPolicy;
|
30
|
+
const wrapPolicyCreationInTryCatch = trustedTypes
|
31
|
+
? trustedTypes.onPolicyCreationFailure === "continue"
|
32
|
+
: false;
|
28
33
|
|
29
34
|
return Template.asString([
|
30
35
|
"var policy;",
|
@@ -58,9 +63,25 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
58
63
|
? [
|
59
64
|
'if (typeof trustedTypes !== "undefined" && trustedTypes.createPolicy) {',
|
60
65
|
Template.indent([
|
61
|
-
|
62
|
-
|
63
|
-
|
66
|
+
...(wrapPolicyCreationInTryCatch ? ["try {"] : []),
|
67
|
+
...[
|
68
|
+
`policy = trustedTypes.createPolicy(${JSON.stringify(
|
69
|
+
trustedTypes.policyName
|
70
|
+
)}, policy);`
|
71
|
+
].map(line =>
|
72
|
+
wrapPolicyCreationInTryCatch ? Template.indent(line) : line
|
73
|
+
),
|
74
|
+
...(wrapPolicyCreationInTryCatch
|
75
|
+
? [
|
76
|
+
"} catch (e) {",
|
77
|
+
Template.indent([
|
78
|
+
`console.warn('Could not create trusted-types policy ${JSON.stringify(
|
79
|
+
trustedTypes.policyName
|
80
|
+
)}');`
|
81
|
+
]),
|
82
|
+
"}"
|
83
|
+
]
|
84
|
+
: [])
|
64
85
|
]),
|
65
86
|
"}"
|
66
87
|
]
|
@@ -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(
|
@@ -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,6 +83,15 @@ 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)`
|
@@ -105,54 +116,58 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
105
116
|
? `var dataWebpackPrefix = ${JSON.stringify(uniqueName + ":")};`
|
106
117
|
: "// data-webpack is not used as build has no uniqueName",
|
107
118
|
"// loadScript function to load a script via script tag",
|
108
|
-
`${fn} = ${runtimeTemplate.basicFunction(
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
"
|
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) {",
|
115
142
|
Template.indent([
|
116
|
-
"
|
117
|
-
|
118
|
-
uniqueName
|
119
|
-
? ' || s.getAttribute("data-webpack") == dataWebpackPrefix + key'
|
120
|
-
: ""
|
121
|
-
}) { script = s; break; }`
|
143
|
+
"needAttach = true;",
|
144
|
+
createScript.call(code, /** @type {Chunk} */ (this.chunk))
|
122
145
|
]),
|
123
|
-
"}"
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
])
|
149
|
-
) +
|
150
|
-
";",
|
151
|
-
`var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
|
152
|
-
"script.onerror = onScriptComplete.bind(null, script.onerror);",
|
153
|
-
"script.onload = onScriptComplete.bind(null, script.onload);",
|
154
|
-
"needAttach && document.head.appendChild(script);"
|
155
|
-
])};`
|
146
|
+
"}",
|
147
|
+
"inProgress[url] = [done];",
|
148
|
+
"var onScriptComplete = " +
|
149
|
+
runtimeTemplate.basicFunction(
|
150
|
+
"prev, event",
|
151
|
+
Template.asString([
|
152
|
+
"// avoid mem leaks in IE.",
|
153
|
+
"script.onerror = script.onload = null;",
|
154
|
+
"clearTimeout(timeout);",
|
155
|
+
"var doneFns = inProgress[url];",
|
156
|
+
"delete inProgress[url];",
|
157
|
+
"script.parentNode && script.parentNode.removeChild(script);",
|
158
|
+
`doneFns && doneFns.forEach(${runtimeTemplate.returningFunction(
|
159
|
+
"fn(event)",
|
160
|
+
"fn"
|
161
|
+
)});`,
|
162
|
+
"if(prev) return prev(event);"
|
163
|
+
])
|
164
|
+
),
|
165
|
+
`var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
|
166
|
+
"script.onerror = onScriptComplete.bind(null, script.onerror);",
|
167
|
+
"script.onload = onScriptComplete.bind(null, script.onload);",
|
168
|
+
"needAttach && document.head.appendChild(script);"
|
169
|
+
]
|
170
|
+
)};`
|
156
171
|
]);
|
157
172
|
}
|
158
173
|
}
|
@@ -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",
|
@@ -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([
|