webpack 5.109.1 → 5.110.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 +6 -0
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +26 -17
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +700 -412
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +131 -46
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +101 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +27 -68
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +32 -47
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +19 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +212 -153
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +332 -169
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +11 -7
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +187 -92
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +59 -10
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +276 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +177 -41
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +9579 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +27 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +276 -76
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +5557 -1155
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +64 -164
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +286 -110
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +37 -15
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +985 -470
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -78
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +11 -6
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +54 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -6
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +23 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4010 -739
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
package/lib/Compilation.js
CHANGED
|
@@ -11,6 +11,7 @@ const {
|
|
|
11
11
|
AsyncParallelHook,
|
|
12
12
|
AsyncSeriesBailHook,
|
|
13
13
|
AsyncSeriesHook,
|
|
14
|
+
AsyncSeriesWaterfallHook,
|
|
14
15
|
HookMap,
|
|
15
16
|
SyncBailHook,
|
|
16
17
|
SyncHook,
|
|
@@ -39,19 +40,10 @@ const RuntimeGlobals = require("./RuntimeGlobals");
|
|
|
39
40
|
const RuntimeTemplate = require("./RuntimeTemplate");
|
|
40
41
|
const Stats = require("./Stats");
|
|
41
42
|
const buildChunkGraph = require("./buildChunkGraph");
|
|
42
|
-
const BuildCycleError = require("./errors/BuildCycleError");
|
|
43
|
-
const ChunkRenderError = require("./errors/ChunkRenderError");
|
|
44
|
-
const CodeGenerationError = require("./errors/CodeGenerationError");
|
|
45
43
|
const {
|
|
46
44
|
makeWebpackError,
|
|
47
45
|
tryRunOrWebpackError
|
|
48
46
|
} = require("./errors/HookWebpackError");
|
|
49
|
-
const ModuleDependencyError = require("./errors/ModuleDependencyError");
|
|
50
|
-
const ModuleDependencyWarning = require("./errors/ModuleDependencyWarning");
|
|
51
|
-
const ModuleHashingError = require("./errors/ModuleHashingError");
|
|
52
|
-
const ModuleNotFoundError = require("./errors/ModuleNotFoundError");
|
|
53
|
-
const ModuleRestoreError = require("./errors/ModuleRestoreError");
|
|
54
|
-
const ModuleStoreError = require("./errors/ModuleStoreError");
|
|
55
47
|
const WebpackError = require("./errors/WebpackError");
|
|
56
48
|
const { LogType, Logger } = require("./logging/Logger");
|
|
57
49
|
const StatsFactory = require("./stats/StatsFactory");
|
|
@@ -63,11 +55,10 @@ const { getOrInsert } = require("./util/MapHelpers");
|
|
|
63
55
|
const WeakTupleMap = require("./util/WeakTupleMap");
|
|
64
56
|
const { cachedCleverMerge } = require("./util/cleverMerge");
|
|
65
57
|
const {
|
|
58
|
+
compareErrors,
|
|
66
59
|
compareIds,
|
|
67
|
-
compareLocations,
|
|
68
60
|
compareModulesByIdentifier,
|
|
69
61
|
compareSelect,
|
|
70
|
-
compareStringsNumeric,
|
|
71
62
|
concatComparators
|
|
72
63
|
} = require("./util/comparators");
|
|
73
64
|
const createHash = require("./util/createHash");
|
|
@@ -76,62 +67,124 @@ const {
|
|
|
76
67
|
createFakeHook,
|
|
77
68
|
soonFrozenObjectDeprecation
|
|
78
69
|
} = require("./util/deprecation");
|
|
70
|
+
const memoize = require("./util/memoize");
|
|
79
71
|
const processAsyncTree = require("./util/processAsyncTree");
|
|
80
72
|
const { getRuntimeKey } = require("./util/runtime");
|
|
81
73
|
const { isSourceEqual } = require("./util/source");
|
|
82
74
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
75
|
+
const getModuleStoreError = memoize(() => require("./errors/ModuleStoreError"));
|
|
76
|
+
|
|
77
|
+
const getModuleRestoreError = memoize(() =>
|
|
78
|
+
require("./errors/ModuleRestoreError")
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const getModuleNotFoundError = memoize(() =>
|
|
82
|
+
require("./errors/ModuleNotFoundError")
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const getModuleHashingError = memoize(() =>
|
|
86
|
+
require("./errors/ModuleHashingError")
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
const getModuleDependencyWarning = memoize(() =>
|
|
90
|
+
require("./errors/ModuleDependencyWarning")
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const getModuleDependencyError = memoize(() =>
|
|
94
|
+
require("./errors/ModuleDependencyError")
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const getCodeGenerationError = memoize(() =>
|
|
98
|
+
require("./errors/CodeGenerationError")
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
const getChunkRenderError = memoize(() => require("./errors/ChunkRenderError"));
|
|
102
|
+
|
|
103
|
+
const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
|
|
104
|
+
|
|
105
|
+
/** @import { Source } from "webpack-sources" */
|
|
106
|
+
/**
|
|
107
|
+
* @import {
|
|
108
|
+
* OutputNormalized as OutputOptions,
|
|
109
|
+
* HashFunction,
|
|
110
|
+
* HashDigest,
|
|
111
|
+
* HashDigestLength,
|
|
112
|
+
* StatsOptions,
|
|
113
|
+
* Plugins,
|
|
114
|
+
* ResolveOptions
|
|
115
|
+
* } from "../declarations/WebpackOptions"
|
|
116
|
+
*/
|
|
117
|
+
/**
|
|
118
|
+
* @import {
|
|
119
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions,
|
|
120
|
+
* OutputNormalizedWithDefaults as OutputOptionsWithDefaults
|
|
121
|
+
* } from "./config/defaults"
|
|
122
|
+
*/
|
|
123
|
+
/** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
|
|
124
|
+
/** @import Cache from "./Cache" */
|
|
125
|
+
/** @import CacheFacade from "./CacheFacade" */
|
|
126
|
+
/** @import { ChunkName, ChunkId } from "./Chunk" */
|
|
127
|
+
/** @import { ChunkGroupOptions } from "./ChunkGroup" */
|
|
128
|
+
/**
|
|
129
|
+
* @import Compiler, {
|
|
130
|
+
* CompilationParams,
|
|
131
|
+
* MemCache,
|
|
132
|
+
* WeakReferences,
|
|
133
|
+
* ModuleMemCachesItem,
|
|
134
|
+
* Records
|
|
135
|
+
* } from "./Compiler"
|
|
136
|
+
*/
|
|
137
|
+
/** @import DependenciesBlock from "./DependenciesBlock" */
|
|
138
|
+
/** @import { DependencyLocation, ReferencedExports } from "./Dependency" */
|
|
107
139
|
/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
|
|
108
|
-
/**
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
/** @
|
|
140
|
+
/**
|
|
141
|
+
* @import {
|
|
142
|
+
* NameForCondition,
|
|
143
|
+
* BuildInfo,
|
|
144
|
+
* ValueCacheVersions,
|
|
145
|
+
* RuntimeRequirements,
|
|
146
|
+
* SourceTypes,
|
|
147
|
+
* SourceType,
|
|
148
|
+
* FactoryMeta,
|
|
149
|
+
* CodeGenerationResult
|
|
150
|
+
* } from "./Module"
|
|
151
|
+
*/
|
|
152
|
+
/**
|
|
153
|
+
* @import NormalModule, {
|
|
154
|
+
* NormalModuleCompilationHooks,
|
|
155
|
+
* AnyLoaderContext,
|
|
156
|
+
* ParserOptions,
|
|
157
|
+
* GeneratorOptions
|
|
158
|
+
* } from "./NormalModule"
|
|
159
|
+
*/
|
|
160
|
+
/**
|
|
161
|
+
* @import ModuleFactory, {
|
|
162
|
+
* ModuleFactoryCreateDataContextInfo,
|
|
163
|
+
* ModuleFactoryResult
|
|
164
|
+
* } from "./ModuleFactory"
|
|
165
|
+
*/
|
|
166
|
+
/** @import { ModuleId } from "./ChunkGraph" */
|
|
167
|
+
/** @import ModuleGraphConnection from "./ModuleGraphConnection" */
|
|
168
|
+
/** @import RequestShortener from "./RequestShortener" */
|
|
169
|
+
/** @import RuntimeModule from "./RuntimeModule" */
|
|
170
|
+
/** @import { RenderManifestEntry, RenderManifestOptions } from "./Template" */
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* One language's source embedded in another's output.
|
|
174
|
+
* @typedef {object} EmbeddedSourceInfo
|
|
175
|
+
* @property {SourceType} type the embedded source's type, e.g. `"css"` / `"html"`
|
|
176
|
+
* @property {SourceType} hostType the type of the source it is embedded in, e.g. `"javascript"`
|
|
177
|
+
* @property {Module} module the module being generated
|
|
178
|
+
* @property {string=} as which of that language's productions this is, where more than one can be embedded — a `style=""` holds `"block-contents"`, an inline `<style>` a whole `"stylesheet"`. Absent where the language has only one
|
|
179
|
+
*/
|
|
180
|
+
/**
|
|
181
|
+
* @import {
|
|
182
|
+
* StatsAsset,
|
|
183
|
+
* StatsError,
|
|
184
|
+
* StatsModule
|
|
185
|
+
* } from "./stats/DefaultStatsFactoryPlugin"
|
|
186
|
+
*/
|
|
187
|
+
/** @import Hash from "./util/Hash" */
|
|
135
188
|
|
|
136
189
|
/**
|
|
137
190
|
* Defines the shared type used by this module.
|
|
@@ -144,8 +197,8 @@ const { isSourceEqual } = require("./util/source");
|
|
|
144
197
|
* @template T
|
|
145
198
|
* @typedef {import("./util/deprecation").FakeHook<T>} FakeHook<T>
|
|
146
199
|
*/
|
|
147
|
-
/** @
|
|
148
|
-
/** @
|
|
200
|
+
/** @import { RuntimeSpec } from "./util/runtime" */
|
|
201
|
+
/** @import { InputFileSystem } from "./util/fs" */
|
|
149
202
|
|
|
150
203
|
/**
|
|
151
204
|
* Defines the callback callback.
|
|
@@ -276,7 +329,7 @@ const { isSourceEqual } = require("./util/source");
|
|
|
276
329
|
* @property {CodeGenerationResult} codeGenerationResult
|
|
277
330
|
*/
|
|
278
331
|
|
|
279
|
-
/** @typedef {((id: string) => ExecuteModuleExports) & { i?: ((options: ExecuteOptions) => void)[], c?: Record<string, ExecuteModuleObject
|
|
332
|
+
/** @typedef {((id: string) => ExecuteModuleExports) & { i?: ((options: ExecuteOptions) => void)[], c?: Record<string, ExecuteModuleObject>, p?: string }} WebpackRequire */
|
|
280
333
|
|
|
281
334
|
/**
|
|
282
335
|
* Defines the execute options type used by this module.
|
|
@@ -523,20 +576,6 @@ const byNameOrHash = concatComparators(
|
|
|
523
576
|
compareSelect((c) => c.fullHash, compareIds)
|
|
524
577
|
);
|
|
525
578
|
|
|
526
|
-
const byMessage = compareSelect(
|
|
527
|
-
(err) => `${err.message}`,
|
|
528
|
-
compareStringsNumeric
|
|
529
|
-
);
|
|
530
|
-
|
|
531
|
-
const byModule = compareSelect(
|
|
532
|
-
(err) => (err.module && err.module.identifier()) || "",
|
|
533
|
-
compareStringsNumeric
|
|
534
|
-
);
|
|
535
|
-
|
|
536
|
-
const byLocation = compareSelect((err) => err.loc, compareLocations);
|
|
537
|
-
|
|
538
|
-
const compareErrors = concatComparators(byModule, byLocation, byMessage);
|
|
539
|
-
|
|
540
579
|
/**
|
|
541
580
|
* Defines the known unsafe cache data type used by this module.
|
|
542
581
|
* @typedef {object} KnownUnsafeCacheData
|
|
@@ -594,6 +633,7 @@ const reduceAffectType = (connections) => {
|
|
|
594
633
|
|
|
595
634
|
/** @typedef {{ id: ModuleId, modules?: Map<Module, ModuleId>, blocks?: (ChunkId | null)[], sourceTypes?: SourceTypes }} References */
|
|
596
635
|
/** @typedef {Map<Module, WeakTupleMap<EXPECTED_ANY[], EXPECTED_ANY>>} ModuleMemCaches */
|
|
636
|
+
/** @typedef {{ chunk: Chunk, load: () => Promise<EXPECTED_ANY>, create: (loaded: EXPECTED_ANY) => RuntimeModule, chunkGraph: ChunkGraph }} PendingRuntimeModule */
|
|
597
637
|
|
|
598
638
|
class Compilation {
|
|
599
639
|
/**
|
|
@@ -884,9 +924,15 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
884
924
|
"runtime"
|
|
885
925
|
]),
|
|
886
926
|
|
|
887
|
-
/**
|
|
927
|
+
/**
|
|
928
|
+
* @type {SyncHook<[ExecuteModuleArgument, ExecuteModuleContext]>}
|
|
929
|
+
* @since 5.32.0
|
|
930
|
+
*/
|
|
888
931
|
executeModule: new SyncHook(["options", "context"]),
|
|
889
|
-
/**
|
|
932
|
+
/**
|
|
933
|
+
* @type {AsyncParallelHook<[ExecuteModuleArgument, ExecuteModuleContext]>}
|
|
934
|
+
* @since 5.33.0
|
|
935
|
+
*/
|
|
890
936
|
prepareModuleExecution: new AsyncParallelHook(["options", "context"]),
|
|
891
937
|
|
|
892
938
|
/** @type {AsyncSeriesHook<[Iterable<Module>]>} */
|
|
@@ -1090,7 +1136,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1090
1136
|
|
|
1091
1137
|
processAssets: processAssetsHook,
|
|
1092
1138
|
afterProcessAssets: afterProcessAssetsHook,
|
|
1093
|
-
/**
|
|
1139
|
+
/**
|
|
1140
|
+
* @type {AsyncSeriesHook<[CompilationAssets]>}
|
|
1141
|
+
* @since 5.8.0
|
|
1142
|
+
*/
|
|
1094
1143
|
processAdditionalAssets: new AsyncSeriesHook(["assets"]),
|
|
1095
1144
|
|
|
1096
1145
|
/** @type {SyncBailHook<[], boolean | void>} */
|
|
@@ -1101,6 +1150,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1101
1150
|
/** @type {SyncWaterfallHook<[RenderManifestEntry[], RenderManifestOptions]>} */
|
|
1102
1151
|
renderManifest: new SyncWaterfallHook(["result", "options"]),
|
|
1103
1152
|
|
|
1153
|
+
/**
|
|
1154
|
+
* Called with source written in one language that a module emits inside
|
|
1155
|
+
* another — CSS or HTML reaching the bundle as a JavaScript string
|
|
1156
|
+
* literal today — before it is embedded; return the (possibly
|
|
1157
|
+
* transformed) source, e.g. a minified one. `info.type` says which
|
|
1158
|
+
* language it is, so one tap serves every pair; no asset carries this
|
|
1159
|
+
* source, so an asset-level minimizer cannot reach it.
|
|
1160
|
+
* @type {AsyncSeriesWaterfallHook<[Source, EmbeddedSourceInfo]>}
|
|
1161
|
+
* @since 5.110.0
|
|
1162
|
+
*/
|
|
1163
|
+
renderEmbeddedSource: new AsyncSeriesWaterfallHook(["source", "info"]),
|
|
1164
|
+
/**
|
|
1165
|
+
* Called while hashing a module that embeds such a source. Module hashes
|
|
1166
|
+
* are taken before code generation, so a `renderEmbeddedSource` tap must
|
|
1167
|
+
* write whatever it varies on into the hash, or the codegen cache
|
|
1168
|
+
* replays output from before its options changed.
|
|
1169
|
+
* @type {SyncHook<[Module, Hash]>}
|
|
1170
|
+
* @since 5.110.0
|
|
1171
|
+
*/
|
|
1172
|
+
embeddedSourceHash: new SyncHook(["module", "hash"]),
|
|
1173
|
+
|
|
1104
1174
|
/** @type {SyncHook<[Hash]>} */
|
|
1105
1175
|
fullHash: new SyncHook(["hash"]),
|
|
1106
1176
|
/** @type {SyncHook<[Chunk, Hash, ChunkHashContext]>} */
|
|
@@ -1231,6 +1301,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1231
1301
|
);
|
|
1232
1302
|
/** @type {CodeGenerationResults | undefined} */
|
|
1233
1303
|
this.codeGenerationResults = undefined;
|
|
1304
|
+
/**
|
|
1305
|
+
* What `renderEmbeddedSource` returned, by module and by language pair and
|
|
1306
|
+
* text. Never shared between modules: a returned source may carry a map,
|
|
1307
|
+
* which names the module it came from.
|
|
1308
|
+
* @type {Map<Module, Map<string, Source>>}
|
|
1309
|
+
* @private
|
|
1310
|
+
*/
|
|
1311
|
+
this._embeddedSources = new Map();
|
|
1312
|
+
/**
|
|
1313
|
+
* Embedded source seen this pass that the hook has not been run over yet.
|
|
1314
|
+
* @type {Map<Module, Map<string, { source: Source, info: EmbeddedSourceInfo, jobModule: Module }>>}
|
|
1315
|
+
* @private
|
|
1316
|
+
*/
|
|
1317
|
+
this._pendingEmbeddedSources = new Map();
|
|
1318
|
+
/**
|
|
1319
|
+
* The module whose code generation is currently running — the outer one
|
|
1320
|
+
* when a generator runs nested, as `ConcatenatedModule` does.
|
|
1321
|
+
* @type {Module | undefined}
|
|
1322
|
+
* @private
|
|
1323
|
+
*/
|
|
1324
|
+
this._generatingModule = undefined;
|
|
1234
1325
|
|
|
1235
1326
|
/** @type {AsyncQueue<Module, Module, Module>} */
|
|
1236
1327
|
this.processDependenciesQueue = new AsyncQueue({
|
|
@@ -1323,6 +1414,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1323
1414
|
this.errors = [];
|
|
1324
1415
|
/** @type {Error[]} */
|
|
1325
1416
|
this.warnings = [];
|
|
1417
|
+
// Hints reported with `performance.hints: "stats"` — surfaced in stats
|
|
1418
|
+
// only, so they neither fail the build nor count as warnings.
|
|
1419
|
+
/** @type {Error[]} */
|
|
1420
|
+
this.hints = [];
|
|
1326
1421
|
/** @type {Compilation[]} */
|
|
1327
1422
|
this.children = [];
|
|
1328
1423
|
/** @type {Map<string, LogEntry[]>} */
|
|
@@ -1387,6 +1482,8 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1387
1482
|
this._assetsCache = this.getCache("Compilation/assets");
|
|
1388
1483
|
/** @type {CacheFacade} */
|
|
1389
1484
|
this._codeGenerationCache = this.getCache("Compilation/codeGeneration");
|
|
1485
|
+
/** @type {PendingRuntimeModule[] | undefined} */
|
|
1486
|
+
this._pendingRuntimeModules = undefined;
|
|
1390
1487
|
|
|
1391
1488
|
const unsafeCache = options.module.unsafeCache;
|
|
1392
1489
|
/** @type {boolean} */
|
|
@@ -1629,7 +1726,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1629
1726
|
}
|
|
1630
1727
|
|
|
1631
1728
|
this._modulesCache.get(identifier, null, (err, cacheModule) => {
|
|
1632
|
-
if (err) return callback(new
|
|
1729
|
+
if (err) return callback(new (getModuleRestoreError())(module, err));
|
|
1633
1730
|
|
|
1634
1731
|
if (currentProfile !== undefined) {
|
|
1635
1732
|
currentProfile.markRestoringEnd();
|
|
@@ -1745,7 +1842,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
1745
1842
|
module,
|
|
1746
1843
|
/** @type {WebpackError} */ (err)
|
|
1747
1844
|
);
|
|
1748
|
-
return callback(new
|
|
1845
|
+
return callback(new (getModuleStoreError())(module, err));
|
|
1749
1846
|
}
|
|
1750
1847
|
this.hooks.succeedModule.call(module);
|
|
1751
1848
|
return callback();
|
|
@@ -2249,7 +2346,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
2249
2346
|
}
|
|
2250
2347
|
}
|
|
2251
2348
|
if (err) {
|
|
2252
|
-
const notFoundError = new
|
|
2349
|
+
const notFoundError = new (getModuleNotFoundError())(
|
|
2253
2350
|
originModule,
|
|
2254
2351
|
err,
|
|
2255
2352
|
/** @type {DependencyLocation} */
|
|
@@ -2508,7 +2605,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
|
|
|
2508
2605
|
if (blockReasons !== undefined) {
|
|
2509
2606
|
for (const m of blockReasons) {
|
|
2510
2607
|
if (m === module) {
|
|
2511
|
-
return callback(new
|
|
2608
|
+
return callback(new (getBuildCycleError())(module));
|
|
2512
2609
|
}
|
|
2513
2610
|
set.add(m);
|
|
2514
2611
|
}
|
|
@@ -3779,100 +3876,105 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
3779
3876
|
this.logger.time("runtime requirements");
|
|
3780
3877
|
this.hooks.beforeRuntimeRequirements.call();
|
|
3781
3878
|
this.processRuntimeRequirements();
|
|
3782
|
-
this.
|
|
3783
|
-
this.logger.timeEnd("runtime requirements");
|
|
3784
|
-
|
|
3785
|
-
this.logger.time("hashing");
|
|
3786
|
-
this.hooks.beforeHash.call();
|
|
3787
|
-
const codeGenerationJobs = this.createHash();
|
|
3788
|
-
this.hooks.afterHash.call();
|
|
3789
|
-
this.logger.timeEnd("hashing");
|
|
3790
|
-
|
|
3791
|
-
this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
|
|
3879
|
+
this._attachPendingRuntimeModules((err) => {
|
|
3792
3880
|
if (err) {
|
|
3793
3881
|
return finalCallback(err);
|
|
3794
3882
|
}
|
|
3883
|
+
this.hooks.afterRuntimeRequirements.call();
|
|
3884
|
+
this.logger.timeEnd("runtime requirements");
|
|
3795
3885
|
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
);
|
|
3802
|
-
this.logger.timeEnd("record hash");
|
|
3803
|
-
}
|
|
3886
|
+
this.logger.time("hashing");
|
|
3887
|
+
this.hooks.beforeHash.call();
|
|
3888
|
+
const codeGenerationJobs = this.createHash();
|
|
3889
|
+
this.hooks.afterHash.call();
|
|
3890
|
+
this.logger.timeEnd("hashing");
|
|
3804
3891
|
|
|
3805
|
-
this.
|
|
3806
|
-
|
|
3892
|
+
this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
|
|
3893
|
+
if (err) {
|
|
3894
|
+
return finalCallback(err);
|
|
3895
|
+
}
|
|
3807
3896
|
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3897
|
+
if (shouldRecord) {
|
|
3898
|
+
this.logger.time("record hash");
|
|
3899
|
+
this.hooks.recordHash.call(
|
|
3900
|
+
/** @type {Records} */
|
|
3901
|
+
(this.records)
|
|
3902
|
+
);
|
|
3903
|
+
this.logger.timeEnd("record hash");
|
|
3904
|
+
}
|
|
3811
3905
|
|
|
3812
|
-
|
|
3813
|
-
this.
|
|
3814
|
-
this.hooks.processAssets.callAsync(this.assets, (err) => {
|
|
3815
|
-
if (err) {
|
|
3816
|
-
return finalCallback(
|
|
3817
|
-
makeWebpackError(err, "Compilation.hooks.processAssets")
|
|
3818
|
-
);
|
|
3819
|
-
}
|
|
3820
|
-
this.hooks.afterProcessAssets.call(this.assets);
|
|
3821
|
-
this.logger.timeEnd("process assets");
|
|
3822
|
-
this.assets =
|
|
3823
|
-
/** @type {CompilationAssets} */
|
|
3824
|
-
(
|
|
3825
|
-
this._backCompat
|
|
3826
|
-
? soonFrozenObjectDeprecation(
|
|
3827
|
-
this.assets,
|
|
3828
|
-
"Compilation.assets",
|
|
3829
|
-
"DEP_WEBPACK_COMPILATION_ASSETS",
|
|
3830
|
-
`BREAKING CHANGE: No more changes should happen to Compilation.assets after sealing the Compilation.
|
|
3831
|
-
Do changes to assets earlier, e. g. in Compilation.hooks.processAssets.
|
|
3832
|
-
Make sure to select an appropriate stage from Compilation.PROCESS_ASSETS_STAGE_*.`
|
|
3833
|
-
)
|
|
3834
|
-
: Object.freeze(this.assets)
|
|
3835
|
-
);
|
|
3906
|
+
this.logger.time("module assets");
|
|
3907
|
+
this.clearAssets();
|
|
3836
3908
|
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
this,
|
|
3841
|
-
/** @type {Records} */
|
|
3842
|
-
(this.records)
|
|
3843
|
-
);
|
|
3844
|
-
}
|
|
3909
|
+
this.hooks.beforeModuleAssets.call();
|
|
3910
|
+
this.createModuleAssets();
|
|
3911
|
+
this.logger.timeEnd("module assets");
|
|
3845
3912
|
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
}
|
|
3850
|
-
return this.hooks.afterSeal.callAsync((err) => {
|
|
3913
|
+
const cont = () => {
|
|
3914
|
+
this.logger.time("process assets");
|
|
3915
|
+
this.hooks.processAssets.callAsync(this.assets, (err) => {
|
|
3851
3916
|
if (err) {
|
|
3852
3917
|
return finalCallback(
|
|
3853
|
-
makeWebpackError(err, "Compilation.hooks.
|
|
3918
|
+
makeWebpackError(err, "Compilation.hooks.processAssets")
|
|
3919
|
+
);
|
|
3920
|
+
}
|
|
3921
|
+
this.hooks.afterProcessAssets.call(this.assets);
|
|
3922
|
+
this.logger.timeEnd("process assets");
|
|
3923
|
+
this.assets =
|
|
3924
|
+
/** @type {CompilationAssets} */
|
|
3925
|
+
(
|
|
3926
|
+
this._backCompat
|
|
3927
|
+
? soonFrozenObjectDeprecation(
|
|
3928
|
+
this.assets,
|
|
3929
|
+
"Compilation.assets",
|
|
3930
|
+
"DEP_WEBPACK_COMPILATION_ASSETS",
|
|
3931
|
+
`BREAKING CHANGE: No more changes should happen to Compilation.assets after sealing the Compilation.
|
|
3932
|
+
Do changes to assets earlier, e. g. in Compilation.hooks.processAssets.
|
|
3933
|
+
Make sure to select an appropriate stage from Compilation.PROCESS_ASSETS_STAGE_*.`
|
|
3934
|
+
)
|
|
3935
|
+
: Object.freeze(this.assets)
|
|
3936
|
+
);
|
|
3937
|
+
|
|
3938
|
+
this.summarizeDependencies();
|
|
3939
|
+
if (shouldRecord) {
|
|
3940
|
+
this.hooks.record.call(
|
|
3941
|
+
this,
|
|
3942
|
+
/** @type {Records} */
|
|
3943
|
+
(this.records)
|
|
3854
3944
|
);
|
|
3855
3945
|
}
|
|
3856
|
-
|
|
3857
|
-
|
|
3946
|
+
|
|
3947
|
+
if (this.hooks.needAdditionalSeal.call()) {
|
|
3948
|
+
this.unseal();
|
|
3949
|
+
return this.seal(callback);
|
|
3950
|
+
}
|
|
3951
|
+
return this.hooks.afterSeal.callAsync((err) => {
|
|
3952
|
+
if (err) {
|
|
3953
|
+
return finalCallback(
|
|
3954
|
+
makeWebpackError(err, "Compilation.hooks.afterSeal")
|
|
3955
|
+
);
|
|
3956
|
+
}
|
|
3957
|
+
this.fileSystemInfo.logStatistics();
|
|
3958
|
+
finalCallback();
|
|
3959
|
+
});
|
|
3858
3960
|
});
|
|
3859
|
-
}
|
|
3860
|
-
};
|
|
3961
|
+
};
|
|
3861
3962
|
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3963
|
+
this.logger.time("create chunk assets");
|
|
3964
|
+
if (this.hooks.shouldGenerateChunkAssets.call() !== false) {
|
|
3965
|
+
this.hooks.beforeChunkAssets.call();
|
|
3966
|
+
this.createChunkAssets((err) => {
|
|
3967
|
+
this.logger.timeEnd("create chunk assets");
|
|
3968
|
+
if (err) {
|
|
3969
|
+
return finalCallback(err);
|
|
3970
|
+
}
|
|
3971
|
+
cont();
|
|
3972
|
+
});
|
|
3973
|
+
} else {
|
|
3866
3974
|
this.logger.timeEnd("create chunk assets");
|
|
3867
|
-
if (err) {
|
|
3868
|
-
return finalCallback(err);
|
|
3869
|
-
}
|
|
3870
3975
|
cont();
|
|
3871
|
-
}
|
|
3872
|
-
}
|
|
3873
|
-
this.logger.timeEnd("create chunk assets");
|
|
3874
|
-
cont();
|
|
3875
|
-
}
|
|
3976
|
+
}
|
|
3977
|
+
});
|
|
3876
3978
|
});
|
|
3877
3979
|
});
|
|
3878
3980
|
}
|
|
@@ -3898,7 +4000,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
3898
4000
|
// A consolidated dependency (e.g. CssIcssExportDependency) carries
|
|
3899
4001
|
// per-item locations on the error itself; fall back to the
|
|
3900
4002
|
// dependency loc for the usual one-loc-per-dependency case.
|
|
3901
|
-
const warning = new
|
|
4003
|
+
const warning = new (getModuleDependencyWarning())(
|
|
3902
4004
|
module,
|
|
3903
4005
|
w,
|
|
3904
4006
|
/** @type {EXPECTED_ANY} */ (w).loc || d.loc
|
|
@@ -3910,7 +4012,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
3910
4012
|
const errors = d.getErrors(this.moduleGraph);
|
|
3911
4013
|
if (errors) {
|
|
3912
4014
|
for (const e of errors) {
|
|
3913
|
-
const error = new
|
|
4015
|
+
const error = new (getModuleDependencyError())(
|
|
3914
4016
|
module,
|
|
3915
4017
|
e,
|
|
3916
4018
|
/** @type {EXPECTED_ANY} */ (e).loc || d.loc
|
|
@@ -3966,6 +4068,120 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
3966
4068
|
this._runCodeGenerationJobs(jobs, callback);
|
|
3967
4069
|
}
|
|
3968
4070
|
|
|
4071
|
+
/**
|
|
4072
|
+
* Offer source one language embeds in another to `renderEmbeddedSource`. The
|
|
4073
|
+
* hook is async and generation is not, so the first pass returns the source
|
|
4074
|
+
* untouched and records it; `_resolveEmbeddedSources` awaits the hook and
|
|
4075
|
+
* generates those modules again, when the resolved source is waiting here.
|
|
4076
|
+
* @param {Source} source the embedded source
|
|
4077
|
+
* @param {EmbeddedSourceInfo} info what it is and where it is going
|
|
4078
|
+
* @returns {Source} the resolved source, or `source` until it is resolved
|
|
4079
|
+
*/
|
|
4080
|
+
_resolveEmbeddedSource(source, info) {
|
|
4081
|
+
// Untapped, nothing can change: skip reading the text and the second pass.
|
|
4082
|
+
if (this.hooks.renderEmbeddedSource.taps.length === 0) return source;
|
|
4083
|
+
const text = /** @type {string} */ (source.source());
|
|
4084
|
+
// Everything the hook is handed is in the key: a tap answers per language
|
|
4085
|
+
// pair, so identical text offered as two of them is two questions.
|
|
4086
|
+
const key = `${info.type}${info.hostType}${text}`;
|
|
4087
|
+
const resolved = this._embeddedSources.get(info.module);
|
|
4088
|
+
if (resolved !== undefined) {
|
|
4089
|
+
const hit = resolved.get(key);
|
|
4090
|
+
if (hit !== undefined) return hit;
|
|
4091
|
+
}
|
|
4092
|
+
getOrInsert(this._pendingEmbeddedSources, info.module, () => new Map()).set(
|
|
4093
|
+
key,
|
|
4094
|
+
{ source, info, jobModule: this._generatingModule || info.module }
|
|
4095
|
+
);
|
|
4096
|
+
return source;
|
|
4097
|
+
}
|
|
4098
|
+
|
|
4099
|
+
/**
|
|
4100
|
+
* Run `renderEmbeddedSource` over everything the last pass recorded, then
|
|
4101
|
+
* generate those modules again so the resolved source is the one embedded.
|
|
4102
|
+
* @private
|
|
4103
|
+
* @param {CodeGenerationJobs} jobs the jobs the last pass ran
|
|
4104
|
+
* @param {Callback} callback callback
|
|
4105
|
+
* @returns {void}
|
|
4106
|
+
*/
|
|
4107
|
+
_resolveEmbeddedSources(jobs, callback) {
|
|
4108
|
+
if (this._pendingEmbeddedSources.size === 0) return callback();
|
|
4109
|
+
/** @type {{ key: string, source: Source, info: EmbeddedSourceInfo, jobModule: Module }[]} */
|
|
4110
|
+
const pending = [];
|
|
4111
|
+
for (const byKey of this._pendingEmbeddedSources.values()) {
|
|
4112
|
+
for (const [key, entry] of byKey) {
|
|
4113
|
+
pending.push({ key, ...entry });
|
|
4114
|
+
}
|
|
4115
|
+
}
|
|
4116
|
+
this._pendingEmbeddedSources.clear();
|
|
4117
|
+
asyncLib.each(
|
|
4118
|
+
pending,
|
|
4119
|
+
({ key, source, info }, cb) => {
|
|
4120
|
+
this.hooks.renderEmbeddedSource.callAsync(
|
|
4121
|
+
source,
|
|
4122
|
+
info,
|
|
4123
|
+
/**
|
|
4124
|
+
* @param {(Error | null)=} err error
|
|
4125
|
+
* @param {Source=} result the resolved source
|
|
4126
|
+
* @returns {void}
|
|
4127
|
+
*/
|
|
4128
|
+
(err, result) => {
|
|
4129
|
+
if (err) return cb(err);
|
|
4130
|
+
getOrInsert(
|
|
4131
|
+
this._embeddedSources,
|
|
4132
|
+
info.module,
|
|
4133
|
+
() => new Map()
|
|
4134
|
+
).set(key, result || source);
|
|
4135
|
+
cb();
|
|
4136
|
+
}
|
|
4137
|
+
);
|
|
4138
|
+
},
|
|
4139
|
+
(err) => {
|
|
4140
|
+
if (err) return callback(/** @type {WebpackError} */ (err));
|
|
4141
|
+
const affected = new Set(pending.map(({ jobModule }) => jobModule));
|
|
4142
|
+
const redo = jobs.filter(({ module }) => affected.has(module));
|
|
4143
|
+
// Generated directly rather than through the codegen cache: the module
|
|
4144
|
+
// hash is unchanged, so the cache would hand back the first pass again.
|
|
4145
|
+
const results =
|
|
4146
|
+
/** @type {CodeGenerationResults} */
|
|
4147
|
+
(this.codeGenerationResults);
|
|
4148
|
+
for (const { module, runtime, runtimes } of redo) {
|
|
4149
|
+
/** @type {CodeGenerationResult} */
|
|
4150
|
+
let result;
|
|
4151
|
+
try {
|
|
4152
|
+
this._generatingModule = module;
|
|
4153
|
+
result = module.codeGeneration({
|
|
4154
|
+
chunkGraph: this.chunkGraph,
|
|
4155
|
+
moduleGraph: this.moduleGraph,
|
|
4156
|
+
dependencyTemplates: this.dependencyTemplates,
|
|
4157
|
+
runtimeTemplate: this.runtimeTemplate,
|
|
4158
|
+
runtime,
|
|
4159
|
+
runtimes,
|
|
4160
|
+
codeGenerationResults: results,
|
|
4161
|
+
compilation: this
|
|
4162
|
+
});
|
|
4163
|
+
} catch (err) {
|
|
4164
|
+
// Reported and carried on with, as the first pass does: a throw
|
|
4165
|
+
// here would leave the build with no error to show for it.
|
|
4166
|
+
this.errors.push(
|
|
4167
|
+
new (getCodeGenerationError())(module, /** @type {Error} */ (err))
|
|
4168
|
+
);
|
|
4169
|
+
result = {
|
|
4170
|
+
sources: new Map(),
|
|
4171
|
+
runtimeRequirements: null,
|
|
4172
|
+
data: undefined
|
|
4173
|
+
};
|
|
4174
|
+
} finally {
|
|
4175
|
+
this._generatingModule = undefined;
|
|
4176
|
+
}
|
|
4177
|
+
for (const r of runtimes) results.add(module, r, result);
|
|
4178
|
+
}
|
|
4179
|
+
// A tap that changed the source again is resolved on the next round.
|
|
4180
|
+
this._resolveEmbeddedSources(redo, callback);
|
|
4181
|
+
}
|
|
4182
|
+
);
|
|
4183
|
+
}
|
|
4184
|
+
|
|
3969
4185
|
/**
|
|
3970
4186
|
* Run code generation jobs.
|
|
3971
4187
|
* @private
|
|
@@ -3977,6 +4193,10 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
3977
4193
|
if (jobs.length === 0) {
|
|
3978
4194
|
return callback();
|
|
3979
4195
|
}
|
|
4196
|
+
// `jobs` is reassigned per iteration; embedded source is resolved over all.
|
|
4197
|
+
// Untapped nothing is recorded, so the array is not held past its iteration.
|
|
4198
|
+
const allJobs =
|
|
4199
|
+
this.hooks.renderEmbeddedSource.taps.length === 0 ? undefined : jobs;
|
|
3980
4200
|
let statModulesFromCache = 0;
|
|
3981
4201
|
let statModulesGenerated = 0;
|
|
3982
4202
|
const { chunkGraph, moduleGraph, dependencyTemplates, runtimeTemplate } =
|
|
@@ -4069,7 +4289,11 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4069
4289
|
(statModulesGenerated + statModulesFromCache)
|
|
4070
4290
|
)}% code generated (${statModulesGenerated} generated, ${statModulesFromCache} from cache)`
|
|
4071
4291
|
);
|
|
4072
|
-
|
|
4292
|
+
this._resolveEmbeddedSources(allJobs || jobs, (err) => {
|
|
4293
|
+
this._embeddedSources.clear();
|
|
4294
|
+
this._pendingEmbeddedSources.clear();
|
|
4295
|
+
callback(err);
|
|
4296
|
+
});
|
|
4073
4297
|
}
|
|
4074
4298
|
);
|
|
4075
4299
|
};
|
|
@@ -4113,6 +4337,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4113
4337
|
try {
|
|
4114
4338
|
codeGenerated = true;
|
|
4115
4339
|
this.codeGeneratedModules.add(module);
|
|
4340
|
+
this._generatingModule = module;
|
|
4116
4341
|
result = module.codeGeneration({
|
|
4117
4342
|
chunkGraph,
|
|
4118
4343
|
moduleGraph,
|
|
@@ -4125,13 +4350,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4125
4350
|
});
|
|
4126
4351
|
} catch (err) {
|
|
4127
4352
|
errors.push(
|
|
4128
|
-
new
|
|
4353
|
+
new (getCodeGenerationError())(module, /** @type {Error} */ (err))
|
|
4129
4354
|
);
|
|
4130
4355
|
result = {
|
|
4131
4356
|
sources: new Map(),
|
|
4132
4357
|
runtimeRequirements: null,
|
|
4133
4358
|
data: undefined
|
|
4134
4359
|
};
|
|
4360
|
+
} finally {
|
|
4361
|
+
this._generatingModule = undefined;
|
|
4135
4362
|
}
|
|
4136
4363
|
for (const runtime of runtimes) {
|
|
4137
4364
|
results.add(module, runtime, result);
|
|
@@ -4154,6 +4381,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4154
4381
|
try {
|
|
4155
4382
|
codeGenerated = true;
|
|
4156
4383
|
this.codeGeneratedModules.add(module);
|
|
4384
|
+
this._generatingModule = module;
|
|
4157
4385
|
result = module.codeGeneration({
|
|
4158
4386
|
chunkGraph,
|
|
4159
4387
|
moduleGraph,
|
|
@@ -4166,13 +4394,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4166
4394
|
});
|
|
4167
4395
|
} catch (err) {
|
|
4168
4396
|
errors.push(
|
|
4169
|
-
new
|
|
4397
|
+
new (getCodeGenerationError())(module, /** @type {Error} */ (err))
|
|
4170
4398
|
);
|
|
4171
4399
|
result = cachedResult = {
|
|
4172
4400
|
sources: new Map(),
|
|
4173
4401
|
runtimeRequirements: null,
|
|
4174
4402
|
data: undefined
|
|
4175
4403
|
};
|
|
4404
|
+
} finally {
|
|
4405
|
+
this._generatingModule = undefined;
|
|
4176
4406
|
}
|
|
4177
4407
|
} else {
|
|
4178
4408
|
result = cachedResult;
|
|
@@ -4347,6 +4577,46 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4347
4577
|
this.logger.timeEnd("runtime requirements.entries");
|
|
4348
4578
|
}
|
|
4349
4579
|
|
|
4580
|
+
/**
|
|
4581
|
+
* Queues a runtime module whose implementation is loaded on demand, for
|
|
4582
|
+
* `_attachPendingRuntimeModules` to await and build once the requirement pass
|
|
4583
|
+
* is over. `runtimeRequirementInTree` is a sync hook, so a tap cannot await
|
|
4584
|
+
* the load itself; anything the tap reads off the requirement set must be
|
|
4585
|
+
* captured before queueing, since `create` runs later.
|
|
4586
|
+
* @param {Chunk} chunk target chunk
|
|
4587
|
+
* @param {() => Promise<EXPECTED_ANY>} load resolves the runtime module implementation
|
|
4588
|
+
* @param {(loaded: EXPECTED_ANY) => RuntimeModule} create builds the runtime module from it
|
|
4589
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
4590
|
+
* @returns {void}
|
|
4591
|
+
*/
|
|
4592
|
+
addLazyRuntimeModule(chunk, load, create, chunkGraph = this.chunkGraph) {
|
|
4593
|
+
if (this._pendingRuntimeModules === undefined) {
|
|
4594
|
+
this._pendingRuntimeModules = [];
|
|
4595
|
+
}
|
|
4596
|
+
this._pendingRuntimeModules.push({ chunk, load, create, chunkGraph });
|
|
4597
|
+
}
|
|
4598
|
+
|
|
4599
|
+
/**
|
|
4600
|
+
* Awaits and attaches everything `addLazyRuntimeModule` queued. The only
|
|
4601
|
+
* place a deferred runtime module implementation is loaded.
|
|
4602
|
+
* @param {Callback} callback signals when the call finishes
|
|
4603
|
+
* @returns {void}
|
|
4604
|
+
*/
|
|
4605
|
+
_attachPendingRuntimeModules(callback) {
|
|
4606
|
+
const pending = this._pendingRuntimeModules;
|
|
4607
|
+
if (pending === undefined) return callback(null);
|
|
4608
|
+
this._pendingRuntimeModules = undefined;
|
|
4609
|
+
Promise.all(pending.map(({ load }) => load()))
|
|
4610
|
+
.then((loaded) => {
|
|
4611
|
+
for (let i = 0; i < pending.length; i++) {
|
|
4612
|
+
const { chunk, create, chunkGraph } = pending[i];
|
|
4613
|
+
this.addRuntimeModule(chunk, create(loaded[i]), chunkGraph);
|
|
4614
|
+
}
|
|
4615
|
+
})
|
|
4616
|
+
// a `runtimeModule` tap may have queued more
|
|
4617
|
+
.then(() => this._attachPendingRuntimeModules(callback), callback);
|
|
4618
|
+
}
|
|
4619
|
+
|
|
4350
4620
|
// TODO webpack 6 make chunkGraph argument non-optional
|
|
4351
4621
|
/**
|
|
4352
4622
|
* Adds runtime module.
|
|
@@ -4727,6 +4997,8 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4727
4997
|
|
|
4728
4998
|
this.errors.sort(compareErrors);
|
|
4729
4999
|
this.warnings.sort(compareErrors);
|
|
5000
|
+
// `hints` is sorted where stats read it — producers tap `afterSeal` and
|
|
5001
|
+
// `afterEmit`, so they append after this point.
|
|
4730
5002
|
this.children.sort(byNameOrHash);
|
|
4731
5003
|
}
|
|
4732
5004
|
|
|
@@ -4843,7 +5115,9 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
|
|
|
4843
5115
|
});
|
|
4844
5116
|
moduleHashDigest = moduleHash.digest(hashDigest);
|
|
4845
5117
|
} catch (err) {
|
|
4846
|
-
errors.push(
|
|
5118
|
+
errors.push(
|
|
5119
|
+
new (getModuleHashingError())(module, /** @type {Error} */ (err))
|
|
5120
|
+
);
|
|
4847
5121
|
moduleHashDigest = "XXXXXX";
|
|
4848
5122
|
}
|
|
4849
5123
|
chunkGraph.setModuleHashes(
|
|
@@ -5094,7 +5368,7 @@ This prevents using hashes of each other and should be avoided.`);
|
|
|
5094
5368
|
}
|
|
5095
5369
|
} catch (err) {
|
|
5096
5370
|
this.errors.push(
|
|
5097
|
-
new
|
|
5371
|
+
new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
|
|
5098
5372
|
);
|
|
5099
5373
|
}
|
|
5100
5374
|
this.logger.timeAggregate("hashing: hash chunks");
|
|
@@ -5610,7 +5884,7 @@ This prevents using hashes of each other and should be avoided.`);
|
|
|
5610
5884
|
});
|
|
5611
5885
|
} catch (err) {
|
|
5612
5886
|
this.errors.push(
|
|
5613
|
-
new
|
|
5887
|
+
new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
|
|
5614
5888
|
);
|
|
5615
5889
|
return callback();
|
|
5616
5890
|
}
|
|
@@ -5648,7 +5922,9 @@ This prevents using hashes of each other and should be avoided.`);
|
|
|
5648
5922
|
? filenameTemplate
|
|
5649
5923
|
: "");
|
|
5650
5924
|
|
|
5651
|
-
this.errors.push(
|
|
5925
|
+
this.errors.push(
|
|
5926
|
+
new (getChunkRenderError())(chunk, filename, err)
|
|
5927
|
+
);
|
|
5652
5928
|
inTry = false;
|
|
5653
5929
|
return callback();
|
|
5654
5930
|
};
|
|
@@ -5874,6 +6150,7 @@ This prevents using hashes of each other and should be avoided.`);
|
|
|
5874
6150
|
this.moduleGraph,
|
|
5875
6151
|
this.outputOptions.hashFunction
|
|
5876
6152
|
);
|
|
6153
|
+
chunkGraph.buildTimeExecution = true;
|
|
5877
6154
|
const runtime = "build time";
|
|
5878
6155
|
const { hashFunction, hashDigest, hashDigestLength } =
|
|
5879
6156
|
this.outputOptions;
|
|
@@ -5983,265 +6260,276 @@ This prevents using hashes of each other and should be avoided.`);
|
|
|
5983
6260
|
codeGenerationResults,
|
|
5984
6261
|
chunkGraphEntries: chunks
|
|
5985
6262
|
});
|
|
6263
|
+
// restored before the deferred attach so no concurrent `make`
|
|
6264
|
+
// task observes the build-time graph
|
|
5986
6265
|
this.chunkGraph = old;
|
|
6266
|
+
this._attachPendingRuntimeModules((err) => {
|
|
6267
|
+
if (err) return callback(err);
|
|
5987
6268
|
|
|
5988
|
-
|
|
5989
|
-
|
|
6269
|
+
const runtimeModules =
|
|
6270
|
+
chunkGraph.getChunkRuntimeModulesIterable(chunk);
|
|
5990
6271
|
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
// Generate code for all runtime modules
|
|
6007
|
-
asyncLib.eachLimit(
|
|
6008
|
-
/** @type {import("neo-async").IterableCollection<RuntimeModule>} */ (
|
|
6009
|
-
runtimeModules
|
|
6010
|
-
),
|
|
6011
|
-
10,
|
|
6012
|
-
codeGen,
|
|
6013
|
-
(err) => {
|
|
6014
|
-
if (err) return callback(err);
|
|
6015
|
-
reportErrors();
|
|
6016
|
-
|
|
6017
|
-
/** @type {Map<Module, ExecuteModuleArgument>} */
|
|
6018
|
-
const moduleArgumentsMap = new Map();
|
|
6019
|
-
/** @type {Map<string, ExecuteModuleArgument>} */
|
|
6020
|
-
const moduleArgumentsById = new Map();
|
|
6021
|
-
|
|
6022
|
-
/** @type {ExecuteModuleResult["fileDependencies"]} */
|
|
6023
|
-
const fileDependencies = new LazySet();
|
|
6024
|
-
/** @type {ExecuteModuleResult["contextDependencies"]} */
|
|
6025
|
-
const contextDependencies = new LazySet();
|
|
6026
|
-
/** @type {ExecuteModuleResult["missingDependencies"]} */
|
|
6027
|
-
const missingDependencies = new LazySet();
|
|
6028
|
-
/** @type {ExecuteModuleResult["buildDependencies"]} */
|
|
6029
|
-
const buildDependencies = new LazySet();
|
|
6030
|
-
|
|
6031
|
-
/** @type {ExecuteModuleResult["assets"]} */
|
|
6032
|
-
const assets = new Map();
|
|
6033
|
-
|
|
6034
|
-
let cacheable = true;
|
|
6035
|
-
/** @type {ExecuteModuleResult["notCacheableReasons"]} */
|
|
6036
|
-
const notCacheableReasons = [];
|
|
6037
|
-
|
|
6038
|
-
/** @type {ExecuteModuleContext} */
|
|
6039
|
-
const context = {
|
|
6040
|
-
assets,
|
|
6041
|
-
__webpack_require__: undefined,
|
|
6042
|
-
chunk,
|
|
6043
|
-
chunkGraph
|
|
6044
|
-
};
|
|
6272
|
+
// Hash runtime modules
|
|
6273
|
+
for (const module of runtimeModules) {
|
|
6274
|
+
modules.add(module);
|
|
6275
|
+
this._createModuleHash(
|
|
6276
|
+
module,
|
|
6277
|
+
chunkGraph,
|
|
6278
|
+
runtime,
|
|
6279
|
+
hashFunction,
|
|
6280
|
+
runtimeTemplate,
|
|
6281
|
+
hashDigest,
|
|
6282
|
+
hashDigestLength,
|
|
6283
|
+
errors
|
|
6284
|
+
);
|
|
6285
|
+
}
|
|
6045
6286
|
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
|
|
6287
|
+
// Generate code for all runtime modules
|
|
6288
|
+
asyncLib.eachLimit(
|
|
6289
|
+
/** @type {import("neo-async").IterableCollection<RuntimeModule>} */ (
|
|
6290
|
+
runtimeModules
|
|
6291
|
+
),
|
|
6292
|
+
10,
|
|
6293
|
+
codeGen,
|
|
6294
|
+
(err) => {
|
|
6295
|
+
if (err) return callback(err);
|
|
6296
|
+
reportErrors();
|
|
6297
|
+
|
|
6298
|
+
/** @type {Map<Module, ExecuteModuleArgument>} */
|
|
6299
|
+
const moduleArgumentsMap = new Map();
|
|
6300
|
+
/** @type {Map<string, ExecuteModuleArgument>} */
|
|
6301
|
+
const moduleArgumentsById = new Map();
|
|
6302
|
+
|
|
6303
|
+
/** @type {ExecuteModuleResult["fileDependencies"]} */
|
|
6304
|
+
const fileDependencies = new LazySet();
|
|
6305
|
+
/** @type {ExecuteModuleResult["contextDependencies"]} */
|
|
6306
|
+
const contextDependencies = new LazySet();
|
|
6307
|
+
/** @type {ExecuteModuleResult["missingDependencies"]} */
|
|
6308
|
+
const missingDependencies = new LazySet();
|
|
6309
|
+
/** @type {ExecuteModuleResult["buildDependencies"]} */
|
|
6310
|
+
const buildDependencies = new LazySet();
|
|
6311
|
+
|
|
6312
|
+
/** @type {ExecuteModuleResult["assets"]} */
|
|
6313
|
+
const assets = new Map();
|
|
6314
|
+
|
|
6315
|
+
let cacheable = true;
|
|
6316
|
+
/** @type {ExecuteModuleResult["notCacheableReasons"]} */
|
|
6317
|
+
const notCacheableReasons = [];
|
|
6318
|
+
|
|
6319
|
+
/** @type {ExecuteModuleContext} */
|
|
6320
|
+
const context = {
|
|
6321
|
+
assets,
|
|
6322
|
+
__webpack_require__: undefined,
|
|
6323
|
+
chunk,
|
|
6324
|
+
chunkGraph
|
|
6325
|
+
};
|
|
6326
|
+
|
|
6327
|
+
// Prepare execution
|
|
6328
|
+
asyncLib.eachLimit(
|
|
6329
|
+
modules,
|
|
6330
|
+
10,
|
|
6331
|
+
(module, callback) => {
|
|
6332
|
+
const codeGenerationResult = codeGenerationResults.get(
|
|
6333
|
+
module,
|
|
6334
|
+
runtime
|
|
6335
|
+
);
|
|
6336
|
+
/** @type {ExecuteModuleArgument} */
|
|
6337
|
+
const moduleArgument = {
|
|
6338
|
+
module,
|
|
6339
|
+
codeGenerationResult,
|
|
6340
|
+
moduleObject: undefined
|
|
6341
|
+
};
|
|
6342
|
+
moduleArgumentsMap.set(module, moduleArgument);
|
|
6343
|
+
moduleArgumentsById.set(
|
|
6344
|
+
module.identifier(),
|
|
6345
|
+
moduleArgument
|
|
6346
|
+
);
|
|
6347
|
+
module.addCacheDependencies(
|
|
6348
|
+
fileDependencies,
|
|
6349
|
+
contextDependencies,
|
|
6350
|
+
missingDependencies,
|
|
6351
|
+
buildDependencies
|
|
6352
|
+
);
|
|
6353
|
+
const buildInfo = /** @type {BuildInfo} */ (
|
|
6354
|
+
module.buildInfo
|
|
6355
|
+
);
|
|
6356
|
+
if (buildInfo.cacheable === false) {
|
|
6357
|
+
cacheable = false;
|
|
6358
|
+
if (buildInfo.notCacheableReasons) {
|
|
6359
|
+
for (const reason of buildInfo.notCacheableReasons) {
|
|
6360
|
+
if (!notCacheableReasons.includes(reason)) {
|
|
6361
|
+
notCacheableReasons.push(reason);
|
|
6362
|
+
}
|
|
6081
6363
|
}
|
|
6082
6364
|
}
|
|
6083
6365
|
}
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
});
|
|
6095
|
-
}
|
|
6096
|
-
}
|
|
6097
|
-
this.hooks.prepareModuleExecution.callAsync(
|
|
6098
|
-
moduleArgument,
|
|
6099
|
-
context,
|
|
6100
|
-
callback
|
|
6101
|
-
);
|
|
6102
|
-
},
|
|
6103
|
-
(err) => {
|
|
6104
|
-
if (err) return callback(/** @type {WebpackError} */ (err));
|
|
6105
|
-
|
|
6106
|
-
/** @type {ExecuteModuleExports | undefined} */
|
|
6107
|
-
let exports;
|
|
6108
|
-
try {
|
|
6109
|
-
const {
|
|
6110
|
-
strictModuleErrorHandling,
|
|
6111
|
-
strictModuleExceptionHandling
|
|
6112
|
-
} = this.outputOptions;
|
|
6113
|
-
|
|
6114
|
-
/** @type {WebpackRequire} */
|
|
6115
|
-
const __webpack_require__ = (id) => {
|
|
6116
|
-
const cached = moduleCache[id];
|
|
6117
|
-
if (cached !== undefined) {
|
|
6118
|
-
if (cached.error) throw cached.error;
|
|
6119
|
-
return cached.exports;
|
|
6366
|
+
if (module.buildInfo && module.buildInfo.assets) {
|
|
6367
|
+
const { assets: moduleAssets, assetsInfo } =
|
|
6368
|
+
module.buildInfo;
|
|
6369
|
+
for (const assetName of Object.keys(moduleAssets)) {
|
|
6370
|
+
assets.set(assetName, {
|
|
6371
|
+
source: moduleAssets[assetName],
|
|
6372
|
+
info: assetsInfo
|
|
6373
|
+
? assetsInfo.get(assetName)
|
|
6374
|
+
: undefined
|
|
6375
|
+
});
|
|
6120
6376
|
}
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
(
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6377
|
+
}
|
|
6378
|
+
this.hooks.prepareModuleExecution.callAsync(
|
|
6379
|
+
moduleArgument,
|
|
6380
|
+
context,
|
|
6381
|
+
callback
|
|
6382
|
+
);
|
|
6383
|
+
},
|
|
6384
|
+
(err) => {
|
|
6385
|
+
if (err) {
|
|
6386
|
+
return callback(/** @type {WebpackError} */ (err));
|
|
6387
|
+
}
|
|
6388
|
+
|
|
6389
|
+
/** @type {ExecuteModuleExports | undefined} */
|
|
6390
|
+
let exports;
|
|
6391
|
+
try {
|
|
6392
|
+
const {
|
|
6393
|
+
strictModuleErrorHandling,
|
|
6394
|
+
strictModuleExceptionHandling
|
|
6395
|
+
} = this.outputOptions;
|
|
6396
|
+
|
|
6397
|
+
/** @type {WebpackRequire} */
|
|
6398
|
+
const __webpack_require__ = (id) => {
|
|
6399
|
+
const cached = moduleCache[id];
|
|
6400
|
+
if (cached !== undefined) {
|
|
6401
|
+
if (cached.error) throw cached.error;
|
|
6402
|
+
return cached.exports;
|
|
6403
|
+
}
|
|
6404
|
+
const moduleArgument = moduleArgumentsById.get(id);
|
|
6405
|
+
return __webpack_require_module__(
|
|
6406
|
+
/** @type {ExecuteModuleArgument} */
|
|
6407
|
+
(moduleArgument),
|
|
6408
|
+
id
|
|
6409
|
+
);
|
|
6410
|
+
};
|
|
6411
|
+
const interceptModuleExecution = (__webpack_require__[
|
|
6412
|
+
/** @type {"i"} */
|
|
6413
|
+
(
|
|
6414
|
+
RuntimeGlobals.interceptModuleExecution.replace(
|
|
6415
|
+
`${RuntimeGlobals.require}.`,
|
|
6416
|
+
""
|
|
6417
|
+
)
|
|
6134
6418
|
)
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6419
|
+
] =
|
|
6420
|
+
/** @type {NonNullable<WebpackRequire["i"]>} */ ([]));
|
|
6421
|
+
const moduleCache = (__webpack_require__[
|
|
6422
|
+
/** @type {"c"} */ (
|
|
6423
|
+
RuntimeGlobals.moduleCache.replace(
|
|
6424
|
+
`${RuntimeGlobals.require}.`,
|
|
6425
|
+
""
|
|
6426
|
+
)
|
|
6142
6427
|
)
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
id,
|
|
6161
|
-
module: {
|
|
6428
|
+
] =
|
|
6429
|
+
/** @type {NonNullable<WebpackRequire["c"]>} */ ({}));
|
|
6430
|
+
|
|
6431
|
+
context.__webpack_require__ = __webpack_require__;
|
|
6432
|
+
|
|
6433
|
+
/**
|
|
6434
|
+
* Webpack require module.
|
|
6435
|
+
* @param {ExecuteModuleArgument} moduleArgument the module argument
|
|
6436
|
+
* @param {string=} id id
|
|
6437
|
+
* @returns {ExecuteModuleExports} exports
|
|
6438
|
+
*/
|
|
6439
|
+
const __webpack_require_module__ = (
|
|
6440
|
+
moduleArgument,
|
|
6441
|
+
id
|
|
6442
|
+
) => {
|
|
6443
|
+
/** @type {ExecuteOptions} */
|
|
6444
|
+
const execOptions = {
|
|
6162
6445
|
id,
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
this.buildTimeExecutedModules.add(module);
|
|
6174
|
-
const moduleObject = execOptions.module;
|
|
6175
|
-
moduleArgument.moduleObject = moduleObject;
|
|
6176
|
-
try {
|
|
6177
|
-
if (id) moduleCache[id] = moduleObject;
|
|
6178
|
-
|
|
6179
|
-
tryRunOrWebpackError(
|
|
6180
|
-
() =>
|
|
6181
|
-
this.hooks.executeModule.call(
|
|
6182
|
-
moduleArgument,
|
|
6183
|
-
context
|
|
6184
|
-
),
|
|
6185
|
-
"Compilation.hooks.executeModule"
|
|
6186
|
-
);
|
|
6187
|
-
moduleObject.loaded = true;
|
|
6188
|
-
return moduleObject.exports;
|
|
6189
|
-
} catch (execErr) {
|
|
6190
|
-
if (strictModuleExceptionHandling) {
|
|
6191
|
-
if (id) delete moduleCache[id];
|
|
6192
|
-
} else if (strictModuleErrorHandling) {
|
|
6193
|
-
moduleObject.error =
|
|
6194
|
-
/** @type {WebpackError} */
|
|
6195
|
-
(execErr);
|
|
6446
|
+
module: {
|
|
6447
|
+
id,
|
|
6448
|
+
exports: {},
|
|
6449
|
+
loaded: false,
|
|
6450
|
+
error: undefined
|
|
6451
|
+
},
|
|
6452
|
+
require: __webpack_require__
|
|
6453
|
+
};
|
|
6454
|
+
for (const handler of interceptModuleExecution) {
|
|
6455
|
+
handler(execOptions);
|
|
6196
6456
|
}
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6457
|
+
const module = moduleArgument.module;
|
|
6458
|
+
this.buildTimeExecutedModules.add(module);
|
|
6459
|
+
const moduleObject = execOptions.module;
|
|
6460
|
+
moduleArgument.moduleObject = moduleObject;
|
|
6461
|
+
try {
|
|
6462
|
+
if (id) moduleCache[id] = moduleObject;
|
|
6463
|
+
|
|
6464
|
+
tryRunOrWebpackError(
|
|
6465
|
+
() =>
|
|
6466
|
+
this.hooks.executeModule.call(
|
|
6467
|
+
moduleArgument,
|
|
6468
|
+
context
|
|
6469
|
+
),
|
|
6470
|
+
"Compilation.hooks.executeModule"
|
|
6471
|
+
);
|
|
6472
|
+
moduleObject.loaded = true;
|
|
6473
|
+
return moduleObject.exports;
|
|
6474
|
+
} catch (execErr) {
|
|
6475
|
+
if (strictModuleExceptionHandling) {
|
|
6476
|
+
if (id) delete moduleCache[id];
|
|
6477
|
+
} else if (strictModuleErrorHandling) {
|
|
6478
|
+
moduleObject.error =
|
|
6479
|
+
/** @type {WebpackError} */
|
|
6480
|
+
(execErr);
|
|
6481
|
+
}
|
|
6482
|
+
if (
|
|
6483
|
+
!(/** @type {WebpackError} */ (execErr).module)
|
|
6484
|
+
) {
|
|
6485
|
+
/** @type {WebpackError} */
|
|
6486
|
+
(execErr).module = module;
|
|
6487
|
+
}
|
|
6488
|
+
throw execErr;
|
|
6200
6489
|
}
|
|
6201
|
-
|
|
6490
|
+
};
|
|
6491
|
+
|
|
6492
|
+
for (const runtimeModule of chunkGraph.getChunkRuntimeModulesInOrder(
|
|
6493
|
+
chunk
|
|
6494
|
+
)) {
|
|
6495
|
+
__webpack_require_module__(
|
|
6496
|
+
/** @type {ExecuteModuleArgument} */
|
|
6497
|
+
(moduleArgumentsMap.get(runtimeModule))
|
|
6498
|
+
);
|
|
6202
6499
|
}
|
|
6203
|
-
};
|
|
6204
6500
|
|
|
6205
|
-
|
|
6206
|
-
|
|
6207
|
-
|
|
6208
|
-
|
|
6209
|
-
|
|
6210
|
-
|
|
6501
|
+
exports = __webpack_require__(module.identifier());
|
|
6502
|
+
} catch (execErr) {
|
|
6503
|
+
const { message, stack, module } =
|
|
6504
|
+
/** @type {WebpackError} */
|
|
6505
|
+
(execErr);
|
|
6506
|
+
const err = new WebpackError(
|
|
6507
|
+
`Execution of module code from module graph (${
|
|
6508
|
+
/** @type {Module} */
|
|
6509
|
+
(module).readableIdentifier(this.requestShortener)
|
|
6510
|
+
}) failed: ${message}`,
|
|
6511
|
+
{ cause: execErr }
|
|
6211
6512
|
);
|
|
6513
|
+
err.stack = stack;
|
|
6514
|
+
err.module = module;
|
|
6515
|
+
return callback(err);
|
|
6212
6516
|
}
|
|
6213
6517
|
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
{ cause: execErr }
|
|
6225
|
-
);
|
|
6226
|
-
err.stack = stack;
|
|
6227
|
-
err.module = module;
|
|
6228
|
-
return callback(err);
|
|
6518
|
+
callback(null, {
|
|
6519
|
+
exports,
|
|
6520
|
+
assets,
|
|
6521
|
+
cacheable,
|
|
6522
|
+
notCacheableReasons,
|
|
6523
|
+
fileDependencies,
|
|
6524
|
+
contextDependencies,
|
|
6525
|
+
missingDependencies,
|
|
6526
|
+
buildDependencies
|
|
6527
|
+
});
|
|
6229
6528
|
}
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
cacheable,
|
|
6235
|
-
notCacheableReasons,
|
|
6236
|
-
fileDependencies,
|
|
6237
|
-
contextDependencies,
|
|
6238
|
-
missingDependencies,
|
|
6239
|
-
buildDependencies
|
|
6240
|
-
});
|
|
6241
|
-
}
|
|
6242
|
-
);
|
|
6243
|
-
}
|
|
6244
|
-
);
|
|
6529
|
+
);
|
|
6530
|
+
}
|
|
6531
|
+
);
|
|
6532
|
+
});
|
|
6245
6533
|
}
|
|
6246
6534
|
);
|
|
6247
6535
|
}
|