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/ModuleGraph.js
CHANGED
|
@@ -8,16 +8,24 @@
|
|
|
8
8
|
const util = require("util");
|
|
9
9
|
const ExportsInfo = require("./ExportsInfo");
|
|
10
10
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
11
|
+
const HarmonyImportDependency = require("./dependencies/HarmonyImportDependency");
|
|
12
|
+
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
11
13
|
const SortableSet = require("./util/SortableSet");
|
|
12
14
|
const WeakTupleMap = require("./util/WeakTupleMap");
|
|
15
|
+
const { sortWithSourceOrder } = require("./util/comparators");
|
|
13
16
|
|
|
17
|
+
/** @typedef {import("./Compilation").ModuleMemCaches} ModuleMemCaches */
|
|
14
18
|
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
|
15
19
|
/** @typedef {import("./Dependency")} Dependency */
|
|
16
20
|
/** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
|
|
21
|
+
/** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
|
|
17
22
|
/** @typedef {import("./Module")} Module */
|
|
18
23
|
/** @typedef {import("./ModuleProfile")} ModuleProfile */
|
|
19
24
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
|
20
25
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
26
|
+
/** @typedef {import("./dependencies/HarmonyImportSideEffectDependency")} HarmonyImportSideEffectDependency */
|
|
27
|
+
/** @typedef {import("./dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
|
|
28
|
+
/** @typedef {import("./util/comparators").DependencySourceOrder} DependencySourceOrder */
|
|
21
29
|
|
|
22
30
|
/**
|
|
23
31
|
* @callback OptimizationBailoutFunction
|
|
@@ -28,30 +36,32 @@ const WeakTupleMap = require("./util/WeakTupleMap");
|
|
|
28
36
|
const EMPTY_SET = new Set();
|
|
29
37
|
|
|
30
38
|
/**
|
|
39
|
+
* @template {Module | null | undefined} T
|
|
31
40
|
* @param {SortableSet<ModuleGraphConnection>} set input
|
|
32
|
-
* @
|
|
41
|
+
* @param {(connection: ModuleGraphConnection) => T} getKey function to extract key from connection
|
|
42
|
+
* @returns {ReadonlyMap<T, ReadonlyArray<ModuleGraphConnection>>} mapped by key
|
|
33
43
|
*/
|
|
34
|
-
const
|
|
44
|
+
const getConnectionsByKey = (set, getKey) => {
|
|
35
45
|
const map = new Map();
|
|
36
|
-
/** @type {
|
|
37
|
-
let
|
|
46
|
+
/** @type {T | 0} */
|
|
47
|
+
let lastKey = 0;
|
|
38
48
|
/** @type {ModuleGraphConnection[] | undefined} */
|
|
39
49
|
let lastList;
|
|
40
50
|
for (const connection of set) {
|
|
41
|
-
const
|
|
42
|
-
if (
|
|
51
|
+
const key = getKey(connection);
|
|
52
|
+
if (lastKey === key) {
|
|
43
53
|
/** @type {ModuleGraphConnection[]} */
|
|
44
54
|
(lastList).push(connection);
|
|
45
55
|
} else {
|
|
46
|
-
|
|
47
|
-
const list = map.get(
|
|
56
|
+
lastKey = key;
|
|
57
|
+
const list = map.get(key);
|
|
48
58
|
if (list !== undefined) {
|
|
49
59
|
lastList = list;
|
|
50
60
|
list.push(connection);
|
|
51
61
|
} else {
|
|
52
62
|
const list = [connection];
|
|
53
63
|
lastList = list;
|
|
54
|
-
map.set(
|
|
64
|
+
map.set(key, list);
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
67
|
}
|
|
@@ -60,37 +70,22 @@ const getConnectionsByOriginModule = set => {
|
|
|
60
70
|
|
|
61
71
|
/**
|
|
62
72
|
* @param {SortableSet<ModuleGraphConnection>} set input
|
|
63
|
-
* @returns {
|
|
73
|
+
* @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} mapped by origin module
|
|
64
74
|
*/
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/** @type {ModuleGraphConnection[]} */
|
|
75
|
-
(lastList).push(connection);
|
|
76
|
-
} else {
|
|
77
|
-
lastModule = module;
|
|
78
|
-
const list = map.get(module);
|
|
79
|
-
if (list !== undefined) {
|
|
80
|
-
lastList = list;
|
|
81
|
-
list.push(connection);
|
|
82
|
-
} else {
|
|
83
|
-
const list = [connection];
|
|
84
|
-
lastList = list;
|
|
85
|
-
map.set(module, list);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return map;
|
|
90
|
-
};
|
|
75
|
+
const getConnectionsByOriginModule = (set) =>
|
|
76
|
+
getConnectionsByKey(set, (connection) => connection.originModule);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {SortableSet<ModuleGraphConnection>} set input
|
|
80
|
+
* @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>>} mapped by module
|
|
81
|
+
*/
|
|
82
|
+
const getConnectionsByModule = (set) =>
|
|
83
|
+
getConnectionsByKey(set, (connection) => connection.module);
|
|
91
84
|
|
|
92
85
|
/** @typedef {SortableSet<ModuleGraphConnection>} IncomingConnections */
|
|
93
86
|
/** @typedef {SortableSet<ModuleGraphConnection>} OutgoingConnections */
|
|
87
|
+
/** @typedef {Module | null | undefined} Issuer */
|
|
88
|
+
/** @typedef {(string | OptimizationBailoutFunction)[]} OptimizationBailouts */
|
|
94
89
|
|
|
95
90
|
class ModuleGraphModule {
|
|
96
91
|
constructor() {
|
|
@@ -98,9 +93,9 @@ class ModuleGraphModule {
|
|
|
98
93
|
this.incomingConnections = new SortableSet();
|
|
99
94
|
/** @type {OutgoingConnections | undefined} */
|
|
100
95
|
this.outgoingConnections = undefined;
|
|
101
|
-
/** @type {
|
|
96
|
+
/** @type {Issuer} */
|
|
102
97
|
this.issuer = undefined;
|
|
103
|
-
/** @type {
|
|
98
|
+
/** @type {OptimizationBailouts} */
|
|
104
99
|
this.optimizationBailout = [];
|
|
105
100
|
/** @type {ExportsInfo} */
|
|
106
101
|
this.exports = new ExportsInfo();
|
|
@@ -119,6 +114,22 @@ class ModuleGraphModule {
|
|
|
119
114
|
}
|
|
120
115
|
}
|
|
121
116
|
|
|
117
|
+
/** @typedef {(moduleGraphConnection: ModuleGraphConnection) => boolean} FilterConnection */
|
|
118
|
+
|
|
119
|
+
/** @typedef {EXPECTED_OBJECT} MetaKey */
|
|
120
|
+
|
|
121
|
+
/** @typedef {import("./dependencies/CommonJsExportRequireDependency").idsSymbol} CommonJsExportRequireDependencyIDsSymbol */
|
|
122
|
+
/** @typedef {import("./dependencies/HarmonyImportSpecifierDependency").idsSymbol} HarmonyImportSpecifierDependencyIDsSymbol */
|
|
123
|
+
/** @typedef {import("./dependencies/HarmonyExportImportedSpecifierDependency").idsSymbol} HarmonyExportImportedSpecifierDependencyIDsSymbol */
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @typedef {object} KnownMeta
|
|
127
|
+
* @property {Map<Module, string>=} importVarMap
|
|
128
|
+
* @property {Map<Module, string>=} deferredImportVarMap
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
/** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | HarmonyImportSpecifierDependencyIDsSymbol | HarmonyExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
|
|
132
|
+
|
|
122
133
|
class ModuleGraph {
|
|
123
134
|
constructor() {
|
|
124
135
|
/**
|
|
@@ -132,17 +143,17 @@ class ModuleGraph {
|
|
|
132
143
|
*/
|
|
133
144
|
this._moduleMap = new Map();
|
|
134
145
|
/**
|
|
135
|
-
* @type {WeakMap<
|
|
146
|
+
* @type {WeakMap<MetaKey, Meta>}
|
|
136
147
|
* @private
|
|
137
148
|
*/
|
|
138
149
|
this._metaMap = new WeakMap();
|
|
139
150
|
/**
|
|
140
|
-
* @type {WeakTupleMap<
|
|
151
|
+
* @type {WeakTupleMap<EXPECTED_ANY[], EXPECTED_ANY> | undefined}
|
|
141
152
|
* @private
|
|
142
153
|
*/
|
|
143
154
|
this._cache = undefined;
|
|
144
155
|
/**
|
|
145
|
-
* @type {
|
|
156
|
+
* @type {ModuleMemCaches | undefined}
|
|
146
157
|
* @private
|
|
147
158
|
*/
|
|
148
159
|
this._moduleMemCaches = undefined;
|
|
@@ -152,6 +163,18 @@ class ModuleGraph {
|
|
|
152
163
|
* @private
|
|
153
164
|
*/
|
|
154
165
|
this._cacheStage = undefined;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @type {WeakMap<Dependency, DependencySourceOrder>}
|
|
169
|
+
* @private
|
|
170
|
+
*/
|
|
171
|
+
this._dependencySourceOrderMap = new WeakMap();
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @type {Set<Module>}
|
|
175
|
+
* @private
|
|
176
|
+
*/
|
|
177
|
+
this._modulesNeedingSort = new Set();
|
|
155
178
|
}
|
|
156
179
|
|
|
157
180
|
/**
|
|
@@ -180,6 +203,15 @@ class ModuleGraph {
|
|
|
180
203
|
dependency._parentModule = module;
|
|
181
204
|
}
|
|
182
205
|
|
|
206
|
+
/**
|
|
207
|
+
* @param {Dependency} dependency the dependency
|
|
208
|
+
* @param {number} index the index
|
|
209
|
+
* @returns {void}
|
|
210
|
+
*/
|
|
211
|
+
setParentDependenciesBlockIndex(dependency, index) {
|
|
212
|
+
dependency._parentDependenciesBlockIndex = index;
|
|
213
|
+
}
|
|
214
|
+
|
|
183
215
|
/**
|
|
184
216
|
* @param {Dependency} dependency the dependency
|
|
185
217
|
* @returns {Module | undefined} parent module
|
|
@@ -259,6 +291,73 @@ class ModuleGraph {
|
|
|
259
291
|
targetMgm.incomingConnections.add(newConnection);
|
|
260
292
|
}
|
|
261
293
|
|
|
294
|
+
/**
|
|
295
|
+
* @param {Dependency} dependency the need update dependency
|
|
296
|
+
* @param {ModuleGraphConnection=} connection the target connection
|
|
297
|
+
* @param {Module=} parentModule the parent module
|
|
298
|
+
* @returns {void}
|
|
299
|
+
*/
|
|
300
|
+
updateParent(dependency, connection, parentModule) {
|
|
301
|
+
if (this._dependencySourceOrderMap.has(dependency)) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
if (!connection || !parentModule) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
const originDependency = connection.dependency;
|
|
308
|
+
|
|
309
|
+
// src/index.js
|
|
310
|
+
// import { c } from "lib/c" -> c = 0
|
|
311
|
+
// import { a, b } from "lib" -> a and b have the same source order -> a = b = 1
|
|
312
|
+
// import { d } from "lib/d" -> d = 2
|
|
313
|
+
const currentSourceOrder =
|
|
314
|
+
/** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
|
|
315
|
+
(dependency).sourceOrder;
|
|
316
|
+
|
|
317
|
+
// lib/index.js (reexport)
|
|
318
|
+
// import { a } from "lib/a" -> a = 0
|
|
319
|
+
// import { b } from "lib/b" -> b = 1
|
|
320
|
+
const originSourceOrder =
|
|
321
|
+
/** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
|
|
322
|
+
(originDependency).sourceOrder;
|
|
323
|
+
if (
|
|
324
|
+
typeof currentSourceOrder === "number" &&
|
|
325
|
+
typeof originSourceOrder === "number"
|
|
326
|
+
) {
|
|
327
|
+
// src/index.js
|
|
328
|
+
// import { c } from "lib/c" -> c = 0
|
|
329
|
+
// import { a } from "lib/a" -> a = 1.0 = 1(main) + 0.0(sub)
|
|
330
|
+
// import { b } from "lib/b" -> b = 1.1 = 1(main) + 0.1(sub)
|
|
331
|
+
// import { d } from "lib/d" -> d = 2
|
|
332
|
+
this._dependencySourceOrderMap.set(dependency, {
|
|
333
|
+
main: currentSourceOrder,
|
|
334
|
+
sub: originSourceOrder
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
// Save for later batch sorting
|
|
338
|
+
this._modulesNeedingSort.add(parentModule);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* @returns {void}
|
|
344
|
+
*/
|
|
345
|
+
finishUpdateParent() {
|
|
346
|
+
if (this._modulesNeedingSort.size === 0) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
for (const mod of this._modulesNeedingSort) {
|
|
350
|
+
// If dependencies like HarmonyImportSideEffectDependency and HarmonyImportSpecifierDependency have a SourceOrder,
|
|
351
|
+
// we sort based on it; otherwise, we preserve the original order.
|
|
352
|
+
sortWithSourceOrder(
|
|
353
|
+
mod.dependencies,
|
|
354
|
+
this._dependencySourceOrderMap,
|
|
355
|
+
(dep, index) => this.setParentDependenciesBlockIndex(dep, index)
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
this._modulesNeedingSort.clear();
|
|
359
|
+
}
|
|
360
|
+
|
|
262
361
|
/**
|
|
263
362
|
* @param {Dependency} dependency the referencing dependency
|
|
264
363
|
* @returns {void}
|
|
@@ -331,7 +430,7 @@ class ModuleGraph {
|
|
|
331
430
|
/**
|
|
332
431
|
* @param {Module} oldModule the old referencing module
|
|
333
432
|
* @param {Module} newModule the new referencing module
|
|
334
|
-
* @param {
|
|
433
|
+
* @param {FilterConnection} filterConnection filter predicate for replacement
|
|
335
434
|
* @returns {void}
|
|
336
435
|
*/
|
|
337
436
|
moveModuleConnections(oldModule, newModule, filterConnection) {
|
|
@@ -368,7 +467,7 @@ class ModuleGraph {
|
|
|
368
467
|
/**
|
|
369
468
|
* @param {Module} oldModule the old referencing module
|
|
370
469
|
* @param {Module} newModule the new referencing module
|
|
371
|
-
* @param {
|
|
470
|
+
* @param {FilterConnection} filterConnection filter predicate for replacement
|
|
372
471
|
* @returns {void}
|
|
373
472
|
*/
|
|
374
473
|
copyOutgoingModuleConnections(oldModule, newModule, filterConnection) {
|
|
@@ -435,8 +534,9 @@ class ModuleGraph {
|
|
|
435
534
|
/** @type {Dependency} */ (connection.dependency),
|
|
436
535
|
connection
|
|
437
536
|
);
|
|
438
|
-
if (connection.dependency === dependency)
|
|
537
|
+
if (connection.dependency === dependency) {
|
|
439
538
|
foundConnection = connection;
|
|
539
|
+
}
|
|
440
540
|
}
|
|
441
541
|
mgm._unassignedConnections.length = 0;
|
|
442
542
|
if (foundConnection !== undefined) {
|
|
@@ -497,7 +597,7 @@ class ModuleGraph {
|
|
|
497
597
|
|
|
498
598
|
/**
|
|
499
599
|
* @param {Module} module the module
|
|
500
|
-
* @returns {
|
|
600
|
+
* @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} reasons why a module is included, in a map by source module
|
|
501
601
|
*/
|
|
502
602
|
getIncomingConnectionsByOriginModule(module) {
|
|
503
603
|
const connections = this._getModuleGraphModule(module).incomingConnections;
|
|
@@ -506,7 +606,7 @@ class ModuleGraph {
|
|
|
506
606
|
|
|
507
607
|
/**
|
|
508
608
|
* @param {Module} module the module
|
|
509
|
-
* @returns {
|
|
609
|
+
* @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>> | undefined} connections to modules, in a map by module
|
|
510
610
|
*/
|
|
511
611
|
getOutgoingConnectionsByModule(module) {
|
|
512
612
|
const connections = this._getModuleGraphModule(module).outgoingConnections;
|
|
@@ -536,7 +636,7 @@ class ModuleGraph {
|
|
|
536
636
|
|
|
537
637
|
/**
|
|
538
638
|
* @param {Module} module the module
|
|
539
|
-
* @returns {
|
|
639
|
+
* @returns {Issuer} the issuer module
|
|
540
640
|
*/
|
|
541
641
|
getIssuer(module) {
|
|
542
642
|
const mgm = this._getModuleGraphModule(module);
|
|
@@ -565,7 +665,7 @@ class ModuleGraph {
|
|
|
565
665
|
|
|
566
666
|
/**
|
|
567
667
|
* @param {Module} module the module
|
|
568
|
-
* @returns {
|
|
668
|
+
* @returns {OptimizationBailouts} optimization bailouts
|
|
569
669
|
*/
|
|
570
670
|
getOptimizationBailout(module) {
|
|
571
671
|
const mgm = this._getModuleGraphModule(module);
|
|
@@ -574,7 +674,7 @@ class ModuleGraph {
|
|
|
574
674
|
|
|
575
675
|
/**
|
|
576
676
|
* @param {Module} module the module
|
|
577
|
-
* @returns {true |
|
|
677
|
+
* @returns {null | true | ExportInfoName[]} the provided exports
|
|
578
678
|
*/
|
|
579
679
|
getProvidedExports(module) {
|
|
580
680
|
const mgm = this._getModuleGraphModule(module);
|
|
@@ -583,7 +683,7 @@ class ModuleGraph {
|
|
|
583
683
|
|
|
584
684
|
/**
|
|
585
685
|
* @param {Module} module the module
|
|
586
|
-
* @param {
|
|
686
|
+
* @param {ExportInfoName | ExportInfoName[]} exportName a name of an export
|
|
587
687
|
* @returns {boolean | null} true, if the export is provided by the module.
|
|
588
688
|
* null, if it's unknown.
|
|
589
689
|
* false, if it's not provided.
|
|
@@ -746,6 +846,25 @@ class ModuleGraph {
|
|
|
746
846
|
return mgm.async;
|
|
747
847
|
}
|
|
748
848
|
|
|
849
|
+
/**
|
|
850
|
+
* @param {Module} module the module
|
|
851
|
+
* @returns {boolean} true, if the module is used as a deferred module at least once
|
|
852
|
+
*/
|
|
853
|
+
isDeferred(module) {
|
|
854
|
+
if (this.isAsync(module)) return false;
|
|
855
|
+
const connections = this.getIncomingConnections(module);
|
|
856
|
+
for (const connection of connections) {
|
|
857
|
+
if (
|
|
858
|
+
!connection.dependency ||
|
|
859
|
+
!(connection.dependency instanceof HarmonyImportDependency)
|
|
860
|
+
) {
|
|
861
|
+
continue;
|
|
862
|
+
}
|
|
863
|
+
if (ImportPhaseUtils.isDefer(connection.dependency.phase)) return true;
|
|
864
|
+
}
|
|
865
|
+
return false;
|
|
866
|
+
}
|
|
867
|
+
|
|
749
868
|
/**
|
|
750
869
|
* @param {Module} module the module
|
|
751
870
|
* @returns {void}
|
|
@@ -756,21 +875,21 @@ class ModuleGraph {
|
|
|
756
875
|
}
|
|
757
876
|
|
|
758
877
|
/**
|
|
759
|
-
* @param {
|
|
760
|
-
* @returns {
|
|
878
|
+
* @param {MetaKey} thing any thing
|
|
879
|
+
* @returns {Meta} metadata
|
|
761
880
|
*/
|
|
762
881
|
getMeta(thing) {
|
|
763
882
|
let meta = this._metaMap.get(thing);
|
|
764
883
|
if (meta === undefined) {
|
|
765
|
-
meta = Object.create(null);
|
|
766
|
-
this._metaMap.set(thing,
|
|
884
|
+
meta = /** @type {Meta} */ (Object.create(null));
|
|
885
|
+
this._metaMap.set(thing, meta);
|
|
767
886
|
}
|
|
768
|
-
return
|
|
887
|
+
return meta;
|
|
769
888
|
}
|
|
770
889
|
|
|
771
890
|
/**
|
|
772
|
-
* @param {
|
|
773
|
-
* @returns {
|
|
891
|
+
* @param {MetaKey} thing any thing
|
|
892
|
+
* @returns {Meta | undefined} metadata
|
|
774
893
|
*/
|
|
775
894
|
getMetaIfExisting(thing) {
|
|
776
895
|
return this._metaMap.get(thing);
|
|
@@ -790,11 +909,11 @@ class ModuleGraph {
|
|
|
790
909
|
}
|
|
791
910
|
|
|
792
911
|
/**
|
|
793
|
-
* @template {
|
|
794
|
-
* @template
|
|
795
|
-
* @param {(moduleGraph: ModuleGraph, ...args: T) =>
|
|
912
|
+
* @template {EXPECTED_ANY[]} T
|
|
913
|
+
* @template R
|
|
914
|
+
* @param {(moduleGraph: ModuleGraph, ...args: T) => R} fn computer
|
|
796
915
|
* @param {T} args arguments
|
|
797
|
-
* @returns {
|
|
916
|
+
* @returns {R} computed value or cached
|
|
798
917
|
*/
|
|
799
918
|
cached(fn, ...args) {
|
|
800
919
|
if (this._cache === undefined) return fn(this, ...args);
|
|
@@ -802,23 +921,28 @@ class ModuleGraph {
|
|
|
802
921
|
}
|
|
803
922
|
|
|
804
923
|
/**
|
|
805
|
-
* @param {
|
|
924
|
+
* @param {ModuleMemCaches} moduleMemCaches mem caches for modules for better caching
|
|
806
925
|
*/
|
|
807
926
|
setModuleMemCaches(moduleMemCaches) {
|
|
808
927
|
this._moduleMemCaches = moduleMemCaches;
|
|
809
928
|
}
|
|
810
929
|
|
|
811
930
|
/**
|
|
812
|
-
* @
|
|
813
|
-
* @
|
|
814
|
-
* @
|
|
931
|
+
* @template {Dependency} D
|
|
932
|
+
* @template {EXPECTED_ANY[]} ARGS
|
|
933
|
+
* @template R
|
|
934
|
+
* @param {D} dependency dependency
|
|
935
|
+
* @param {[...ARGS, (moduleGraph: ModuleGraph, dependency: D, ...args: ARGS) => R]} args arguments, last argument is a function called with moduleGraph, dependency, ...args
|
|
936
|
+
* @returns {R} computed value or cached
|
|
815
937
|
*/
|
|
816
938
|
dependencyCacheProvide(dependency, ...args) {
|
|
817
|
-
|
|
818
|
-
|
|
939
|
+
const fn =
|
|
940
|
+
/** @type {(moduleGraph: ModuleGraph, dependency: D, ...args: EXPECTED_ANY[]) => R} */
|
|
941
|
+
(args.pop());
|
|
819
942
|
if (this._moduleMemCaches && this._cacheStage) {
|
|
820
943
|
const memCache = this._moduleMemCaches.get(
|
|
821
|
-
/** @type {Module} */
|
|
944
|
+
/** @type {Module} */
|
|
945
|
+
(this.getParentModule(dependency))
|
|
822
946
|
);
|
|
823
947
|
if (memCache !== undefined) {
|
|
824
948
|
return memCache.provide(dependency, this._cacheStage, ...args, () =>
|
|
@@ -847,14 +971,15 @@ class ModuleGraph {
|
|
|
847
971
|
* @param {Module} module the module
|
|
848
972
|
* @returns {ModuleGraph} the module graph
|
|
849
973
|
*/
|
|
850
|
-
module => {
|
|
974
|
+
(module) => {
|
|
851
975
|
const moduleGraph = moduleGraphForModuleMap.get(module);
|
|
852
|
-
if (!moduleGraph)
|
|
976
|
+
if (!moduleGraph) {
|
|
853
977
|
throw new Error(
|
|
854
978
|
`${
|
|
855
979
|
deprecateMessage
|
|
856
980
|
}There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
|
|
857
981
|
);
|
|
982
|
+
}
|
|
858
983
|
return moduleGraph;
|
|
859
984
|
},
|
|
860
985
|
`${deprecateMessage}: Use new ModuleGraph API`,
|
|
@@ -52,8 +52,8 @@ const intersectConnectionStates = (a, b) => {
|
|
|
52
52
|
|
|
53
53
|
class ModuleGraphConnection {
|
|
54
54
|
/**
|
|
55
|
-
* @param {Module|null} originModule the referencing module
|
|
56
|
-
* @param {Dependency|null} dependency the referencing dependency
|
|
55
|
+
* @param {Module | null} originModule the referencing module
|
|
56
|
+
* @param {Dependency | null} dependency the referencing dependency
|
|
57
57
|
* @param {Module} module the referenced module
|
|
58
58
|
* @param {string=} explanation some extra detail
|
|
59
59
|
* @param {boolean=} weak the reference is weak
|
|
@@ -75,7 +75,6 @@ class ModuleGraphConnection {
|
|
|
75
75
|
this.weak = weak;
|
|
76
76
|
this.conditional = Boolean(condition);
|
|
77
77
|
this._active = condition !== false;
|
|
78
|
-
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
|
|
79
78
|
this.condition = condition || undefined;
|
|
80
79
|
/** @type {Set<string> | undefined} */
|
|
81
80
|
this.explanations = undefined;
|
|
@@ -103,15 +102,16 @@ class ModuleGraphConnection {
|
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
/**
|
|
106
|
-
* @param {
|
|
105
|
+
* @param {GetConditionFn} condition condition for the connection
|
|
107
106
|
* @returns {void}
|
|
108
107
|
*/
|
|
109
108
|
addCondition(condition) {
|
|
110
109
|
if (this.conditional) {
|
|
111
110
|
const old =
|
|
112
|
-
/** @type {
|
|
111
|
+
/** @type {GetConditionFn} */
|
|
113
112
|
(this.condition);
|
|
114
|
-
|
|
113
|
+
/** @type {GetConditionFn} */
|
|
114
|
+
(this.condition) = (c, r) =>
|
|
115
115
|
intersectConnectionStates(old(c, r), condition(c, r));
|
|
116
116
|
} else if (this._active) {
|
|
117
117
|
this.conditional = true;
|
|
@@ -132,7 +132,7 @@ class ModuleGraphConnection {
|
|
|
132
132
|
|
|
133
133
|
get explanation() {
|
|
134
134
|
if (this.explanations === undefined) return "";
|
|
135
|
-
return
|
|
135
|
+
return [...this.explanations].join(" ");
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
/**
|
|
@@ -143,9 +143,7 @@ class ModuleGraphConnection {
|
|
|
143
143
|
if (!this.conditional) return this._active;
|
|
144
144
|
|
|
145
145
|
return (
|
|
146
|
-
/** @type {(
|
|
147
|
-
this.condition
|
|
148
|
-
)(this, runtime) !== false
|
|
146
|
+
/** @type {GetConditionFn} */ (this.condition)(this, runtime) !== false
|
|
149
147
|
);
|
|
150
148
|
}
|
|
151
149
|
|
|
@@ -156,9 +154,7 @@ class ModuleGraphConnection {
|
|
|
156
154
|
isTargetActive(runtime) {
|
|
157
155
|
if (!this.conditional) return this._active;
|
|
158
156
|
return (
|
|
159
|
-
/** @type {(
|
|
160
|
-
this.condition
|
|
161
|
-
)(this, runtime) === true
|
|
157
|
+
/** @type {GetConditionFn} */ (this.condition)(this, runtime) === true
|
|
162
158
|
);
|
|
163
159
|
}
|
|
164
160
|
|
|
@@ -168,9 +164,7 @@ class ModuleGraphConnection {
|
|
|
168
164
|
*/
|
|
169
165
|
getActiveState(runtime) {
|
|
170
166
|
if (!this.conditional) return this._active;
|
|
171
|
-
return /** @type {(
|
|
172
|
-
this.condition
|
|
173
|
-
)(this, runtime);
|
|
167
|
+
return /** @type {GetConditionFn} */ (this.condition)(this, runtime);
|
|
174
168
|
}
|
|
175
169
|
|
|
176
170
|
/**
|
|
@@ -196,10 +190,10 @@ class ModuleGraphConnection {
|
|
|
196
190
|
/** @typedef {typeof CIRCULAR_CONNECTION} CIRCULAR_CONNECTION */
|
|
197
191
|
|
|
198
192
|
module.exports = ModuleGraphConnection;
|
|
199
|
-
module.exports.addConnectionStates = addConnectionStates;
|
|
200
|
-
module.exports.TRANSITIVE_ONLY = /** @type {typeof TRANSITIVE_ONLY} */ (
|
|
201
|
-
TRANSITIVE_ONLY
|
|
202
|
-
);
|
|
203
193
|
module.exports.CIRCULAR_CONNECTION = /** @type {typeof CIRCULAR_CONNECTION} */ (
|
|
204
194
|
CIRCULAR_CONNECTION
|
|
205
195
|
);
|
|
196
|
+
module.exports.TRANSITIVE_ONLY = /** @type {typeof TRANSITIVE_ONLY} */ (
|
|
197
|
+
TRANSITIVE_ONLY
|
|
198
|
+
);
|
|
199
|
+
module.exports.addConnectionStates = addConnectionStates;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { ConcatSource, RawSource
|
|
8
|
+
const { CachedSource, ConcatSource, RawSource } = require("webpack-sources");
|
|
9
9
|
const { UsageState } = require("./ExportsInfo");
|
|
10
10
|
const Template = require("./Template");
|
|
11
11
|
const CssModulesPlugin = require("./css/CssModulesPlugin");
|
|
@@ -18,7 +18,6 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
|
|
18
18
|
/** @typedef {import("./Module")} Module */
|
|
19
19
|
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
|
20
20
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
21
|
-
/** @typedef {import("./ModuleTemplate")} ModuleTemplate */
|
|
22
21
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
|
23
22
|
|
|
24
23
|
/**
|
|
@@ -26,7 +25,7 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
|
|
26
25
|
* @param {Iterable<T>} iterable iterable
|
|
27
26
|
* @returns {string} joined with comma
|
|
28
27
|
*/
|
|
29
|
-
const joinIterableWithComma = iterable => {
|
|
28
|
+
const joinIterableWithComma = (iterable) => {
|
|
30
29
|
// This is more performant than Array.from().join(", ")
|
|
31
30
|
// as it doesn't create an array
|
|
32
31
|
let str = "";
|
|
@@ -94,7 +93,7 @@ const printExportsInfoToSource = (
|
|
|
94
93
|
? ` -> ${target.module.readableIdentifier(requestShortener)}${
|
|
95
94
|
target.export
|
|
96
95
|
? ` .${target.export
|
|
97
|
-
.map(e => JSON.stringify(e).slice(1, -1))
|
|
96
|
+
.map((e) => JSON.stringify(e).slice(1, -1))
|
|
98
97
|
.join(".")}`
|
|
99
98
|
: ""
|
|
100
99
|
}`
|
|
@@ -149,6 +148,8 @@ const printExportsInfoToSource = (
|
|
|
149
148
|
/** @type {WeakMap<RequestShortener, WeakMap<Module, { header: RawSource | undefined, full: WeakMap<Source, CachedSource> }>>} */
|
|
150
149
|
const caches = new WeakMap();
|
|
151
150
|
|
|
151
|
+
const PLUGIN_NAME = "ModuleInfoHeaderPlugin";
|
|
152
|
+
|
|
152
153
|
class ModuleInfoHeaderPlugin {
|
|
153
154
|
/**
|
|
154
155
|
* @param {boolean=} verbose add more information like exports, runtime requirements and bailouts
|
|
@@ -163,11 +164,11 @@ class ModuleInfoHeaderPlugin {
|
|
|
163
164
|
*/
|
|
164
165
|
apply(compiler) {
|
|
165
166
|
const { _verbose: verbose } = this;
|
|
166
|
-
compiler.hooks.compilation.tap(
|
|
167
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
167
168
|
const javascriptHooks =
|
|
168
169
|
JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
169
170
|
javascriptHooks.renderModulePackage.tap(
|
|
170
|
-
|
|
171
|
+
PLUGIN_NAME,
|
|
171
172
|
(
|
|
172
173
|
moduleSource,
|
|
173
174
|
module,
|
|
@@ -246,16 +247,13 @@ class ModuleInfoHeaderPlugin {
|
|
|
246
247
|
return cachedSource;
|
|
247
248
|
}
|
|
248
249
|
);
|
|
249
|
-
javascriptHooks.chunkHash.tap(
|
|
250
|
-
|
|
251
|
-
(
|
|
252
|
-
|
|
253
|
-
hash.update("1");
|
|
254
|
-
}
|
|
255
|
-
);
|
|
250
|
+
javascriptHooks.chunkHash.tap(PLUGIN_NAME, (_chunk, hash) => {
|
|
251
|
+
hash.update(PLUGIN_NAME);
|
|
252
|
+
hash.update("1");
|
|
253
|
+
});
|
|
256
254
|
const cssHooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
257
255
|
cssHooks.renderModulePackage.tap(
|
|
258
|
-
|
|
256
|
+
PLUGIN_NAME,
|
|
259
257
|
(moduleSource, module, { runtimeTemplate }) => {
|
|
260
258
|
const { requestShortener } = runtimeTemplate;
|
|
261
259
|
let cacheEntry;
|
|
@@ -291,8 +289,8 @@ class ModuleInfoHeaderPlugin {
|
|
|
291
289
|
return cachedSource;
|
|
292
290
|
}
|
|
293
291
|
);
|
|
294
|
-
cssHooks.chunkHash.tap(
|
|
295
|
-
hash.update(
|
|
292
|
+
cssHooks.chunkHash.tap(PLUGIN_NAME, (_chunk, hash) => {
|
|
293
|
+
hash.update(PLUGIN_NAME);
|
|
296
294
|
hash.update("1");
|
|
297
295
|
});
|
|
298
296
|
});
|
|
@@ -311,4 +309,5 @@ class ModuleInfoHeaderPlugin {
|
|
|
311
309
|
return new RawSource(headerStr);
|
|
312
310
|
}
|
|
313
311
|
}
|
|
312
|
+
|
|
314
313
|
module.exports = ModuleInfoHeaderPlugin;
|
|
@@ -44,7 +44,7 @@ const previouslyPolyfilledBuiltinModules = {
|
|
|
44
44
|
class ModuleNotFoundError extends WebpackError {
|
|
45
45
|
/**
|
|
46
46
|
* @param {Module | null} module module tied to dependency
|
|
47
|
-
* @param {Error&
|
|
47
|
+
* @param {Error & { details?: string }} err error thrown
|
|
48
48
|
* @param {DependencyLocation} loc location of dependency
|
|
49
49
|
*/
|
|
50
50
|
constructor(module, err, loc) {
|