webpack 5.97.1 → 5.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/NormalModule.js
CHANGED
|
@@ -5,10 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const querystring = require("querystring");
|
|
8
9
|
const parseJson = require("json-parse-even-better-errors");
|
|
9
10
|
const { getContext, runLoaders } = require("loader-runner");
|
|
10
|
-
const
|
|
11
|
-
|
|
11
|
+
const {
|
|
12
|
+
AsyncSeriesBailHook,
|
|
13
|
+
HookMap,
|
|
14
|
+
SyncHook,
|
|
15
|
+
SyncWaterfallHook
|
|
16
|
+
} = require("tapable");
|
|
12
17
|
const {
|
|
13
18
|
CachedSource,
|
|
14
19
|
OriginalSource,
|
|
@@ -33,66 +38,72 @@ const { isSubset } = require("./util/SetHelpers");
|
|
|
33
38
|
const { getScheme } = require("./util/URLAbsoluteSpecifier");
|
|
34
39
|
const {
|
|
35
40
|
compareLocations,
|
|
36
|
-
concatComparators,
|
|
37
41
|
compareSelect,
|
|
38
|
-
|
|
42
|
+
concatComparators,
|
|
43
|
+
keepOriginalOrder,
|
|
44
|
+
sortWithSourceOrder
|
|
39
45
|
} = require("./util/comparators");
|
|
40
46
|
const createHash = require("./util/createHash");
|
|
41
47
|
const { createFakeHook } = require("./util/deprecation");
|
|
42
48
|
const { join } = require("./util/fs");
|
|
43
49
|
const {
|
|
44
|
-
contextify,
|
|
45
50
|
absolutify,
|
|
51
|
+
contextify,
|
|
46
52
|
makePathsRelative
|
|
47
53
|
} = require("./util/identifier");
|
|
48
54
|
const makeSerializable = require("./util/makeSerializable");
|
|
49
55
|
const memoize = require("./util/memoize");
|
|
50
56
|
|
|
57
|
+
/** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
|
|
58
|
+
/** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
|
|
51
59
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
52
|
-
/** @typedef {import("
|
|
60
|
+
/** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
|
|
53
61
|
/** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
54
|
-
/** @typedef {import("../declarations/WebpackOptions").
|
|
55
|
-
/** @typedef {import("./
|
|
56
|
-
/** @typedef {import("./Compiler")} Compiler */
|
|
62
|
+
/** @typedef {import("../declarations/WebpackOptions").NoParse} NoParse */
|
|
63
|
+
/** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
|
|
57
64
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
|
58
|
-
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
|
|
59
65
|
/** @typedef {import("./Generator")} Generator */
|
|
66
|
+
/** @typedef {import("./Generator").GenerateErrorFn} GenerateErrorFn */
|
|
60
67
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
68
|
+
/** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
|
|
61
69
|
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
|
62
70
|
/** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
|
|
63
71
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
|
72
|
+
/** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
|
|
64
73
|
/** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
|
65
74
|
/** @typedef {import("./Module").KnownBuildInfo} KnownBuildInfo */
|
|
66
75
|
/** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
|
|
76
|
+
/** @typedef {import("./Module").LibIdent} LibIdent */
|
|
77
|
+
/** @typedef {import("./Module").NameForCondition} NameForCondition */
|
|
67
78
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
|
68
|
-
/** @typedef {import("./
|
|
79
|
+
/** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
|
|
80
|
+
/** @typedef {import("./Module").BuildCallback} BuildCallback */
|
|
81
|
+
/** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
|
|
82
|
+
/** @typedef {import("./Module").SourceType} SourceType */
|
|
83
|
+
/** @typedef {import("./Module").SourceTypes} SourceTypes */
|
|
69
84
|
/** @typedef {import("./Module").UnsafeCacheData} UnsafeCacheData */
|
|
70
85
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
71
86
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
72
|
-
/** @typedef {import("./ModuleTypeConstants").JavaScriptModuleTypes} JavaScriptModuleTypes */
|
|
73
87
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
|
74
|
-
/** @typedef {import("./NormalModuleFactory").
|
|
88
|
+
/** @typedef {import("./NormalModuleFactory").NormalModuleTypes} NormalModuleTypes */
|
|
89
|
+
/** @typedef {import("./NormalModuleFactory").ResourceSchemeData} ResourceSchemeData */
|
|
75
90
|
/** @typedef {import("./Parser")} Parser */
|
|
91
|
+
/** @typedef {import("./Parser").PreparsedAst} PreparsedAst */
|
|
76
92
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
|
77
|
-
/** @typedef {import("./ResolverFactory").ResolveContext} ResolveContext */
|
|
78
93
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
79
|
-
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
|
80
|
-
/** @typedef {import("./logging/Logger").Logger} WebpackLogger */
|
|
81
94
|
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
82
95
|
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
83
96
|
/** @typedef {import("./util/Hash")} Hash */
|
|
84
97
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
|
85
|
-
/** @typedef {import("
|
|
86
|
-
/** @typedef {import("./util/
|
|
98
|
+
/** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
|
|
99
|
+
/** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
|
|
87
100
|
/**
|
|
88
101
|
* @template T
|
|
89
102
|
* @typedef {import("./util/deprecation").FakeHook<T>} FakeHook
|
|
90
103
|
*/
|
|
91
104
|
|
|
92
|
-
/** @typedef {{[k: string]:
|
|
93
|
-
/** @typedef {{[k: string]:
|
|
94
|
-
|
|
95
|
-
/** @typedef {UnsafeCacheData & { parser: undefined | Parser, parserOptions: undefined | ParserOptions, generator: undefined | Generator, generatorOptions: undefined | GeneratorOptions }} NormalModuleUnsafeCacheData */
|
|
105
|
+
/** @typedef {{ [k: string]: EXPECTED_ANY }} ParserOptions */
|
|
106
|
+
/** @typedef {{ [k: string]: EXPECTED_ANY }} GeneratorOptions */
|
|
96
107
|
|
|
97
108
|
/**
|
|
98
109
|
* @template T
|
|
@@ -104,21 +115,12 @@ const memoize = require("./util/memoize");
|
|
|
104
115
|
* @typedef {import("../declarations/LoaderContext").NormalModuleLoaderContext<T>} NormalModuleLoaderContext
|
|
105
116
|
*/
|
|
106
117
|
|
|
107
|
-
/**
|
|
108
|
-
* @typedef {object} SourceMap
|
|
109
|
-
* @property {number} version
|
|
110
|
-
* @property {string[]} sources
|
|
111
|
-
* @property {string} mappings
|
|
112
|
-
* @property {string=} file
|
|
113
|
-
* @property {string=} sourceRoot
|
|
114
|
-
* @property {string[]=} sourcesContent
|
|
115
|
-
* @property {string[]=} names
|
|
116
|
-
* @property {string=} debugId
|
|
117
|
-
*/
|
|
118
|
-
|
|
119
118
|
const getInvalidDependenciesModuleWarning = memoize(() =>
|
|
120
119
|
require("./InvalidDependenciesModuleWarning")
|
|
121
120
|
);
|
|
121
|
+
|
|
122
|
+
const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
|
|
123
|
+
|
|
122
124
|
const getValidate = memoize(() => require("schema-utils").validate);
|
|
123
125
|
|
|
124
126
|
const ABSOLUTE_PATH_REGEX = /^([a-zA-Z]:\\|\\\\|\/)/;
|
|
@@ -126,15 +128,15 @@ const ABSOLUTE_PATH_REGEX = /^([a-zA-Z]:\\|\\\\|\/)/;
|
|
|
126
128
|
/**
|
|
127
129
|
* @typedef {object} LoaderItem
|
|
128
130
|
* @property {string} loader
|
|
129
|
-
* @property {
|
|
130
|
-
* @property {string
|
|
131
|
-
* @property {string
|
|
131
|
+
* @property {string | null | undefined | Record<string, EXPECTED_ANY>} options
|
|
132
|
+
* @property {string | null=} ident
|
|
133
|
+
* @property {string | null=} type
|
|
132
134
|
*/
|
|
133
135
|
|
|
134
136
|
/**
|
|
135
137
|
* @param {string} context absolute context path
|
|
136
138
|
* @param {string} source a source path
|
|
137
|
-
* @param {
|
|
139
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
138
140
|
* @returns {string} new source path
|
|
139
141
|
*/
|
|
140
142
|
const contextifySourceUrl = (context, source, associatedObjectForCache) => {
|
|
@@ -148,26 +150,28 @@ const contextifySourceUrl = (context, source, associatedObjectForCache) => {
|
|
|
148
150
|
|
|
149
151
|
/**
|
|
150
152
|
* @param {string} context absolute context path
|
|
151
|
-
* @param {
|
|
152
|
-
* @param {
|
|
153
|
-
* @returns {
|
|
153
|
+
* @param {string | RawSourceMap} sourceMap a source map
|
|
154
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
155
|
+
* @returns {string | RawSourceMap} new source map
|
|
154
156
|
*/
|
|
155
157
|
const contextifySourceMap = (context, sourceMap, associatedObjectForCache) => {
|
|
156
|
-
if (!Array.isArray(sourceMap.sources))
|
|
158
|
+
if (typeof sourceMap === "string" || !Array.isArray(sourceMap.sources)) {
|
|
159
|
+
return sourceMap;
|
|
160
|
+
}
|
|
157
161
|
const { sourceRoot } = sourceMap;
|
|
158
|
-
/** @type {
|
|
162
|
+
/** @type {(source: string) => string} */
|
|
159
163
|
const mapper = !sourceRoot
|
|
160
|
-
? source => source
|
|
164
|
+
? (source) => source
|
|
161
165
|
: sourceRoot.endsWith("/")
|
|
162
|
-
? source =>
|
|
166
|
+
? (source) =>
|
|
163
167
|
source.startsWith("/")
|
|
164
168
|
? `${sourceRoot.slice(0, -1)}${source}`
|
|
165
169
|
: `${sourceRoot}${source}`
|
|
166
|
-
: source =>
|
|
170
|
+
: (source) =>
|
|
167
171
|
source.startsWith("/")
|
|
168
172
|
? `${sourceRoot}${source}`
|
|
169
173
|
: `${sourceRoot}/${source}`;
|
|
170
|
-
const newSources = sourceMap.sources.map(source =>
|
|
174
|
+
const newSources = sourceMap.sources.map((source) =>
|
|
171
175
|
contextifySourceUrl(context, mapper(source), associatedObjectForCache)
|
|
172
176
|
);
|
|
173
177
|
return {
|
|
@@ -182,9 +186,9 @@ const contextifySourceMap = (context, sourceMap, associatedObjectForCache) => {
|
|
|
182
186
|
* @param {string | Buffer} input the input
|
|
183
187
|
* @returns {string} the converted string
|
|
184
188
|
*/
|
|
185
|
-
const asString = input => {
|
|
189
|
+
const asString = (input) => {
|
|
186
190
|
if (Buffer.isBuffer(input)) {
|
|
187
|
-
return input.toString("
|
|
191
|
+
return input.toString("utf8");
|
|
188
192
|
}
|
|
189
193
|
return input;
|
|
190
194
|
};
|
|
@@ -193,16 +197,16 @@ const asString = input => {
|
|
|
193
197
|
* @param {string | Buffer} input the input
|
|
194
198
|
* @returns {Buffer} the converted buffer
|
|
195
199
|
*/
|
|
196
|
-
const asBuffer = input => {
|
|
200
|
+
const asBuffer = (input) => {
|
|
197
201
|
if (!Buffer.isBuffer(input)) {
|
|
198
|
-
return Buffer.from(input, "
|
|
202
|
+
return Buffer.from(input, "utf8");
|
|
199
203
|
}
|
|
200
204
|
return input;
|
|
201
205
|
};
|
|
202
206
|
|
|
203
207
|
class NonErrorEmittedError extends WebpackError {
|
|
204
208
|
/**
|
|
205
|
-
* @param {
|
|
209
|
+
* @param {EXPECTED_ANY} error value which is not an instance of Error
|
|
206
210
|
*/
|
|
207
211
|
constructor(error) {
|
|
208
212
|
super();
|
|
@@ -218,27 +222,32 @@ makeSerializable(
|
|
|
218
222
|
"NonErrorEmittedError"
|
|
219
223
|
);
|
|
220
224
|
|
|
225
|
+
/** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
|
|
226
|
+
|
|
227
|
+
/** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
|
|
228
|
+
|
|
221
229
|
/**
|
|
222
230
|
* @typedef {object} NormalModuleCompilationHooks
|
|
223
|
-
* @property {SyncHook<[
|
|
224
|
-
* @property {SyncHook<[LoaderItem[], NormalModule,
|
|
231
|
+
* @property {SyncHook<[AnyLoaderContext, NormalModule]>} loader
|
|
232
|
+
* @property {SyncHook<[LoaderItem[], NormalModule, AnyLoaderContext]>} beforeLoaders
|
|
225
233
|
* @property {SyncHook<[NormalModule]>} beforeParse
|
|
226
234
|
* @property {SyncHook<[NormalModule]>} beforeSnapshot
|
|
227
235
|
* @property {HookMap<FakeHook<AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>>>} readResourceForScheme
|
|
228
|
-
* @property {HookMap<AsyncSeriesBailHook<[
|
|
236
|
+
* @property {HookMap<AsyncSeriesBailHook<[AnyLoaderContext], string | Buffer | null>>} readResource
|
|
237
|
+
* @property {SyncWaterfallHook<[Result, NormalModule]>} processResult
|
|
229
238
|
* @property {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>} needBuild
|
|
230
239
|
*/
|
|
231
240
|
|
|
232
241
|
/**
|
|
233
242
|
* @typedef {object} NormalModuleCreateData
|
|
234
243
|
* @property {string=} layer an optional layer in which the module is
|
|
235
|
-
* @property {
|
|
244
|
+
* @property {NormalModuleTypes | ""} type module type. When deserializing, this is set to an empty string "".
|
|
236
245
|
* @property {string} request request string
|
|
237
246
|
* @property {string} userRequest request intended by user (without loaders from config)
|
|
238
247
|
* @property {string} rawRequest request without resolving
|
|
239
248
|
* @property {LoaderItem[]} loaders list of loaders
|
|
240
249
|
* @property {string} resource path + query of the real resource
|
|
241
|
-
* @property {
|
|
250
|
+
* @property {(ResourceSchemeData & Partial<ResolveRequest>)=} resourceResolveData resource resolve data
|
|
242
251
|
* @property {string} context context directory for resolving
|
|
243
252
|
* @property {string=} matchResource path + query of the matched resource (virtual)
|
|
244
253
|
* @property {Parser} parser the parser used
|
|
@@ -246,6 +255,11 @@ makeSerializable(
|
|
|
246
255
|
* @property {Generator} generator the generator used
|
|
247
256
|
* @property {GeneratorOptions=} generatorOptions the options of the generator used
|
|
248
257
|
* @property {ResolveOptions=} resolveOptions options used for resolving requests from this module
|
|
258
|
+
* @property {boolean} extractSourceMap enable/disable extracting source map
|
|
259
|
+
*/
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @typedef {(resourcePath: string, getLoaderContext: (resourcePath: string) => AnyLoaderContext) => Promise<string | Buffer<ArrayBufferLike>>} ReadResource
|
|
249
263
|
*/
|
|
250
264
|
|
|
251
265
|
/** @type {WeakMap<Compilation, NormalModuleCompilationHooks>} */
|
|
@@ -270,14 +284,14 @@ class NormalModule extends Module {
|
|
|
270
284
|
beforeParse: new SyncHook(["module"]),
|
|
271
285
|
beforeSnapshot: new SyncHook(["module"]),
|
|
272
286
|
// TODO webpack 6 deprecate
|
|
273
|
-
readResourceForScheme: new HookMap(scheme => {
|
|
287
|
+
readResourceForScheme: new HookMap((scheme) => {
|
|
274
288
|
const hook =
|
|
275
289
|
/** @type {NormalModuleCompilationHooks} */
|
|
276
290
|
(hooks).readResource.for(scheme);
|
|
277
291
|
return createFakeHook(
|
|
278
292
|
/** @type {AsyncSeriesBailHook<[string, NormalModule], string | Buffer | null>} */ ({
|
|
279
293
|
tap: (options, fn) =>
|
|
280
|
-
hook.tap(options, loaderContext =>
|
|
294
|
+
hook.tap(options, (loaderContext) =>
|
|
281
295
|
fn(
|
|
282
296
|
loaderContext.resource,
|
|
283
297
|
/** @type {NormalModule} */ (loaderContext._module)
|
|
@@ -292,7 +306,7 @@ class NormalModule extends Module {
|
|
|
292
306
|
)
|
|
293
307
|
),
|
|
294
308
|
tapPromise: (options, fn) =>
|
|
295
|
-
hook.tapPromise(options, loaderContext =>
|
|
309
|
+
hook.tapPromise(options, (loaderContext) =>
|
|
296
310
|
fn(
|
|
297
311
|
loaderContext.resource,
|
|
298
312
|
/** @type {NormalModule} */ (loaderContext._module)
|
|
@@ -304,6 +318,7 @@ class NormalModule extends Module {
|
|
|
304
318
|
readResource: new HookMap(
|
|
305
319
|
() => new AsyncSeriesBailHook(["loaderContext"])
|
|
306
320
|
),
|
|
321
|
+
processResult: new SyncWaterfallHook(["result", "module"]),
|
|
307
322
|
needBuild: new AsyncSeriesBailHook(["module", "context"])
|
|
308
323
|
};
|
|
309
324
|
compilationHooksMap.set(
|
|
@@ -332,38 +347,43 @@ class NormalModule extends Module {
|
|
|
332
347
|
parserOptions,
|
|
333
348
|
generator,
|
|
334
349
|
generatorOptions,
|
|
335
|
-
resolveOptions
|
|
350
|
+
resolveOptions,
|
|
351
|
+
extractSourceMap
|
|
336
352
|
}) {
|
|
337
353
|
super(type, context || getContext(resource), layer);
|
|
338
354
|
|
|
339
355
|
// Info from Factory
|
|
340
|
-
/** @type {
|
|
356
|
+
/** @type {NormalModuleCreateData['request']} */
|
|
341
357
|
this.request = request;
|
|
342
|
-
/** @type {
|
|
358
|
+
/** @type {NormalModuleCreateData['userRequest']} */
|
|
343
359
|
this.userRequest = userRequest;
|
|
344
|
-
/** @type {
|
|
360
|
+
/** @type {NormalModuleCreateData['rawRequest']} */
|
|
345
361
|
this.rawRequest = rawRequest;
|
|
346
362
|
/** @type {boolean} */
|
|
347
363
|
this.binary = /^(asset|webassembly)\b/.test(type);
|
|
348
|
-
/** @type {
|
|
364
|
+
/** @type {NormalModuleCreateData['parser'] | undefined} */
|
|
349
365
|
this.parser = parser;
|
|
350
|
-
/** @type {
|
|
366
|
+
/** @type {NormalModuleCreateData['parserOptions']} */
|
|
351
367
|
this.parserOptions = parserOptions;
|
|
352
|
-
/** @type {
|
|
368
|
+
/** @type {NormalModuleCreateData['generator'] | undefined} */
|
|
353
369
|
this.generator = generator;
|
|
354
|
-
/** @type {
|
|
370
|
+
/** @type {NormalModuleCreateData['generatorOptions']} */
|
|
355
371
|
this.generatorOptions = generatorOptions;
|
|
356
|
-
/** @type {
|
|
372
|
+
/** @type {NormalModuleCreateData['resource']} */
|
|
357
373
|
this.resource = resource;
|
|
374
|
+
/** @type {NormalModuleCreateData['resourceResolveData']} */
|
|
358
375
|
this.resourceResolveData = resourceResolveData;
|
|
359
|
-
/** @type {
|
|
376
|
+
/** @type {NormalModuleCreateData['matchResource']} */
|
|
360
377
|
this.matchResource = matchResource;
|
|
361
|
-
/** @type {
|
|
378
|
+
/** @type {NormalModuleCreateData['loaders']} */
|
|
362
379
|
this.loaders = loaders;
|
|
363
380
|
if (resolveOptions !== undefined) {
|
|
364
381
|
// already declared in super class
|
|
382
|
+
/** @type {NormalModuleCreateData['resolveOptions']} */
|
|
365
383
|
this.resolveOptions = resolveOptions;
|
|
366
384
|
}
|
|
385
|
+
/** @type {NormalModuleCreateData['extractSourceMap']} */
|
|
386
|
+
this.extractSourceMap = extractSourceMap;
|
|
367
387
|
|
|
368
388
|
// Info from Build
|
|
369
389
|
/** @type {WebpackError | null} */
|
|
@@ -375,7 +395,7 @@ class NormalModule extends Module {
|
|
|
375
395
|
this._source = null;
|
|
376
396
|
/**
|
|
377
397
|
* @private
|
|
378
|
-
* @type {Map<
|
|
398
|
+
* @type {Map<undefined | SourceType, number> | undefined}
|
|
379
399
|
*/
|
|
380
400
|
this._sourceSizes = undefined;
|
|
381
401
|
/**
|
|
@@ -390,7 +410,7 @@ class NormalModule extends Module {
|
|
|
390
410
|
this._isEvaluatingSideEffects = false;
|
|
391
411
|
/** @type {WeakSet<ModuleGraph> | undefined} */
|
|
392
412
|
this._addedSideEffectsBailout = undefined;
|
|
393
|
-
/** @type {
|
|
413
|
+
/** @type {CodeGenerationResultData} */
|
|
394
414
|
this._codeGeneratorData = new Map();
|
|
395
415
|
}
|
|
396
416
|
|
|
@@ -415,9 +435,16 @@ class NormalModule extends Module {
|
|
|
415
435
|
return /** @type {string} */ (requestShortener.shorten(this.userRequest));
|
|
416
436
|
}
|
|
417
437
|
|
|
438
|
+
/**
|
|
439
|
+
* @returns {string | null} return the resource path
|
|
440
|
+
*/
|
|
441
|
+
getResource() {
|
|
442
|
+
return this.matchResource || this.resource;
|
|
443
|
+
}
|
|
444
|
+
|
|
418
445
|
/**
|
|
419
446
|
* @param {LibIdentOptions} options options
|
|
420
|
-
* @returns {
|
|
447
|
+
* @returns {LibIdent | null} an identifier for library inclusion
|
|
421
448
|
*/
|
|
422
449
|
libIdent(options) {
|
|
423
450
|
let ident = contextify(
|
|
@@ -430,10 +457,10 @@ class NormalModule extends Module {
|
|
|
430
457
|
}
|
|
431
458
|
|
|
432
459
|
/**
|
|
433
|
-
* @returns {
|
|
460
|
+
* @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
|
|
434
461
|
*/
|
|
435
462
|
nameForCondition() {
|
|
436
|
-
const resource =
|
|
463
|
+
const resource = /** @type {string} */ (this.getResource());
|
|
437
464
|
const idx = resource.indexOf("?");
|
|
438
465
|
if (idx >= 0) return resource.slice(0, idx);
|
|
439
466
|
return resource;
|
|
@@ -462,6 +489,7 @@ class NormalModule extends Module {
|
|
|
462
489
|
this.context = m.context;
|
|
463
490
|
this.matchResource = m.matchResource;
|
|
464
491
|
this.loaders = m.loaders;
|
|
492
|
+
this.extractSourceMap = m.extractSourceMap;
|
|
465
493
|
}
|
|
466
494
|
|
|
467
495
|
/**
|
|
@@ -490,9 +518,7 @@ class NormalModule extends Module {
|
|
|
490
518
|
* @returns {UnsafeCacheData} cached data
|
|
491
519
|
*/
|
|
492
520
|
getUnsafeCacheData() {
|
|
493
|
-
const data =
|
|
494
|
-
/** @type {NormalModuleUnsafeCacheData} */
|
|
495
|
-
(super.getUnsafeCacheData());
|
|
521
|
+
const data = super.getUnsafeCacheData();
|
|
496
522
|
data.parserOptions = this.parserOptions;
|
|
497
523
|
data.generatorOptions = this.generatorOptions;
|
|
498
524
|
return data;
|
|
@@ -500,7 +526,7 @@ class NormalModule extends Module {
|
|
|
500
526
|
|
|
501
527
|
/**
|
|
502
528
|
* restore unsafe cache data
|
|
503
|
-
* @param {
|
|
529
|
+
* @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
|
|
504
530
|
* @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
|
|
505
531
|
*/
|
|
506
532
|
restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
|
|
@@ -509,7 +535,7 @@ class NormalModule extends Module {
|
|
|
509
535
|
|
|
510
536
|
/**
|
|
511
537
|
* restore unsafe cache data
|
|
512
|
-
* @param {
|
|
538
|
+
* @param {UnsafeCacheData} unsafeCacheData data from getUnsafeCacheData
|
|
513
539
|
* @param {NormalModuleFactory} normalModuleFactory the normal module factory handling the unsafe caching
|
|
514
540
|
*/
|
|
515
541
|
_restoreFromUnsafeCache(unsafeCacheData, normalModuleFactory) {
|
|
@@ -528,8 +554,8 @@ class NormalModule extends Module {
|
|
|
528
554
|
* @param {string} context the compilation context
|
|
529
555
|
* @param {string} name the asset name
|
|
530
556
|
* @param {string | Buffer} content the content
|
|
531
|
-
* @param {(string |
|
|
532
|
-
* @param {
|
|
557
|
+
* @param {(string | RawSourceMap)=} sourceMap an optional source map
|
|
558
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
|
|
533
559
|
* @returns {Source} the created source
|
|
534
560
|
*/
|
|
535
561
|
createSourceForAsset(
|
|
@@ -556,7 +582,8 @@ class NormalModule extends Module {
|
|
|
556
582
|
name,
|
|
557
583
|
contextifySourceMap(
|
|
558
584
|
context,
|
|
559
|
-
/** @type {
|
|
585
|
+
/** @type {RawSourceMap} */
|
|
586
|
+
(sourceMap),
|
|
560
587
|
associatedObjectForCache
|
|
561
588
|
)
|
|
562
589
|
);
|
|
@@ -574,12 +601,15 @@ class NormalModule extends Module {
|
|
|
574
601
|
* @param {Compilation} compilation the compilation
|
|
575
602
|
* @param {InputFileSystem} fs file system from reading
|
|
576
603
|
* @param {NormalModuleCompilationHooks} hooks the hooks
|
|
577
|
-
* @returns {import("../declarations/LoaderContext").
|
|
604
|
+
* @returns {import("../declarations/LoaderContext").LoaderContext<T>} loader context
|
|
578
605
|
*/
|
|
579
606
|
_createLoaderContext(resolver, options, compilation, fs, hooks) {
|
|
580
607
|
const { requestShortener } = compilation.runtimeTemplate;
|
|
581
608
|
const getCurrentLoaderName = () => {
|
|
582
|
-
const currentLoader = this.getCurrentLoader(
|
|
609
|
+
const currentLoader = this.getCurrentLoader(
|
|
610
|
+
/** @type {AnyLoaderContext} */
|
|
611
|
+
(loaderContext)
|
|
612
|
+
);
|
|
583
613
|
if (!currentLoader) return "(not in loader scope)";
|
|
584
614
|
return requestShortener.shorten(currentLoader.loader);
|
|
585
615
|
};
|
|
@@ -588,13 +618,19 @@ class NormalModule extends Module {
|
|
|
588
618
|
*/
|
|
589
619
|
const getResolveContext = () => ({
|
|
590
620
|
fileDependencies: {
|
|
591
|
-
add: d =>
|
|
621
|
+
add: (d) =>
|
|
622
|
+
/** @type {AnyLoaderContext} */
|
|
623
|
+
(loaderContext).addDependency(d)
|
|
592
624
|
},
|
|
593
625
|
contextDependencies: {
|
|
594
|
-
add: d =>
|
|
626
|
+
add: (d) =>
|
|
627
|
+
/** @type {AnyLoaderContext} */
|
|
628
|
+
(loaderContext).addContextDependency(d)
|
|
595
629
|
},
|
|
596
630
|
missingDependencies: {
|
|
597
|
-
add: d =>
|
|
631
|
+
add: (d) =>
|
|
632
|
+
/** @type {AnyLoaderContext} */
|
|
633
|
+
(loaderContext).addMissingDependency(d)
|
|
598
634
|
}
|
|
599
635
|
});
|
|
600
636
|
const getAbsolutify = memoize(() =>
|
|
@@ -637,21 +673,24 @@ class NormalModule extends Module {
|
|
|
637
673
|
? getContextifyInContext()(request)
|
|
638
674
|
: getContextify()(context, request),
|
|
639
675
|
/**
|
|
640
|
-
* @param {
|
|
676
|
+
* @param {HashFunction=} type type
|
|
641
677
|
* @returns {Hash} hash
|
|
642
678
|
*/
|
|
643
|
-
createHash: type =>
|
|
644
|
-
createHash(
|
|
645
|
-
type ||
|
|
646
|
-
/** @type {Algorithm} */
|
|
647
|
-
(compilation.outputOptions.hashFunction)
|
|
648
|
-
)
|
|
679
|
+
createHash: (type) =>
|
|
680
|
+
createHash(type || compilation.outputOptions.hashFunction)
|
|
649
681
|
};
|
|
650
|
-
/** @type {
|
|
682
|
+
/** @type {NormalModuleLoaderContext<T>} */
|
|
651
683
|
const loaderContext = {
|
|
652
684
|
version: 2,
|
|
653
|
-
|
|
654
|
-
|
|
685
|
+
/**
|
|
686
|
+
* @param {import("../declarations/LoaderContext").Schema=} schema schema
|
|
687
|
+
* @returns {T} options
|
|
688
|
+
*/
|
|
689
|
+
getOptions: (schema) => {
|
|
690
|
+
const loader = this.getCurrentLoader(
|
|
691
|
+
/** @type {AnyLoaderContext} */
|
|
692
|
+
(loaderContext)
|
|
693
|
+
);
|
|
655
694
|
|
|
656
695
|
let { options } = /** @type {LoaderItem} */ (loader);
|
|
657
696
|
|
|
@@ -661,7 +700,8 @@ class NormalModule extends Module {
|
|
|
661
700
|
options = parseJson(options);
|
|
662
701
|
} catch (err) {
|
|
663
702
|
throw new Error(
|
|
664
|
-
`Cannot parse string options: ${/** @type {Error} */ (err).message}
|
|
703
|
+
`Cannot parse string options: ${/** @type {Error} */ (err).message}`,
|
|
704
|
+
{ cause: err }
|
|
665
705
|
);
|
|
666
706
|
}
|
|
667
707
|
} else {
|
|
@@ -682,15 +722,15 @@ class NormalModule extends Module {
|
|
|
682
722
|
if (schema.title && (match = /^(.+) (.+)$/.exec(schema.title))) {
|
|
683
723
|
[, name, baseDataPath] = match;
|
|
684
724
|
}
|
|
685
|
-
getValidate()(schema, options, {
|
|
725
|
+
getValidate()(schema, /** @type {EXPECTED_OBJECT} */ (options), {
|
|
686
726
|
name,
|
|
687
727
|
baseDataPath
|
|
688
728
|
});
|
|
689
729
|
}
|
|
690
730
|
|
|
691
|
-
return options;
|
|
731
|
+
return /** @type {T} */ (options);
|
|
692
732
|
},
|
|
693
|
-
emitWarning: warning => {
|
|
733
|
+
emitWarning: (warning) => {
|
|
694
734
|
if (!(warning instanceof Error)) {
|
|
695
735
|
warning = new NonErrorEmittedError(warning);
|
|
696
736
|
}
|
|
@@ -700,7 +740,7 @@ class NormalModule extends Module {
|
|
|
700
740
|
})
|
|
701
741
|
);
|
|
702
742
|
},
|
|
703
|
-
emitError: error => {
|
|
743
|
+
emitError: (error) => {
|
|
704
744
|
if (!(error instanceof Error)) {
|
|
705
745
|
error = new NonErrorEmittedError(error);
|
|
706
746
|
}
|
|
@@ -710,8 +750,11 @@ class NormalModule extends Module {
|
|
|
710
750
|
})
|
|
711
751
|
);
|
|
712
752
|
},
|
|
713
|
-
getLogger: name => {
|
|
714
|
-
const currentLoader = this.getCurrentLoader(
|
|
753
|
+
getLogger: (name) => {
|
|
754
|
+
const currentLoader = this.getCurrentLoader(
|
|
755
|
+
/** @type {AnyLoaderContext} */
|
|
756
|
+
(loaderContext)
|
|
757
|
+
);
|
|
715
758
|
return compilation.getLogger(() =>
|
|
716
759
|
[currentLoader && currentLoader.loader, name, this.identifier()]
|
|
717
760
|
.filter(Boolean)
|
|
@@ -723,24 +766,32 @@ class NormalModule extends Module {
|
|
|
723
766
|
},
|
|
724
767
|
getResolve(options) {
|
|
725
768
|
const child = options ? resolver.withOptions(options) : resolver;
|
|
726
|
-
return
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
} else {
|
|
730
|
-
return new Promise((resolve, reject) => {
|
|
769
|
+
return /** @type {ReturnType<import("../declarations/LoaderContext").NormalModuleLoaderContext<T>["getResolve"]>} */ (
|
|
770
|
+
(context, request, callback) => {
|
|
771
|
+
if (callback) {
|
|
731
772
|
child.resolve(
|
|
732
773
|
{},
|
|
733
774
|
context,
|
|
734
775
|
request,
|
|
735
776
|
getResolveContext(),
|
|
736
|
-
|
|
737
|
-
if (err) reject(err);
|
|
738
|
-
else resolve(result);
|
|
739
|
-
}
|
|
777
|
+
callback
|
|
740
778
|
);
|
|
741
|
-
}
|
|
779
|
+
} else {
|
|
780
|
+
return new Promise((resolve, reject) => {
|
|
781
|
+
child.resolve(
|
|
782
|
+
{},
|
|
783
|
+
context,
|
|
784
|
+
request,
|
|
785
|
+
getResolveContext(),
|
|
786
|
+
(err, result) => {
|
|
787
|
+
if (err) reject(err);
|
|
788
|
+
else resolve(result);
|
|
789
|
+
}
|
|
790
|
+
);
|
|
791
|
+
});
|
|
792
|
+
}
|
|
742
793
|
}
|
|
743
|
-
|
|
794
|
+
);
|
|
744
795
|
},
|
|
745
796
|
emitFile: (name, content, sourceMap, assetInfo) => {
|
|
746
797
|
const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
|
|
@@ -758,7 +809,7 @@ class NormalModule extends Module {
|
|
|
758
809
|
(buildInfo.assetsInfo);
|
|
759
810
|
|
|
760
811
|
assets[name] = this.createSourceForAsset(
|
|
761
|
-
|
|
812
|
+
options.context,
|
|
762
813
|
name,
|
|
763
814
|
content,
|
|
764
815
|
sourceMap,
|
|
@@ -766,7 +817,7 @@ class NormalModule extends Module {
|
|
|
766
817
|
);
|
|
767
818
|
assetsInfo.set(name, assetInfo);
|
|
768
819
|
},
|
|
769
|
-
addBuildDependency: dep => {
|
|
820
|
+
addBuildDependency: (dep) => {
|
|
770
821
|
const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
|
|
771
822
|
|
|
772
823
|
if (buildInfo.buildDependencies === undefined) {
|
|
@@ -775,14 +826,14 @@ class NormalModule extends Module {
|
|
|
775
826
|
buildInfo.buildDependencies.add(dep);
|
|
776
827
|
},
|
|
777
828
|
utils,
|
|
778
|
-
rootContext:
|
|
829
|
+
rootContext: options.context,
|
|
779
830
|
webpack: true,
|
|
780
831
|
sourceMap: Boolean(this.useSourceMap),
|
|
781
832
|
mode: options.mode || "production",
|
|
782
|
-
hashFunction:
|
|
783
|
-
hashDigest:
|
|
784
|
-
hashDigestLength:
|
|
785
|
-
hashSalt:
|
|
833
|
+
hashFunction: options.output.hashFunction,
|
|
834
|
+
hashDigest: options.output.hashDigest,
|
|
835
|
+
hashDigestLength: options.output.hashDigestLength,
|
|
836
|
+
hashSalt: options.output.hashSalt,
|
|
786
837
|
_module: this,
|
|
787
838
|
_compilation: compilation,
|
|
788
839
|
_compiler: compilation.compiler,
|
|
@@ -791,14 +842,18 @@ class NormalModule extends Module {
|
|
|
791
842
|
|
|
792
843
|
Object.assign(loaderContext, options.loader);
|
|
793
844
|
|
|
794
|
-
hooks.loader.call(
|
|
845
|
+
hooks.loader.call(
|
|
846
|
+
/** @type {AnyLoaderContext} */
|
|
847
|
+
(loaderContext),
|
|
848
|
+
this
|
|
849
|
+
);
|
|
795
850
|
|
|
796
|
-
return loaderContext;
|
|
851
|
+
return /** @type {AnyLoaderContext} */ (loaderContext);
|
|
797
852
|
}
|
|
798
853
|
|
|
799
854
|
// TODO remove `loaderContext` in webpack@6
|
|
800
855
|
/**
|
|
801
|
-
* @param {
|
|
856
|
+
* @param {AnyLoaderContext} loaderContext loader context
|
|
802
857
|
* @param {number} index index
|
|
803
858
|
* @returns {LoaderItem | null} loader
|
|
804
859
|
*/
|
|
@@ -818,8 +873,8 @@ class NormalModule extends Module {
|
|
|
818
873
|
/**
|
|
819
874
|
* @param {string} context the compilation context
|
|
820
875
|
* @param {string | Buffer} content the content
|
|
821
|
-
* @param {(string |
|
|
822
|
-
* @param {
|
|
876
|
+
* @param {(string | RawSourceMap | null)=} sourceMap an optional source map
|
|
877
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache object for caching
|
|
823
878
|
* @returns {Source} the created source
|
|
824
879
|
*/
|
|
825
880
|
createSource(context, content, sourceMap, associatedObjectForCache) {
|
|
@@ -839,11 +894,7 @@ class NormalModule extends Module {
|
|
|
839
894
|
return new SourceMapSource(
|
|
840
895
|
content,
|
|
841
896
|
contextifySourceUrl(context, identifier, associatedObjectForCache),
|
|
842
|
-
contextifySourceMap(
|
|
843
|
-
context,
|
|
844
|
-
/** @type {TODO} */ (sourceMap),
|
|
845
|
-
associatedObjectForCache
|
|
846
|
-
)
|
|
897
|
+
contextifySourceMap(context, sourceMap, associatedObjectForCache)
|
|
847
898
|
);
|
|
848
899
|
}
|
|
849
900
|
|
|
@@ -863,7 +914,7 @@ class NormalModule extends Module {
|
|
|
863
914
|
* @param {ResolverWithOptions} resolver the resolver
|
|
864
915
|
* @param {InputFileSystem} fs the file system
|
|
865
916
|
* @param {NormalModuleCompilationHooks} hooks the hooks
|
|
866
|
-
* @param {
|
|
917
|
+
* @param {BuildCallback} callback callback function
|
|
867
918
|
* @returns {void}
|
|
868
919
|
*/
|
|
869
920
|
_doBuild(options, compilation, resolver, fs, hooks, callback) {
|
|
@@ -875,14 +926,12 @@ class NormalModule extends Module {
|
|
|
875
926
|
hooks
|
|
876
927
|
);
|
|
877
928
|
|
|
878
|
-
/** @typedef {[string | Buffer, string | SourceMapSource, Record<string, any>]} Result */
|
|
879
|
-
|
|
880
929
|
/**
|
|
881
930
|
* @param {Error | null} err err
|
|
882
|
-
* @param {(Result | null)=}
|
|
931
|
+
* @param {(Result | null)=} result_ result
|
|
883
932
|
* @returns {void}
|
|
884
933
|
*/
|
|
885
|
-
const processResult = (err,
|
|
934
|
+
const processResult = (err, result_) => {
|
|
886
935
|
if (err) {
|
|
887
936
|
if (!(err instanceof Error)) {
|
|
888
937
|
err = new NonErrorEmittedError(err);
|
|
@@ -897,8 +946,11 @@ class NormalModule extends Module {
|
|
|
897
946
|
});
|
|
898
947
|
return callback(error);
|
|
899
948
|
}
|
|
900
|
-
|
|
901
|
-
|
|
949
|
+
const result = hooks.processResult.call(
|
|
950
|
+
/** @type {Result} */
|
|
951
|
+
(result_),
|
|
952
|
+
this
|
|
953
|
+
);
|
|
902
954
|
const source = result[0];
|
|
903
955
|
const sourceMap = result.length >= 1 ? result[1] : null;
|
|
904
956
|
const extraInfo = result.length >= 2 ? result[2] : null;
|
|
@@ -924,7 +976,7 @@ class NormalModule extends Module {
|
|
|
924
976
|
: this.binary;
|
|
925
977
|
|
|
926
978
|
this._source = this.createSource(
|
|
927
|
-
|
|
979
|
+
options.context,
|
|
928
980
|
isBinaryModule ? asBuffer(source) : asString(source),
|
|
929
981
|
sourceMap,
|
|
930
982
|
compilation.compiler.root
|
|
@@ -950,7 +1002,8 @@ class NormalModule extends Module {
|
|
|
950
1002
|
hooks.beforeLoaders.call(
|
|
951
1003
|
this.loaders,
|
|
952
1004
|
this,
|
|
953
|
-
/** @type {
|
|
1005
|
+
/** @type {AnyLoaderContext} */
|
|
1006
|
+
(loaderContext)
|
|
954
1007
|
);
|
|
955
1008
|
} catch (err) {
|
|
956
1009
|
processResult(/** @type {Error} */ (err));
|
|
@@ -968,28 +1021,80 @@ class NormalModule extends Module {
|
|
|
968
1021
|
loaders: this.loaders,
|
|
969
1022
|
context: loaderContext,
|
|
970
1023
|
/**
|
|
971
|
-
* @param {
|
|
1024
|
+
* @param {AnyLoaderContext} loaderContext the loader context
|
|
972
1025
|
* @param {string} resourcePath the resource Path
|
|
973
|
-
* @param {(err: Error | null, result?: string | Buffer) => void} callback callback
|
|
1026
|
+
* @param {(err: Error | null, result?: string | Buffer, sourceMap?: Result[1]) => void} callback callback
|
|
1027
|
+
* @returns {Promise<void>}
|
|
974
1028
|
*/
|
|
975
|
-
processResource: (loaderContext, resourcePath, callback) => {
|
|
976
|
-
|
|
977
|
-
const
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
(
|
|
987
|
-
|
|
988
|
-
|
|
1029
|
+
processResource: async (loaderContext, resourcePath, callback) => {
|
|
1030
|
+
/** @type {ReadResource} */
|
|
1031
|
+
const readResource = (resourcePath, getLoaderContext) => {
|
|
1032
|
+
const scheme = getScheme(resourcePath);
|
|
1033
|
+
return new Promise((resolve, reject) => {
|
|
1034
|
+
hooks.readResource
|
|
1035
|
+
.for(scheme)
|
|
1036
|
+
.callAsync(getLoaderContext(resourcePath), (err, result) => {
|
|
1037
|
+
if (err) {
|
|
1038
|
+
reject(err);
|
|
1039
|
+
} else {
|
|
1040
|
+
if (typeof result !== "string" && !result) {
|
|
1041
|
+
return reject(
|
|
1042
|
+
new UnhandledSchemeError(
|
|
1043
|
+
/** @type {string} */
|
|
1044
|
+
(scheme),
|
|
1045
|
+
resourcePath
|
|
1046
|
+
)
|
|
1047
|
+
);
|
|
1048
|
+
}
|
|
1049
|
+
resolve(result);
|
|
1050
|
+
}
|
|
1051
|
+
});
|
|
1052
|
+
});
|
|
1053
|
+
};
|
|
1054
|
+
try {
|
|
1055
|
+
const result = await readResource(
|
|
1056
|
+
resourcePath,
|
|
1057
|
+
() => loaderContext
|
|
1058
|
+
);
|
|
1059
|
+
if (
|
|
1060
|
+
this.extractSourceMap &&
|
|
1061
|
+
(this.useSourceMap || this.useSimpleSourceMap)
|
|
1062
|
+
) {
|
|
1063
|
+
try {
|
|
1064
|
+
const { source, sourceMap } = await getExtractSourceMap()(
|
|
1065
|
+
result,
|
|
1066
|
+
resourcePath,
|
|
1067
|
+
/** @type {ReadResource} */
|
|
1068
|
+
(resourcePath) =>
|
|
1069
|
+
readResource(
|
|
1070
|
+
resourcePath,
|
|
1071
|
+
(resourcePath) =>
|
|
1072
|
+
/** @type {AnyLoaderContext} */
|
|
1073
|
+
({
|
|
1074
|
+
addDependency(dependency) {
|
|
1075
|
+
loaderContext.addDependency(dependency);
|
|
1076
|
+
},
|
|
1077
|
+
fs: loaderContext.fs,
|
|
1078
|
+
_module: undefined,
|
|
1079
|
+
resourcePath,
|
|
1080
|
+
resource: resourcePath
|
|
1081
|
+
})
|
|
1082
|
+
).catch((err) => {
|
|
1083
|
+
throw new Error(
|
|
1084
|
+
`Failed to parse source map. ${/** @type {Error} */ (err).message}`
|
|
1085
|
+
);
|
|
1086
|
+
})
|
|
989
1087
|
);
|
|
1088
|
+
return callback(null, source, sourceMap);
|
|
1089
|
+
} catch (err) {
|
|
1090
|
+
this.addWarning(new ModuleWarning(/** @type {Error} */ (err)));
|
|
1091
|
+
return callback(null, result);
|
|
990
1092
|
}
|
|
991
|
-
|
|
992
|
-
|
|
1093
|
+
}
|
|
1094
|
+
return callback(null, result);
|
|
1095
|
+
} catch (error) {
|
|
1096
|
+
return callback(/** @type {Error} */ (error));
|
|
1097
|
+
}
|
|
993
1098
|
}
|
|
994
1099
|
},
|
|
995
1100
|
(err, result) => {
|
|
@@ -997,10 +1102,9 @@ class NormalModule extends Module {
|
|
|
997
1102
|
loaderContext._compilation =
|
|
998
1103
|
loaderContext._compiler =
|
|
999
1104
|
loaderContext._module =
|
|
1000
|
-
// eslint-disable-next-line no-warning-comments
|
|
1001
|
-
// @ts-ignore
|
|
1002
1105
|
loaderContext.fs =
|
|
1003
|
-
|
|
1106
|
+
/** @type {EXPECTED_ANY} */
|
|
1107
|
+
(undefined);
|
|
1004
1108
|
|
|
1005
1109
|
if (!result) {
|
|
1006
1110
|
/** @type {BuildInfo} */
|
|
@@ -1051,7 +1155,7 @@ class NormalModule extends Module {
|
|
|
1051
1155
|
}
|
|
1052
1156
|
|
|
1053
1157
|
/**
|
|
1054
|
-
* @param {
|
|
1158
|
+
* @param {Exclude<NoParse, EXPECTED_ANY[]>} rule rule
|
|
1055
1159
|
* @param {string} content content
|
|
1056
1160
|
* @returns {boolean} result
|
|
1057
1161
|
*/
|
|
@@ -1069,7 +1173,7 @@ class NormalModule extends Module {
|
|
|
1069
1173
|
}
|
|
1070
1174
|
|
|
1071
1175
|
/**
|
|
1072
|
-
* @param {
|
|
1176
|
+
* @param {undefined | NoParse} noParseRule no parse rule
|
|
1073
1177
|
* @param {string} request request
|
|
1074
1178
|
* @returns {boolean} check if module should not be parsed, returns "true" if the module should !not! be parsed, returns "false" if the module !must! be parsed
|
|
1075
1179
|
*/
|
|
@@ -1103,10 +1207,7 @@ class NormalModule extends Module {
|
|
|
1103
1207
|
* @private
|
|
1104
1208
|
*/
|
|
1105
1209
|
_initBuildHash(compilation) {
|
|
1106
|
-
const hash = createHash(
|
|
1107
|
-
/** @type {Algorithm} */
|
|
1108
|
-
(compilation.outputOptions.hashFunction)
|
|
1109
|
-
);
|
|
1210
|
+
const hash = createHash(compilation.outputOptions.hashFunction);
|
|
1110
1211
|
if (this._source) {
|
|
1111
1212
|
hash.update("source");
|
|
1112
1213
|
this._source.updateHash(hash);
|
|
@@ -1114,7 +1215,7 @@ class NormalModule extends Module {
|
|
|
1114
1215
|
hash.update("meta");
|
|
1115
1216
|
hash.update(JSON.stringify(this.buildMeta));
|
|
1116
1217
|
/** @type {BuildInfo} */
|
|
1117
|
-
(this.buildInfo).hash =
|
|
1218
|
+
(this.buildInfo).hash = hash.digest("hex");
|
|
1118
1219
|
}
|
|
1119
1220
|
|
|
1120
1221
|
/**
|
|
@@ -1122,7 +1223,7 @@ class NormalModule extends Module {
|
|
|
1122
1223
|
* @param {Compilation} compilation the compilation
|
|
1123
1224
|
* @param {ResolverWithOptions} resolver the resolver
|
|
1124
1225
|
* @param {InputFileSystem} fs the file system
|
|
1125
|
-
* @param {
|
|
1226
|
+
* @param {BuildCallback} callback callback function
|
|
1126
1227
|
* @returns {void}
|
|
1127
1228
|
*/
|
|
1128
1229
|
build(options, compilation, resolver, fs, callback) {
|
|
@@ -1152,7 +1253,7 @@ class NormalModule extends Module {
|
|
|
1152
1253
|
|
|
1153
1254
|
const hooks = NormalModule.getCompilationHooks(compilation);
|
|
1154
1255
|
|
|
1155
|
-
return this._doBuild(options, compilation, resolver, fs, hooks, err => {
|
|
1256
|
+
return this._doBuild(options, compilation, resolver, fs, hooks, (err) => {
|
|
1156
1257
|
// if we have an error mark module as failed and exit
|
|
1157
1258
|
if (err) {
|
|
1158
1259
|
this.markModuleAsErrored(err);
|
|
@@ -1164,14 +1265,10 @@ class NormalModule extends Module {
|
|
|
1164
1265
|
* @param {Error} e error
|
|
1165
1266
|
* @returns {void}
|
|
1166
1267
|
*/
|
|
1167
|
-
const handleParseError = e => {
|
|
1268
|
+
const handleParseError = (e) => {
|
|
1168
1269
|
const source = /** @type {Source} */ (this._source).source();
|
|
1169
|
-
const loaders = this.loaders.map(item =>
|
|
1170
|
-
contextify(
|
|
1171
|
-
/** @type {string} */ (options.context),
|
|
1172
|
-
item.loader,
|
|
1173
|
-
compilation.compiler.root
|
|
1174
|
-
)
|
|
1270
|
+
const loaders = this.loaders.map((item) =>
|
|
1271
|
+
contextify(options.context, item.loader, compilation.compiler.root)
|
|
1175
1272
|
);
|
|
1176
1273
|
const error = new ModuleParseError(source, e, loaders, this.type);
|
|
1177
1274
|
this.markModuleAsErrored(error);
|
|
@@ -1182,10 +1279,11 @@ class NormalModule extends Module {
|
|
|
1182
1279
|
const handleParseResult = () => {
|
|
1183
1280
|
this.dependencies.sort(
|
|
1184
1281
|
concatComparators(
|
|
1185
|
-
compareSelect(a => a.loc, compareLocations),
|
|
1282
|
+
compareSelect((a) => a.loc, compareLocations),
|
|
1186
1283
|
keepOriginalOrder(this.dependencies)
|
|
1187
1284
|
)
|
|
1188
1285
|
);
|
|
1286
|
+
sortWithSourceOrder(this.dependencies, new WeakMap());
|
|
1189
1287
|
this._initBuildHash(compilation);
|
|
1190
1288
|
this._lastSuccessfulBuildMeta =
|
|
1191
1289
|
/** @type {BuildMeta} */
|
|
@@ -1211,13 +1309,14 @@ class NormalModule extends Module {
|
|
|
1211
1309
|
/** @type {undefined | Set<string>} */
|
|
1212
1310
|
let nonAbsoluteDependencies;
|
|
1213
1311
|
/**
|
|
1214
|
-
* @param {
|
|
1312
|
+
* @param {FileSystemDependencies} deps deps
|
|
1215
1313
|
*/
|
|
1216
|
-
const checkDependencies = deps => {
|
|
1314
|
+
const checkDependencies = (deps) => {
|
|
1217
1315
|
for (const dep of deps) {
|
|
1218
1316
|
if (!ABSOLUTE_PATH_REGEX.test(dep)) {
|
|
1219
|
-
if (nonAbsoluteDependencies === undefined)
|
|
1317
|
+
if (nonAbsoluteDependencies === undefined) {
|
|
1220
1318
|
nonAbsoluteDependencies = new Set();
|
|
1319
|
+
}
|
|
1221
1320
|
nonAbsoluteDependencies.add(dep);
|
|
1222
1321
|
deps.delete(dep);
|
|
1223
1322
|
try {
|
|
@@ -1232,8 +1331,8 @@ class NormalModule extends Module {
|
|
|
1232
1331
|
(depWithoutGlob !== dep
|
|
1233
1332
|
? /** @type {NonNullable<KnownBuildInfo["contextDependencies"]>} */
|
|
1234
1333
|
(
|
|
1235
|
-
/** @type {BuildInfo} */
|
|
1236
|
-
|
|
1334
|
+
/** @type {BuildInfo} */
|
|
1335
|
+
(this.buildInfo).contextDependencies
|
|
1237
1336
|
)
|
|
1238
1337
|
: deps
|
|
1239
1338
|
).add(absolute);
|
|
@@ -1342,8 +1441,9 @@ class NormalModule extends Module {
|
|
|
1342
1441
|
if (this.factoryMeta.sideEffectFree === false) return true;
|
|
1343
1442
|
}
|
|
1344
1443
|
if (this.buildMeta !== undefined && this.buildMeta.sideEffectFree) {
|
|
1345
|
-
if (this._isEvaluatingSideEffects)
|
|
1444
|
+
if (this._isEvaluatingSideEffects) {
|
|
1346
1445
|
return ModuleGraphConnection.CIRCULAR_CONNECTION;
|
|
1446
|
+
}
|
|
1347
1447
|
this._isEvaluatingSideEffects = true;
|
|
1348
1448
|
/** @type {ConnectionState} */
|
|
1349
1449
|
let current = false;
|
|
@@ -1405,7 +1505,7 @@ class NormalModule extends Module {
|
|
|
1405
1505
|
codeGenerationResults,
|
|
1406
1506
|
sourceTypes
|
|
1407
1507
|
}) {
|
|
1408
|
-
/** @type {
|
|
1508
|
+
/** @type {RuntimeRequirements} */
|
|
1409
1509
|
const runtimeRequirements = new Set();
|
|
1410
1510
|
|
|
1411
1511
|
const { parsed } = /** @type {BuildInfo} */ (this.buildInfo);
|
|
@@ -1416,16 +1516,32 @@ class NormalModule extends Module {
|
|
|
1416
1516
|
runtimeRequirements.add(RuntimeGlobals.thisAsExports);
|
|
1417
1517
|
}
|
|
1418
1518
|
|
|
1419
|
-
/** @type {function(): Map<string, any>} */
|
|
1420
1519
|
const getData = () => this._codeGeneratorData;
|
|
1421
1520
|
|
|
1422
1521
|
const sources = new Map();
|
|
1423
1522
|
for (const type of sourceTypes || chunkGraph.getModuleSourceTypes(this)) {
|
|
1523
|
+
// TODO webpack@6 make generateError required
|
|
1524
|
+
const generator =
|
|
1525
|
+
/** @type {Generator & { generateError?: GenerateErrorFn }} */
|
|
1526
|
+
(this.generator);
|
|
1424
1527
|
const source = this.error
|
|
1425
|
-
?
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1528
|
+
? generator.generateError
|
|
1529
|
+
? generator.generateError(this.error, this, {
|
|
1530
|
+
dependencyTemplates,
|
|
1531
|
+
runtimeTemplate,
|
|
1532
|
+
moduleGraph,
|
|
1533
|
+
chunkGraph,
|
|
1534
|
+
runtimeRequirements,
|
|
1535
|
+
runtime,
|
|
1536
|
+
concatenationScope,
|
|
1537
|
+
codeGenerationResults,
|
|
1538
|
+
getData,
|
|
1539
|
+
type
|
|
1540
|
+
})
|
|
1541
|
+
: new RawSource(
|
|
1542
|
+
`throw new Error(${JSON.stringify(this.error.message)});`
|
|
1543
|
+
)
|
|
1544
|
+
: generator.generate(this, {
|
|
1429
1545
|
dependencyTemplates,
|
|
1430
1546
|
runtimeTemplate,
|
|
1431
1547
|
moduleGraph,
|
|
@@ -1468,7 +1584,7 @@ class NormalModule extends Module {
|
|
|
1468
1584
|
|
|
1469
1585
|
/**
|
|
1470
1586
|
* @param {NeedBuildContext} context context info
|
|
1471
|
-
* @param {
|
|
1587
|
+
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
1472
1588
|
* @returns {void}
|
|
1473
1589
|
*/
|
|
1474
1590
|
needBuild(context, callback) {
|
|
@@ -1547,10 +1663,10 @@ class NormalModule extends Module {
|
|
|
1547
1663
|
}
|
|
1548
1664
|
|
|
1549
1665
|
/**
|
|
1550
|
-
* @param {
|
|
1551
|
-
* @param {
|
|
1552
|
-
* @param {
|
|
1553
|
-
* @param {
|
|
1666
|
+
* @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
|
|
1667
|
+
* @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
|
|
1668
|
+
* @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
|
|
1669
|
+
* @param {FileSystemDependencies} buildDependencies set where build dependencies are added to
|
|
1554
1670
|
*/
|
|
1555
1671
|
addCacheDependencies(
|
|
1556
1672
|
fileDependencies,
|
|
@@ -1585,7 +1701,11 @@ class NormalModule extends Module {
|
|
|
1585
1701
|
* @returns {void}
|
|
1586
1702
|
*/
|
|
1587
1703
|
updateHash(hash, context) {
|
|
1588
|
-
|
|
1704
|
+
const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
|
|
1705
|
+
hash.update(
|
|
1706
|
+
/** @type {string} */
|
|
1707
|
+
(buildInfo.hash)
|
|
1708
|
+
);
|
|
1589
1709
|
/** @type {Generator} */
|
|
1590
1710
|
(this.generator).updateHash(hash, {
|
|
1591
1711
|
module: this,
|
|
@@ -1610,7 +1730,7 @@ class NormalModule extends Module {
|
|
|
1610
1730
|
|
|
1611
1731
|
/**
|
|
1612
1732
|
* @param {ObjectDeserializerContext} context context
|
|
1613
|
-
* @returns {
|
|
1733
|
+
* @returns {NormalModule} module
|
|
1614
1734
|
*/
|
|
1615
1735
|
static deserialize(context) {
|
|
1616
1736
|
const obj = new NormalModule({
|
|
@@ -1629,7 +1749,8 @@ class NormalModule extends Module {
|
|
|
1629
1749
|
parserOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
1630
1750
|
generator: /** @type {EXPECTED_ANY} */ (null),
|
|
1631
1751
|
generatorOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
1632
|
-
resolveOptions: /** @type {EXPECTED_ANY} */ (null)
|
|
1752
|
+
resolveOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
1753
|
+
extractSourceMap: /** @type {EXPECTED_ANY} */ (null)
|
|
1633
1754
|
});
|
|
1634
1755
|
obj.deserialize(context);
|
|
1635
1756
|
return obj;
|