@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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
|
makePathsRelative
|
|
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
|
|
@@ -207,24 +462,6 @@ const asBuffer = (input) => {
|
|
|
207
462
|
return input;
|
|
208
463
|
};
|
|
209
464
|
|
|
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
465
|
/** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
|
|
229
466
|
|
|
230
467
|
/** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
|
|
@@ -247,9 +484,10 @@ makeSerializable(
|
|
|
247
484
|
*/
|
|
248
485
|
|
|
249
486
|
/**
|
|
487
|
+
* @template {NormalModuleTypes | ""} [T=NormalModuleTypes | ""]
|
|
250
488
|
* @typedef {object} NormalModuleCreateData
|
|
251
489
|
* @property {string=} layer an optional layer in which the module is
|
|
252
|
-
* @property {
|
|
490
|
+
* @property {T} type module type. When deserializing, this is set to an empty string "".
|
|
253
491
|
* @property {string} request request string
|
|
254
492
|
* @property {string} userRequest request intended by user (without loaders from config)
|
|
255
493
|
* @property {string} rawRequest request without resolving
|
|
@@ -258,10 +496,10 @@ makeSerializable(
|
|
|
258
496
|
* @property {(ResourceSchemeData & Partial<ResolveRequest>)=} resourceResolveData resource resolve data
|
|
259
497
|
* @property {string} context context directory for resolving
|
|
260
498
|
* @property {string=} matchResource path + query of the matched resource (virtual)
|
|
261
|
-
* @property {
|
|
262
|
-
* @property {
|
|
263
|
-
* @property {
|
|
264
|
-
* @property {
|
|
499
|
+
* @property {ParserByType[T]} parser the parser used
|
|
500
|
+
* @property {ParserOptionsByType[T]=} parserOptions the options of the parser used
|
|
501
|
+
* @property {GeneratorByType[T]} generator the generator used
|
|
502
|
+
* @property {GeneratorOptionsByType[T]=} generatorOptions the options of the generator used
|
|
265
503
|
* @property {ResolveOptions=} resolveOptions options used for resolving requests from this module
|
|
266
504
|
* @property {boolean} extractSourceMap enable/disable extracting source map
|
|
267
505
|
*/
|
|
@@ -270,8 +508,68 @@ makeSerializable(
|
|
|
270
508
|
* @typedef {(resourcePath: string, getLoaderContext: (resourcePath: string) => AnyLoaderContext) => Promise<string | Buffer<ArrayBufferLike>>} ReadResource
|
|
271
509
|
*/
|
|
272
510
|
|
|
273
|
-
/**
|
|
274
|
-
|
|
511
|
+
/**
|
|
512
|
+
* Defines the build info properties of normal modules (filesystem-backed, loader-processed).
|
|
513
|
+
* @typedef {object} KnownNormalModuleBuildInfo
|
|
514
|
+
* @property {boolean=} parsed
|
|
515
|
+
* @property {string=} hash
|
|
516
|
+
* @property {FileSystemDependencies=} fileDependencies
|
|
517
|
+
* @property {FileSystemDependencies=} contextDependencies
|
|
518
|
+
* @property {FileSystemDependencies=} missingDependencies
|
|
519
|
+
* @property {FileSystemDependencies=} buildDependencies
|
|
520
|
+
* @property {ValueCacheVersions=} valueDependencies
|
|
521
|
+
* @property {(Snapshot | null)=} snapshot
|
|
522
|
+
* @property {string=} resourceIntegrity using in HttpUriPlugin
|
|
523
|
+
*/
|
|
524
|
+
|
|
525
|
+
/** @typedef {BuildInfo & KnownNormalModuleBuildInfo} NormalModuleBuildInfo */
|
|
526
|
+
|
|
527
|
+
const normalModuleHooksRegistry = createHooksRegistry(() => {
|
|
528
|
+
// TODO webpack 6 deprecate
|
|
529
|
+
/** @type {Partial<NormalModuleCompilationHooks>} */
|
|
530
|
+
const hooks = {};
|
|
531
|
+
hooks.readResourceForScheme = new HookMap((scheme) => {
|
|
532
|
+
const hook =
|
|
533
|
+
/** @type {NormalModuleCompilationHooks} */
|
|
534
|
+
(hooks).readResource.for(scheme);
|
|
535
|
+
return createFakeHook(
|
|
536
|
+
/** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
|
|
537
|
+
tap: (options, fn) =>
|
|
538
|
+
hook.tap(options, (loaderContext) =>
|
|
539
|
+
fn(
|
|
540
|
+
loaderContext.resource,
|
|
541
|
+
/** @type {NormalModule} */ (loaderContext._module)
|
|
542
|
+
)
|
|
543
|
+
),
|
|
544
|
+
tapAsync: (options, fn) =>
|
|
545
|
+
hook.tapAsync(options, (loaderContext, callback) =>
|
|
546
|
+
fn(
|
|
547
|
+
loaderContext.resource,
|
|
548
|
+
/** @type {NormalModule} */ (loaderContext._module),
|
|
549
|
+
callback
|
|
550
|
+
)
|
|
551
|
+
),
|
|
552
|
+
tapPromise: (options, fn) =>
|
|
553
|
+
hook.tapPromise(options, (loaderContext) =>
|
|
554
|
+
fn(
|
|
555
|
+
loaderContext.resource,
|
|
556
|
+
/** @type {NormalModule} */ (loaderContext._module)
|
|
557
|
+
)
|
|
558
|
+
)
|
|
559
|
+
})
|
|
560
|
+
);
|
|
561
|
+
});
|
|
562
|
+
hooks.readResource = new HookMap(
|
|
563
|
+
() => new AsyncSeriesBailHook(["loaderContext"])
|
|
564
|
+
);
|
|
565
|
+
hooks.loader = new SyncHook(["loaderContext", "module"]);
|
|
566
|
+
hooks.beforeLoaders = new SyncHook(["loaders", "module", "loaderContext"]);
|
|
567
|
+
hooks.beforeParse = new SyncHook(["module"]);
|
|
568
|
+
hooks.beforeSnapshot = new SyncHook(["module"]);
|
|
569
|
+
hooks.processResult = new SyncWaterfallHook(["result", "module"]);
|
|
570
|
+
hooks.needBuild = new AsyncSeriesBailHook(["module", "context"]);
|
|
571
|
+
return /** @type {NormalModuleCompilationHooks} */ (hooks);
|
|
572
|
+
});
|
|
275
573
|
|
|
276
574
|
class NormalModule extends Module {
|
|
277
575
|
/**
|
|
@@ -279,62 +577,7 @@ class NormalModule extends Module {
|
|
|
279
577
|
* @returns {NormalModuleCompilationHooks} the attached hooks
|
|
280
578
|
*/
|
|
281
579
|
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);
|
|
580
|
+
return normalModuleHooksRegistry(compilation);
|
|
338
581
|
}
|
|
339
582
|
|
|
340
583
|
/**
|
|
@@ -393,8 +636,15 @@ class NormalModule extends Module {
|
|
|
393
636
|
/** @type {NormalModuleCreateData['extractSourceMap']} */
|
|
394
637
|
this.extractSourceMap = extractSourceMap;
|
|
395
638
|
|
|
639
|
+
// Set by HotModuleReplacementPlugin via NormalModuleFactory's `module` hook
|
|
640
|
+
/** @type {boolean} */
|
|
641
|
+
this.hot = false;
|
|
642
|
+
|
|
396
643
|
// Info from Build
|
|
397
|
-
|
|
644
|
+
// Redeclared with the normal module specific shape (see KnownNormalModuleBuildInfo)
|
|
645
|
+
/** @type {NormalModuleBuildInfo | undefined} */
|
|
646
|
+
this.buildInfo = undefined;
|
|
647
|
+
/** @type {Error | null} */
|
|
398
648
|
this.error = null;
|
|
399
649
|
/**
|
|
400
650
|
* @private
|
|
@@ -423,15 +673,25 @@ class NormalModule extends Module {
|
|
|
423
673
|
*/
|
|
424
674
|
this._forceBuild = true;
|
|
425
675
|
/**
|
|
426
|
-
* @private
|
|
427
676
|
* @type {boolean}
|
|
428
677
|
*/
|
|
429
678
|
this._isEvaluatingSideEffects = false;
|
|
430
679
|
/**
|
|
431
|
-
* @private
|
|
432
680
|
* @type {WeakSet<ModuleGraph> | undefined}
|
|
433
681
|
*/
|
|
434
682
|
this._addedSideEffectsBailout = undefined;
|
|
683
|
+
/**
|
|
684
|
+
* Memoizes the result of `getSideEffectsConnectionState`. The
|
|
685
|
+
* graph slot keys the cached value to the `ModuleGraph` it was
|
|
686
|
+
* computed against so stale values never leak across compilations
|
|
687
|
+
* — a walk that targets a different graph just overwrites both
|
|
688
|
+
* slots. Populated only for context-independent results (cycle-free
|
|
689
|
+
* or SCC-root modules; see `walkSideEffects`).
|
|
690
|
+
* @type {ModuleGraph | undefined}
|
|
691
|
+
*/
|
|
692
|
+
this._sideEffectsStateGraph = undefined;
|
|
693
|
+
/** @type {ConnectionState | undefined} */
|
|
694
|
+
this._sideEffectsStateValue = undefined;
|
|
435
695
|
/**
|
|
436
696
|
* @private
|
|
437
697
|
* @type {CodeGenerationResultData}
|
|
@@ -440,6 +700,7 @@ class NormalModule extends Module {
|
|
|
440
700
|
}
|
|
441
701
|
|
|
442
702
|
/**
|
|
703
|
+
* Returns the unique identifier used to reference this module.
|
|
443
704
|
* @returns {string} a unique identifier of the module
|
|
444
705
|
*/
|
|
445
706
|
identifier() {
|
|
@@ -453,6 +714,7 @@ class NormalModule extends Module {
|
|
|
453
714
|
}
|
|
454
715
|
|
|
455
716
|
/**
|
|
717
|
+
* Returns a human-readable identifier for this module.
|
|
456
718
|
* @param {RequestShortener} requestShortener the request shortener
|
|
457
719
|
* @returns {string} a user readable identifier of the module
|
|
458
720
|
*/
|
|
@@ -468,6 +730,7 @@ class NormalModule extends Module {
|
|
|
468
730
|
}
|
|
469
731
|
|
|
470
732
|
/**
|
|
733
|
+
* Gets the library identifier.
|
|
471
734
|
* @param {LibIdentOptions} options options
|
|
472
735
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
473
736
|
*/
|
|
@@ -482,6 +745,7 @@ class NormalModule extends Module {
|
|
|
482
745
|
}
|
|
483
746
|
|
|
484
747
|
/**
|
|
748
|
+
* Returns the path used when matching this module against rule conditions.
|
|
485
749
|
* @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
|
|
486
750
|
*/
|
|
487
751
|
nameForCondition() {
|
|
@@ -535,6 +799,11 @@ class NormalModule extends Module {
|
|
|
535
799
|
this.parserOptions = undefined;
|
|
536
800
|
this.generator = undefined;
|
|
537
801
|
this.generatorOptions = undefined;
|
|
802
|
+
// Drop the side-effects memoization so a long-lived module doesn't
|
|
803
|
+
// strong-reference a stale `ModuleGraph`/`Compilation` for graphs
|
|
804
|
+
// that never get re-queried with a fresh one.
|
|
805
|
+
this._sideEffectsStateGraph = undefined;
|
|
806
|
+
this._sideEffectsStateValue = undefined;
|
|
538
807
|
}
|
|
539
808
|
|
|
540
809
|
/**
|
|
@@ -707,11 +976,8 @@ class NormalModule extends Module {
|
|
|
707
976
|
/** @type {NormalModuleLoaderContext<T>} */
|
|
708
977
|
const loaderContext = {
|
|
709
978
|
version: 2,
|
|
710
|
-
/**
|
|
711
|
-
|
|
712
|
-
* @returns {T} options
|
|
713
|
-
*/
|
|
714
|
-
getOptions: (schema) => {
|
|
979
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getOptions"]} */
|
|
980
|
+
getOptions: (/** @type {EXPECTED_ANY} */ schema = undefined) => {
|
|
715
981
|
const loader = this.getCurrentLoader(
|
|
716
982
|
/** @type {AnyLoaderContext} */
|
|
717
983
|
(loaderContext)
|
|
@@ -722,7 +988,9 @@ class NormalModule extends Module {
|
|
|
722
988
|
if (typeof options === "string") {
|
|
723
989
|
if (options.startsWith("{") && options.endsWith("}")) {
|
|
724
990
|
try {
|
|
725
|
-
options =
|
|
991
|
+
options =
|
|
992
|
+
/** @type {LoaderItem["options"]} */
|
|
993
|
+
(parseJson(options));
|
|
726
994
|
} catch (err) {
|
|
727
995
|
throw new Error(
|
|
728
996
|
`Cannot parse string options: ${/** @type {Error} */ (err).message}`,
|
|
@@ -756,6 +1024,7 @@ class NormalModule extends Module {
|
|
|
756
1024
|
|
|
757
1025
|
return /** @type {T} */ (options);
|
|
758
1026
|
},
|
|
1027
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitWarning"]} */
|
|
759
1028
|
emitWarning: (warning) => {
|
|
760
1029
|
if (!(warning instanceof Error)) {
|
|
761
1030
|
warning = new NonErrorEmittedError(warning);
|
|
@@ -766,6 +1035,7 @@ class NormalModule extends Module {
|
|
|
766
1035
|
})
|
|
767
1036
|
);
|
|
768
1037
|
},
|
|
1038
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitError"]} */
|
|
769
1039
|
emitError: (error) => {
|
|
770
1040
|
if (!(error instanceof Error)) {
|
|
771
1041
|
error = new NonErrorEmittedError(error);
|
|
@@ -776,6 +1046,7 @@ class NormalModule extends Module {
|
|
|
776
1046
|
})
|
|
777
1047
|
);
|
|
778
1048
|
},
|
|
1049
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getLogger"]} */
|
|
779
1050
|
getLogger: (name) => {
|
|
780
1051
|
const currentLoader = this.getCurrentLoader(
|
|
781
1052
|
/** @type {AnyLoaderContext} */
|
|
@@ -787,9 +1058,11 @@ class NormalModule extends Module {
|
|
|
787
1058
|
.join("|")
|
|
788
1059
|
);
|
|
789
1060
|
},
|
|
1061
|
+
/** @type {LoaderContext<EXPECTED_ANY>["resolve"]} */
|
|
790
1062
|
resolve(context, request, callback) {
|
|
791
1063
|
resolver.resolve({}, context, request, getResolveContext(), callback);
|
|
792
1064
|
},
|
|
1065
|
+
/** @type {LoaderContext<EXPECTED_ANY>["getResolve"]} */
|
|
793
1066
|
getResolve(options) {
|
|
794
1067
|
const child = options ? resolver.withOptions(options) : resolver;
|
|
795
1068
|
return /** @type {ReturnType<import("../declarations/LoaderContext").NormalModuleLoaderContext<T>["getResolve"]>} */ (
|
|
@@ -819,8 +1092,9 @@ class NormalModule extends Module {
|
|
|
819
1092
|
}
|
|
820
1093
|
);
|
|
821
1094
|
},
|
|
1095
|
+
/** @type {LoaderContext<EXPECTED_ANY>["emitFile"]} */
|
|
822
1096
|
emitFile: (name, content, sourceMap, assetInfo) => {
|
|
823
|
-
const buildInfo = /** @type {
|
|
1097
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
824
1098
|
|
|
825
1099
|
if (!buildInfo.assets) {
|
|
826
1100
|
buildInfo.assets = Object.create(null);
|
|
@@ -844,7 +1118,7 @@ class NormalModule extends Module {
|
|
|
844
1118
|
assetsInfo.set(name, assetInfo);
|
|
845
1119
|
},
|
|
846
1120
|
addBuildDependency: (dep) => {
|
|
847
|
-
const buildInfo = /** @type {
|
|
1121
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
848
1122
|
|
|
849
1123
|
if (buildInfo.buildDependencies === undefined) {
|
|
850
1124
|
buildInfo.buildDependencies = new LazySet();
|
|
@@ -867,6 +1141,7 @@ class NormalModule extends Module {
|
|
|
867
1141
|
};
|
|
868
1142
|
|
|
869
1143
|
Object.assign(loaderContext, options.loader);
|
|
1144
|
+
createLoaderContext(loaderContext);
|
|
870
1145
|
|
|
871
1146
|
hooks.loader.call(
|
|
872
1147
|
/** @type {AnyLoaderContext} */
|
|
@@ -1017,7 +1292,7 @@ class NormalModule extends Module {
|
|
|
1017
1292
|
return callback();
|
|
1018
1293
|
};
|
|
1019
1294
|
|
|
1020
|
-
const buildInfo = /** @type {
|
|
1295
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1021
1296
|
|
|
1022
1297
|
buildInfo.fileDependencies = new LazySet();
|
|
1023
1298
|
buildInfo.contextDependencies = new LazySet();
|
|
@@ -1037,7 +1312,7 @@ class NormalModule extends Module {
|
|
|
1037
1312
|
}
|
|
1038
1313
|
|
|
1039
1314
|
if (this.loaders.length > 0) {
|
|
1040
|
-
/** @type {
|
|
1315
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1041
1316
|
(this.buildInfo).buildDependencies = new LazySet();
|
|
1042
1317
|
}
|
|
1043
1318
|
|
|
@@ -1133,7 +1408,7 @@ class NormalModule extends Module {
|
|
|
1133
1408
|
(undefined);
|
|
1134
1409
|
|
|
1135
1410
|
if (!result) {
|
|
1136
|
-
/** @type {
|
|
1411
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1137
1412
|
(this.buildInfo).cacheable = false;
|
|
1138
1413
|
return processResult(
|
|
1139
1414
|
err || new Error("No result from loader-runner processing"),
|
|
@@ -1141,16 +1416,16 @@ class NormalModule extends Module {
|
|
|
1141
1416
|
);
|
|
1142
1417
|
}
|
|
1143
1418
|
|
|
1144
|
-
const buildInfo = /** @type {
|
|
1419
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1145
1420
|
|
|
1146
1421
|
const fileDependencies =
|
|
1147
|
-
/** @type {NonNullable<
|
|
1422
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
|
|
1148
1423
|
(buildInfo.fileDependencies);
|
|
1149
1424
|
const contextDependencies =
|
|
1150
|
-
/** @type {NonNullable<
|
|
1425
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1151
1426
|
(buildInfo.contextDependencies);
|
|
1152
1427
|
const missingDependencies =
|
|
1153
|
-
/** @type {NonNullable<
|
|
1428
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
|
|
1154
1429
|
(buildInfo.missingDependencies);
|
|
1155
1430
|
|
|
1156
1431
|
fileDependencies.addAll(result.fileDependencies);
|
|
@@ -1158,19 +1433,22 @@ class NormalModule extends Module {
|
|
|
1158
1433
|
missingDependencies.addAll(result.missingDependencies);
|
|
1159
1434
|
for (const loader of this.loaders) {
|
|
1160
1435
|
const buildDependencies =
|
|
1161
|
-
/** @type {NonNullable<
|
|
1436
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["buildDependencies"]>} */
|
|
1162
1437
|
(buildInfo.buildDependencies);
|
|
1163
1438
|
|
|
1164
1439
|
buildDependencies.add(loader.loader);
|
|
1165
1440
|
}
|
|
1166
1441
|
buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
|
|
1442
|
+
if (result.notCacheableReasons.length > 0) {
|
|
1443
|
+
buildInfo.notCacheableReasons = result.notCacheableReasons;
|
|
1444
|
+
}
|
|
1167
1445
|
processResult(err, result.result);
|
|
1168
1446
|
}
|
|
1169
1447
|
);
|
|
1170
1448
|
}
|
|
1171
1449
|
|
|
1172
1450
|
/**
|
|
1173
|
-
* @param {
|
|
1451
|
+
* @param {Error} error the error
|
|
1174
1452
|
* @returns {void}
|
|
1175
1453
|
*/
|
|
1176
1454
|
markModuleAsErrored(error) {
|
|
@@ -1240,11 +1518,12 @@ class NormalModule extends Module {
|
|
|
1240
1518
|
}
|
|
1241
1519
|
hash.update("meta");
|
|
1242
1520
|
hash.update(JSON.stringify(this.buildMeta));
|
|
1243
|
-
/** @type {
|
|
1521
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1244
1522
|
(this.buildInfo).hash = hash.digest("hex");
|
|
1245
1523
|
}
|
|
1246
1524
|
|
|
1247
1525
|
/**
|
|
1526
|
+
* Builds the module using the provided compilation context.
|
|
1248
1527
|
* @param {WebpackOptions} options webpack options
|
|
1249
1528
|
* @param {Compilation} compilation the compilation
|
|
1250
1529
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -1261,9 +1540,15 @@ class NormalModule extends Module {
|
|
|
1261
1540
|
this.error = null;
|
|
1262
1541
|
this.clearWarningsAndErrors();
|
|
1263
1542
|
this.clearDependenciesAndBlocks();
|
|
1264
|
-
this.buildMeta = {
|
|
1543
|
+
this.buildMeta = {
|
|
1544
|
+
exportsType: undefined,
|
|
1545
|
+
defaultObject: undefined,
|
|
1546
|
+
strictHarmonyModule: undefined,
|
|
1547
|
+
async: undefined
|
|
1548
|
+
};
|
|
1265
1549
|
this.buildInfo = {
|
|
1266
1550
|
cacheable: false,
|
|
1551
|
+
notCacheableReasons: undefined,
|
|
1267
1552
|
parsed: true,
|
|
1268
1553
|
fileDependencies: undefined,
|
|
1269
1554
|
contextDependencies: undefined,
|
|
@@ -1272,7 +1557,16 @@ class NormalModule extends Module {
|
|
|
1272
1557
|
valueDependencies: undefined,
|
|
1273
1558
|
hash: undefined,
|
|
1274
1559
|
assets: undefined,
|
|
1275
|
-
assetsInfo: undefined
|
|
1560
|
+
assetsInfo: undefined,
|
|
1561
|
+
snapshot: undefined,
|
|
1562
|
+
strict: undefined,
|
|
1563
|
+
exportsArgument: undefined,
|
|
1564
|
+
moduleArgument: undefined,
|
|
1565
|
+
topLevelDeclarations: undefined,
|
|
1566
|
+
pureFunctions: undefined,
|
|
1567
|
+
inlineExports: undefined,
|
|
1568
|
+
moduleConcatenationBailout: undefined,
|
|
1569
|
+
needCreateRequire: undefined
|
|
1276
1570
|
};
|
|
1277
1571
|
|
|
1278
1572
|
const startTime = compilation.compiler.fsStartTime || Date.now();
|
|
@@ -1305,7 +1599,7 @@ class NormalModule extends Module {
|
|
|
1305
1599
|
const handleParseResult = () => {
|
|
1306
1600
|
this.dependencies.sort(
|
|
1307
1601
|
concatComparators(
|
|
1308
|
-
|
|
1602
|
+
Dependency.compareLocations,
|
|
1309
1603
|
keepOriginalOrder(this.dependencies)
|
|
1310
1604
|
)
|
|
1311
1605
|
);
|
|
@@ -1321,12 +1615,14 @@ class NormalModule extends Module {
|
|
|
1321
1615
|
try {
|
|
1322
1616
|
hooks.beforeSnapshot.call(this);
|
|
1323
1617
|
} catch (err) {
|
|
1324
|
-
this.markModuleAsErrored(/** @type {
|
|
1618
|
+
this.markModuleAsErrored(/** @type {Error} */ (err));
|
|
1325
1619
|
return callback();
|
|
1326
1620
|
}
|
|
1327
1621
|
|
|
1328
1622
|
const snapshotOptions = compilation.options.snapshot.module;
|
|
1329
|
-
const { cacheable } = /** @type {
|
|
1623
|
+
const { cacheable } = /** @type {NormalModuleBuildInfo} */ (
|
|
1624
|
+
this.buildInfo
|
|
1625
|
+
);
|
|
1330
1626
|
if (!cacheable || !snapshotOptions) {
|
|
1331
1627
|
return callback();
|
|
1332
1628
|
}
|
|
@@ -1339,7 +1635,7 @@ class NormalModule extends Module {
|
|
|
1339
1635
|
*/
|
|
1340
1636
|
const checkDependencies = (deps) => {
|
|
1341
1637
|
for (const dep of deps) {
|
|
1342
|
-
if (!
|
|
1638
|
+
if (!ABSOLUTE_PATH_REGEXP.test(dep)) {
|
|
1343
1639
|
if (nonAbsoluteDependencies === undefined) {
|
|
1344
1640
|
nonAbsoluteDependencies = new Set();
|
|
1345
1641
|
}
|
|
@@ -1353,11 +1649,11 @@ class NormalModule extends Module {
|
|
|
1353
1649
|
(this.context),
|
|
1354
1650
|
depWithoutGlob
|
|
1355
1651
|
);
|
|
1356
|
-
if (absolute !== dep &&
|
|
1652
|
+
if (absolute !== dep && ABSOLUTE_PATH_REGEXP.test(absolute)) {
|
|
1357
1653
|
(depWithoutGlob !== dep
|
|
1358
|
-
? /** @type {NonNullable<
|
|
1654
|
+
? /** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1359
1655
|
(
|
|
1360
|
-
/** @type {
|
|
1656
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1361
1657
|
(this.buildInfo).contextDependencies
|
|
1362
1658
|
)
|
|
1363
1659
|
: deps
|
|
@@ -1369,15 +1665,15 @@ class NormalModule extends Module {
|
|
|
1369
1665
|
}
|
|
1370
1666
|
}
|
|
1371
1667
|
};
|
|
1372
|
-
const buildInfo = /** @type {
|
|
1668
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1373
1669
|
const fileDependencies =
|
|
1374
|
-
/** @type {NonNullable<
|
|
1670
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["fileDependencies"]>} */
|
|
1375
1671
|
(buildInfo.fileDependencies);
|
|
1376
1672
|
const contextDependencies =
|
|
1377
|
-
/** @type {NonNullable<
|
|
1673
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["contextDependencies"]>} */
|
|
1378
1674
|
(buildInfo.contextDependencies);
|
|
1379
1675
|
const missingDependencies =
|
|
1380
|
-
/** @type {NonNullable<
|
|
1676
|
+
/** @type {NonNullable<KnownNormalModuleBuildInfo["missingDependencies"]>} */
|
|
1381
1677
|
(buildInfo.missingDependencies);
|
|
1382
1678
|
checkDependencies(fileDependencies);
|
|
1383
1679
|
checkDependencies(missingDependencies);
|
|
@@ -1413,7 +1709,7 @@ class NormalModule extends Module {
|
|
|
1413
1709
|
try {
|
|
1414
1710
|
hooks.beforeParse.call(this);
|
|
1415
1711
|
} catch (err) {
|
|
1416
|
-
this.markModuleAsErrored(/** @type {
|
|
1712
|
+
this.markModuleAsErrored(/** @type {Error} */ (err));
|
|
1417
1713
|
this._initBuildHash(compilation);
|
|
1418
1714
|
return callback();
|
|
1419
1715
|
}
|
|
@@ -1423,7 +1719,7 @@ class NormalModule extends Module {
|
|
|
1423
1719
|
const noParseRule = options.module && options.module.noParse;
|
|
1424
1720
|
if (this.shouldPreventParsing(noParseRule, this.request)) {
|
|
1425
1721
|
// We assume that we need module and exports
|
|
1426
|
-
/** @type {
|
|
1722
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1427
1723
|
(this.buildInfo).parsed = false;
|
|
1428
1724
|
this._initBuildHash(compilation);
|
|
1429
1725
|
return handleBuildDone();
|
|
@@ -1437,7 +1733,11 @@ class NormalModule extends Module {
|
|
|
1437
1733
|
current: this,
|
|
1438
1734
|
module: this,
|
|
1439
1735
|
compilation,
|
|
1440
|
-
options
|
|
1736
|
+
options,
|
|
1737
|
+
harmonyNamedExports: undefined,
|
|
1738
|
+
harmonyStarExports: undefined,
|
|
1739
|
+
lastHarmonyImportOrder: undefined,
|
|
1740
|
+
localModules: undefined
|
|
1441
1741
|
});
|
|
1442
1742
|
} catch (parseErr) {
|
|
1443
1743
|
handleParseError(/** @type {Error} */ (parseErr));
|
|
@@ -1448,6 +1748,7 @@ class NormalModule extends Module {
|
|
|
1448
1748
|
}
|
|
1449
1749
|
|
|
1450
1750
|
/**
|
|
1751
|
+
* Returns the reason this module cannot be concatenated, when one exists.
|
|
1451
1752
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
1452
1753
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
1453
1754
|
*/
|
|
@@ -1458,54 +1759,23 @@ class NormalModule extends Module {
|
|
|
1458
1759
|
}
|
|
1459
1760
|
|
|
1460
1761
|
/**
|
|
1762
|
+
* Gets side effects connection state.
|
|
1461
1763
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1462
1764
|
* @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
|
|
1463
1765
|
*/
|
|
1464
1766
|
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;
|
|
1767
|
+
// Each call owns its Tarjan bookkeeping; re-entrant calls (e.g.
|
|
1768
|
+
// `ConcatenatedModule.getSideEffectsConnectionState` delegating back
|
|
1769
|
+
// through here) can't clobber the outer walk.
|
|
1770
|
+
return walkSideEffects(
|
|
1771
|
+
this,
|
|
1772
|
+
moduleGraph,
|
|
1773
|
+
getHarmonyImportSideEffectDependency()
|
|
1774
|
+
);
|
|
1506
1775
|
}
|
|
1507
1776
|
|
|
1508
1777
|
/**
|
|
1778
|
+
* Returns the source types this module can generate.
|
|
1509
1779
|
* @returns {SourceTypes} types available (do not mutate)
|
|
1510
1780
|
*/
|
|
1511
1781
|
getSourceTypes() {
|
|
@@ -1518,6 +1788,19 @@ class NormalModule extends Module {
|
|
|
1518
1788
|
}
|
|
1519
1789
|
|
|
1520
1790
|
/**
|
|
1791
|
+
* Freshly recomputed source types when they depend on incoming connections, for chunk-graph cache invalidation; undefined otherwise. #20800
|
|
1792
|
+
* @returns {SourceTypes | undefined} source types or undefined
|
|
1793
|
+
*/
|
|
1794
|
+
getReferencedSourceTypes() {
|
|
1795
|
+
const generator = /** @type {Generator} */ (this.generator);
|
|
1796
|
+
// Bypass the _sourceTypes cache: it may be stale when the module is not rebuilt.
|
|
1797
|
+
return generator.getTypesDependOnIncomingConnections()
|
|
1798
|
+
? generator.getTypes(this)
|
|
1799
|
+
: undefined;
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
/**
|
|
1803
|
+
* Generates code and runtime requirements for this module.
|
|
1521
1804
|
* @param {CodeGenerationContext} context context for code generation
|
|
1522
1805
|
* @returns {CodeGenerationResult} result
|
|
1523
1806
|
*/
|
|
@@ -1534,7 +1817,7 @@ class NormalModule extends Module {
|
|
|
1534
1817
|
/** @type {RuntimeRequirements} */
|
|
1535
1818
|
const runtimeRequirements = new Set();
|
|
1536
1819
|
|
|
1537
|
-
const { parsed } = /** @type {
|
|
1820
|
+
const { parsed } = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1538
1821
|
|
|
1539
1822
|
if (!parsed) {
|
|
1540
1823
|
runtimeRequirements.add(RuntimeGlobals.module);
|
|
@@ -1590,12 +1873,14 @@ class NormalModule extends Module {
|
|
|
1590
1873
|
const resultEntry = {
|
|
1591
1874
|
sources,
|
|
1592
1875
|
runtimeRequirements,
|
|
1593
|
-
data: this._codeGeneratorData
|
|
1876
|
+
data: this._codeGeneratorData,
|
|
1877
|
+
hash: undefined
|
|
1594
1878
|
};
|
|
1595
1879
|
return resultEntry;
|
|
1596
1880
|
}
|
|
1597
1881
|
|
|
1598
1882
|
/**
|
|
1883
|
+
* Gets the original source.
|
|
1599
1884
|
* @returns {Source | null} the original source for the module before webpack transformation
|
|
1600
1885
|
*/
|
|
1601
1886
|
originalSource() {
|
|
@@ -1603,6 +1888,7 @@ class NormalModule extends Module {
|
|
|
1603
1888
|
}
|
|
1604
1889
|
|
|
1605
1890
|
/**
|
|
1891
|
+
* Invalidates the cached state associated with this value.
|
|
1606
1892
|
* @returns {void}
|
|
1607
1893
|
*/
|
|
1608
1894
|
invalidateBuild() {
|
|
@@ -1610,6 +1896,7 @@ class NormalModule extends Module {
|
|
|
1610
1896
|
}
|
|
1611
1897
|
|
|
1612
1898
|
/**
|
|
1899
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
1613
1900
|
* @param {NeedBuildContext} context context info
|
|
1614
1901
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
1615
1902
|
* @returns {void}
|
|
@@ -1623,7 +1910,7 @@ class NormalModule extends Module {
|
|
|
1623
1910
|
if (this.error) return callback(null, true);
|
|
1624
1911
|
|
|
1625
1912
|
const { cacheable, snapshot, valueDependencies } =
|
|
1626
|
-
/** @type {
|
|
1913
|
+
/** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1627
1914
|
|
|
1628
1915
|
// always build when module is not cacheable
|
|
1629
1916
|
if (!cacheable) return callback(null, true);
|
|
@@ -1669,6 +1956,7 @@ class NormalModule extends Module {
|
|
|
1669
1956
|
}
|
|
1670
1957
|
|
|
1671
1958
|
/**
|
|
1959
|
+
* Returns the estimated size for the requested source type.
|
|
1672
1960
|
* @param {string=} type the source type for which the size should be estimated
|
|
1673
1961
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
1674
1962
|
*/
|
|
@@ -1690,6 +1978,7 @@ class NormalModule extends Module {
|
|
|
1690
1978
|
}
|
|
1691
1979
|
|
|
1692
1980
|
/**
|
|
1981
|
+
* Adds the provided file dependencies to the module.
|
|
1693
1982
|
* @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
|
|
1694
1983
|
* @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
|
|
1695
1984
|
* @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
|
|
@@ -1702,7 +1991,7 @@ class NormalModule extends Module {
|
|
|
1702
1991
|
buildDependencies
|
|
1703
1992
|
) {
|
|
1704
1993
|
const { snapshot, buildDependencies: buildDeps } =
|
|
1705
|
-
/** @type {
|
|
1994
|
+
/** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1706
1995
|
if (snapshot) {
|
|
1707
1996
|
fileDependencies.addAll(snapshot.getFileIterable());
|
|
1708
1997
|
contextDependencies.addAll(snapshot.getContextIterable());
|
|
@@ -1712,7 +2001,7 @@ class NormalModule extends Module {
|
|
|
1712
2001
|
fileDependencies: fileDeps,
|
|
1713
2002
|
contextDependencies: contextDeps,
|
|
1714
2003
|
missingDependencies: missingDeps
|
|
1715
|
-
} = /** @type {
|
|
2004
|
+
} = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1716
2005
|
if (fileDeps !== undefined) fileDependencies.addAll(fileDeps);
|
|
1717
2006
|
if (contextDeps !== undefined) contextDependencies.addAll(contextDeps);
|
|
1718
2007
|
if (missingDeps !== undefined) missingDependencies.addAll(missingDeps);
|
|
@@ -1723,16 +2012,26 @@ class NormalModule extends Module {
|
|
|
1723
2012
|
}
|
|
1724
2013
|
|
|
1725
2014
|
/**
|
|
2015
|
+
* Updates the hash with the data contributed by this instance.
|
|
1726
2016
|
* @param {Hash} hash the hash used to track dependencies
|
|
1727
2017
|
* @param {UpdateHashContext} context context
|
|
1728
2018
|
* @returns {void}
|
|
1729
2019
|
*/
|
|
1730
2020
|
updateHash(hash, context) {
|
|
1731
|
-
const buildInfo = /** @type {
|
|
2021
|
+
const buildInfo = /** @type {NormalModuleBuildInfo} */ (this.buildInfo);
|
|
1732
2022
|
hash.update(
|
|
1733
2023
|
/** @type {string} */
|
|
1734
2024
|
(buildInfo.hash)
|
|
1735
2025
|
);
|
|
2026
|
+
// Clear cached source types and re-compute so that changes in incoming
|
|
2027
|
+
// connections (e.g. asset module newly referenced from JS via lazy
|
|
2028
|
+
// compilation) are reflected in the hash and trigger code generation
|
|
2029
|
+
// cache invalidation.
|
|
2030
|
+
// https://github.com/webpack/webpack/issues/20800
|
|
2031
|
+
this._sourceTypes = undefined;
|
|
2032
|
+
for (const type of this.getSourceTypes()) {
|
|
2033
|
+
hash.update(type);
|
|
2034
|
+
}
|
|
1736
2035
|
/** @type {Generator} */
|
|
1737
2036
|
(this.generator).updateHash(hash, {
|
|
1738
2037
|
module: this,
|
|
@@ -1742,6 +2041,7 @@ class NormalModule extends Module {
|
|
|
1742
2041
|
}
|
|
1743
2042
|
|
|
1744
2043
|
/**
|
|
2044
|
+
* Serializes this instance into the provided serializer context.
|
|
1745
2045
|
* @param {ObjectSerializerContext} context context
|
|
1746
2046
|
*/
|
|
1747
2047
|
serialize(context) {
|
|
@@ -1752,6 +2052,7 @@ class NormalModule extends Module {
|
|
|
1752
2052
|
write(this._lastSuccessfulBuildMeta);
|
|
1753
2053
|
write(this._forceBuild);
|
|
1754
2054
|
write(this._codeGeneratorData);
|
|
2055
|
+
write(this.hot);
|
|
1755
2056
|
super.serialize(context);
|
|
1756
2057
|
}
|
|
1757
2058
|
|
|
@@ -1760,7 +2061,8 @@ class NormalModule extends Module {
|
|
|
1760
2061
|
* @returns {NormalModule} module
|
|
1761
2062
|
*/
|
|
1762
2063
|
static deserialize(context) {
|
|
1763
|
-
|
|
2064
|
+
// `new this` so subclasses without extra constructor options inherit this method
|
|
2065
|
+
const obj = new this({
|
|
1764
2066
|
// will be deserialized by Module
|
|
1765
2067
|
layer: /** @type {EXPECTED_ANY} */ (null),
|
|
1766
2068
|
type: "",
|
|
@@ -1784,6 +2086,7 @@ class NormalModule extends Module {
|
|
|
1784
2086
|
}
|
|
1785
2087
|
|
|
1786
2088
|
/**
|
|
2089
|
+
* Restores this instance from the provided deserializer context.
|
|
1787
2090
|
* @param {ObjectDeserializerContext} context context
|
|
1788
2091
|
*/
|
|
1789
2092
|
deserialize(context) {
|
|
@@ -1793,6 +2096,7 @@ class NormalModule extends Module {
|
|
|
1793
2096
|
this._lastSuccessfulBuildMeta = read();
|
|
1794
2097
|
this._forceBuild = read();
|
|
1795
2098
|
this._codeGeneratorData = read();
|
|
2099
|
+
this.hot = read();
|
|
1796
2100
|
super.deserialize(context);
|
|
1797
2101
|
}
|
|
1798
2102
|
}
|