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
@@ -26,13 +26,13 @@ class IgnoreErrorModuleFactory extends ModuleFactory {
|
|
26
26
|
|
27
27
|
/**
|
28
28
|
* @param {ModuleFactoryCreateData} data data object
|
29
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
29
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
30
30
|
* @returns {void}
|
31
31
|
*/
|
32
32
|
create(data, callback) {
|
33
|
-
this.normalModuleFactory.create(data, (err, result) =>
|
34
|
-
|
35
|
-
|
33
|
+
this.normalModuleFactory.create(data, (err, result) =>
|
34
|
+
callback(null, result)
|
35
|
+
);
|
36
36
|
}
|
37
37
|
}
|
38
38
|
|
package/lib/IgnorePlugin.js
CHANGED
@@ -28,14 +28,15 @@ class IgnorePlugin {
|
|
28
28
|
validate(options);
|
29
29
|
this.options = options;
|
30
30
|
|
31
|
-
/**
|
31
|
+
/**
|
32
|
+
* @private
|
33
|
+
* @type {Function}
|
34
|
+
*/
|
32
35
|
this.checkIgnore = this.checkIgnore.bind(this);
|
33
36
|
}
|
34
37
|
|
35
38
|
/**
|
36
|
-
* Note that if "contextRegExp" is given, both the "resourceRegExp"
|
37
|
-
* and "contextRegExp" have to match.
|
38
|
-
*
|
39
|
+
* Note that if "contextRegExp" is given, both the "resourceRegExp" and "contextRegExp" have to match.
|
39
40
|
* @param {ResolveData} resolveData resolve data
|
40
41
|
* @returns {false|undefined} returns false when the request should be ignored, otherwise undefined
|
41
42
|
*/
|
@@ -15,6 +15,7 @@ class IgnoreWarningsPlugin {
|
|
15
15
|
constructor(ignoreWarnings) {
|
16
16
|
this._ignoreWarnings = ignoreWarnings;
|
17
17
|
}
|
18
|
+
|
18
19
|
/**
|
19
20
|
* Apply the plugin
|
20
21
|
* @param {Compiler} compiler the compiler instance
|
@@ -22,15 +23,11 @@ class IgnoreWarningsPlugin {
|
|
22
23
|
*/
|
23
24
|
apply(compiler) {
|
24
25
|
compiler.hooks.compilation.tap("IgnoreWarningsPlugin", compilation => {
|
25
|
-
compilation.hooks.processWarnings.tap(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
ignore(warning, compilation)
|
31
|
-
);
|
32
|
-
});
|
33
|
-
}
|
26
|
+
compilation.hooks.processWarnings.tap("IgnoreWarningsPlugin", warnings =>
|
27
|
+
warnings.filter(
|
28
|
+
warning =>
|
29
|
+
!this._ignoreWarnings.some(ignore => ignore(warning, compilation))
|
30
|
+
)
|
34
31
|
);
|
35
32
|
});
|
36
33
|
}
|
package/lib/InitFragment.js
CHANGED
@@ -10,17 +10,21 @@ const makeSerializable = require("./util/makeSerializable");
|
|
10
10
|
|
11
11
|
/** @typedef {import("webpack-sources").Source} Source */
|
12
12
|
/** @typedef {import("./Generator").GenerateContext} GenerateContext */
|
13
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
14
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
15
|
|
14
16
|
/**
|
15
|
-
* @
|
17
|
+
* @template T
|
18
|
+
* @param {InitFragment<T>} fragment the init fragment
|
16
19
|
* @param {number} index index
|
17
|
-
* @returns {[InitFragment
|
20
|
+
* @returns {[InitFragment<T>, number]} tuple with both
|
18
21
|
*/
|
19
22
|
const extractFragmentIndex = (fragment, index) => [fragment, index];
|
20
23
|
|
21
24
|
/**
|
22
|
-
* @
|
23
|
-
* @param {[InitFragment
|
25
|
+
* @template T
|
26
|
+
* @param {[InitFragment<T>, number]} a first pair
|
27
|
+
* @param {[InitFragment<T>, number]} b second pair
|
24
28
|
* @returns {number} sort value
|
25
29
|
*/
|
26
30
|
const sortFragmentWithIndex = ([a, i], [b, j]) => {
|
@@ -32,15 +36,15 @@ const sortFragmentWithIndex = ([a, i], [b, j]) => {
|
|
32
36
|
};
|
33
37
|
|
34
38
|
/**
|
35
|
-
* @template
|
39
|
+
* @template GenerateContext
|
36
40
|
*/
|
37
41
|
class InitFragment {
|
38
42
|
/**
|
39
|
-
* @param {string|Source} content the source code that will be included as initialization code
|
43
|
+
* @param {string | Source | undefined} content the source code that will be included as initialization code
|
40
44
|
* @param {number} stage category of initialization code (contribute to order)
|
41
45
|
* @param {number} position position in the category (contribute to order)
|
42
46
|
* @param {string=} key unique key to avoid emitting the same initialization code twice
|
43
|
-
* @param {string|Source=} endContent the source code that will be included at the end of the module
|
47
|
+
* @param {string | Source=} endContent the source code that will be included at the end of the module
|
44
48
|
*/
|
45
49
|
constructor(content, stage, position, key, endContent) {
|
46
50
|
this.content = content;
|
@@ -51,21 +55,29 @@ class InitFragment {
|
|
51
55
|
}
|
52
56
|
|
53
57
|
/**
|
54
|
-
* @param {
|
55
|
-
* @returns {string|Source} the source code that will be included as initialization code
|
58
|
+
* @param {GenerateContext} context context
|
59
|
+
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
56
60
|
*/
|
57
61
|
getContent(context) {
|
58
62
|
return this.content;
|
59
63
|
}
|
60
64
|
|
61
65
|
/**
|
62
|
-
* @param {
|
66
|
+
* @param {GenerateContext} context context
|
63
67
|
* @returns {string|Source=} the source code that will be included at the end of the module
|
64
68
|
*/
|
65
69
|
getEndContent(context) {
|
66
70
|
return this.endContent;
|
67
71
|
}
|
68
72
|
|
73
|
+
/**
|
74
|
+
* @template Context
|
75
|
+
* @template T
|
76
|
+
* @param {Source} source sources
|
77
|
+
* @param {InitFragment<T>[]} initFragments init fragments
|
78
|
+
* @param {Context} context context
|
79
|
+
* @returns {Source} source
|
80
|
+
*/
|
69
81
|
static addToSource(source, initFragments, context) {
|
70
82
|
if (initFragments.length > 0) {
|
71
83
|
// Sort fragments by position. If 2 fragments have the same position,
|
@@ -77,7 +89,12 @@ class InitFragment {
|
|
77
89
|
// Deduplicate fragments. If a fragment has no key, it is always included.
|
78
90
|
const keyedFragments = new Map();
|
79
91
|
for (const [fragment] of sortedFragments) {
|
80
|
-
if (
|
92
|
+
if (
|
93
|
+
typeof (
|
94
|
+
/** @type {InitFragment<T> & { mergeAll?: (fragments: InitFragment<Context>[]) => InitFragment<Context>[] }} */
|
95
|
+
(fragment).mergeAll
|
96
|
+
) === "function"
|
97
|
+
) {
|
81
98
|
if (!fragment.key) {
|
82
99
|
throw new Error(
|
83
100
|
`InitFragment with mergeAll function must have a valid key: ${fragment.constructor.name}`
|
@@ -99,7 +116,7 @@ class InitFragment {
|
|
99
116
|
continue;
|
100
117
|
}
|
101
118
|
}
|
102
|
-
keyedFragments.set(fragment.key || Symbol(), fragment);
|
119
|
+
keyedFragments.set(fragment.key || Symbol("fragment key"), fragment);
|
103
120
|
}
|
104
121
|
|
105
122
|
const concatSource = new ConcatSource();
|
@@ -120,11 +137,13 @@ class InitFragment {
|
|
120
137
|
concatSource.add(content);
|
121
138
|
}
|
122
139
|
return concatSource;
|
123
|
-
} else {
|
124
|
-
return source;
|
125
140
|
}
|
141
|
+
return source;
|
126
142
|
}
|
127
143
|
|
144
|
+
/**
|
145
|
+
* @param {ObjectSerializerContext} context context
|
146
|
+
*/
|
128
147
|
serialize(context) {
|
129
148
|
const { write } = context;
|
130
149
|
|
@@ -135,6 +154,9 @@ class InitFragment {
|
|
135
154
|
write(this.endContent);
|
136
155
|
}
|
137
156
|
|
157
|
+
/**
|
158
|
+
* @param {ObjectDeserializerContext} context context
|
159
|
+
*/
|
138
160
|
deserialize(context) {
|
139
161
|
const { read } = context;
|
140
162
|
|
@@ -148,7 +170,9 @@ class InitFragment {
|
|
148
170
|
|
149
171
|
makeSerializable(InitFragment, "webpack/lib/InitFragment");
|
150
172
|
|
151
|
-
InitFragment.prototype.merge =
|
173
|
+
InitFragment.prototype.merge =
|
174
|
+
/** @type {TODO} */
|
175
|
+
(undefined);
|
152
176
|
|
153
177
|
InitFragment.STAGE_CONSTANTS = 10;
|
154
178
|
InitFragment.STAGE_ASYNC_BOUNDARY = 20;
|
@@ -5,11 +5,19 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
11
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
12
|
+
} = require("./ModuleTypeConstants");
|
8
13
|
const InnerGraph = require("./optimize/InnerGraph");
|
9
14
|
|
10
15
|
/** @typedef {import("./Compiler")} Compiler */
|
16
|
+
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
11
17
|
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
12
18
|
|
19
|
+
const PLUGIN_NAME = "JavascriptMetaInfoPlugin";
|
20
|
+
|
13
21
|
class JavascriptMetaInfoPlugin {
|
14
22
|
/**
|
15
23
|
* Apply the plugin
|
@@ -18,16 +26,19 @@ class JavascriptMetaInfoPlugin {
|
|
18
26
|
*/
|
19
27
|
apply(compiler) {
|
20
28
|
compiler.hooks.compilation.tap(
|
21
|
-
|
29
|
+
PLUGIN_NAME,
|
22
30
|
(compilation, { normalModuleFactory }) => {
|
23
31
|
/**
|
24
32
|
* @param {JavascriptParser} parser the parser
|
25
33
|
* @returns {void}
|
26
34
|
*/
|
27
35
|
const handler = parser => {
|
28
|
-
parser.hooks.call.for("eval").tap(
|
29
|
-
|
30
|
-
|
36
|
+
parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
|
37
|
+
const buildInfo =
|
38
|
+
/** @type {BuildInfo} */
|
39
|
+
(parser.state.module.buildInfo);
|
40
|
+
buildInfo.moduleConcatenationBailout = "eval()";
|
41
|
+
buildInfo.usingEval = true;
|
31
42
|
const currentSymbol = InnerGraph.getTopLevelSymbol(parser.state);
|
32
43
|
if (currentSymbol) {
|
33
44
|
InnerGraph.addUsage(parser.state, null, currentSymbol);
|
@@ -35,12 +46,13 @@ class JavascriptMetaInfoPlugin {
|
|
35
46
|
InnerGraph.bailout(parser.state);
|
36
47
|
}
|
37
48
|
});
|
38
|
-
parser.hooks.finish.tap(
|
39
|
-
|
40
|
-
|
49
|
+
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|
50
|
+
const buildInfo =
|
51
|
+
/** @type {BuildInfo} */
|
52
|
+
(parser.state.module.buildInfo);
|
53
|
+
let topLevelDeclarations = buildInfo.topLevelDeclarations;
|
41
54
|
if (topLevelDeclarations === undefined) {
|
42
|
-
topLevelDeclarations =
|
43
|
-
parser.state.module.buildInfo.topLevelDeclarations = new Set();
|
55
|
+
topLevelDeclarations = buildInfo.topLevelDeclarations = new Set();
|
44
56
|
}
|
45
57
|
for (const name of parser.scope.definitions.asSet()) {
|
46
58
|
const freeInfo = parser.getFreeInfoFromVariable(name);
|
@@ -52,14 +64,14 @@ class JavascriptMetaInfoPlugin {
|
|
52
64
|
};
|
53
65
|
|
54
66
|
normalModuleFactory.hooks.parser
|
55
|
-
.for(
|
56
|
-
.tap(
|
67
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
68
|
+
.tap(PLUGIN_NAME, handler);
|
57
69
|
normalModuleFactory.hooks.parser
|
58
|
-
.for(
|
59
|
-
.tap(
|
70
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
71
|
+
.tap(PLUGIN_NAME, handler);
|
60
72
|
normalModuleFactory.hooks.parser
|
61
|
-
.for(
|
62
|
-
.tap(
|
73
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
74
|
+
.tap(PLUGIN_NAME, handler);
|
63
75
|
}
|
64
76
|
);
|
65
77
|
}
|
package/lib/LibManifestPlugin.js
CHANGED
@@ -11,16 +11,32 @@ const { someInIterable } = require("./util/IterableHelpers");
|
|
11
11
|
const { compareModulesById } = require("./util/comparators");
|
12
12
|
const { dirname, mkdirp } = require("./util/fs");
|
13
13
|
|
14
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
14
15
|
/** @typedef {import("./Compiler")} Compiler */
|
16
|
+
/** @typedef {import("./Compiler").IntermediateFileSystem} IntermediateFileSystem */
|
17
|
+
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
15
18
|
|
16
19
|
/**
|
17
|
-
* @typedef {
|
20
|
+
* @typedef {object} ManifestModuleData
|
18
21
|
* @property {string | number} id
|
19
|
-
* @property {
|
20
|
-
* @property {boolean | string[]} exports
|
22
|
+
* @property {BuildMeta} buildMeta
|
23
|
+
* @property {boolean | string[] | undefined} exports
|
24
|
+
*/
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @typedef {object} LibManifestPluginOptions
|
28
|
+
* @property {string=} context Context of requests in the manifest file (defaults to the webpack context).
|
29
|
+
* @property {boolean=} entryOnly If true, only entry points will be exposed (default: true).
|
30
|
+
* @property {boolean=} format If true, manifest json file (output) will be formatted.
|
31
|
+
* @property {string=} name Name of the exposed dll function (external name, use value of 'output.library').
|
32
|
+
* @property {string} path Absolute path to the manifest json file (output).
|
33
|
+
* @property {string=} type Type of the dll bundle (external type, use value of 'output.libraryTarget').
|
21
34
|
*/
|
22
35
|
|
23
36
|
class LibManifestPlugin {
|
37
|
+
/**
|
38
|
+
* @param {LibManifestPluginOptions} options the options
|
39
|
+
*/
|
24
40
|
constructor(options) {
|
25
41
|
this.options = options;
|
26
42
|
}
|
@@ -32,10 +48,15 @@ class LibManifestPlugin {
|
|
32
48
|
*/
|
33
49
|
apply(compiler) {
|
34
50
|
compiler.hooks.emit.tapAsync(
|
35
|
-
|
51
|
+
{
|
52
|
+
name: "LibManifestPlugin",
|
53
|
+
stage: 110
|
54
|
+
},
|
36
55
|
(compilation, callback) => {
|
37
56
|
const moduleGraph = compilation.moduleGraph;
|
38
|
-
|
57
|
+
// store used paths to detect issue and output an error. #18200
|
58
|
+
const usedPaths = new Set();
|
59
|
+
asyncLib.each(
|
39
60
|
Array.from(compilation.chunks),
|
40
61
|
(chunk, callback) => {
|
41
62
|
if (!chunk.canBeInitial()) {
|
@@ -46,10 +67,16 @@ class LibManifestPlugin {
|
|
46
67
|
const targetPath = compilation.getPath(this.options.path, {
|
47
68
|
chunk
|
48
69
|
});
|
70
|
+
if (usedPaths.has(targetPath)) {
|
71
|
+
callback(new Error("each chunk must have a unique path"));
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
usedPaths.add(targetPath);
|
49
75
|
const name =
|
50
76
|
this.options.name &&
|
51
77
|
compilation.getPath(this.options.name, {
|
52
|
-
chunk
|
78
|
+
chunk,
|
79
|
+
contentHashType: "javascript"
|
53
80
|
});
|
54
81
|
const content = Object.create(null);
|
55
82
|
for (const module of chunkGraph.getOrderedChunkModulesIterable(
|
@@ -66,7 +93,9 @@ class LibManifestPlugin {
|
|
66
93
|
continue;
|
67
94
|
}
|
68
95
|
const ident = module.libIdent({
|
69
|
-
context:
|
96
|
+
context:
|
97
|
+
this.options.context ||
|
98
|
+
/** @type {string} */ (compiler.options.context),
|
70
99
|
associatedObjectForCache: compiler.root
|
71
100
|
});
|
72
101
|
if (ident) {
|
@@ -74,8 +103,8 @@ class LibManifestPlugin {
|
|
74
103
|
const providedExports = exportsInfo.getProvidedExports();
|
75
104
|
/** @type {ManifestModuleData} */
|
76
105
|
const data = {
|
77
|
-
id: chunkGraph.getModuleId(module),
|
78
|
-
buildMeta: module.buildMeta,
|
106
|
+
id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
|
107
|
+
buildMeta: /** @type {BuildMeta} */ (module.buildMeta),
|
79
108
|
exports: Array.isArray(providedExports)
|
80
109
|
? providedExports
|
81
110
|
: undefined
|
@@ -93,16 +122,16 @@ class LibManifestPlugin {
|
|
93
122
|
? JSON.stringify(manifest, null, 2)
|
94
123
|
: JSON.stringify(manifest);
|
95
124
|
const buffer = Buffer.from(manifestContent, "utf8");
|
125
|
+
const intermediateFileSystem =
|
126
|
+
/** @type {IntermediateFileSystem} */ (
|
127
|
+
compiler.intermediateFileSystem
|
128
|
+
);
|
96
129
|
mkdirp(
|
97
|
-
|
98
|
-
dirname(
|
130
|
+
intermediateFileSystem,
|
131
|
+
dirname(intermediateFileSystem, targetPath),
|
99
132
|
err => {
|
100
133
|
if (err) return callback(err);
|
101
|
-
|
102
|
-
targetPath,
|
103
|
-
buffer,
|
104
|
-
callback
|
105
|
-
);
|
134
|
+
intermediateFileSystem.writeFile(targetPath, buffer, callback);
|
106
135
|
}
|
107
136
|
);
|
108
137
|
},
|
@@ -11,6 +11,7 @@ const createSchemaValidation = require("./util/create-schema-validation");
|
|
11
11
|
|
12
12
|
/** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */
|
13
13
|
/** @typedef {import("./Compiler")} Compiler */
|
14
|
+
/** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
|
14
15
|
|
15
16
|
const validate = createSchemaValidation(
|
16
17
|
require("../schemas/plugins/LoaderOptionsPlugin.check.js"),
|
@@ -20,17 +21,26 @@ const validate = createSchemaValidation(
|
|
20
21
|
baseDataPath: "options"
|
21
22
|
}
|
22
23
|
);
|
24
|
+
|
23
25
|
class LoaderOptionsPlugin {
|
24
26
|
/**
|
25
|
-
* @param {LoaderOptionsPluginOptions} options options object
|
27
|
+
* @param {LoaderOptionsPluginOptions & MatchObject} options options object
|
26
28
|
*/
|
27
29
|
constructor(options = {}) {
|
28
30
|
validate(options);
|
31
|
+
// If no options are set then generate empty options object
|
29
32
|
if (typeof options !== "object") options = {};
|
30
33
|
if (!options.test) {
|
31
|
-
|
34
|
+
// This is mocking a RegExp object which always returns true
|
35
|
+
// TODO: Figure out how to do `as unknown as RegExp` for this line
|
36
|
+
// in JSDoc equivalent
|
37
|
+
/** @type {any} */
|
38
|
+
const defaultTrueMockRegExp = {
|
32
39
|
test: () => true
|
33
40
|
};
|
41
|
+
|
42
|
+
/** @type {RegExp} */
|
43
|
+
options.test = defaultTrueMockRegExp;
|
34
44
|
}
|
35
45
|
this.options = options;
|
36
46
|
}
|
@@ -52,7 +62,7 @@ class LoaderOptionsPlugin {
|
|
52
62
|
if (
|
53
63
|
ModuleFilenameHelpers.matchObject(
|
54
64
|
options,
|
55
|
-
i < 0 ? resource : resource.
|
65
|
+
i < 0 ? resource : resource.slice(0, i)
|
56
66
|
)
|
57
67
|
) {
|
58
68
|
for (const key of Object.keys(options)) {
|
package/lib/MainTemplate.js
CHANGED
@@ -10,6 +10,7 @@ const util = require("util");
|
|
10
10
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
11
11
|
const memoize = require("./util/memoize");
|
12
12
|
|
13
|
+
/** @typedef {import("tapable").Tap} Tap */
|
13
14
|
/** @typedef {import("webpack-sources").ConcatSource} ConcatSource */
|
14
15
|
/** @typedef {import("webpack-sources").Source} Source */
|
15
16
|
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
@@ -17,15 +18,24 @@ const memoize = require("./util/memoize");
|
|
17
18
|
/** @typedef {import("./Chunk")} Chunk */
|
18
19
|
/** @typedef {import("./Compilation")} Compilation */
|
19
20
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
21
|
+
/** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
|
20
22
|
/** @typedef {import("./Module")} Module} */
|
21
23
|
/** @typedef {import("./util/Hash")} Hash} */
|
22
24
|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates} */
|
23
25
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").RenderContext} RenderContext} */
|
26
|
+
/** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext} */
|
27
|
+
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkHashContext} ChunkHashContext} */
|
24
28
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate} */
|
25
29
|
/** @typedef {import("./ModuleGraph")} ModuleGraph} */
|
26
30
|
/** @typedef {import("./ChunkGraph")} ChunkGraph} */
|
27
31
|
/** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions} */
|
28
32
|
/** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry} */
|
33
|
+
/** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath} */
|
34
|
+
/** @typedef {import("./TemplatedPathPlugin").PathData} PathData} */
|
35
|
+
/**
|
36
|
+
* @template T
|
37
|
+
* @typedef {import("tapable").IfSet<T>} IfSet
|
38
|
+
*/
|
29
39
|
|
30
40
|
const getJavascriptModulesPlugin = memoize(() =>
|
31
41
|
require("./javascript/JavascriptModulesPlugin")
|
@@ -40,7 +50,6 @@ const getLoadScriptRuntimeModule = memoize(() =>
|
|
40
50
|
// TODO webpack 6 remove this class
|
41
51
|
class MainTemplate {
|
42
52
|
/**
|
43
|
-
*
|
44
53
|
* @param {OutputOptions} outputOptions output options for the MainTemplate
|
45
54
|
* @param {Compilation} compilation the compilation
|
46
55
|
*/
|
@@ -50,6 +59,11 @@ class MainTemplate {
|
|
50
59
|
this.hooks = Object.freeze({
|
51
60
|
renderManifest: {
|
52
61
|
tap: util.deprecate(
|
62
|
+
/**
|
63
|
+
* @template AdditionalOptions
|
64
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
65
|
+
* @param {function(RenderManifestEntry[], RenderManifestOptions): RenderManifestEntry[]} fn fn
|
66
|
+
*/
|
53
67
|
(options, fn) => {
|
54
68
|
compilation.hooks.renderManifest.tap(
|
55
69
|
options,
|
@@ -79,6 +93,11 @@ class MainTemplate {
|
|
79
93
|
},
|
80
94
|
require: {
|
81
95
|
tap: util.deprecate(
|
96
|
+
/**
|
97
|
+
* @template AdditionalOptions
|
98
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
99
|
+
* @param {function(string, RenderBootstrapContext): string} fn fn
|
100
|
+
*/
|
82
101
|
(options, fn) => {
|
83
102
|
getJavascriptModulesPlugin()
|
84
103
|
.getCompilationHooks(compilation)
|
@@ -111,6 +130,11 @@ class MainTemplate {
|
|
111
130
|
},
|
112
131
|
render: {
|
113
132
|
tap: util.deprecate(
|
133
|
+
/**
|
134
|
+
* @template AdditionalOptions
|
135
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
136
|
+
* @param {function(Source, Chunk, string | undefined, ModuleTemplate, DependencyTemplates): Source} fn fn
|
137
|
+
*/
|
114
138
|
(options, fn) => {
|
115
139
|
getJavascriptModulesPlugin()
|
116
140
|
.getCompilationHooks(compilation)
|
@@ -138,6 +162,11 @@ class MainTemplate {
|
|
138
162
|
},
|
139
163
|
renderWithEntry: {
|
140
164
|
tap: util.deprecate(
|
165
|
+
/**
|
166
|
+
* @template AdditionalOptions
|
167
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
168
|
+
* @param {function(Source, Chunk, string | undefined): Source} fn fn
|
169
|
+
*/
|
141
170
|
(options, fn) => {
|
142
171
|
getJavascriptModulesPlugin()
|
143
172
|
.getCompilationHooks(compilation)
|
@@ -159,6 +188,11 @@ class MainTemplate {
|
|
159
188
|
},
|
160
189
|
assetPath: {
|
161
190
|
tap: util.deprecate(
|
191
|
+
/**
|
192
|
+
* @template AdditionalOptions
|
193
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
194
|
+
* @param {function(string, object, AssetInfo | undefined): string} fn fn
|
195
|
+
*/
|
162
196
|
(options, fn) => {
|
163
197
|
compilation.hooks.assetPath.tap(options, fn);
|
164
198
|
},
|
@@ -166,15 +200,23 @@ class MainTemplate {
|
|
166
200
|
"DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
|
167
201
|
),
|
168
202
|
call: util.deprecate(
|
169
|
-
|
170
|
-
|
171
|
-
|
203
|
+
/**
|
204
|
+
* @param {TemplatePath} filename used to get asset path with hash
|
205
|
+
* @param {PathData} options context data
|
206
|
+
* @returns {string} interpolated path
|
207
|
+
*/
|
208
|
+
(filename, options) => compilation.getAssetPath(filename, options),
|
172
209
|
"MainTemplate.hooks.assetPath is deprecated (use Compilation.hooks.assetPath instead)",
|
173
210
|
"DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
|
174
211
|
)
|
175
212
|
},
|
176
213
|
hash: {
|
177
214
|
tap: util.deprecate(
|
215
|
+
/**
|
216
|
+
* @template AdditionalOptions
|
217
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
218
|
+
* @param {function(Hash): void} fn fn
|
219
|
+
*/
|
178
220
|
(options, fn) => {
|
179
221
|
compilation.hooks.fullHash.tap(options, fn);
|
180
222
|
},
|
@@ -184,6 +226,11 @@ class MainTemplate {
|
|
184
226
|
},
|
185
227
|
hashForChunk: {
|
186
228
|
tap: util.deprecate(
|
229
|
+
/**
|
230
|
+
* @template AdditionalOptions
|
231
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
232
|
+
* @param {function(Hash, Chunk): void} fn fn
|
233
|
+
*/
|
187
234
|
(options, fn) => {
|
188
235
|
getJavascriptModulesPlugin()
|
189
236
|
.getCompilationHooks(compilation)
|
@@ -259,7 +306,8 @@ class MainTemplate {
|
|
259
306
|
* @param {string} hash the hash
|
260
307
|
* @param {number=} length length of the hash
|
261
308
|
* @returns {string} generated code
|
262
|
-
*/
|
309
|
+
*/
|
310
|
+
(hash, length) => {
|
263
311
|
if (length) {
|
264
312
|
return `${RuntimeGlobals.getFullHash} ? ${
|
265
313
|
RuntimeGlobals.getFullHash
|
@@ -273,31 +321,36 @@ class MainTemplate {
|
|
273
321
|
|
274
322
|
this.getPublicPath = util.deprecate(
|
275
323
|
/**
|
276
|
-
*
|
277
|
-
* @
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
compilation.outputOptions.publicPath,
|
324
|
+
* @param {PathData} options context data
|
325
|
+
* @returns {string} interpolated path
|
326
|
+
*/ options =>
|
327
|
+
compilation.getAssetPath(
|
328
|
+
/** @type {string} */
|
329
|
+
(compilation.outputOptions.publicPath),
|
282
330
|
options
|
283
|
-
)
|
284
|
-
},
|
331
|
+
),
|
285
332
|
"MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)",
|
286
333
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH"
|
287
334
|
);
|
288
335
|
|
289
336
|
this.getAssetPath = util.deprecate(
|
290
|
-
|
291
|
-
|
292
|
-
|
337
|
+
/**
|
338
|
+
* @param {TemplatePath} path used to get asset path with hash
|
339
|
+
* @param {PathData} options context data
|
340
|
+
* @returns {string} interpolated path
|
341
|
+
*/
|
342
|
+
(path, options) => compilation.getAssetPath(path, options),
|
293
343
|
"MainTemplate.getAssetPath is deprecated (use Compilation.getAssetPath instead)",
|
294
344
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH"
|
295
345
|
);
|
296
346
|
|
297
347
|
this.getAssetPathWithInfo = util.deprecate(
|
298
|
-
|
299
|
-
|
300
|
-
|
348
|
+
/**
|
349
|
+
* @param {TemplatePath} path used to get asset path with hash
|
350
|
+
* @param {PathData} options context data
|
351
|
+
* @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
|
352
|
+
*/
|
353
|
+
(path, options) => compilation.getAssetPathWithInfo(path, options),
|
301
354
|
"MainTemplate.getAssetPathWithInfo is deprecated (use Compilation.getAssetPath instead)",
|
302
355
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH_WITH_INFO"
|
303
356
|
);
|
@@ -306,8 +359,8 @@ class MainTemplate {
|
|
306
359
|
|
307
360
|
Object.defineProperty(MainTemplate.prototype, "requireFn", {
|
308
361
|
get: util.deprecate(
|
309
|
-
() =>
|
310
|
-
|
362
|
+
() => RuntimeGlobals.require,
|
363
|
+
`MainTemplate.requireFn is deprecated (use "${RuntimeGlobals.require}")`,
|
311
364
|
"DEP_WEBPACK_MAIN_TEMPLATE_REQUIRE_FN"
|
312
365
|
)
|
313
366
|
});
|