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
package/lib/SelfModuleFactory.js
CHANGED
@@ -5,11 +5,23 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
|
9
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
|
10
|
+
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
11
|
+
|
8
12
|
class SelfModuleFactory {
|
13
|
+
/**
|
14
|
+
* @param {ModuleGraph} moduleGraph module graph
|
15
|
+
*/
|
9
16
|
constructor(moduleGraph) {
|
10
17
|
this.moduleGraph = moduleGraph;
|
11
18
|
}
|
12
19
|
|
20
|
+
/**
|
21
|
+
* @param {ModuleFactoryCreateData} data data object
|
22
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
23
|
+
* @returns {void}
|
24
|
+
*/
|
13
25
|
create(data, callback) {
|
14
26
|
const module = this.moduleGraph.getParentModule(data.dependencies[0]);
|
15
27
|
callback(null, {
|
package/lib/SizeFormatHelpers.js
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
* @param {number} size the size in bytes
|
10
10
|
* @returns {string} the formatted size
|
11
11
|
*/
|
12
|
-
exports.formatSize = size => {
|
12
|
+
module.exports.formatSize = size => {
|
13
13
|
if (typeof size !== "number" || Number.isNaN(size) === true) {
|
14
14
|
return "unknown size";
|
15
15
|
}
|
@@ -21,7 +21,5 @@ exports.formatSize = size => {
|
|
21
21
|
const abbreviations = ["bytes", "KiB", "MiB", "GiB"];
|
22
22
|
const index = Math.floor(Math.log(size) / Math.log(1024));
|
23
23
|
|
24
|
-
return `${
|
25
|
-
abbreviations[index]
|
26
|
-
}`;
|
24
|
+
return `${Number((size / 1024 ** index).toPrecision(3))} ${abbreviations[index]}`;
|
27
25
|
};
|
@@ -7,9 +7,13 @@
|
|
7
7
|
|
8
8
|
const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
9
9
|
|
10
|
+
/** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
|
10
11
|
/** @typedef {import("./Compilation")} Compilation */
|
11
12
|
|
12
13
|
class SourceMapDevToolModuleOptionsPlugin {
|
14
|
+
/**
|
15
|
+
* @param {SourceMapDevToolPluginOptions} options options
|
16
|
+
*/
|
13
17
|
constructor(options) {
|
14
18
|
this.options = options;
|
15
19
|
}
|
@@ -22,11 +22,15 @@ const { makePathsAbsolute } = require("./util/identifier");
|
|
22
22
|
/** @typedef {import("./Cache").Etag} Etag */
|
23
23
|
/** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */
|
24
24
|
/** @typedef {import("./Chunk")} Chunk */
|
25
|
+
/** @typedef {import("./Compilation").Asset} Asset */
|
25
26
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
26
27
|
/** @typedef {import("./Compiler")} Compiler */
|
27
28
|
/** @typedef {import("./Module")} Module */
|
28
29
|
/** @typedef {import("./NormalModule").SourceMap} SourceMap */
|
30
|
+
/** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
|
29
31
|
/** @typedef {import("./util/Hash")} Hash */
|
32
|
+
/** @typedef {import("./util/createHash").Algorithm} Algorithm */
|
33
|
+
/** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
|
30
34
|
|
31
35
|
const validate = createSchemaValidation(
|
32
36
|
require("../schemas/plugins/SourceMapDevToolPlugin.check.js"),
|
@@ -47,14 +51,30 @@ const validate = createSchemaValidation(
|
|
47
51
|
* @property {ItemCacheFacade} cacheItem cache item
|
48
52
|
*/
|
49
53
|
|
54
|
+
const METACHARACTERS_REGEXP = /[-[\]\\/{}()*+?.^$|]/g;
|
55
|
+
const CONTENT_HASH_DETECT_REGEXP = /\[contenthash(:\w+)?\]/;
|
56
|
+
const CSS_AND_JS_MODULE_EXTENSIONS_REGEXP = /\.((c|m)?js|css)($|\?)/i;
|
57
|
+
const CSS_EXTENSION_DETECT_REGEXP = /\.css($|\?)/i;
|
58
|
+
const MAP_URL_COMMENT_REGEXP = /\[map\]/g;
|
59
|
+
const URL_COMMENT_REGEXP = /\[url\]/g;
|
60
|
+
const URL_FORMATTING_REGEXP = /^\n\/\/(.*)$/;
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Reset's .lastIndex of stateful Regular Expressions
|
64
|
+
* For when `test` or `exec` is called on them
|
65
|
+
* @param {RegExp} regexp Stateful Regular Expression to be reset
|
66
|
+
* @returns {void}
|
67
|
+
*/
|
68
|
+
const resetRegexpState = regexp => {
|
69
|
+
regexp.lastIndex = -1;
|
70
|
+
};
|
71
|
+
|
50
72
|
/**
|
51
73
|
* Escapes regular expression metacharacters
|
52
74
|
* @param {string} str String to quote
|
53
75
|
* @returns {string} Escaped string
|
54
76
|
*/
|
55
|
-
const quoteMeta = str =>
|
56
|
-
return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
57
|
-
};
|
77
|
+
const quoteMeta = str => str.replace(METACHARACTERS_REGEXP, "\\$&");
|
58
78
|
|
59
79
|
/**
|
60
80
|
* Creating {@link SourceMapTask} for given file
|
@@ -89,7 +109,7 @@ const getTaskForFile = (
|
|
89
109
|
source = asset.source();
|
90
110
|
}
|
91
111
|
if (!sourceMap || typeof source !== "string") return;
|
92
|
-
const context = compilation.options.context;
|
112
|
+
const context = /** @type {string} */ (compilation.options.context);
|
93
113
|
const root = compilation.compiler.root;
|
94
114
|
const cachedAbsolutify = makePathsAbsolute.bindContextCache(context, root);
|
95
115
|
const modules = sourceMap.sources.map(source => {
|
@@ -118,13 +138,13 @@ class SourceMapDevToolPlugin {
|
|
118
138
|
constructor(options = {}) {
|
119
139
|
validate(options);
|
120
140
|
|
121
|
-
/** @type {string | false} */
|
122
|
-
|
123
|
-
/** @type {string | false} */
|
141
|
+
this.sourceMapFilename = /** @type {string | false} */ (options.filename);
|
142
|
+
/** @type {false | TemplatePath}} */
|
124
143
|
this.sourceMappingURLComment =
|
125
144
|
options.append === false
|
126
145
|
? false
|
127
|
-
:
|
146
|
+
: // eslint-disable-next-line no-useless-concat
|
147
|
+
options.append || "\n//# source" + "MappingURL=[url]";
|
128
148
|
/** @type {string | Function} */
|
129
149
|
this.moduleFilenameTemplate =
|
130
150
|
options.moduleFilenameTemplate || "webpack://[namespace]/[resourcePath]";
|
@@ -144,7 +164,9 @@ class SourceMapDevToolPlugin {
|
|
144
164
|
* @returns {void}
|
145
165
|
*/
|
146
166
|
apply(compiler) {
|
147
|
-
const outputFs =
|
167
|
+
const outputFs = /** @type {OutputFileSystem} */ (
|
168
|
+
compiler.outputFileSystem
|
169
|
+
);
|
148
170
|
const sourceMapFilename = this.sourceMapFilename;
|
149
171
|
const sourceMappingURLComment = this.sourceMappingURLComment;
|
150
172
|
const moduleFilenameTemplate = this.moduleFilenameTemplate;
|
@@ -152,7 +174,7 @@ class SourceMapDevToolPlugin {
|
|
152
174
|
const fallbackModuleFilenameTemplate = this.fallbackModuleFilenameTemplate;
|
153
175
|
const requestShortener = compiler.requestShortener;
|
154
176
|
const options = this.options;
|
155
|
-
options.test = options.test ||
|
177
|
+
options.test = options.test || CSS_AND_JS_MODULE_EXTENSIONS_REGEXP;
|
156
178
|
|
157
179
|
const matchObject = ModuleFilenameHelpers.matchObject.bind(
|
158
180
|
undefined,
|
@@ -199,7 +221,7 @@ class SourceMapDevToolPlugin {
|
|
199
221
|
}
|
200
222
|
}
|
201
223
|
|
202
|
-
reportProgress(0
|
224
|
+
reportProgress(0);
|
203
225
|
/** @type {SourceMapTask[]} */
|
204
226
|
const tasks = [];
|
205
227
|
let fileIndex = 0;
|
@@ -207,7 +229,9 @@ class SourceMapDevToolPlugin {
|
|
207
229
|
asyncLib.each(
|
208
230
|
files,
|
209
231
|
(file, callback) => {
|
210
|
-
const asset =
|
232
|
+
const asset =
|
233
|
+
/** @type {Readonly<Asset>} */
|
234
|
+
(compilation.getAsset(file));
|
211
235
|
if (asset.info.related && asset.info.related.sourceMap) {
|
212
236
|
fileIndex++;
|
213
237
|
return callback();
|
@@ -286,14 +310,23 @@ class SourceMapDevToolPlugin {
|
|
286
310
|
|
287
311
|
for (let idx = 0; idx < modules.length; idx++) {
|
288
312
|
const module = modules[idx];
|
313
|
+
|
314
|
+
if (
|
315
|
+
typeof module === "string" &&
|
316
|
+
/^(data|https?):/.test(module)
|
317
|
+
) {
|
318
|
+
moduleToSourceNameMapping.set(module, module);
|
319
|
+
continue;
|
320
|
+
}
|
321
|
+
|
289
322
|
if (!moduleToSourceNameMapping.get(module)) {
|
290
323
|
moduleToSourceNameMapping.set(
|
291
324
|
module,
|
292
325
|
ModuleFilenameHelpers.createFilename(
|
293
326
|
module,
|
294
327
|
{
|
295
|
-
moduleFilenameTemplate
|
296
|
-
namespace
|
328
|
+
moduleFilenameTemplate,
|
329
|
+
namespace
|
297
330
|
},
|
298
331
|
{
|
299
332
|
requestShortener,
|
@@ -343,7 +376,9 @@ class SourceMapDevToolPlugin {
|
|
343
376
|
// find modules with conflicting source names
|
344
377
|
for (let idx = 0; idx < allModules.length; idx++) {
|
345
378
|
const module = allModules[idx];
|
346
|
-
let sourceName =
|
379
|
+
let sourceName =
|
380
|
+
/** @type {string} */
|
381
|
+
(moduleToSourceNameMapping.get(module));
|
347
382
|
let hasName = conflictDetectionSet.has(sourceName);
|
348
383
|
if (!hasName) {
|
349
384
|
conflictDetectionSet.add(sourceName);
|
@@ -355,7 +390,7 @@ class SourceMapDevToolPlugin {
|
|
355
390
|
module,
|
356
391
|
{
|
357
392
|
moduleFilenameTemplate: fallbackModuleFilenameTemplate,
|
358
|
-
namespace
|
393
|
+
namespace
|
359
394
|
},
|
360
395
|
{
|
361
396
|
requestShortener,
|
@@ -401,7 +436,7 @@ class SourceMapDevToolPlugin {
|
|
401
436
|
const moduleFilenames = modules.map(m =>
|
402
437
|
moduleToSourceNameMapping.get(m)
|
403
438
|
);
|
404
|
-
sourceMap.sources = moduleFilenames;
|
439
|
+
sourceMap.sources = /** @type {string[]} */ (moduleFilenames);
|
405
440
|
if (options.noSources) {
|
406
441
|
sourceMap.sourcesContent = undefined;
|
407
442
|
}
|
@@ -409,44 +444,51 @@ class SourceMapDevToolPlugin {
|
|
409
444
|
sourceMap.file = file;
|
410
445
|
const usesContentHash =
|
411
446
|
sourceMapFilename &&
|
412
|
-
|
447
|
+
CONTENT_HASH_DETECT_REGEXP.test(sourceMapFilename);
|
448
|
+
|
449
|
+
resetRegexpState(CONTENT_HASH_DETECT_REGEXP);
|
413
450
|
|
414
451
|
// If SourceMap and asset uses contenthash, avoid a circular dependency by hiding hash in `file`
|
415
452
|
if (usesContentHash && task.assetInfo.contenthash) {
|
416
453
|
const contenthash = task.assetInfo.contenthash;
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
} else {
|
421
|
-
pattern = quoteMeta(contenthash);
|
422
|
-
}
|
454
|
+
const pattern = Array.isArray(contenthash)
|
455
|
+
? contenthash.map(quoteMeta).join("|")
|
456
|
+
: quoteMeta(contenthash);
|
423
457
|
sourceMap.file = sourceMap.file.replace(
|
424
458
|
new RegExp(pattern, "g"),
|
425
459
|
m => "x".repeat(m.length)
|
426
460
|
);
|
427
461
|
}
|
428
462
|
|
429
|
-
/** @type {
|
463
|
+
/** @type {false | TemplatePath} */
|
430
464
|
let currentSourceMappingURLComment = sourceMappingURLComment;
|
465
|
+
const cssExtensionDetected =
|
466
|
+
CSS_EXTENSION_DETECT_REGEXP.test(file);
|
467
|
+
resetRegexpState(CSS_EXTENSION_DETECT_REGEXP);
|
431
468
|
if (
|
432
469
|
currentSourceMappingURLComment !== false &&
|
433
|
-
|
470
|
+
typeof currentSourceMappingURLComment !== "function" &&
|
471
|
+
cssExtensionDetected
|
434
472
|
) {
|
435
473
|
currentSourceMappingURLComment =
|
436
474
|
currentSourceMappingURLComment.replace(
|
437
|
-
|
475
|
+
URL_FORMATTING_REGEXP,
|
438
476
|
"\n/*$1*/"
|
439
477
|
);
|
440
478
|
}
|
441
479
|
const sourceMapString = JSON.stringify(sourceMap);
|
442
480
|
if (sourceMapFilename) {
|
443
|
-
|
481
|
+
const filename = file;
|
444
482
|
const sourceMapContentHash =
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
483
|
+
/** @type {string} */
|
484
|
+
(
|
485
|
+
usesContentHash &&
|
486
|
+
createHash(
|
487
|
+
/** @type {Algorithm} */
|
488
|
+
(compilation.outputOptions.hashFunction)
|
489
|
+
)
|
490
|
+
.update(sourceMapString)
|
491
|
+
.digest("hex")
|
450
492
|
);
|
451
493
|
const pathParams = {
|
452
494
|
chunk,
|
@@ -455,7 +497,7 @@ class SourceMapDevToolPlugin {
|
|
455
497
|
outputFs,
|
456
498
|
`/${options.fileContext}`,
|
457
499
|
`/${filename}`
|
458
|
-
|
500
|
+
)
|
459
501
|
: filename,
|
460
502
|
contentHash: sourceMapContentHash
|
461
503
|
};
|
@@ -470,17 +512,17 @@ class SourceMapDevToolPlugin {
|
|
470
512
|
outputFs,
|
471
513
|
dirname(outputFs, `/${file}`),
|
472
514
|
`/${sourceMapFile}`
|
473
|
-
|
515
|
+
);
|
474
516
|
/** @type {Source} */
|
475
517
|
let asset = new RawSource(source);
|
476
518
|
if (currentSourceMappingURLComment !== false) {
|
477
519
|
// Add source map url to compilation asset, if currentSourceMappingURLComment is set
|
478
520
|
asset = new ConcatSource(
|
479
521
|
asset,
|
480
|
-
compilation.getPath(
|
481
|
-
|
482
|
-
|
483
|
-
)
|
522
|
+
compilation.getPath(currentSourceMappingURLComment, {
|
523
|
+
url: sourceMapUrl,
|
524
|
+
...pathParams
|
525
|
+
})
|
484
526
|
);
|
485
527
|
}
|
486
528
|
const assetInfo = {
|
@@ -510,15 +552,20 @@ class SourceMapDevToolPlugin {
|
|
510
552
|
"SourceMapDevToolPlugin: append can't be false when no filename is provided"
|
511
553
|
);
|
512
554
|
}
|
555
|
+
if (typeof currentSourceMappingURLComment === "function") {
|
556
|
+
throw new Error(
|
557
|
+
"SourceMapDevToolPlugin: append can't be a function when no filename is provided"
|
558
|
+
);
|
559
|
+
}
|
513
560
|
/**
|
514
561
|
* Add source map as data url to asset
|
515
562
|
*/
|
516
563
|
const asset = new ConcatSource(
|
517
564
|
new RawSource(source),
|
518
565
|
currentSourceMappingURLComment
|
519
|
-
.replace(
|
566
|
+
.replace(MAP_URL_COMMENT_REGEXP, () => sourceMapString)
|
520
567
|
.replace(
|
521
|
-
|
568
|
+
URL_COMMENT_REGEXP,
|
522
569
|
() =>
|
523
570
|
`data:application/json;charset=utf-8;base64,${Buffer.from(
|
524
571
|
sourceMapString,
|
@@ -545,7 +592,7 @@ class SourceMapDevToolPlugin {
|
|
545
592
|
});
|
546
593
|
},
|
547
594
|
err => {
|
548
|
-
reportProgress(1
|
595
|
+
reportProgress(1);
|
549
596
|
callback(err);
|
550
597
|
}
|
551
598
|
);
|
package/lib/Stats.js
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
/** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
|
9
9
|
/** @typedef {import("./Compilation")} Compilation */
|
10
|
+
/** @typedef {import("./Compilation").NormalizedStatsOptions} NormalizedStatsOptions */
|
10
11
|
/** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
|
11
12
|
|
12
13
|
class Stats {
|
@@ -34,7 +35,7 @@ class Stats {
|
|
34
35
|
*/
|
35
36
|
hasWarnings() {
|
36
37
|
return (
|
37
|
-
this.compilation.
|
38
|
+
this.compilation.getWarnings().length > 0 ||
|
38
39
|
this.compilation.children.some(child => child.getStats().hasWarnings())
|
39
40
|
);
|
40
41
|
}
|
@@ -50,28 +51,32 @@ class Stats {
|
|
50
51
|
}
|
51
52
|
|
52
53
|
/**
|
53
|
-
* @param {(string|StatsOptions)=} options stats options
|
54
|
+
* @param {(string | boolean | StatsOptions)=} options stats options
|
54
55
|
* @returns {StatsCompilation} json output
|
55
56
|
*/
|
56
57
|
toJson(options) {
|
57
|
-
|
58
|
+
const normalizedOptions = this.compilation.createStatsOptions(options, {
|
58
59
|
forToString: false
|
59
60
|
});
|
60
61
|
|
61
|
-
const statsFactory = this.compilation.createStatsFactory(
|
62
|
+
const statsFactory = this.compilation.createStatsFactory(normalizedOptions);
|
62
63
|
|
63
64
|
return statsFactory.create("compilation", this.compilation, {
|
64
65
|
compilation: this.compilation
|
65
66
|
});
|
66
67
|
}
|
67
68
|
|
69
|
+
/**
|
70
|
+
* @param {(string | boolean | StatsOptions)=} options stats options
|
71
|
+
* @returns {string} string output
|
72
|
+
*/
|
68
73
|
toString(options) {
|
69
|
-
|
74
|
+
const normalizedOptions = this.compilation.createStatsOptions(options, {
|
70
75
|
forToString: true
|
71
76
|
});
|
72
77
|
|
73
|
-
const statsFactory = this.compilation.createStatsFactory(
|
74
|
-
const statsPrinter = this.compilation.createStatsPrinter(
|
78
|
+
const statsFactory = this.compilation.createStatsFactory(normalizedOptions);
|
79
|
+
const statsPrinter = this.compilation.createStatsPrinter(normalizedOptions);
|
75
80
|
|
76
81
|
const data = statsFactory.create("compilation", this.compilation, {
|
77
82
|
compilation: this.compilation
|
package/lib/Template.js
CHANGED
@@ -6,11 +6,14 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const { ConcatSource, PrefixSource } = require("webpack-sources");
|
9
|
+
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
10
|
+
const RuntimeGlobals = require("./RuntimeGlobals");
|
9
11
|
|
10
12
|
/** @typedef {import("webpack-sources").Source} Source */
|
11
13
|
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
12
14
|
/** @typedef {import("./Chunk")} Chunk */
|
13
15
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
16
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
14
17
|
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
|
15
18
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
16
19
|
/** @typedef {import("./Compilation").PathData} PathData */
|
@@ -20,6 +23,7 @@ const { ConcatSource, PrefixSource } = require("webpack-sources");
|
|
20
23
|
/** @typedef {import("./ModuleTemplate")} ModuleTemplate */
|
21
24
|
/** @typedef {import("./RuntimeModule")} RuntimeModule */
|
22
25
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
26
|
+
/** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
|
23
27
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
|
24
28
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
|
25
29
|
|
@@ -39,7 +43,7 @@ const PATH_NAME_NORMALIZE_REPLACE_REGEX = /[^a-zA-Z0-9_!§$()=\-^°]+/g;
|
|
39
43
|
const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
40
44
|
|
41
45
|
/**
|
42
|
-
* @typedef {
|
46
|
+
* @typedef {object} RenderManifestOptions
|
43
47
|
* @property {Chunk} chunk the chunk used to render
|
44
48
|
* @property {string} hash
|
45
49
|
* @property {string} fullHash
|
@@ -55,9 +59,9 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
|
55
59
|
/** @typedef {RenderManifestEntryTemplated | RenderManifestEntryStatic} RenderManifestEntry */
|
56
60
|
|
57
61
|
/**
|
58
|
-
* @typedef {
|
62
|
+
* @typedef {object} RenderManifestEntryTemplated
|
59
63
|
* @property {function(): Source} render
|
60
|
-
* @property {
|
64
|
+
* @property {TemplatePath} filenameTemplate
|
61
65
|
* @property {PathData=} pathOptions
|
62
66
|
* @property {AssetInfo=} info
|
63
67
|
* @property {string} identifier
|
@@ -66,7 +70,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
|
66
70
|
*/
|
67
71
|
|
68
72
|
/**
|
69
|
-
* @typedef {
|
73
|
+
* @typedef {object} RenderManifestEntryStatic
|
70
74
|
* @property {function(): Source} render
|
71
75
|
* @property {string} filename
|
72
76
|
* @property {AssetInfo} info
|
@@ -76,7 +80,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
|
76
80
|
*/
|
77
81
|
|
78
82
|
/**
|
79
|
-
* @typedef {
|
83
|
+
* @typedef {object} HasId
|
80
84
|
* @property {number | string} id
|
81
85
|
*/
|
82
86
|
|
@@ -86,7 +90,6 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
|
86
90
|
|
87
91
|
class Template {
|
88
92
|
/**
|
89
|
-
*
|
90
93
|
* @param {Function} fn a runtime function (.runtime.js) "template"
|
91
94
|
* @returns {string} the updated and normalized function string
|
92
95
|
*/
|
@@ -108,8 +111,8 @@ class Template {
|
|
108
111
|
.replace(IDENTIFIER_NAME_REPLACE_REGEX, "_$1")
|
109
112
|
.replace(IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX, "_");
|
110
113
|
}
|
114
|
+
|
111
115
|
/**
|
112
|
-
*
|
113
116
|
* @param {string} str string to be converted to commented in bundle code
|
114
117
|
* @returns {string} returns a commented version of string
|
115
118
|
*/
|
@@ -119,7 +122,6 @@ class Template {
|
|
119
122
|
}
|
120
123
|
|
121
124
|
/**
|
122
|
-
*
|
123
125
|
* @param {string} str string to be converted to "normal comment"
|
124
126
|
* @returns {string} returns a commented version of string
|
125
127
|
*/
|
@@ -209,23 +211,20 @@ class Template {
|
|
209
211
|
}
|
210
212
|
|
211
213
|
/**
|
212
|
-
*
|
213
214
|
* @param {string | string[]} s string to convert to identity
|
214
215
|
* @returns {string} converted identity
|
215
216
|
*/
|
216
217
|
static indent(s) {
|
217
218
|
if (Array.isArray(s)) {
|
218
219
|
return s.map(Template.indent).join("\n");
|
219
|
-
} else {
|
220
|
-
const str = s.trimRight();
|
221
|
-
if (!str) return "";
|
222
|
-
const ind = str[0] === "\n" ? "" : "\t";
|
223
|
-
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
224
220
|
}
|
221
|
+
const str = s.trimEnd();
|
222
|
+
if (!str) return "";
|
223
|
+
const ind = str[0] === "\n" ? "" : "\t";
|
224
|
+
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
225
225
|
}
|
226
226
|
|
227
227
|
/**
|
228
|
-
*
|
229
228
|
* @param {string|string[]} s string to create prefix for
|
230
229
|
* @param {string} prefix prefix to compose
|
231
230
|
* @returns {string} returns new prefix string
|
@@ -234,11 +233,10 @@ class Template {
|
|
234
233
|
const str = Template.asString(s).trim();
|
235
234
|
if (!str) return "";
|
236
235
|
const ind = str[0] === "\n" ? "" : prefix;
|
237
|
-
return ind + str.replace(/\n([^\n])/g,
|
236
|
+
return ind + str.replace(/\n([^\n])/g, `\n${prefix}$1`);
|
238
237
|
}
|
239
238
|
|
240
239
|
/**
|
241
|
-
*
|
242
240
|
* @param {string|string[]} str string or string collection
|
243
241
|
* @returns {string} returns a single string from array
|
244
242
|
*/
|
@@ -250,7 +248,7 @@ class Template {
|
|
250
248
|
}
|
251
249
|
|
252
250
|
/**
|
253
|
-
* @typedef {
|
251
|
+
* @typedef {object} WithId
|
254
252
|
* @property {string|number} id
|
255
253
|
*/
|
256
254
|
|
@@ -268,7 +266,7 @@ class Template {
|
|
268
266
|
if (maxId < moduleId) maxId = moduleId;
|
269
267
|
if (minId > moduleId) minId = moduleId;
|
270
268
|
}
|
271
|
-
if (minId < 16 + (
|
269
|
+
if (minId < 16 + String(minId).length) {
|
272
270
|
// add minId x ',' instead of 'Array(minId).concat(…)'
|
273
271
|
minId = 0;
|
274
272
|
}
|
@@ -286,23 +284,21 @@ class Template {
|
|
286
284
|
/**
|
287
285
|
* @param {ChunkRenderContext} renderContext render context
|
288
286
|
* @param {Module[]} modules modules to render (should be ordered by identifier)
|
289
|
-
* @param {function(Module): Source} renderModule function to render a module
|
287
|
+
* @param {function(Module): Source | null} renderModule function to render a module
|
290
288
|
* @param {string=} prefix applying prefix strings
|
291
|
-
* @returns {Source} rendered chunk modules in a Source object
|
289
|
+
* @returns {Source | null} rendered chunk modules in a Source object or null if no modules
|
292
290
|
*/
|
293
291
|
static renderChunkModules(renderContext, modules, renderModule, prefix = "") {
|
294
292
|
const { chunkGraph } = renderContext;
|
295
|
-
|
293
|
+
const source = new ConcatSource();
|
296
294
|
if (modules.length === 0) {
|
297
295
|
return null;
|
298
296
|
}
|
299
297
|
/** @type {{id: string|number, source: Source|string}[]} */
|
300
|
-
const allModules = modules.map(module => {
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
};
|
305
|
-
});
|
298
|
+
const allModules = modules.map(module => ({
|
299
|
+
id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
|
300
|
+
source: renderModule(module) || "false"
|
301
|
+
}));
|
306
302
|
const bounds = Template.getModulesArrayBounds(allModules);
|
307
303
|
if (bounds) {
|
308
304
|
// Render a spare array
|
@@ -328,7 +324,7 @@ class Template {
|
|
328
324
|
source.add(module.source);
|
329
325
|
}
|
330
326
|
}
|
331
|
-
source.add(
|
327
|
+
source.add(`\n${prefix}]`);
|
332
328
|
if (minId !== 0) {
|
333
329
|
source.add(")");
|
334
330
|
}
|
@@ -362,7 +358,7 @@ class Template {
|
|
362
358
|
runtimeSource = codeGenerationResults.getSource(
|
363
359
|
module,
|
364
360
|
renderContext.chunk.runtime,
|
365
|
-
|
361
|
+
WEBPACK_MODULE_TYPE_RUNTIME
|
366
362
|
);
|
367
363
|
} else {
|
368
364
|
const codeGenResult = module.codeGeneration({
|
@@ -370,13 +366,14 @@ class Template {
|
|
370
366
|
dependencyTemplates: renderContext.dependencyTemplates,
|
371
367
|
moduleGraph: renderContext.moduleGraph,
|
372
368
|
runtimeTemplate: renderContext.runtimeTemplate,
|
373
|
-
runtime: renderContext.chunk.runtime
|
369
|
+
runtime: renderContext.chunk.runtime,
|
370
|
+
codeGenerationResults
|
374
371
|
});
|
375
372
|
if (!codeGenResult) continue;
|
376
373
|
runtimeSource = codeGenResult.sources.get("runtime");
|
377
374
|
}
|
378
375
|
if (runtimeSource) {
|
379
|
-
source.add(Template.toNormalComment(module.identifier())
|
376
|
+
source.add(`${Template.toNormalComment(module.identifier())}\n`);
|
380
377
|
if (!module.shouldIsolate()) {
|
381
378
|
source.add(runtimeSource);
|
382
379
|
source.add("\n\n");
|
@@ -403,7 +400,7 @@ class Template {
|
|
403
400
|
return new PrefixSource(
|
404
401
|
"/******/ ",
|
405
402
|
new ConcatSource(
|
406
|
-
|
403
|
+
`function(${RuntimeGlobals.require}) { // webpackRuntimeModules\n`,
|
407
404
|
this.renderRuntimeModules(runtimeModules, renderContext),
|
408
405
|
"}\n"
|
409
406
|
)
|