webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/Compiler.js
CHANGED
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
const parseJson = require("json-parse-even-better-errors");
|
|
9
9
|
const asyncLib = require("neo-async");
|
|
10
10
|
const {
|
|
11
|
-
SyncHook,
|
|
12
|
-
SyncBailHook,
|
|
13
11
|
AsyncParallelHook,
|
|
14
|
-
AsyncSeriesHook
|
|
12
|
+
AsyncSeriesHook,
|
|
13
|
+
SyncBailHook,
|
|
14
|
+
SyncHook
|
|
15
15
|
} = require("tapable");
|
|
16
16
|
const { SizeOnlySource } = require("webpack-sources");
|
|
17
|
-
const webpack = require(".");
|
|
18
17
|
const Cache = require("./Cache");
|
|
19
18
|
const CacheFacade = require("./CacheFacade");
|
|
20
19
|
const ChunkGraph = require("./ChunkGraph");
|
|
@@ -29,36 +28,40 @@ const Stats = require("./Stats");
|
|
|
29
28
|
const Watching = require("./Watching");
|
|
30
29
|
const WebpackError = require("./WebpackError");
|
|
31
30
|
const { Logger } = require("./logging/Logger");
|
|
32
|
-
const {
|
|
31
|
+
const { dirname, join, mkdirp } = require("./util/fs");
|
|
33
32
|
const { makePathsRelative } = require("./util/identifier");
|
|
34
33
|
const { isSourceEqual } = require("./util/source");
|
|
34
|
+
const webpack = require(".");
|
|
35
35
|
|
|
36
36
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
37
37
|
/** @typedef {import("../declarations/WebpackOptions").EntryNormalized} Entry */
|
|
38
38
|
/** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
|
|
39
39
|
/** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
|
|
40
40
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
|
41
|
-
/** @typedef {import("../declarations/WebpackOptions").
|
|
41
|
+
/** @typedef {import("../declarations/WebpackOptions").Plugins} Plugins */
|
|
42
|
+
/** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
|
|
42
43
|
/** @typedef {import("./Chunk")} Chunk */
|
|
43
|
-
/** @typedef {import("./Compilation").References} References */
|
|
44
44
|
/** @typedef {import("./Dependency")} Dependency */
|
|
45
|
-
/** @typedef {import("./
|
|
45
|
+
/** @typedef {import("./HotModuleReplacementPlugin").ChunkHashes} ChunkHashes */
|
|
46
|
+
/** @typedef {import("./HotModuleReplacementPlugin").ChunkModuleHashes} ChunkModuleHashes */
|
|
47
|
+
/** @typedef {import("./HotModuleReplacementPlugin").ChunkModuleIds} ChunkModuleIds */
|
|
48
|
+
/** @typedef {import("./HotModuleReplacementPlugin").ChunkRuntime} ChunkRuntime */
|
|
49
|
+
/** @typedef {import("./HotModuleReplacementPlugin").FullHashChunkModuleHashes} FullHashChunkModuleHashes */
|
|
50
|
+
/** @typedef {import("./HotModuleReplacementPlugin").HotIndex} HotIndex */
|
|
46
51
|
/** @typedef {import("./Module")} Module */
|
|
47
52
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
53
|
+
/** @typedef {import("./RecordIdsPlugin").RecordsChunks} RecordsChunks */
|
|
54
|
+
/** @typedef {import("./RecordIdsPlugin").RecordsModules} RecordsModules */
|
|
48
55
|
/** @typedef {import("./config/target").PlatformTargetProperties} PlatformTargetProperties */
|
|
49
56
|
/** @typedef {import("./logging/createConsoleLogger").LoggingFunction} LoggingFunction */
|
|
57
|
+
/** @typedef {import("./optimize/AggressiveSplittingPlugin").SplitData} SplitData */
|
|
50
58
|
/** @typedef {import("./util/fs").IStats} IStats */
|
|
51
59
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
|
52
60
|
/** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
53
61
|
/** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
|
|
62
|
+
/** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
|
|
54
63
|
/** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
|
|
55
64
|
|
|
56
|
-
/**
|
|
57
|
-
* @template {any[]} T
|
|
58
|
-
* @template V
|
|
59
|
-
* @typedef {import("./util/WeakTupleMap")<T, V>} WeakTupleMap
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
65
|
/**
|
|
63
66
|
* @typedef {object} CompilationParams
|
|
64
67
|
* @property {NormalModuleFactory} normalModuleFactory
|
|
@@ -67,25 +70,36 @@ const { isSourceEqual } = require("./util/source");
|
|
|
67
70
|
|
|
68
71
|
/**
|
|
69
72
|
* @template T
|
|
70
|
-
* @
|
|
71
|
-
* @
|
|
72
|
-
* @param {T=} result
|
|
73
|
+
* @template [R=void]
|
|
74
|
+
* @typedef {import("./webpack").Callback<T, R>} Callback
|
|
73
75
|
*/
|
|
74
76
|
|
|
75
|
-
/**
|
|
76
|
-
* @template T
|
|
77
|
-
* @callback Callback
|
|
78
|
-
* @param {(Error | null)=} err
|
|
79
|
-
* @param {T=} result
|
|
80
|
-
*/
|
|
77
|
+
/** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
|
|
81
78
|
|
|
82
79
|
/**
|
|
83
80
|
* @callback RunAsChildCallback
|
|
84
81
|
* @param {Error | null} err
|
|
85
82
|
* @param {Chunk[]=} entries
|
|
86
83
|
* @param {Compilation=} compilation
|
|
84
|
+
* @returns {void}
|
|
87
85
|
*/
|
|
88
86
|
|
|
87
|
+
/**
|
|
88
|
+
* @typedef {object} KnownRecords
|
|
89
|
+
* @property {SplitData[]=} aggressiveSplits
|
|
90
|
+
* @property {RecordsChunks=} chunks
|
|
91
|
+
* @property {RecordsModules=} modules
|
|
92
|
+
* @property {string=} hash
|
|
93
|
+
* @property {HotIndex=} hotIndex
|
|
94
|
+
* @property {FullHashChunkModuleHashes=} fullHashChunkModuleHashes
|
|
95
|
+
* @property {ChunkModuleHashes=} chunkModuleHashes
|
|
96
|
+
* @property {ChunkHashes=} chunkHashes
|
|
97
|
+
* @property {ChunkRuntime=} chunkRuntime
|
|
98
|
+
* @property {ChunkModuleIds=} chunkModuleIds
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/** @typedef {KnownRecords & Record<string, KnownRecords[]> & Record<string, EXPECTED_ANY>} Records */
|
|
102
|
+
|
|
89
103
|
/**
|
|
90
104
|
* @typedef {object} AssetEmittedInfo
|
|
91
105
|
* @property {Buffer} content
|
|
@@ -96,15 +110,18 @@ const { isSourceEqual } = require("./util/source");
|
|
|
96
110
|
*/
|
|
97
111
|
|
|
98
112
|
/** @typedef {{ sizeOnlySource: SizeOnlySource | undefined, writtenTo: Map<string, number> }} CacheEntry */
|
|
99
|
-
/** @typedef {{ path: string, source: Source, size: number | undefined, waiting: ({ cacheEntry:
|
|
113
|
+
/** @typedef {{ path: string, source: Source, size: number | undefined, waiting: ({ cacheEntry: CacheEntry, file: string }[] | undefined) }} SimilarEntry */
|
|
100
114
|
|
|
101
|
-
/** @typedef {
|
|
115
|
+
/** @typedef {WeakMap<Dependency, Module>} WeakReferences */
|
|
116
|
+
/** @typedef {import("./util/WeakTupleMap")<EXPECTED_ANY[], EXPECTED_ANY>} MemCache */
|
|
117
|
+
/** @typedef {{ buildInfo: BuildInfo, references: WeakReferences | undefined, memCache: MemCache }} ModuleMemCachesItem */
|
|
102
118
|
|
|
103
119
|
/**
|
|
104
|
-
* @
|
|
120
|
+
* @template T
|
|
121
|
+
* @param {T[]} array an array
|
|
105
122
|
* @returns {boolean} true, if the array is sorted
|
|
106
123
|
*/
|
|
107
|
-
const isSorted = array => {
|
|
124
|
+
const isSorted = (array) => {
|
|
108
125
|
for (let i = 1; i < array.length; i++) {
|
|
109
126
|
if (array[i - 1] > array[i]) return false;
|
|
110
127
|
}
|
|
@@ -112,13 +129,13 @@ const isSorted = array => {
|
|
|
112
129
|
};
|
|
113
130
|
|
|
114
131
|
/**
|
|
115
|
-
* @
|
|
116
|
-
* @param {
|
|
117
|
-
* @
|
|
132
|
+
* @template {object} T
|
|
133
|
+
* @param {T} obj an object
|
|
134
|
+
* @param {(keyof T)[]} keys the keys of the object
|
|
135
|
+
* @returns {T} the object with properties sorted by property name
|
|
118
136
|
*/
|
|
119
137
|
const sortObject = (obj, keys) => {
|
|
120
|
-
/** @type {
|
|
121
|
-
const o = {};
|
|
138
|
+
const o = /** @type {T} */ ({});
|
|
122
139
|
for (const k of keys.sort()) {
|
|
123
140
|
o[k] = obj[k];
|
|
124
141
|
}
|
|
@@ -133,7 +150,7 @@ const sortObject = (obj, keys) => {
|
|
|
133
150
|
const includesHash = (filename, hashes) => {
|
|
134
151
|
if (!hashes) return false;
|
|
135
152
|
if (Array.isArray(hashes)) {
|
|
136
|
-
return hashes.some(hash => filename.includes(hash));
|
|
153
|
+
return hashes.some((hash) => filename.includes(hash));
|
|
137
154
|
}
|
|
138
155
|
return filename.includes(hashes);
|
|
139
156
|
};
|
|
@@ -203,7 +220,7 @@ class Compiler {
|
|
|
203
220
|
/** @type {AsyncSeriesHook<[]>} */
|
|
204
221
|
shutdown: new AsyncSeriesHook([]),
|
|
205
222
|
|
|
206
|
-
/** @type {SyncBailHook<[string, string,
|
|
223
|
+
/** @type {SyncBailHook<[string, string, EXPECTED_ANY[] | undefined], true | void>} */
|
|
207
224
|
infrastructureLog: new SyncBailHook(["origin", "type", "args"]),
|
|
208
225
|
|
|
209
226
|
// TODO the following hooks are weirdly located here
|
|
@@ -242,11 +259,11 @@ class Compiler {
|
|
|
242
259
|
/** @type {WatchFileSystem | null} */
|
|
243
260
|
this.watchFileSystem = null;
|
|
244
261
|
|
|
245
|
-
/** @type {string|null} */
|
|
262
|
+
/** @type {string | null} */
|
|
246
263
|
this.recordsInputPath = null;
|
|
247
|
-
/** @type {string|null} */
|
|
264
|
+
/** @type {string | null} */
|
|
248
265
|
this.recordsOutputPath = null;
|
|
249
|
-
/** @type {
|
|
266
|
+
/** @type {Records} */
|
|
250
267
|
this.records = {};
|
|
251
268
|
/** @type {Set<string | RegExp>} */
|
|
252
269
|
this.managedPaths = new Set();
|
|
@@ -259,9 +276,9 @@ class Compiler {
|
|
|
259
276
|
this.modifiedFiles = undefined;
|
|
260
277
|
/** @type {ReadonlySet<string> | undefined} */
|
|
261
278
|
this.removedFiles = undefined;
|
|
262
|
-
/** @type {
|
|
279
|
+
/** @type {TimeInfoEntries | undefined} */
|
|
263
280
|
this.fileTimestamps = undefined;
|
|
264
|
-
/** @type {
|
|
281
|
+
/** @type {TimeInfoEntries | undefined} */
|
|
265
282
|
this.contextTimestamps = undefined;
|
|
266
283
|
/** @type {number | undefined} */
|
|
267
284
|
this.fsStartTime = undefined;
|
|
@@ -341,7 +358,7 @@ class Compiler {
|
|
|
341
358
|
}
|
|
342
359
|
|
|
343
360
|
/**
|
|
344
|
-
* @param {string | (
|
|
361
|
+
* @param {string | (() => string)} name name of the logger, or function called once to get the logger name
|
|
345
362
|
* @returns {Logger} a logger with that name
|
|
346
363
|
*/
|
|
347
364
|
getInfrastructureLogger(name) {
|
|
@@ -367,7 +384,7 @@ class Compiler {
|
|
|
367
384
|
this.infrastructureLogger(name, type, args);
|
|
368
385
|
}
|
|
369
386
|
},
|
|
370
|
-
childName => {
|
|
387
|
+
(childName) => {
|
|
371
388
|
if (typeof name === "function") {
|
|
372
389
|
if (typeof childName === "function") {
|
|
373
390
|
return this.getInfrastructureLogger(() => {
|
|
@@ -457,12 +474,13 @@ class Compiler {
|
|
|
457
474
|
|
|
458
475
|
/**
|
|
459
476
|
* @param {WatchOptions} watchOptions the watcher's options
|
|
460
|
-
* @param {
|
|
461
|
-
* @returns {Watching} a compiler watcher
|
|
477
|
+
* @param {Callback<Stats>} handler signals when the call finishes
|
|
478
|
+
* @returns {Watching | undefined} a compiler watcher
|
|
462
479
|
*/
|
|
463
480
|
watch(watchOptions, handler) {
|
|
464
481
|
if (this.running) {
|
|
465
|
-
|
|
482
|
+
handler(new ConcurrentCompilationError());
|
|
483
|
+
return;
|
|
466
484
|
}
|
|
467
485
|
|
|
468
486
|
this.running = true;
|
|
@@ -472,12 +490,13 @@ class Compiler {
|
|
|
472
490
|
}
|
|
473
491
|
|
|
474
492
|
/**
|
|
475
|
-
* @param {
|
|
493
|
+
* @param {Callback<Stats>} callback signals when the call finishes
|
|
476
494
|
* @returns {void}
|
|
477
495
|
*/
|
|
478
496
|
run(callback) {
|
|
479
497
|
if (this.running) {
|
|
480
|
-
|
|
498
|
+
callback(new ConcurrentCompilationError());
|
|
499
|
+
return;
|
|
481
500
|
}
|
|
482
501
|
|
|
483
502
|
/** @type {Logger | undefined} */
|
|
@@ -519,7 +538,7 @@ class Compiler {
|
|
|
519
538
|
compilation.startTime = startTime;
|
|
520
539
|
compilation.endTime = Date.now();
|
|
521
540
|
const stats = new Stats(compilation);
|
|
522
|
-
this.hooks.done.callAsync(stats, err => {
|
|
541
|
+
this.hooks.done.callAsync(stats, (err) => {
|
|
523
542
|
if (err) return finalCallback(err);
|
|
524
543
|
return finalCallback(null, stats);
|
|
525
544
|
});
|
|
@@ -529,7 +548,7 @@ class Compiler {
|
|
|
529
548
|
process.nextTick(() => {
|
|
530
549
|
logger = compilation.getLogger("webpack.Compiler");
|
|
531
550
|
logger.time("emitAssets");
|
|
532
|
-
this.emitAssets(compilation, err => {
|
|
551
|
+
this.emitAssets(compilation, (err) => {
|
|
533
552
|
/** @type {Logger} */
|
|
534
553
|
(logger).timeEnd("emitAssets");
|
|
535
554
|
if (err) return finalCallback(err);
|
|
@@ -542,12 +561,12 @@ class Compiler {
|
|
|
542
561
|
/** @type {Logger} */
|
|
543
562
|
(logger).time("done hook");
|
|
544
563
|
const stats = new Stats(compilation);
|
|
545
|
-
this.hooks.done.callAsync(stats, err => {
|
|
564
|
+
this.hooks.done.callAsync(stats, (err) => {
|
|
546
565
|
/** @type {Logger} */
|
|
547
566
|
(logger).timeEnd("done hook");
|
|
548
567
|
if (err) return finalCallback(err);
|
|
549
568
|
|
|
550
|
-
this.hooks.additionalPass.callAsync(err => {
|
|
569
|
+
this.hooks.additionalPass.callAsync((err) => {
|
|
551
570
|
if (err) return finalCallback(err);
|
|
552
571
|
this.compile(onCompiled);
|
|
553
572
|
});
|
|
@@ -557,7 +576,7 @@ class Compiler {
|
|
|
557
576
|
|
|
558
577
|
/** @type {Logger} */
|
|
559
578
|
(logger).time("emitRecords");
|
|
560
|
-
this.emitRecords(err => {
|
|
579
|
+
this.emitRecords((err) => {
|
|
561
580
|
/** @type {Logger} */
|
|
562
581
|
(logger).timeEnd("emitRecords");
|
|
563
582
|
if (err) return finalCallback(err);
|
|
@@ -567,13 +586,13 @@ class Compiler {
|
|
|
567
586
|
/** @type {Logger} */
|
|
568
587
|
(logger).time("done hook");
|
|
569
588
|
const stats = new Stats(compilation);
|
|
570
|
-
this.hooks.done.callAsync(stats, err => {
|
|
589
|
+
this.hooks.done.callAsync(stats, (err) => {
|
|
571
590
|
/** @type {Logger} */
|
|
572
591
|
(logger).timeEnd("done hook");
|
|
573
592
|
if (err) return finalCallback(err);
|
|
574
593
|
this.cache.storeBuildDependencies(
|
|
575
594
|
compilation.buildDependencies,
|
|
576
|
-
err => {
|
|
595
|
+
(err) => {
|
|
577
596
|
if (err) return finalCallback(err);
|
|
578
597
|
return finalCallback(null, stats);
|
|
579
598
|
}
|
|
@@ -585,13 +604,13 @@ class Compiler {
|
|
|
585
604
|
};
|
|
586
605
|
|
|
587
606
|
const run = () => {
|
|
588
|
-
this.hooks.beforeRun.callAsync(this, err => {
|
|
607
|
+
this.hooks.beforeRun.callAsync(this, (err) => {
|
|
589
608
|
if (err) return finalCallback(err);
|
|
590
609
|
|
|
591
|
-
this.hooks.run.callAsync(this, err => {
|
|
610
|
+
this.hooks.run.callAsync(this, (err) => {
|
|
592
611
|
if (err) return finalCallback(err);
|
|
593
612
|
|
|
594
|
-
this.readRecords(err => {
|
|
613
|
+
this.readRecords((err) => {
|
|
595
614
|
if (err) return finalCallback(err);
|
|
596
615
|
|
|
597
616
|
this.compile(onCompiled);
|
|
@@ -601,7 +620,7 @@ class Compiler {
|
|
|
601
620
|
};
|
|
602
621
|
|
|
603
622
|
if (this.idle) {
|
|
604
|
-
this.cache.endIdle(err => {
|
|
623
|
+
this.cache.endIdle((err) => {
|
|
605
624
|
if (err) return finalCallback(err);
|
|
606
625
|
|
|
607
626
|
this.idle = false;
|
|
@@ -629,7 +648,8 @@ class Compiler {
|
|
|
629
648
|
callback(err, entries, compilation);
|
|
630
649
|
} catch (runAsChildErr) {
|
|
631
650
|
const err = new WebpackError(
|
|
632
|
-
`compiler.runAsChild callback error: ${runAsChildErr}
|
|
651
|
+
`compiler.runAsChild callback error: ${runAsChildErr}`,
|
|
652
|
+
{ cause: runAsChildErr }
|
|
633
653
|
);
|
|
634
654
|
err.details = /** @type {Error} */ (runAsChildErr).stack;
|
|
635
655
|
/** @type {Compilation} */
|
|
@@ -673,7 +693,7 @@ class Compiler {
|
|
|
673
693
|
|
|
674
694
|
/**
|
|
675
695
|
* @param {Compilation} compilation the compilation
|
|
676
|
-
* @param {
|
|
696
|
+
* @param {ErrorCallback} callback signals when the assets are emitted
|
|
677
697
|
* @returns {void}
|
|
678
698
|
*/
|
|
679
699
|
emitAssets(compilation, callback) {
|
|
@@ -684,7 +704,7 @@ class Compiler {
|
|
|
684
704
|
* @param {Error=} err error
|
|
685
705
|
* @returns {void}
|
|
686
706
|
*/
|
|
687
|
-
const emitFiles = err => {
|
|
707
|
+
const emitFiles = (err) => {
|
|
688
708
|
if (err) return callback(err);
|
|
689
709
|
|
|
690
710
|
const assets = compilation.getAssets();
|
|
@@ -699,9 +719,9 @@ class Compiler {
|
|
|
699
719
|
({ name: file, source, info }, callback) => {
|
|
700
720
|
let targetFile = file;
|
|
701
721
|
let immutable = info.immutable;
|
|
702
|
-
const
|
|
703
|
-
if (
|
|
704
|
-
targetFile = targetFile.slice(0,
|
|
722
|
+
const queryOrHashStringIdx = targetFile.search(/[?#]/);
|
|
723
|
+
if (queryOrHashStringIdx >= 0) {
|
|
724
|
+
targetFile = targetFile.slice(0, queryOrHashStringIdx);
|
|
705
725
|
// We may remove the hash, which is in the query string
|
|
706
726
|
// So we recheck if the file is immutable
|
|
707
727
|
// This doesn't cover all cases, but immutable is only a performance optimization anyway
|
|
@@ -717,7 +737,7 @@ class Compiler {
|
|
|
717
737
|
* @param {Error=} err error
|
|
718
738
|
* @returns {void}
|
|
719
739
|
*/
|
|
720
|
-
const writeOut = err => {
|
|
740
|
+
const writeOut = (err) => {
|
|
721
741
|
if (err) return callback(err);
|
|
722
742
|
const targetPath = join(
|
|
723
743
|
/** @type {OutputFileSystem} */
|
|
@@ -816,9 +836,9 @@ ${other}`);
|
|
|
816
836
|
* @param {Buffer} content content to be written
|
|
817
837
|
* @returns {void}
|
|
818
838
|
*/
|
|
819
|
-
const doWrite = content => {
|
|
839
|
+
const doWrite = (content) => {
|
|
820
840
|
/** @type {OutputFileSystem} */
|
|
821
|
-
(this.outputFileSystem).writeFile(targetPath, content, err => {
|
|
841
|
+
(this.outputFileSystem).writeFile(targetPath, content, (err) => {
|
|
822
842
|
if (err) return callback(err);
|
|
823
843
|
|
|
824
844
|
// information marker that the asset has been emitted
|
|
@@ -849,7 +869,7 @@ ${other}`);
|
|
|
849
869
|
/**
|
|
850
870
|
* @param {number} size size
|
|
851
871
|
*/
|
|
852
|
-
const updateWithReplacementSource = size => {
|
|
872
|
+
const updateWithReplacementSource = (size) => {
|
|
853
873
|
updateFileWithReplacementSource(
|
|
854
874
|
file,
|
|
855
875
|
/** @type {CacheEntry} */ (cacheEntry),
|
|
@@ -893,7 +913,7 @@ ${other}`);
|
|
|
893
913
|
* @param {IStats} stats stats
|
|
894
914
|
* @returns {void}
|
|
895
915
|
*/
|
|
896
|
-
const processExistingFile = stats => {
|
|
916
|
+
const processExistingFile = (stats) => {
|
|
897
917
|
// skip emitting if it's already there and an immutable file
|
|
898
918
|
if (immutable) {
|
|
899
919
|
updateWithReplacementSource(/** @type {number} */ (stats.size));
|
|
@@ -993,7 +1013,7 @@ ${other}`);
|
|
|
993
1013
|
writeOut();
|
|
994
1014
|
}
|
|
995
1015
|
},
|
|
996
|
-
err => {
|
|
1016
|
+
(err) => {
|
|
997
1017
|
// Clear map to free up memory
|
|
998
1018
|
caseInsensitiveMap.clear();
|
|
999
1019
|
if (err) {
|
|
@@ -1003,16 +1023,16 @@ ${other}`);
|
|
|
1003
1023
|
|
|
1004
1024
|
this._assetEmittingPreviousFiles = allTargetPaths;
|
|
1005
1025
|
|
|
1006
|
-
this.hooks.afterEmit.callAsync(compilation, err => {
|
|
1026
|
+
this.hooks.afterEmit.callAsync(compilation, (err) => {
|
|
1007
1027
|
if (err) return callback(err);
|
|
1008
1028
|
|
|
1009
|
-
return callback();
|
|
1029
|
+
return callback(null);
|
|
1010
1030
|
});
|
|
1011
1031
|
}
|
|
1012
1032
|
);
|
|
1013
1033
|
};
|
|
1014
1034
|
|
|
1015
|
-
this.hooks.emit.callAsync(compilation, err => {
|
|
1035
|
+
this.hooks.emit.callAsync(compilation, (err) => {
|
|
1016
1036
|
if (err) return callback(err);
|
|
1017
1037
|
outputPath = compilation.getPath(this.outputPath, {});
|
|
1018
1038
|
mkdirp(
|
|
@@ -1024,7 +1044,7 @@ ${other}`);
|
|
|
1024
1044
|
}
|
|
1025
1045
|
|
|
1026
1046
|
/**
|
|
1027
|
-
* @param {
|
|
1047
|
+
* @param {ErrorCallback} callback signals when the call finishes
|
|
1028
1048
|
* @returns {void}
|
|
1029
1049
|
*/
|
|
1030
1050
|
emitRecords(callback) {
|
|
@@ -1032,10 +1052,10 @@ ${other}`);
|
|
|
1032
1052
|
if (this.recordsOutputPath) {
|
|
1033
1053
|
asyncLib.parallel(
|
|
1034
1054
|
[
|
|
1035
|
-
cb => this.hooks.emitRecords.callAsync(cb),
|
|
1055
|
+
(cb) => this.hooks.emitRecords.callAsync(cb),
|
|
1036
1056
|
this._emitRecords.bind(this)
|
|
1037
1057
|
],
|
|
1038
|
-
err => callback(err)
|
|
1058
|
+
(err) => callback(err)
|
|
1039
1059
|
);
|
|
1040
1060
|
} else {
|
|
1041
1061
|
this.hooks.emitRecords.callAsync(callback);
|
|
@@ -1043,12 +1063,12 @@ ${other}`);
|
|
|
1043
1063
|
} else if (this.recordsOutputPath) {
|
|
1044
1064
|
this._emitRecords(callback);
|
|
1045
1065
|
} else {
|
|
1046
|
-
callback();
|
|
1066
|
+
callback(null);
|
|
1047
1067
|
}
|
|
1048
1068
|
}
|
|
1049
1069
|
|
|
1050
1070
|
/**
|
|
1051
|
-
* @param {
|
|
1071
|
+
* @param {ErrorCallback} callback signals when the call finishes
|
|
1052
1072
|
* @returns {void}
|
|
1053
1073
|
*/
|
|
1054
1074
|
_emitRecords(callback) {
|
|
@@ -1078,8 +1098,10 @@ ${other}`);
|
|
|
1078
1098
|
};
|
|
1079
1099
|
|
|
1080
1100
|
const recordsOutputPathDirectory = dirname(
|
|
1081
|
-
/** @type {OutputFileSystem} */
|
|
1082
|
-
|
|
1101
|
+
/** @type {OutputFileSystem} */
|
|
1102
|
+
(this.outputFileSystem),
|
|
1103
|
+
/** @type {string} */
|
|
1104
|
+
(this.recordsOutputPath)
|
|
1083
1105
|
);
|
|
1084
1106
|
if (!recordsOutputPathDirectory) {
|
|
1085
1107
|
return writeFile();
|
|
@@ -1087,7 +1109,7 @@ ${other}`);
|
|
|
1087
1109
|
mkdirp(
|
|
1088
1110
|
/** @type {OutputFileSystem} */ (this.outputFileSystem),
|
|
1089
1111
|
recordsOutputPathDirectory,
|
|
1090
|
-
err => {
|
|
1112
|
+
(err) => {
|
|
1091
1113
|
if (err) return callback(err);
|
|
1092
1114
|
writeFile();
|
|
1093
1115
|
}
|
|
@@ -1095,7 +1117,7 @@ ${other}`);
|
|
|
1095
1117
|
}
|
|
1096
1118
|
|
|
1097
1119
|
/**
|
|
1098
|
-
* @param {
|
|
1120
|
+
* @param {ErrorCallback} callback signals when the call finishes
|
|
1099
1121
|
* @returns {void}
|
|
1100
1122
|
*/
|
|
1101
1123
|
readRecords(callback) {
|
|
@@ -1103,10 +1125,10 @@ ${other}`);
|
|
|
1103
1125
|
if (this.recordsInputPath) {
|
|
1104
1126
|
asyncLib.parallel(
|
|
1105
1127
|
[
|
|
1106
|
-
cb => this.hooks.readRecords.callAsync(cb),
|
|
1128
|
+
(cb) => this.hooks.readRecords.callAsync(cb),
|
|
1107
1129
|
this._readRecords.bind(this)
|
|
1108
1130
|
],
|
|
1109
|
-
err => callback(err)
|
|
1131
|
+
(err) => callback(err)
|
|
1110
1132
|
);
|
|
1111
1133
|
} else {
|
|
1112
1134
|
this.records = {};
|
|
@@ -1116,34 +1138,35 @@ ${other}`);
|
|
|
1116
1138
|
this._readRecords(callback);
|
|
1117
1139
|
} else {
|
|
1118
1140
|
this.records = {};
|
|
1119
|
-
callback();
|
|
1141
|
+
callback(null);
|
|
1120
1142
|
}
|
|
1121
1143
|
}
|
|
1122
1144
|
|
|
1123
1145
|
/**
|
|
1124
|
-
* @param {
|
|
1146
|
+
* @param {ErrorCallback} callback signals when the call finishes
|
|
1125
1147
|
* @returns {void}
|
|
1126
1148
|
*/
|
|
1127
1149
|
_readRecords(callback) {
|
|
1128
1150
|
if (!this.recordsInputPath) {
|
|
1129
1151
|
this.records = {};
|
|
1130
|
-
return callback();
|
|
1152
|
+
return callback(null);
|
|
1131
1153
|
}
|
|
1132
1154
|
/** @type {InputFileSystem} */
|
|
1133
|
-
(this.inputFileSystem).stat(this.recordsInputPath, err => {
|
|
1155
|
+
(this.inputFileSystem).stat(this.recordsInputPath, (err) => {
|
|
1134
1156
|
// It doesn't exist
|
|
1135
1157
|
// We can ignore this.
|
|
1136
|
-
if (err) return callback();
|
|
1158
|
+
if (err) return callback(null);
|
|
1137
1159
|
|
|
1138
1160
|
/** @type {InputFileSystem} */
|
|
1139
1161
|
(this.inputFileSystem).readFile(
|
|
1140
|
-
/** @type {string} */
|
|
1162
|
+
/** @type {string} */
|
|
1163
|
+
(this.recordsInputPath),
|
|
1141
1164
|
(err, content) => {
|
|
1142
1165
|
if (err) return callback(err);
|
|
1143
1166
|
|
|
1144
1167
|
try {
|
|
1145
1168
|
this.records = parseJson(
|
|
1146
|
-
/** @type {Buffer} */ (content).toString("
|
|
1169
|
+
/** @type {Buffer} */ (content).toString("utf8")
|
|
1147
1170
|
);
|
|
1148
1171
|
} catch (parseErr) {
|
|
1149
1172
|
return callback(
|
|
@@ -1153,7 +1176,7 @@ ${other}`);
|
|
|
1153
1176
|
);
|
|
1154
1177
|
}
|
|
1155
1178
|
|
|
1156
|
-
return callback();
|
|
1179
|
+
return callback(null);
|
|
1157
1180
|
}
|
|
1158
1181
|
);
|
|
1159
1182
|
});
|
|
@@ -1164,7 +1187,7 @@ ${other}`);
|
|
|
1164
1187
|
* @param {string} compilerName the compiler's name
|
|
1165
1188
|
* @param {number} compilerIndex the compiler's index
|
|
1166
1189
|
* @param {Partial<OutputOptions>=} outputOptions the output options
|
|
1167
|
-
* @param {
|
|
1190
|
+
* @param {Plugins=} plugins the plugins to apply
|
|
1168
1191
|
* @returns {Compiler} a child compiler
|
|
1169
1192
|
*/
|
|
1170
1193
|
createChildCompiler(
|
|
@@ -1204,7 +1227,9 @@ ${other}`);
|
|
|
1204
1227
|
this.records[relativeCompilerName] = [];
|
|
1205
1228
|
}
|
|
1206
1229
|
if (this.records[relativeCompilerName][compilerIndex]) {
|
|
1207
|
-
childCompiler.records =
|
|
1230
|
+
childCompiler.records =
|
|
1231
|
+
/** @type {Records} */
|
|
1232
|
+
(this.records[relativeCompilerName][compilerIndex]);
|
|
1208
1233
|
} else {
|
|
1209
1234
|
this.records[relativeCompilerName].push((childCompiler.records = {}));
|
|
1210
1235
|
}
|
|
@@ -1213,7 +1238,10 @@ ${other}`);
|
|
|
1213
1238
|
childCompiler.root = this.root;
|
|
1214
1239
|
if (Array.isArray(plugins)) {
|
|
1215
1240
|
for (const plugin of plugins) {
|
|
1216
|
-
if (plugin) {
|
|
1241
|
+
if (typeof plugin === "function") {
|
|
1242
|
+
/** @type {WebpackPluginFunction} */
|
|
1243
|
+
(plugin).call(childCompiler, childCompiler);
|
|
1244
|
+
} else if (plugin) {
|
|
1217
1245
|
plugin.apply(childCompiler);
|
|
1218
1246
|
}
|
|
1219
1247
|
}
|
|
@@ -1234,11 +1262,12 @@ ${other}`);
|
|
|
1234
1262
|
childCompiler.hooks[
|
|
1235
1263
|
/** @type {keyof Compiler["hooks"]} */
|
|
1236
1264
|
(name)
|
|
1237
|
-
].taps =
|
|
1238
|
-
this.hooks[
|
|
1265
|
+
].taps = [
|
|
1266
|
+
...this.hooks[
|
|
1239
1267
|
/** @type {keyof Compiler["hooks"]} */
|
|
1240
1268
|
(name)
|
|
1241
|
-
].taps
|
|
1269
|
+
].taps
|
|
1270
|
+
];
|
|
1242
1271
|
}
|
|
1243
1272
|
}
|
|
1244
1273
|
|
|
@@ -1284,8 +1313,7 @@ ${other}`);
|
|
|
1284
1313
|
fs: /** @type {InputFileSystem} */ (this.inputFileSystem),
|
|
1285
1314
|
resolverFactory: this.resolverFactory,
|
|
1286
1315
|
options: this.options.module,
|
|
1287
|
-
associatedObjectForCache: this.root
|
|
1288
|
-
layers: this.options.experiments.layers
|
|
1316
|
+
associatedObjectForCache: this.root
|
|
1289
1317
|
});
|
|
1290
1318
|
this._lastNormalModuleFactory = normalModuleFactory;
|
|
1291
1319
|
this.hooks.normalModuleFactory.call(normalModuleFactory);
|
|
@@ -1307,12 +1335,12 @@ ${other}`);
|
|
|
1307
1335
|
}
|
|
1308
1336
|
|
|
1309
1337
|
/**
|
|
1310
|
-
* @param {
|
|
1338
|
+
* @param {Callback<Compilation>} callback signals when the compilation finishes
|
|
1311
1339
|
* @returns {void}
|
|
1312
1340
|
*/
|
|
1313
1341
|
compile(callback) {
|
|
1314
1342
|
const params = this.newCompilationParams();
|
|
1315
|
-
this.hooks.beforeCompile.callAsync(params, err => {
|
|
1343
|
+
this.hooks.beforeCompile.callAsync(params, (err) => {
|
|
1316
1344
|
if (err) return callback(err);
|
|
1317
1345
|
|
|
1318
1346
|
this.hooks.compile.call(params);
|
|
@@ -1322,28 +1350,28 @@ ${other}`);
|
|
|
1322
1350
|
const logger = compilation.getLogger("webpack.Compiler");
|
|
1323
1351
|
|
|
1324
1352
|
logger.time("make hook");
|
|
1325
|
-
this.hooks.make.callAsync(compilation, err => {
|
|
1353
|
+
this.hooks.make.callAsync(compilation, (err) => {
|
|
1326
1354
|
logger.timeEnd("make hook");
|
|
1327
1355
|
if (err) return callback(err);
|
|
1328
1356
|
|
|
1329
1357
|
logger.time("finish make hook");
|
|
1330
|
-
this.hooks.finishMake.callAsync(compilation, err => {
|
|
1358
|
+
this.hooks.finishMake.callAsync(compilation, (err) => {
|
|
1331
1359
|
logger.timeEnd("finish make hook");
|
|
1332
1360
|
if (err) return callback(err);
|
|
1333
1361
|
|
|
1334
1362
|
process.nextTick(() => {
|
|
1335
1363
|
logger.time("finish compilation");
|
|
1336
|
-
compilation.finish(err => {
|
|
1364
|
+
compilation.finish((err) => {
|
|
1337
1365
|
logger.timeEnd("finish compilation");
|
|
1338
1366
|
if (err) return callback(err);
|
|
1339
1367
|
|
|
1340
1368
|
logger.time("seal compilation");
|
|
1341
|
-
compilation.seal(err => {
|
|
1369
|
+
compilation.seal((err) => {
|
|
1342
1370
|
logger.timeEnd("seal compilation");
|
|
1343
1371
|
if (err) return callback(err);
|
|
1344
1372
|
|
|
1345
1373
|
logger.time("afterCompile hook");
|
|
1346
|
-
this.hooks.afterCompile.callAsync(compilation, err => {
|
|
1374
|
+
this.hooks.afterCompile.callAsync(compilation, (err) => {
|
|
1347
1375
|
logger.timeEnd("afterCompile hook");
|
|
1348
1376
|
if (err) return callback(err);
|
|
1349
1377
|
|
|
@@ -1358,18 +1386,18 @@ ${other}`);
|
|
|
1358
1386
|
}
|
|
1359
1387
|
|
|
1360
1388
|
/**
|
|
1361
|
-
* @param {
|
|
1389
|
+
* @param {ErrorCallback} callback signals when the compiler closes
|
|
1362
1390
|
* @returns {void}
|
|
1363
1391
|
*/
|
|
1364
1392
|
close(callback) {
|
|
1365
1393
|
if (this.watching) {
|
|
1366
1394
|
// When there is still an active watching, close this first
|
|
1367
|
-
this.watching.close(
|
|
1395
|
+
this.watching.close((_err) => {
|
|
1368
1396
|
this.close(callback);
|
|
1369
1397
|
});
|
|
1370
1398
|
return;
|
|
1371
1399
|
}
|
|
1372
|
-
this.hooks.shutdown.callAsync(err => {
|
|
1400
|
+
this.hooks.shutdown.callAsync((err) => {
|
|
1373
1401
|
if (err) return callback(err);
|
|
1374
1402
|
// Get rid of reference to last compilation to avoid leaking memory
|
|
1375
1403
|
// We can't run this._cleanupLastCompilation() as the Stats to this compilation
|