@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
package/lib/NormalModule.js
CHANGED
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const querystring = require("querystring");
|
|
9
|
-
const parseJson = require("json-parse-even-better-errors");
|
|
10
|
-
const { getContext, runLoaders } = require("loader-runner");
|
|
11
9
|
const {
|
|
12
10
|
AsyncSeriesBailHook,
|
|
13
11
|
HookMap,
|
|
@@ -20,39 +18,45 @@ const {
|
|
|
20
18
|
RawSource,
|
|
21
19
|
SourceMapSource
|
|
22
20
|
} = require("webpack-sources");
|
|
23
|
-
const
|
|
24
|
-
const HookWebpackError = require("./HookWebpackError");
|
|
21
|
+
const Dependency = require("./Dependency");
|
|
25
22
|
const Module = require("./Module");
|
|
26
|
-
const ModuleBuildError = require("./ModuleBuildError");
|
|
27
|
-
const ModuleError = require("./ModuleError");
|
|
28
23
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
29
|
-
const ModuleParseError = require("./ModuleParseError");
|
|
30
24
|
const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
|
|
31
|
-
const ModuleWarning = require("./ModuleWarning");
|
|
32
25
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
26
|
+
const HookWebpackError = require("./errors/HookWebpackError");
|
|
27
|
+
const ModuleBuildError = require("./errors/ModuleBuildError");
|
|
28
|
+
const ModuleError = require("./errors/ModuleError");
|
|
29
|
+
const ModuleParseError = require("./errors/ModuleParseError");
|
|
30
|
+
const ModuleWarning = require("./errors/ModuleWarning");
|
|
31
|
+
const NonErrorEmittedError = require("./errors/NonErrorEmittedError");
|
|
32
|
+
const UnhandledSchemeError = require("./errors/UnhandledSchemeError");
|
|
33
|
+
const {
|
|
34
|
+
createLoaderContext,
|
|
35
|
+
getContext,
|
|
36
|
+
runLoaders
|
|
37
|
+
} = require("./loaders/LoaderRunner");
|
|
36
38
|
const LazySet = require("./util/LazySet");
|
|
37
39
|
const { isSubset } = require("./util/SetHelpers");
|
|
38
40
|
const { getScheme } = require("./util/URLAbsoluteSpecifier");
|
|
39
41
|
const {
|
|
40
|
-
compareLocations,
|
|
41
|
-
compareSelect,
|
|
42
42
|
concatComparators,
|
|
43
43
|
keepOriginalOrder,
|
|
44
44
|
sortWithSourceOrder
|
|
45
45
|
} = require("./util/comparators");
|
|
46
46
|
const createHash = require("./util/createHash");
|
|
47
|
+
const createHooksRegistry = require("./util/createHooksRegistry");
|
|
47
48
|
const { createFakeHook } = require("./util/deprecation");
|
|
49
|
+
const formatLocation = require("./util/formatLocation");
|
|
48
50
|
const { join } = require("./util/fs");
|
|
49
51
|
const {
|
|
52
|
+
ABSOLUTE_PATH_REGEXP,
|
|
50
53
|
absolutify,
|
|
51
54
|
contextify,
|
|
52
|
-
|
|
55
|
+
contextifySourceUrl
|
|
53
56
|
} = require("./util/identifier");
|
|
54
57
|
const makeSerializable = require("./util/makeSerializable");
|
|
55
58
|
const memoize = require("./util/memoize");
|
|
59
|
+
const parseJson = require("./util/parseJson");
|
|
56
60
|
|
|
57
61
|
/** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
|
|
58
62
|
/** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
|
|
@@ -60,12 +64,15 @@ const memoize = require("./util/memoize");
|
|
|
60
64
|
/** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
|
|
61
65
|
/** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
62
66
|
/** @typedef {import("../declarations/WebpackOptions").NoParse} NoParse */
|
|
67
|
+
/** @typedef {import("./Compilation")} Compilation */
|
|
63
68
|
/** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
|
|
64
69
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
|
65
70
|
/** @typedef {import("./Generator")} Generator */
|
|
66
71
|
/** @typedef {import("./Generator").GenerateErrorFn} GenerateErrorFn */
|
|
72
|
+
/** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
|
|
67
73
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
68
74
|
/** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
|
|
75
|
+
/** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
|
|
69
76
|
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
|
70
77
|
/** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
|
|
71
78
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
|
@@ -87,6 +94,10 @@ const memoize = require("./util/memoize");
|
|
|
87
94
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
88
95
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
|
89
96
|
/** @typedef {import("./NormalModuleFactory").NormalModuleTypes} NormalModuleTypes */
|
|
97
|
+
/** @typedef {import("./NormalModuleFactory").ParserByType} ParserByType */
|
|
98
|
+
/** @typedef {import("./NormalModuleFactory").ParserOptionsByType} ParserOptionsByType */
|
|
99
|
+
/** @typedef {import("./NormalModuleFactory").GeneratorByType} GeneratorByType */
|
|
100
|
+
/** @typedef {import("./NormalModuleFactory").GeneratorOptionsByType} GeneratorOptionsByType */
|
|
90
101
|
/** @typedef {import("./NormalModuleFactory").ResourceSchemeData} ResourceSchemeData */
|
|
91
102
|
/** @typedef {import("./Parser")} Parser */
|
|
92
103
|
/** @typedef {import("./Parser").PreparsedAst} PreparsedAst */
|
|
@@ -119,14 +130,258 @@ const memoize = require("./util/memoize");
|
|
|
119
130
|
/** @typedef {(content: string) => boolean} NoParseFn */
|
|
120
131
|
|
|
121
132
|
const getInvalidDependenciesModuleWarning = memoize(() =>
|
|
122
|
-
require("./InvalidDependenciesModuleWarning")
|
|
133
|
+
require("./errors/InvalidDependenciesModuleWarning")
|
|
123
134
|
);
|
|
124
135
|
|
|
125
136
|
const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
|
|
126
137
|
|
|
127
138
|
const getValidate = memoize(() => require("schema-utils").validate);
|
|
128
139
|
|
|
129
|
-
const
|
|
140
|
+
const getHarmonyImportSideEffectDependency = memoize(() =>
|
|
141
|
+
require("./dependencies/HarmonyImportSideEffectDependency")
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @param {NormalModule} mod the module
|
|
146
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
147
|
+
* @param {Dependency} dep the dep that triggered the bailout
|
|
148
|
+
*/
|
|
149
|
+
const recordSideEffectsBailout = (mod, moduleGraph, dep) => {
|
|
150
|
+
if (mod._addedSideEffectsBailout === undefined) {
|
|
151
|
+
mod._addedSideEffectsBailout = new WeakSet();
|
|
152
|
+
} else if (mod._addedSideEffectsBailout.has(moduleGraph)) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
mod._addedSideEffectsBailout.add(moduleGraph);
|
|
156
|
+
moduleGraph
|
|
157
|
+
.getOptimizationBailout(mod)
|
|
158
|
+
.push(
|
|
159
|
+
() =>
|
|
160
|
+
`Dependency (${dep.type}) with side effects at ${formatLocation(dep.loc)}`
|
|
161
|
+
);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Walks the `HarmonyImportSideEffectDependency` graph to decide how `rootMod`
|
|
166
|
+
* connects to a referrer when consumed for its side effects only.
|
|
167
|
+
*
|
|
168
|
+
* Iterative (explicit work stack) so deep import chains never approach V8's
|
|
169
|
+
* recursion limit — the overflow behind #20986 — with no separate recursive
|
|
170
|
+
* form or depth cap. Cycles use Tarjan's `index`/`lowlink`: a module's result
|
|
171
|
+
* is memoized on `_sideEffectsStateGraph` only when it is context-independent
|
|
172
|
+
* (cycle-free, or the root of its strongly-connected component), i.e. exactly
|
|
173
|
+
* when the result cannot depend on which ancestors are mid-walk.
|
|
174
|
+
*
|
|
175
|
+
* The previous walker disabled memoization for the whole walk the moment any
|
|
176
|
+
* cycle appeared (one global `circular` flag). With diamond-shaped graphs that
|
|
177
|
+
* made the walk exponential, so a single circular import could blow up an
|
|
178
|
+
* otherwise-linear graph. Per-module lowlink keeps the cycle-free majority
|
|
179
|
+
* memoized while a cycle exists elsewhere.
|
|
180
|
+
*
|
|
181
|
+
* Caching under `lowlink === index` is conservative: an imprecise lowlink can
|
|
182
|
+
* only skip caching (a later recompute yields the same value), never memoize a
|
|
183
|
+
* state that depended on stack context. `true` is monotonic and always cached.
|
|
184
|
+
* A non-`NormalModule` dependency (e.g. `ConcatenatedModule` re-entering this
|
|
185
|
+
* method) is treated as a taint so its chain is never memoized, and any module
|
|
186
|
+
* already flagged `_isEvaluatingSideEffects` (this walk or an outer re-entrant
|
|
187
|
+
* one) counts as circular, matching the previous walker.
|
|
188
|
+
* @param {NormalModule} rootMod the module being walked
|
|
189
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
190
|
+
* @param {EXPECTED_ANY} SideEffectDep `HarmonyImportSideEffectDependency` constructor, resolved once at the entry
|
|
191
|
+
* @returns {ConnectionState} the side-effects connection state
|
|
192
|
+
*/
|
|
193
|
+
const walkSideEffects = (rootMod, moduleGraph, SideEffectDep) => {
|
|
194
|
+
// Context-independent state without descending; `undefined` => walk deps.
|
|
195
|
+
/**
|
|
196
|
+
* @param {NormalModule} mod module
|
|
197
|
+
* @returns {ConnectionState | undefined} resolved state or undefined
|
|
198
|
+
*/
|
|
199
|
+
const quick = (mod) => {
|
|
200
|
+
if (mod._sideEffectsStateGraph === moduleGraph) {
|
|
201
|
+
return /** @type {ConnectionState} */ (mod._sideEffectsStateValue);
|
|
202
|
+
}
|
|
203
|
+
const fm = mod.factoryMeta;
|
|
204
|
+
if (fm !== undefined) {
|
|
205
|
+
if (fm.sideEffectFree) return false;
|
|
206
|
+
if (fm.sideEffectFree === false) return true;
|
|
207
|
+
}
|
|
208
|
+
if (!(mod.buildMeta !== undefined && mod.buildMeta.sideEffectFree)) {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
const q0 = quick(rootMod);
|
|
215
|
+
if (q0 !== undefined) return q0;
|
|
216
|
+
|
|
217
|
+
/** @type {Map<NormalModule, number>} module -> Tarjan index */
|
|
218
|
+
const indexOf = new Map();
|
|
219
|
+
/** @type {Map<NormalModule, number>} module -> Tarjan lowlink */
|
|
220
|
+
const lowOf = new Map();
|
|
221
|
+
// Parallel frame arrays, to avoid a per-frame object allocation.
|
|
222
|
+
/** @type {NormalModule[]} */
|
|
223
|
+
const fMod = [];
|
|
224
|
+
/** @type {Dependency[][]} */
|
|
225
|
+
const fDeps = [];
|
|
226
|
+
/** @type {number[]} */
|
|
227
|
+
const fIdx = [];
|
|
228
|
+
/** @type {ConnectionState[]} */
|
|
229
|
+
const fCur = [];
|
|
230
|
+
let counter = 0;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @param {NormalModule} mod module to push a frame for
|
|
234
|
+
*/
|
|
235
|
+
const enter = (mod) => {
|
|
236
|
+
indexOf.set(mod, counter);
|
|
237
|
+
lowOf.set(mod, counter);
|
|
238
|
+
counter++;
|
|
239
|
+
mod._isEvaluatingSideEffects = true;
|
|
240
|
+
fMod.push(mod);
|
|
241
|
+
fDeps.push(mod.dependencies);
|
|
242
|
+
fIdx.push(0);
|
|
243
|
+
fCur.push(false);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
enter(rootMod);
|
|
247
|
+
/** @type {ConnectionState} the just-popped frame's result */
|
|
248
|
+
let result = false;
|
|
249
|
+
/**
|
|
250
|
+
* Result of a just-popped child frame, to apply to the new top's current
|
|
251
|
+
* dep. `undefined` means "no pending; advance normally".
|
|
252
|
+
* @type {ConnectionState | undefined}
|
|
253
|
+
*/
|
|
254
|
+
let pending;
|
|
255
|
+
|
|
256
|
+
while (fMod.length > 0) {
|
|
257
|
+
const top = fMod.length - 1;
|
|
258
|
+
const mod = fMod[top];
|
|
259
|
+
const deps = fDeps[top];
|
|
260
|
+
let i = fIdx[top];
|
|
261
|
+
let current = fCur[top];
|
|
262
|
+
|
|
263
|
+
// Apply a popped child's result to the dep that spawned it.
|
|
264
|
+
if (pending !== undefined) {
|
|
265
|
+
const state = pending;
|
|
266
|
+
pending = undefined;
|
|
267
|
+
const dep = deps[i];
|
|
268
|
+
if (state === true) {
|
|
269
|
+
recordSideEffectsBailout(mod, moduleGraph, dep);
|
|
270
|
+
mod._sideEffectsStateGraph = moduleGraph;
|
|
271
|
+
mod._sideEffectsStateValue = true;
|
|
272
|
+
mod._isEvaluatingSideEffects = false;
|
|
273
|
+
fMod.pop();
|
|
274
|
+
fDeps.pop();
|
|
275
|
+
fIdx.pop();
|
|
276
|
+
fCur.pop();
|
|
277
|
+
result = true;
|
|
278
|
+
pending = true;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
|
|
282
|
+
current = ModuleGraphConnection.addConnectionStates(current, state);
|
|
283
|
+
}
|
|
284
|
+
i++;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
let descended = false;
|
|
288
|
+
while (i < deps.length) {
|
|
289
|
+
const dep = deps[i];
|
|
290
|
+
/** @type {ConnectionState} */
|
|
291
|
+
let state;
|
|
292
|
+
|
|
293
|
+
if (dep instanceof SideEffectDep) {
|
|
294
|
+
const refModule = moduleGraph.getModule(dep);
|
|
295
|
+
if (!refModule) {
|
|
296
|
+
state = true;
|
|
297
|
+
} else if (refModule instanceof NormalModule) {
|
|
298
|
+
if (refModule._isEvaluatingSideEffects) {
|
|
299
|
+
// On the current stack (or an outer re-entrant walk) => cycle.
|
|
300
|
+
state = ModuleGraphConnection.CIRCULAR_CONNECTION;
|
|
301
|
+
const ri = indexOf.get(refModule);
|
|
302
|
+
lowOf.set(
|
|
303
|
+
mod,
|
|
304
|
+
Math.min(
|
|
305
|
+
/** @type {number} */ (lowOf.get(mod)),
|
|
306
|
+
ri === undefined ? -1 : ri
|
|
307
|
+
)
|
|
308
|
+
);
|
|
309
|
+
} else {
|
|
310
|
+
const q = quick(refModule);
|
|
311
|
+
if (q !== undefined) {
|
|
312
|
+
state = q;
|
|
313
|
+
} else {
|
|
314
|
+
// Descend: pause this frame, walk the child next.
|
|
315
|
+
fIdx[top] = i;
|
|
316
|
+
fCur[top] = current;
|
|
317
|
+
enter(refModule);
|
|
318
|
+
descended = true;
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
// Non-NormalModule (e.g. ConcatenatedModule delegating back
|
|
324
|
+
// through here) resolves via a re-entrant walk that may see our
|
|
325
|
+
// in-progress modules as circular, so taint this chain: never
|
|
326
|
+
// memoize it.
|
|
327
|
+
state = refModule.getSideEffectsConnectionState(moduleGraph);
|
|
328
|
+
lowOf.set(mod, -1);
|
|
329
|
+
}
|
|
330
|
+
} else {
|
|
331
|
+
state = dep.getModuleEvaluationSideEffectsState(moduleGraph);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (state === true) {
|
|
335
|
+
recordSideEffectsBailout(mod, moduleGraph, dep);
|
|
336
|
+
// `true` is monotonic — always safe to memoize.
|
|
337
|
+
mod._sideEffectsStateGraph = moduleGraph;
|
|
338
|
+
mod._sideEffectsStateValue = true;
|
|
339
|
+
mod._isEvaluatingSideEffects = false;
|
|
340
|
+
fMod.pop();
|
|
341
|
+
fDeps.pop();
|
|
342
|
+
fIdx.pop();
|
|
343
|
+
fCur.pop();
|
|
344
|
+
result = true;
|
|
345
|
+
pending = true;
|
|
346
|
+
descended = true;
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
|
|
350
|
+
current = ModuleGraphConnection.addConnectionStates(current, state);
|
|
351
|
+
}
|
|
352
|
+
i++;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (descended) continue;
|
|
356
|
+
|
|
357
|
+
// `mod` finished without a `true` bailout.
|
|
358
|
+
mod._isEvaluatingSideEffects = false;
|
|
359
|
+
// Memoize only when the result is context-independent: no back-edge in
|
|
360
|
+
// this subtree reached above `mod` (a cycle-free module or an SCC root).
|
|
361
|
+
if (lowOf.get(mod) === indexOf.get(mod)) {
|
|
362
|
+
mod._sideEffectsStateGraph = moduleGraph;
|
|
363
|
+
mod._sideEffectsStateValue = current;
|
|
364
|
+
}
|
|
365
|
+
fMod.pop();
|
|
366
|
+
fDeps.pop();
|
|
367
|
+
fIdx.pop();
|
|
368
|
+
fCur.pop();
|
|
369
|
+
result = current;
|
|
370
|
+
pending = current;
|
|
371
|
+
if (fMod.length > 0) {
|
|
372
|
+
const parent = fMod[fMod.length - 1];
|
|
373
|
+
lowOf.set(
|
|
374
|
+
parent,
|
|
375
|
+
Math.min(
|
|
376
|
+
/** @type {number} */ (lowOf.get(parent)),
|
|
377
|
+
/** @type {number} */ (lowOf.get(mod))
|
|
378
|
+
)
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
return result;
|
|
384
|
+
};
|
|
130
385
|
|
|
131
386
|
/**
|
|
132
387
|
* @typedef {object} LoaderItem
|
|
@@ -136,21 +391,6 @@ const ABSOLUTE_PATH_REGEX = /^(?:[a-z]:\\|\\\\|\/)/i;
|
|
|
136
391
|
* @property {string | null=} type
|
|
137
392
|
*/
|
|
138
393
|
|
|
139
|
-
/**
|
|
140
|
-
* @param {string} context absolute context path
|
|
141
|
-
* @param {string} source a source path
|
|
142
|
-
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
143
|
-
* @returns {string} new source path
|
|
144
|
-
*/
|
|
145
|
-
const contextifySourceUrl = (context, source, associatedObjectForCache) => {
|
|
146
|
-
if (source.startsWith("webpack://")) return source;
|
|
147
|
-
return `webpack://${makePathsRelative(
|
|
148
|
-
context,
|
|
149
|
-
source,
|
|
150
|
-
associatedObjectForCache
|
|
151
|
-
)}`;
|
|
152
|
-
};
|
|
153
|
-
|
|
154
394
|
/**
|
|
155
395
|
* @param {string} context absolute context path
|
|
156
396
|
* @param {string | RawSourceMap} sourceMap a source map
|
|
@@ -207,24 +447,6 @@ const asBuffer = (input) => {
|
|
|
207
447
|
return input;
|
|
208
448
|
};
|
|
209
449
|
|
|
210
|
-
class NonErrorEmittedError extends WebpackError {
|
|
211
|
-
/**
|
|
212
|
-
* @param {EXPECTED_ANY} error value which is not an instance of Error
|
|
213
|
-
*/
|
|
214
|
-
constructor(error) {
|
|
215
|
-
super();
|
|
216
|
-
|
|
217
|
-
this.name = "NonErrorEmittedError";
|
|
218
|
-
this.message = `(Emitted value instead of an instance of Error) ${error}`;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
makeSerializable(
|
|
223
|
-
NonErrorEmittedError,
|
|
224
|
-
"webpack/lib/NormalModule",
|
|
225
|
-
"NonErrorEmittedError"
|
|
226
|
-
);
|
|
227
|
-
|
|
228
450
|
/** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
|
|
229
451
|
|
|
230
452
|
/** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
|
|
@@ -234,22 +456,86 @@ makeSerializable(
|
|
|
234
456
|
* @typedef {HookMap<FakeHook<AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>>>} DeprecatedReadResourceForScheme
|
|
235
457
|
*/
|
|
236
458
|
|
|
459
|
+
const createCompilationHooks = () => {
|
|
460
|
+
/** @type {HookMap<AsyncSeriesBailHook<[AnyLoaderContext], string | Buffer | null>>} */
|
|
461
|
+
const readResource = new HookMap(
|
|
462
|
+
() => new AsyncSeriesBailHook(["loaderContext"])
|
|
463
|
+
);
|
|
464
|
+
return {
|
|
465
|
+
// TODO webpack 6 deprecate
|
|
466
|
+
/**
|
|
467
|
+
* @deprecated Use the `readResource` hook instead.
|
|
468
|
+
* @type {DeprecatedReadResourceForScheme}
|
|
469
|
+
*/
|
|
470
|
+
readResourceForScheme: new HookMap((scheme) => {
|
|
471
|
+
const hook = readResource.for(scheme);
|
|
472
|
+
return createFakeHook(
|
|
473
|
+
/** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
|
|
474
|
+
tap: (options, fn) =>
|
|
475
|
+
hook.tap(options, (loaderContext) =>
|
|
476
|
+
fn(
|
|
477
|
+
loaderContext.resource,
|
|
478
|
+
/** @type {NormalModule} */ (loaderContext._module)
|
|
479
|
+
)
|
|
480
|
+
),
|
|
481
|
+
tapAsync: (options, fn) =>
|
|
482
|
+
hook.tapAsync(options, (loaderContext, callback) =>
|
|
483
|
+
fn(
|
|
484
|
+
loaderContext.resource,
|
|
485
|
+
/** @type {NormalModule} */ (loaderContext._module),
|
|
486
|
+
callback
|
|
487
|
+
)
|
|
488
|
+
),
|
|
489
|
+
tapPromise: (options, fn) =>
|
|
490
|
+
hook.tapPromise(options, (loaderContext) =>
|
|
491
|
+
fn(
|
|
492
|
+
loaderContext.resource,
|
|
493
|
+
/** @type {NormalModule} */ (loaderContext._module)
|
|
494
|
+
)
|
|
495
|
+
)
|
|
496
|
+
})
|
|
497
|
+
);
|
|
498
|
+
}),
|
|
499
|
+
/**
|
|
500
|
+
* @since 5.58.0
|
|
501
|
+
*/
|
|
502
|
+
readResource,
|
|
503
|
+
/** @type {SyncHook<[AnyLoaderContext, NormalModule]>} */
|
|
504
|
+
loader: new SyncHook(["loaderContext", "module"]),
|
|
505
|
+
/** @type {SyncHook<[LoaderItem[], NormalModule, AnyLoaderContext]>} */
|
|
506
|
+
beforeLoaders: new SyncHook(["loaders", "module", "loaderContext"]),
|
|
507
|
+
/**
|
|
508
|
+
* @type {SyncHook<[NormalModule]>}
|
|
509
|
+
* @since 5.59.0
|
|
510
|
+
*/
|
|
511
|
+
beforeParse: new SyncHook(["module"]),
|
|
512
|
+
/**
|
|
513
|
+
* @type {SyncHook<[NormalModule]>}
|
|
514
|
+
* @since 5.59.0
|
|
515
|
+
*/
|
|
516
|
+
beforeSnapshot: new SyncHook(["module"]),
|
|
517
|
+
/**
|
|
518
|
+
* @type {SyncWaterfallHook<[Result, NormalModule]>}
|
|
519
|
+
* @since 5.99.0
|
|
520
|
+
*/
|
|
521
|
+
processResult: new SyncWaterfallHook(["result", "module"]),
|
|
522
|
+
/**
|
|
523
|
+
* @type {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>}
|
|
524
|
+
* @since 5.49.0
|
|
525
|
+
*/
|
|
526
|
+
needBuild: new AsyncSeriesBailHook(["module", "context"])
|
|
527
|
+
};
|
|
528
|
+
};
|
|
529
|
+
|
|
237
530
|
/**
|
|
238
|
-
* @typedef {
|
|
239
|
-
* @property {SyncHook<[AnyLoaderContext, NormalModule]>} loader
|
|
240
|
-
* @property {SyncHook<[LoaderItem[], NormalModule, AnyLoaderContext]>} beforeLoaders
|
|
241
|
-
* @property {SyncHook<[NormalModule]>} beforeParse
|
|
242
|
-
* @property {SyncHook<[NormalModule]>} beforeSnapshot
|
|
243
|
-
* @property {DeprecatedReadResourceForScheme} readResourceForScheme
|
|
244
|
-
* @property {HookMap<AsyncSeriesBailHook<[AnyLoaderContext], string | Buffer | null>>} readResource
|
|
245
|
-
* @property {SyncWaterfallHook<[Result, NormalModule]>} processResult
|
|
246
|
-
* @property {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>} needBuild
|
|
531
|
+
* @typedef {ReturnType<typeof createCompilationHooks>} NormalModuleCompilationHooks
|
|
247
532
|
*/
|
|
248
533
|
|
|
249
534
|
/**
|
|
535
|
+
* @template {NormalModuleTypes | ""} [T=NormalModuleTypes | ""]
|
|
250
536
|
* @typedef {object} NormalModuleCreateData
|
|
251
537
|
* @property {string=} layer an optional layer in which the module is
|
|
252
|
-
* @property {
|
|
538
|
+
* @property {T} type module type. When deserializing, this is set to an empty string "".
|
|
253
539
|
* @property {string} request request string
|
|
254
540
|
* @property {string} userRequest request intended by user (without loaders from config)
|
|
255
541
|
* @property {string} rawRequest request without resolving
|
|
@@ -258,10 +544,10 @@ makeSerializable(
|
|
|
258
544
|
* @property {(ResourceSchemeData & Partial<ResolveRequest>)=} resourceResolveData resource resolve data
|
|
259
545
|
* @property {string} context context directory for resolving
|
|
260
546
|
* @property {string=} matchResource path + query of the matched resource (virtual)
|
|
261
|
-
* @property {
|
|
262
|
-
* @property {
|
|
263
|
-
* @property {
|
|
264
|
-
* @property {
|
|
547
|
+
* @property {ParserByType[T]} parser the parser used
|
|
548
|
+
* @property {ParserOptionsByType[T]=} parserOptions the options of the parser used
|
|
549
|
+
* @property {GeneratorByType[T]} generator the generator used
|
|
550
|
+
* @property {GeneratorOptionsByType[T]=} generatorOptions the options of the generator used
|
|
265
551
|
* @property {ResolveOptions=} resolveOptions options used for resolving requests from this module
|
|
266
552
|
* @property {boolean} extractSourceMap enable/disable extracting source map
|
|
267
553
|
*/
|
|
@@ -270,8 +556,23 @@ makeSerializable(
|
|
|
270
556
|
* @typedef {(resourcePath: string, getLoaderContext: (resourcePath: string) => AnyLoaderContext) => Promise<string | Buffer<ArrayBufferLike>>} ReadResource
|
|
271
557
|
*/
|
|
272
558
|
|
|
273
|
-
/**
|
|
274
|
-
|
|
559
|
+
/**
|
|
560
|
+
* Defines the build info properties of normal modules (filesystem-backed, loader-processed).
|
|
561
|
+
* @typedef {object} KnownNormalModuleBuildInfo
|
|
562
|
+
* @property {boolean=} parsed
|
|
563
|
+
* @property {string=} hash
|
|
564
|
+
* @property {FileSystemDependencies=} fileDependencies
|
|
565
|
+
* @property {FileSystemDependencies=} contextDependencies
|
|
566
|
+
* @property {FileSystemDependencies=} missingDependencies
|
|
567
|
+
* @property {FileSystemDependencies=} buildDependencies
|
|
568
|
+
* @property {ValueCacheVersions=} valueDependencies
|
|
569
|
+
* @property {(Snapshot | null)=} snapshot
|
|
570
|
+
* @property {string=} resourceIntegrity using in HttpUriPlugin
|
|
571
|
+
*/
|
|
572
|
+
|
|
573
|
+
/** @typedef {BuildInfo & KnownNormalModuleBuildInfo} NormalModuleBuildInfo */
|
|
574
|
+
|
|
575
|
+
const normalModuleHooksRegistry = createHooksRegistry(createCompilationHooks);
|
|
275
576
|
|
|
276
577
|
class NormalModule extends Module {
|
|
277
578
|
/**
|
|
@@ -279,62 +580,7 @@ class NormalModule extends Module {
|
|
|
279
580
|
* @returns {NormalModuleCompilationHooks} the attached hooks
|
|
280
581
|
*/
|
|
281
582
|
static getCompilationHooks(compilation) {
|
|
282
|
-
|
|
283
|
-
throw new TypeError(
|
|
284
|
-
"The 'compilation' argument must be an instance of Compilation"
|
|
285
|
-
);
|
|
286
|
-
}
|
|
287
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
288
|
-
if (hooks === undefined) {
|
|
289
|
-
hooks = {
|
|
290
|
-
loader: new SyncHook(["loaderContext", "module"]),
|
|
291
|
-
beforeLoaders: new SyncHook(["loaders", "module", "loaderContext"]),
|
|
292
|
-
beforeParse: new SyncHook(["module"]),
|
|
293
|
-
beforeSnapshot: new SyncHook(["module"]),
|
|
294
|
-
// TODO webpack 6 deprecate
|
|
295
|
-
readResourceForScheme: new HookMap((scheme) => {
|
|
296
|
-
const hook =
|
|
297
|
-
/** @type {NormalModuleCompilationHooks} */
|
|
298
|
-
(hooks).readResource.for(scheme);
|
|
299
|
-
return createFakeHook(
|
|
300
|
-
/** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
|
|
301
|
-
tap: (options, fn) =>
|
|
302
|
-
hook.tap(options, (loaderContext) =>
|
|
303
|
-
fn(
|
|
304
|
-
loaderContext.resource,
|
|
305
|
-
/** @type {NormalModule} */ (loaderContext._module)
|
|
306
|
-
)
|
|
307
|
-
),
|
|
308
|
-
tapAsync: (options, fn) =>
|
|
309
|
-
hook.tapAsync(options, (loaderContext, callback) =>
|
|
310
|
-
fn(
|
|
311
|
-
loaderContext.resource,
|
|
312
|
-
/** @type {NormalModule} */ (loaderContext._module),
|
|
313
|
-
callback
|
|
314
|
-
)
|
|
315
|
-
),
|
|
316
|
-
tapPromise: (options, fn) =>
|
|
317
|
-
hook.tapPromise(options, (loaderContext) =>
|
|
318
|
-
fn(
|
|
319
|
-
loaderContext.resource,
|
|
320
|
-
/** @type {NormalModule} */ (loaderContext._module)
|
|
321
|
-
)
|
|
322
|
-
)
|
|
323
|
-
})
|
|
324
|
-
);
|
|
325
|
-
}),
|
|
326
|
-
readResource: new HookMap(
|
|
327
|
-
() => new AsyncSeriesBailHook(["loaderContext"])
|
|
328
|
-
),
|
|
329
|
-
processResult: new SyncWaterfallHook(["result", "module"]),
|
|
330
|
-
needBuild: new AsyncSeriesBailHook(["module", "context"])
|
|
331
|
-
};
|
|
332
|
-
compilationHooksMap.set(
|
|
333
|
-
compilation,
|
|
334
|
-
/** @type {NormalModuleCompilationHooks} */ (hooks)
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
return /** @type {NormalModuleCompilationHooks} */ (hooks);
|
|
583
|
+
return normalModuleHooksRegistry(compilation);
|
|
338
584
|
}
|
|
339
585
|
|
|
340
586
|
/**
|
|
@@ -393,14 +639,27 @@ class NormalModule extends Module {
|
|
|
393
639
|
/** @type {NormalModuleCreateData['extractSourceMap']} */
|
|
394
640
|
this.extractSourceMap = extractSourceMap;
|
|
395
641
|
|
|
642
|
+
// Set by HotModuleReplacementPlugin via NormalModuleFactory's `module` hook
|
|
643
|
+
/** @type {boolean} */
|
|
644
|
+
this.hot = false;
|
|
645
|
+
|
|
396
646
|
// Info from Build
|
|
397
|
-
|
|
647
|
+
// Redeclared with the normal module specific shape (see KnownNormalModuleBuildInfo)
|
|
648
|
+
/** @type {NormalModuleBuildInfo | undefined} */
|
|
649
|
+
this.buildInfo = undefined;
|
|
650
|
+
/** @type {Error | null} */
|
|
398
651
|
this.error = null;
|
|
399
652
|
/**
|
|
400
653
|
* @private
|
|
401
654
|
* @type {Source | null}
|
|
402
655
|
*/
|
|
403
656
|
this._source = null;
|
|
657
|
+
// Set at build time; declared here so the instance shape is fixed at construction
|
|
658
|
+
/**
|
|
659
|
+
* @private
|
|
660
|
+
* @type {PreparsedAst | null}
|
|
661
|
+
*/
|
|
662
|
+
this._ast = null;
|
|
404
663
|
/**
|
|
405
664
|
* @private
|
|
406
665
|
* @type {Map<undefined | SourceType, number> | undefined}
|
|
@@ -423,15 +682,25 @@ class NormalModule extends Module {
|
|
|
423
682
|
*/
|
|
424
683
|
this._forceBuild = true;
|
|
425
684
|
/**
|
|
426
|
-
* @private
|
|
427
685
|
* @type {boolean}
|
|
428
686
|
*/
|
|
429
687
|
this._isEvaluatingSideEffects = false;
|
|
430
688
|
/**
|
|
431
|
-
* @private
|
|
432
689
|
* @type {WeakSet<ModuleGraph> | undefined}
|
|
433
690
|
*/
|
|
434
691
|
this._addedSideEffectsBailout = undefined;
|
|
692
|
+
/**
|
|
693
|
+
* Memoizes the result of `getSideEffectsConnectionState`. The
|
|
694
|
+
* graph slot keys the cached value to the `ModuleGraph` it was
|
|
695
|
+
* computed against so stale values never leak across compilations
|
|
696
|
+
* — a walk that targets a different graph just overwrites both
|
|
697
|
+
* slots. Populated only for context-independent results (cycle-free
|
|
698
|
+
* or SCC-root modules; see `walkSideEffects`).
|
|
699
|
+
* @type {ModuleGraph | undefined}
|
|
700
|
+
*/
|
|
701
|
+
this._sideEffectsStateGraph = undefined;
|
|
702
|
+
/** @type {ConnectionState | undefined} */
|
|
703
|
+
this._sideEffectsStateValue = undefined;
|
|
435
704
|
/**
|
|
436
705
|
* @private
|
|
437
706
|
* @type {CodeGenerationResultData}
|
|
@@ -440,6 +709,7 @@ class NormalModule extends Module {
|
|
|
440
709
|
}
|
|
441
710
|
|
|
442
711
|
/**
|
|
712
|
+
* Returns the unique identifier used to reference this module.
|
|
443
713
|
* @returns {string} a unique identifier of the module
|
|
444
714
|
*/
|
|
445
715
|
identifier() {
|
|
@@ -453,6 +723,7 @@ class NormalModule extends Module {
|
|
|
453
723
|
}
|
|
454
724
|
|
|
455
725
|
/**
|
|
726
|
+
* Returns a human-readable identifier for this module.
|
|
456
727
|
* @param {RequestShortener} requestShortener the request shortener
|
|
457
728
|
* @returns {string} a user readable identifier of the module
|
|
458
729
|
*/
|
|
@@ -468,6 +739,7 @@ class NormalModule extends Module {
|
|
|
468
739
|
}
|
|
469
740
|
|
|
470
741
|
/**
|
|
742
|
+
* Gets the library identifier.
|
|
471
743
|
* @param {LibIdentOptions} options options
|
|
472
744
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
473
745
|
*/
|
|
@@ -482,6 +754,7 @@ class NormalModule extends Module {
|
|
|
482
754
|
}
|
|
483
755
|
|
|
484
756
|
/**
|
|
757
|
+
* Returns the path used when matching this module against rule conditions.
|
|
485
758
|
* @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
|
|
486
759
|
*/
|
|
487
760
|
nameForCondition() {
|
|
@@ -535,6 +808,11 @@ class NormalModule extends Module {
|
|
|
535
808
|
this.parserOptions = undefined;
|
|
536
809
|
this.generator = undefined;
|
|
537
810
|
this.generatorOptions = undefined;
|
|
811
|
+
// Drop the side-effects memoization so a long-lived module doesn't
|
|
812
|
+
// strong-reference a stale `ModuleGraph`/`Compilation` for graphs
|
|
813
|
+
// that never get re-queried with a fresh one.
|
|
814
|
+
this._sideEffectsStateGraph = undefined;
|
|
815
|
+
this._sideEffectsStateValue = undefined;
|
|
538
816
|
}
|
|
539
817
|
|
|
540
818
|
/**
|
|
@@ -707,11 +985,8 @@ class NormalModule extends Module {
|
|
|
707
985
|
/** @type {NormalModuleLoaderContext<T>} */
|
|
708
986
|
const loaderContext = {
|
|
709
987
|
version: 2,
|
|
710
|
-
/**
|
|
711
|
-
|
|
712
|
-
* @returns {T} options
|
|
713
|
-
*/
|
|
714
|
-
getOptions: (schema) => {
|
|
988
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getOptions"]} */
|
|
989
|
+
getOptions: (/** @type {EXPECTED_ANY} */ schema = undefined) => {
|
|
715
990
|
const loader = this.getCurrentLoader(
|
|
716
991
|
/** @type {AnyLoaderContext} */
|
|
717
992
|
(loaderContext)
|
|
@@ -722,7 +997,9 @@ class NormalModule extends Module {
|
|
|
722
997
|
if (typeof options === "string") {
|
|
723
998
|
if (options.startsWith("{") && options.endsWith("}")) {
|
|
724
999
|
try {
|
|
725
|
-
options =
|
|
1000
|
+
options =
|
|
1001
|
+
/** @type {LoaderItem["options"]} */
|
|
1002
|
+
(parseJson(options));
|
|
726
1003
|
} catch (err) {
|
|
727
1004
|
throw new Error(
|
|
728
1005
|
`Cannot parse string options: ${/** @type {Error} */ (err).message}`,
|
|
@@ -756,6 +1033,7 @@ class NormalModule extends Module {
|
|
|
756
1033
|
|
|
757
1034
|
return /** @type {T} */ (options);
|
|
758
1035
|
},
|
|
1036
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitWarning"]} */
|
|
759
1037
|
emitWarning: (warning) => {
|
|
760
1038
|
if (!(warning instanceof Error)) {
|
|
761
1039
|
warning = new NonErrorEmittedError(warning);
|
|
@@ -766,6 +1044,7 @@ class NormalModule extends Module {
|
|
|
766
1044
|
})
|
|
767
1045
|
);
|
|
768
1046
|
},
|
|
1047
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitError"]} */
|
|
769
1048
|
emitError: (error) => {
|
|
770
1049
|
if (!(error instanceof Error)) {
|
|
771
1050
|
error = new NonErrorEmittedError(error);
|
|
@@ -776,6 +1055,7 @@ class NormalModule extends Module {
|
|
|
776
1055
|
})
|
|
777
1056
|
);
|
|
778
1057
|
},
|
|
1058
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getLogger"]} */
|
|
779
1059
|
getLogger: (name) => {
|
|
780
1060
|
const currentLoader = this.getCurrentLoader(
|
|
781
1061
|
/** @type {AnyLoaderContext} */
|
|
@@ -787,9 +1067,11 @@ class NormalModule extends Module {
|
|
|
787
1067
|
.join("|")
|
|
788
1068
|
);
|
|
789
1069
|
},
|
|
1070
|
+
/** @type {LoaderContext<EXPECTED_ANY>["resolve"]} */
|
|
790
1071
|
resolve(context, request, callback) {
|
|
791
1072
|
resolver.resolve({}, context, request, getResolveContext(), callback);
|
|
792
1073
|
},
|
|
1074
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getResolve"]} */
|
|
793
1075
|
getResolve(options) {
|
|
794
1076
|
const child = options ? resolver.withOptions(options) : resolver;
|
|
795
1077
|
return /** @type {ReturnType<import("../declarations/LoaderContext").NormalModuleLoaderContext<T>["getResolve"]>} */ (
|
|
@@ -819,8 +1101,9 @@ class NormalModule extends Module {
|
|
|
819
1101
|
}
|
|
820
1102
|
);
|
|
821
1103
|
},
|
|
1104
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitFile"]} */
|
|
822
1105
|
emitFile: (name, content, sourceMap, assetInfo) => {
|
|
823
|
-
const buildInfo = /** @type {
|
|
1106
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
824
1107
|
|
|
825
1108
|
if (!buildInfo.assets) {
|
|
826
1109
|
buildInfo.assets = Object.create(null);
|
|
@@ -844,7 +1127,7 @@ class NormalModule extends Module {
|
|
|
844
1127
|
assetsInfo.set(name, assetInfo);
|
|
845
1128
|
},
|
|
846
1129
|
addBuildDependency: (dep) => {
|
|
847
|
-
const buildInfo = /** @type {
|
|
1130
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
848
1131
|
|
|
849
1132
|
if (buildInfo.buildDependencies === undefined) {
|
|
850
1133
|
buildInfo.buildDependencies = new LazySet();
|
|
@@ -867,6 +1150,7 @@ class NormalModule extends Module {
|
|
|
867
1150
|
};
|
|
868
1151
|
|
|
869
1152
|
Object.assign(loaderContext, options.loader);
|
|
1153
|
+
createLoaderContext(loaderContext);
|
|
870
1154
|
|
|
871
1155
|
hooks.loader.call(
|
|
872
1156
|
/** @type {AnyLoaderContext} */
|
|
@@ -1017,7 +1301,7 @@ class NormalModule extends Module {
|
|
|
1017
1301
|
return callback();
|
|
1018
1302
|
};
|
|
1019
1303
|
|
|
1020
|
-
const buildInfo = /** @type {
|
|
1304
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1021
1305
|
|
|
1022
1306
|
buildInfo.fileDependencies = new LazySet();
|
|
1023
1307
|
buildInfo.contextDependencies = new LazySet();
|
|
@@ -1037,7 +1321,7 @@ class NormalModule extends Module {
|
|
|
1037
1321
|
}
|
|
1038
1322
|
|
|
1039
1323
|
if (this.loaders.length > 0) {
|
|
1040
|
-
/** @type {
|
|
1324
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1041
1325
|
(this.buildInfo).buildDependencies = new LazySet();
|
|
1042
1326
|
}
|
|
1043
1327
|
|
|
@@ -1133,7 +1417,7 @@ class NormalModule extends Module {
|
|
|
1133
1417
|
(undefined);
|
|
1134
1418
|
|
|
1135
1419
|
if (!result) {
|
|
1136
|
-
/** @type {
|
|
1420
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1137
1421
|
(this.buildInfo).cacheable = false;
|
|
1138
1422
|
return processResult(
|
|
1139
1423
|
err || new Error("No result from loader-runner processing"),
|
|
@@ -1141,16 +1425,16 @@ class NormalModule extends Module {
|
|
|
1141
1425
|
);
|
|
1142
1426
|
}
|
|
1143
1427
|
|
|
1144
|
-
const buildInfo = /** @type {
|
|
1428
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1145
1429
|
|
|
1146
1430
|
const fileDependencies =
|
|
1147
|
-
/** @type {NonNullable<
|
|
1431
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
|
|
1148
1432
|
(buildInfo.fileDependencies);
|
|
1149
1433
|
const contextDependencies =
|
|
1150
|
-
/** @type {NonNullable<
|
|
1434
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1151
1435
|
(buildInfo.contextDependencies);
|
|
1152
1436
|
const missingDependencies =
|
|
1153
|
-
/** @type {NonNullable<
|
|
1437
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
|
|
1154
1438
|
(buildInfo.missingDependencies);
|
|
1155
1439
|
|
|
1156
1440
|
fileDependencies.addAll(result.fileDependencies);
|
|
@@ -1158,19 +1442,22 @@ class NormalModule extends Module {
|
|
|
1158
1442
|
missingDependencies.addAll(result.missingDependencies);
|
|
1159
1443
|
for (const loader of this.loaders) {
|
|
1160
1444
|
const buildDependencies =
|
|
1161
|
-
/** @type {NonNullable<
|
|
1445
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["buildDependencies"]>} */
|
|
1162
1446
|
(buildInfo.buildDependencies);
|
|
1163
1447
|
|
|
1164
1448
|
buildDependencies.add(loader.loader);
|
|
1165
1449
|
}
|
|
1166
1450
|
buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
|
|
1451
|
+
if (result.notCacheableReasons.length > 0) {
|
|
1452
|
+
buildInfo.notCacheableReasons = result.notCacheableReasons;
|
|
1453
|
+
}
|
|
1167
1454
|
processResult(err, result.result);
|
|
1168
1455
|
}
|
|
1169
1456
|
);
|
|
1170
1457
|
}
|
|
1171
1458
|
|
|
1172
1459
|
/**
|
|
1173
|
-
* @param {
|
|
1460
|
+
* @param {Error} error the error
|
|
1174
1461
|
* @returns {void}
|
|
1175
1462
|
*/
|
|
1176
1463
|
markModuleAsErrored(error) {
|
|
@@ -1240,11 +1527,12 @@ class NormalModule extends Module {
|
|
|
1240
1527
|
}
|
|
1241
1528
|
hash.update("meta");
|
|
1242
1529
|
hash.update(JSON.stringify(this.buildMeta));
|
|
1243
|
-
/** @type {
|
|
1530
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1244
1531
|
(this.buildInfo).hash = hash.digest("hex");
|
|
1245
1532
|
}
|
|
1246
1533
|
|
|
1247
1534
|
/**
|
|
1535
|
+
* Builds the module using the provided compilation context.
|
|
1248
1536
|
* @param {WebpackOptions} options webpack options
|
|
1249
1537
|
* @param {Compilation} compilation the compilation
|
|
1250
1538
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -1261,9 +1549,15 @@ class NormalModule extends Module {
|
|
|
1261
1549
|
this.error = null;
|
|
1262
1550
|
this.clearWarningsAndErrors();
|
|
1263
1551
|
this.clearDependenciesAndBlocks();
|
|
1264
|
-
this.buildMeta = {
|
|
1552
|
+
this.buildMeta = {
|
|
1553
|
+
exportsType: undefined,
|
|
1554
|
+
defaultObject: undefined,
|
|
1555
|
+
strictHarmonyModule: undefined,
|
|
1556
|
+
async: undefined
|
|
1557
|
+
};
|
|
1265
1558
|
this.buildInfo = {
|
|
1266
1559
|
cacheable: false,
|
|
1560
|
+
notCacheableReasons: undefined,
|
|
1267
1561
|
parsed: true,
|
|
1268
1562
|
fileDependencies: undefined,
|
|
1269
1563
|
contextDependencies: undefined,
|
|
@@ -1272,7 +1566,16 @@ class NormalModule extends Module {
|
|
|
1272
1566
|
valueDependencies: undefined,
|
|
1273
1567
|
hash: undefined,
|
|
1274
1568
|
assets: undefined,
|
|
1275
|
-
assetsInfo: undefined
|
|
1569
|
+
assetsInfo: undefined,
|
|
1570
|
+
snapshot: undefined,
|
|
1571
|
+
strict: undefined,
|
|
1572
|
+
exportsArgument: undefined,
|
|
1573
|
+
moduleArgument: undefined,
|
|
1574
|
+
topLevelDeclarations: undefined,
|
|
1575
|
+
pureFunctions: undefined,
|
|
1576
|
+
inlineExports: undefined,
|
|
1577
|
+
moduleConcatenationBailout: undefined,
|
|
1578
|
+
needCreateRequire: undefined
|
|
1276
1579
|
};
|
|
1277
1580
|
|
|
1278
1581
|
const startTime = compilation.compiler.fsStartTime || Date.now();
|
|
@@ -1305,7 +1608,7 @@ class NormalModule extends Module {
|
|
|
1305
1608
|
const handleParseResult = () => {
|
|
1306
1609
|
this.dependencies.sort(
|
|
1307
1610
|
concatComparators(
|
|
1308
|
-
|
|
1611
|
+
Dependency.compareLocations,
|
|
1309
1612
|
keepOriginalOrder(this.dependencies)
|
|
1310
1613
|
)
|
|
1311
1614
|
);
|
|
@@ -1321,12 +1624,14 @@ class NormalModule extends Module {
|
|
|
1321
1624
|
try {
|
|
1322
1625
|
hooks.beforeSnapshot.call(this);
|
|
1323
1626
|
} catch (err) {
|
|
1324
|
-
this.markModuleAsErrored(/** @type {
|
|
1627
|
+
this.markModuleAsErrored(/** @type {Error} */ (err));
|
|
1325
1628
|
return callback();
|
|
1326
1629
|
}
|
|
1327
1630
|
|
|
1328
1631
|
const snapshotOptions = compilation.options.snapshot.module;
|
|
1329
|
-
const { cacheable } = /** @type {
|
|
1632
|
+
const { cacheable } = /** @type {NormalModuleBuildInfo} */ (
|
|
1633
|
+
this.buildInfo
|
|
1634
|
+
);
|
|
1330
1635
|
if (!cacheable || !snapshotOptions) {
|
|
1331
1636
|
return callback();
|
|
1332
1637
|
}
|
|
@@ -1339,7 +1644,7 @@ class NormalModule extends Module {
|
|
|
1339
1644
|
*/
|
|
1340
1645
|
const checkDependencies = (deps) => {
|
|
1341
1646
|
for (const dep of deps) {
|
|
1342
|
-
if (!
|
|
1647
|
+
if (!ABSOLUTE_PATH_REGEXP.test(dep)) {
|
|
1343
1648
|
if (nonAbsoluteDependencies === undefined) {
|
|
1344
1649
|
nonAbsoluteDependencies = new Set();
|
|
1345
1650
|
}
|
|
@@ -1353,11 +1658,11 @@ class NormalModule extends Module {
|
|
|
1353
1658
|
(this.context),
|
|
1354
1659
|
depWithoutGlob
|
|
1355
1660
|
);
|
|
1356
|
-
if (absolute !== dep &&
|
|
1661
|
+
if (absolute !== dep && ABSOLUTE_PATH_REGEXP.test(absolute)) {
|
|
1357
1662
|
(depWithoutGlob !== dep
|
|
1358
|
-
? /** @type {NonNullable<
|
|
1663
|
+
? /** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1359
1664
|
(
|
|
1360
|
-
/** @type {
|
|
1665
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1361
1666
|
(this.buildInfo).contextDependencies
|
|
1362
1667
|
)
|
|
1363
1668
|
: deps
|
|
@@ -1369,15 +1674,15 @@ class NormalModule extends Module {
|
|
|
1369
1674
|
}
|
|
1370
1675
|
}
|
|
1371
1676
|
};
|
|
1372
|
-
const buildInfo = /** @type {
|
|
1677
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1373
1678
|
const fileDependencies =
|
|
1374
|
-
/** @type {NonNullable<
|
|
1679
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
|
|
1375
1680
|
(buildInfo.fileDependencies);
|
|
1376
1681
|
const contextDependencies =
|
|
1377
|
-
/** @type {NonNullable<
|
|
1682
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1378
1683
|
(buildInfo.contextDependencies);
|
|
1379
1684
|
const missingDependencies =
|
|
1380
|
-
/** @type {NonNullable<
|
|
1685
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
|
|
1381
1686
|
(buildInfo.missingDependencies);
|
|
1382
1687
|
checkDependencies(fileDependencies);
|
|
1383
1688
|
checkDependencies(missingDependencies);
|
|
@@ -1413,7 +1718,7 @@ class NormalModule extends Module {
|
|
|
1413
1718
|
try {
|
|
1414
1719
|
hooks.beforeParse.call(this);
|
|
1415
1720
|
} catch (err) {
|
|
1416
|
-
this.markModuleAsErrored(/** @type {
|
|
1721
|
+
this.markModuleAsErrored(/** @type {Error} */ (err));
|
|
1417
1722
|
this._initBuildHash(compilation);
|
|
1418
1723
|
return callback();
|
|
1419
1724
|
}
|
|
@@ -1423,7 +1728,7 @@ class NormalModule extends Module {
|
|
|
1423
1728
|
const noParseRule = options.module && options.module.noParse;
|
|
1424
1729
|
if (this.shouldPreventParsing(noParseRule, this.request)) {
|
|
1425
1730
|
// We assume that we need module and exports
|
|
1426
|
-
/** @type {
|
|
1731
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1427
1732
|
(this.buildInfo).parsed = false;
|
|
1428
1733
|
this._initBuildHash(compilation);
|
|
1429
1734
|
return handleBuildDone();
|
|
@@ -1437,7 +1742,11 @@ class NormalModule extends Module {
|
|
|
1437
1742
|
current: this,
|
|
1438
1743
|
module: this,
|
|
1439
1744
|
compilation,
|
|
1440
|
-
options
|
|
1745
|
+
options,
|
|
1746
|
+
harmonyNamedExports: undefined,
|
|
1747
|
+
harmonyStarExports: undefined,
|
|
1748
|
+
lastHarmonyImportOrder: undefined,
|
|
1749
|
+
localModules: undefined
|
|
1441
1750
|
});
|
|
1442
1751
|
} catch (parseErr) {
|
|
1443
1752
|
handleParseError(/** @type {Error} */ (parseErr));
|
|
@@ -1448,6 +1757,7 @@ class NormalModule extends Module {
|
|
|
1448
1757
|
}
|
|
1449
1758
|
|
|
1450
1759
|
/**
|
|
1760
|
+
* Returns the reason this module cannot be concatenated, when one exists.
|
|
1451
1761
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
1452
1762
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
1453
1763
|
*/
|
|
@@ -1458,54 +1768,23 @@ class NormalModule extends Module {
|
|
|
1458
1768
|
}
|
|
1459
1769
|
|
|
1460
1770
|
/**
|
|
1771
|
+
* Gets side effects connection state.
|
|
1461
1772
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1462
1773
|
* @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
|
|
1463
1774
|
*/
|
|
1464
1775
|
getSideEffectsConnectionState(moduleGraph) {
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
this._isEvaluatingSideEffects = true;
|
|
1474
|
-
/** @type {ConnectionState} */
|
|
1475
|
-
let current = false;
|
|
1476
|
-
for (const dep of this.dependencies) {
|
|
1477
|
-
const state = dep.getModuleEvaluationSideEffectsState(moduleGraph);
|
|
1478
|
-
if (state === true) {
|
|
1479
|
-
if (
|
|
1480
|
-
this._addedSideEffectsBailout === undefined
|
|
1481
|
-
? ((this._addedSideEffectsBailout = new WeakSet()), true)
|
|
1482
|
-
: !this._addedSideEffectsBailout.has(moduleGraph)
|
|
1483
|
-
) {
|
|
1484
|
-
this._addedSideEffectsBailout.add(moduleGraph);
|
|
1485
|
-
moduleGraph
|
|
1486
|
-
.getOptimizationBailout(this)
|
|
1487
|
-
.push(
|
|
1488
|
-
() =>
|
|
1489
|
-
`Dependency (${
|
|
1490
|
-
dep.type
|
|
1491
|
-
}) with side effects at ${formatLocation(dep.loc)}`
|
|
1492
|
-
);
|
|
1493
|
-
}
|
|
1494
|
-
this._isEvaluatingSideEffects = false;
|
|
1495
|
-
return true;
|
|
1496
|
-
} else if (state !== ModuleGraphConnection.CIRCULAR_CONNECTION) {
|
|
1497
|
-
current = ModuleGraphConnection.addConnectionStates(current, state);
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
this._isEvaluatingSideEffects = false;
|
|
1501
|
-
// When caching is implemented here, make sure to not cache when
|
|
1502
|
-
// at least one circular connection was in the loop above
|
|
1503
|
-
return current;
|
|
1504
|
-
}
|
|
1505
|
-
return true;
|
|
1776
|
+
// Each call owns its Tarjan bookkeeping; re-entrant calls (e.g.
|
|
1777
|
+
// `ConcatenatedModule.getSideEffectsConnectionState` delegating back
|
|
1778
|
+
// through here) can't clobber the outer walk.
|
|
1779
|
+
return walkSideEffects(
|
|
1780
|
+
this,
|
|
1781
|
+
moduleGraph,
|
|
1782
|
+
getHarmonyImportSideEffectDependency()
|
|
1783
|
+
);
|
|
1506
1784
|
}
|
|
1507
1785
|
|
|
1508
1786
|
/**
|
|
1787
|
+
* Returns the source types this module can generate.
|
|
1509
1788
|
* @returns {SourceTypes} types available (do not mutate)
|
|
1510
1789
|
*/
|
|
1511
1790
|
getSourceTypes() {
|
|
@@ -1518,6 +1797,19 @@ class NormalModule extends Module {
|
|
|
1518
1797
|
}
|
|
1519
1798
|
|
|
1520
1799
|
/**
|
|
1800
|
+
* Freshly recomputed source types when they depend on incoming connections, for chunk-graph cache invalidation; undefined otherwise. #20800
|
|
1801
|
+
* @returns {SourceTypes | undefined} source types or undefined
|
|
1802
|
+
*/
|
|
1803
|
+
getReferencedSourceTypes() {
|
|
1804
|
+
const generator = /** @type {Generator} */ (this.generator);
|
|
1805
|
+
// Bypass the _sourceTypes cache: it may be stale when the module is not rebuilt.
|
|
1806
|
+
return generator.getTypesDependOnIncomingConnections()
|
|
1807
|
+
? generator.getTypes(this)
|
|
1808
|
+
: undefined;
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
/**
|
|
1812
|
+
* Generates code and runtime requirements for this module.
|
|
1521
1813
|
* @param {CodeGenerationContext} context context for code generation
|
|
1522
1814
|
* @returns {CodeGenerationResult} result
|
|
1523
1815
|
*/
|
|
@@ -1534,7 +1826,7 @@ class NormalModule extends Module {
|
|
|
1534
1826
|
/** @type {RuntimeRequirements} */
|
|
1535
1827
|
const runtimeRequirements = new Set();
|
|
1536
1828
|
|
|
1537
|
-
const { parsed } = /** @type {
|
|
1829
|
+
const { parsed } = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1538
1830
|
|
|
1539
1831
|
if (!parsed) {
|
|
1540
1832
|
runtimeRequirements.add(RuntimeGlobals.module);
|
|
@@ -1590,12 +1882,14 @@ class NormalModule extends Module {
|
|
|
1590
1882
|
const resultEntry = {
|
|
1591
1883
|
sources,
|
|
1592
1884
|
runtimeRequirements,
|
|
1593
|
-
data: this._codeGeneratorData
|
|
1885
|
+
data: this._codeGeneratorData,
|
|
1886
|
+
hash: undefined
|
|
1594
1887
|
};
|
|
1595
1888
|
return resultEntry;
|
|
1596
1889
|
}
|
|
1597
1890
|
|
|
1598
1891
|
/**
|
|
1892
|
+
* Gets the original source.
|
|
1599
1893
|
* @returns {Source | null} the original source for the module before webpack transformation
|
|
1600
1894
|
*/
|
|
1601
1895
|
originalSource() {
|
|
@@ -1603,6 +1897,7 @@ class NormalModule extends Module {
|
|
|
1603
1897
|
}
|
|
1604
1898
|
|
|
1605
1899
|
/**
|
|
1900
|
+
* Invalidates the cached state associated with this value.
|
|
1606
1901
|
* @returns {void}
|
|
1607
1902
|
*/
|
|
1608
1903
|
invalidateBuild() {
|
|
@@ -1610,6 +1905,7 @@ class NormalModule extends Module {
|
|
|
1610
1905
|
}
|
|
1611
1906
|
|
|
1612
1907
|
/**
|
|
1908
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
1613
1909
|
* @param {NeedBuildContext} context context info
|
|
1614
1910
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
1615
1911
|
* @returns {void}
|
|
@@ -1623,7 +1919,7 @@ class NormalModule extends Module {
|
|
|
1623
1919
|
if (this.error) return callback(null, true);
|
|
1624
1920
|
|
|
1625
1921
|
const { cacheable, snapshot, valueDependencies } =
|
|
1626
|
-
/** @type {
|
|
1922
|
+
/** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1627
1923
|
|
|
1628
1924
|
// always build when module is not cacheable
|
|
1629
1925
|
if (!cacheable) return callback(null, true);
|
|
@@ -1669,6 +1965,7 @@ class NormalModule extends Module {
|
|
|
1669
1965
|
}
|
|
1670
1966
|
|
|
1671
1967
|
/**
|
|
1968
|
+
* Returns the estimated size for the requested source type.
|
|
1672
1969
|
* @param {string=} type the source type for which the size should be estimated
|
|
1673
1970
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
1674
1971
|
*/
|
|
@@ -1690,6 +1987,7 @@ class NormalModule extends Module {
|
|
|
1690
1987
|
}
|
|
1691
1988
|
|
|
1692
1989
|
/**
|
|
1990
|
+
* Adds the provided file dependencies to the module.
|
|
1693
1991
|
* @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
|
|
1694
1992
|
* @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
|
|
1695
1993
|
* @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
|
|
@@ -1702,7 +2000,7 @@ class NormalModule extends Module {
|
|
|
1702
2000
|
buildDependencies
|
|
1703
2001
|
) {
|
|
1704
2002
|
const { snapshot, buildDependencies: buildDeps } =
|
|
1705
|
-
/** @type {
|
|
2003
|
+
/** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1706
2004
|
if (snapshot) {
|
|
1707
2005
|
fileDependencies.addAll(snapshot.getFileIterable());
|
|
1708
2006
|
contextDependencies.addAll(snapshot.getContextIterable());
|
|
@@ -1712,7 +2010,7 @@ class NormalModule extends Module {
|
|
|
1712
2010
|
fileDependencies: fileDeps,
|
|
1713
2011
|
contextDependencies: contextDeps,
|
|
1714
2012
|
missingDependencies: missingDeps
|
|
1715
|
-
} = /** @type {
|
|
2013
|
+
} = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1716
2014
|
if (fileDeps !== undefined) fileDependencies.addAll(fileDeps);
|
|
1717
2015
|
if (contextDeps !== undefined) contextDependencies.addAll(contextDeps);
|
|
1718
2016
|
if (missingDeps !== undefined) missingDependencies.addAll(missingDeps);
|
|
@@ -1723,16 +2021,26 @@ class NormalModule extends Module {
|
|
|
1723
2021
|
}
|
|
1724
2022
|
|
|
1725
2023
|
/**
|
|
2024
|
+
* Updates the hash with the data contributed by this instance.
|
|
1726
2025
|
* @param {Hash} hash the hash used to track dependencies
|
|
1727
2026
|
* @param {UpdateHashContext} context context
|
|
1728
2027
|
* @returns {void}
|
|
1729
2028
|
*/
|
|
1730
2029
|
updateHash(hash, context) {
|
|
1731
|
-
const buildInfo = /** @type {
|
|
2030
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1732
2031
|
hash.update(
|
|
1733
2032
|
/** @type {string} */
|
|
1734
2033
|
(buildInfo.hash)
|
|
1735
2034
|
);
|
|
2035
|
+
// Clear cached source types and re-compute so that changes in incoming
|
|
2036
|
+
// connections (e.g. asset module newly referenced from JS via lazy
|
|
2037
|
+
// compilation) are reflected in the hash and trigger code generation
|
|
2038
|
+
// cache invalidation.
|
|
2039
|
+
// https://github.com/webpack/webpack/issues/20800
|
|
2040
|
+
this._sourceTypes = undefined;
|
|
2041
|
+
for (const type of this.getSourceTypes()) {
|
|
2042
|
+
hash.update(type);
|
|
2043
|
+
}
|
|
1736
2044
|
/** @type {Generator} */
|
|
1737
2045
|
(this.generator).updateHash(hash, {
|
|
1738
2046
|
module: this,
|
|
@@ -1742,6 +2050,7 @@ class NormalModule extends Module {
|
|
|
1742
2050
|
}
|
|
1743
2051
|
|
|
1744
2052
|
/**
|
|
2053
|
+
* Serializes this instance into the provided serializer context.
|
|
1745
2054
|
* @param {ObjectSerializerContext} context context
|
|
1746
2055
|
*/
|
|
1747
2056
|
serialize(context) {
|
|
@@ -1752,6 +2061,7 @@ class NormalModule extends Module {
|
|
|
1752
2061
|
write(this._lastSuccessfulBuildMeta);
|
|
1753
2062
|
write(this._forceBuild);
|
|
1754
2063
|
write(this._codeGeneratorData);
|
|
2064
|
+
write(this.hot);
|
|
1755
2065
|
super.serialize(context);
|
|
1756
2066
|
}
|
|
1757
2067
|
|
|
@@ -1760,7 +2070,8 @@ class NormalModule extends Module {
|
|
|
1760
2070
|
* @returns {NormalModule} module
|
|
1761
2071
|
*/
|
|
1762
2072
|
static deserialize(context) {
|
|
1763
|
-
|
|
2073
|
+
// `new this` so subclasses without extra constructor options inherit this method
|
|
2074
|
+
const obj = new this({
|
|
1764
2075
|
// will be deserialized by Module
|
|
1765
2076
|
layer: /** @type {EXPECTED_ANY} */ (null),
|
|
1766
2077
|
type: "",
|
|
@@ -1784,6 +2095,7 @@ class NormalModule extends Module {
|
|
|
1784
2095
|
}
|
|
1785
2096
|
|
|
1786
2097
|
/**
|
|
2098
|
+
* Restores this instance from the provided deserializer context.
|
|
1787
2099
|
* @param {ObjectDeserializerContext} context context
|
|
1788
2100
|
*/
|
|
1789
2101
|
deserialize(context) {
|
|
@@ -1793,6 +2105,7 @@ class NormalModule extends Module {
|
|
|
1793
2105
|
this._lastSuccessfulBuildMeta = read();
|
|
1794
2106
|
this._forceBuild = read();
|
|
1795
2107
|
this._codeGeneratorData = read();
|
|
2108
|
+
this.hot = read();
|
|
1796
2109
|
super.deserialize(context);
|
|
1797
2110
|
}
|
|
1798
2111
|
}
|