@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -18,18 +18,20 @@ const {
|
|
|
18
18
|
} = require("./ModuleTypeConstants");
|
|
19
19
|
const NormalModule = require("./NormalModule");
|
|
20
20
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
21
|
-
const WebpackError = require("./WebpackError");
|
|
22
21
|
const { chunkHasCss } = require("./css/CssModulesPlugin");
|
|
23
22
|
const ConstDependency = require("./dependencies/ConstDependency");
|
|
24
23
|
const ImportMetaHotAcceptDependency = require("./dependencies/ImportMetaHotAcceptDependency");
|
|
25
24
|
const ImportMetaHotDeclineDependency = require("./dependencies/ImportMetaHotDeclineDependency");
|
|
25
|
+
const { isImportMetaFieldEnabled } = require("./dependencies/ImportMetaPlugin");
|
|
26
26
|
const ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDependency");
|
|
27
27
|
const ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
|
|
28
|
+
const WebpackError = require("./errors/WebpackError");
|
|
28
29
|
const HotModuleReplacementRuntimeModule = require("./hmr/HotModuleReplacementRuntimeModule");
|
|
29
30
|
const JavascriptParser = require("./javascript/JavascriptParser");
|
|
30
31
|
const {
|
|
31
32
|
evaluateToIdentifier
|
|
32
33
|
} = require("./javascript/JavascriptParserHelpers");
|
|
34
|
+
const ConcatenatedModule = require("./optimize/ConcatenatedModule");
|
|
33
35
|
const { find, isSubset } = require("./util/SetHelpers");
|
|
34
36
|
const TupleSet = require("./util/TupleSet");
|
|
35
37
|
const { compareModulesById } = require("./util/comparators");
|
|
@@ -55,6 +57,7 @@ const {
|
|
|
55
57
|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
|
56
58
|
/** @typedef {import("./Module")} Module */
|
|
57
59
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
60
|
+
/** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
|
|
58
61
|
/** @typedef {import("./RuntimeModule")} RuntimeModule */
|
|
59
62
|
/** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
|
60
63
|
/** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
|
|
@@ -63,6 +66,7 @@ const {
|
|
|
63
66
|
/** @typedef {string[]} Requests */
|
|
64
67
|
|
|
65
68
|
/**
|
|
69
|
+
* Defines the hmr javascript parser hooks type used by this module.
|
|
66
70
|
* @typedef {object} HMRJavascriptParserHooks
|
|
67
71
|
* @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
|
|
68
72
|
* @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
|
|
@@ -78,7 +82,7 @@ const {
|
|
|
78
82
|
/** @typedef {Set<ChunkId>} ChunkIds */
|
|
79
83
|
/** @typedef {Set<Module>} ModuleSet */
|
|
80
84
|
|
|
81
|
-
/** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
|
|
85
|
+
/** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, forceLoadChunkIds: ChunkIds, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
|
|
82
86
|
/** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
|
|
83
87
|
|
|
84
88
|
/** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
|
|
@@ -88,6 +92,7 @@ const PLUGIN_NAME = "HotModuleReplacementPlugin";
|
|
|
88
92
|
|
|
89
93
|
class HotModuleReplacementPlugin {
|
|
90
94
|
/**
|
|
95
|
+
* Returns the attached hooks.
|
|
91
96
|
* @param {JavascriptParser} parser the parser
|
|
92
97
|
* @returns {HMRJavascriptParserHooks} the attached hooks
|
|
93
98
|
*/
|
|
@@ -109,7 +114,7 @@ class HotModuleReplacementPlugin {
|
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
/**
|
|
112
|
-
*
|
|
117
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
113
118
|
* @param {Compiler} compiler the compiler instance
|
|
114
119
|
* @returns {void}
|
|
115
120
|
*/
|
|
@@ -121,6 +126,7 @@ class HotModuleReplacementPlugin {
|
|
|
121
126
|
const runtimeRequirements = [RuntimeGlobals.module];
|
|
122
127
|
|
|
123
128
|
/**
|
|
129
|
+
* Creates an accept handler.
|
|
124
130
|
* @param {JavascriptParser} parser the parser
|
|
125
131
|
* @param {typeof ModuleHotAcceptDependency} ParamDependency dependency
|
|
126
132
|
* @returns {(expr: CallExpression) => boolean | undefined} callback
|
|
@@ -136,7 +142,7 @@ class HotModuleReplacementPlugin {
|
|
|
136
142
|
/** @type {Range} */ (expr.callee.range),
|
|
137
143
|
runtimeRequirements
|
|
138
144
|
);
|
|
139
|
-
dep.loc =
|
|
145
|
+
dep.loc = parser.getLocation(expr);
|
|
140
146
|
module.addPresentationalDependency(dep);
|
|
141
147
|
/** @type {BuildInfo} */
|
|
142
148
|
(module.buildInfo).moduleConcatenationBailout =
|
|
@@ -163,10 +169,7 @@ class HotModuleReplacementPlugin {
|
|
|
163
169
|
/** @type {Range} */ (param.range)
|
|
164
170
|
);
|
|
165
171
|
dep.optional = true;
|
|
166
|
-
dep.
|
|
167
|
-
/** @type {DependencyLocation} */ (expr.loc)
|
|
168
|
-
);
|
|
169
|
-
dep.loc.index = idx;
|
|
172
|
+
dep.setLocWithIndex(parser.getLocation(expr), idx);
|
|
170
173
|
module.addDependency(dep);
|
|
171
174
|
requests.push(request);
|
|
172
175
|
}
|
|
@@ -187,6 +190,7 @@ class HotModuleReplacementPlugin {
|
|
|
187
190
|
};
|
|
188
191
|
|
|
189
192
|
/**
|
|
193
|
+
* Creates a decline handler.
|
|
190
194
|
* @param {JavascriptParser} parser the parser
|
|
191
195
|
* @param {typeof ModuleHotDeclineDependency} ParamDependency dependency
|
|
192
196
|
* @returns {(expr: CallExpression) => boolean | undefined} callback
|
|
@@ -198,7 +202,7 @@ class HotModuleReplacementPlugin {
|
|
|
198
202
|
/** @type {Range} */ (expr.callee.range),
|
|
199
203
|
runtimeRequirements
|
|
200
204
|
);
|
|
201
|
-
dep.loc =
|
|
205
|
+
dep.loc = parser.getLocation(expr);
|
|
202
206
|
module.addPresentationalDependency(dep);
|
|
203
207
|
/** @type {BuildInfo} */
|
|
204
208
|
(module.buildInfo).moduleConcatenationBailout = "Hot Module Replacement";
|
|
@@ -219,8 +223,7 @@ class HotModuleReplacementPlugin {
|
|
|
219
223
|
/** @type {Range} */ (param.range)
|
|
220
224
|
);
|
|
221
225
|
dep.optional = true;
|
|
222
|
-
dep.
|
|
223
|
-
dep.loc.index = idx;
|
|
226
|
+
dep.setLocWithIndex(parser.getLocation(expr), idx);
|
|
224
227
|
module.addDependency(dep);
|
|
225
228
|
}
|
|
226
229
|
}
|
|
@@ -228,6 +231,7 @@ class HotModuleReplacementPlugin {
|
|
|
228
231
|
};
|
|
229
232
|
|
|
230
233
|
/**
|
|
234
|
+
* Creates a hmr expression handler.
|
|
231
235
|
* @param {JavascriptParser} parser the parser
|
|
232
236
|
* @returns {(expr: Expression) => boolean | undefined} callback
|
|
233
237
|
*/
|
|
@@ -238,7 +242,7 @@ class HotModuleReplacementPlugin {
|
|
|
238
242
|
/** @type {Range} */ (expr.range),
|
|
239
243
|
runtimeRequirements
|
|
240
244
|
);
|
|
241
|
-
dep.loc =
|
|
245
|
+
dep.loc = parser.getLocation(expr);
|
|
242
246
|
module.addPresentationalDependency(dep);
|
|
243
247
|
/** @type {BuildInfo} */
|
|
244
248
|
(module.buildInfo).moduleConcatenationBailout = "Hot Module Replacement";
|
|
@@ -246,6 +250,7 @@ class HotModuleReplacementPlugin {
|
|
|
246
250
|
};
|
|
247
251
|
|
|
248
252
|
/**
|
|
253
|
+
* Processes the provided parser.
|
|
249
254
|
* @param {JavascriptParser} parser the parser
|
|
250
255
|
* @returns {void}
|
|
251
256
|
*/
|
|
@@ -281,6 +286,7 @@ class HotModuleReplacementPlugin {
|
|
|
281
286
|
};
|
|
282
287
|
|
|
283
288
|
/**
|
|
289
|
+
* Apply import meta hot.
|
|
284
290
|
* @param {JavascriptParser} parser the parser
|
|
285
291
|
* @returns {void}
|
|
286
292
|
*/
|
|
@@ -382,13 +388,31 @@ class HotModuleReplacementPlugin {
|
|
|
382
388
|
for (const chunk of compilation.chunks) {
|
|
383
389
|
const chunkId = /** @type {ChunkId} */ (chunk.id);
|
|
384
390
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
)
|
|
390
|
-
|
|
391
|
-
|
|
391
|
+
/** @type {ModuleId[]} */
|
|
392
|
+
const moduleIds = [];
|
|
393
|
+
for (const m of chunkGraph.getOrderedChunkModulesIterable(
|
|
394
|
+
chunk,
|
|
395
|
+
compareModulesById(chunkGraph)
|
|
396
|
+
)) {
|
|
397
|
+
moduleIds.push(
|
|
398
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(m))
|
|
399
|
+
);
|
|
400
|
+
if (m instanceof ConcatenatedModule && m.modules) {
|
|
401
|
+
for (const innerModule of m.modules) {
|
|
402
|
+
if (
|
|
403
|
+
innerModule.buildMeta &&
|
|
404
|
+
/** @type {CssModuleBuildMeta} */ (innerModule.buildMeta)
|
|
405
|
+
.needIdInConcatenation
|
|
406
|
+
) {
|
|
407
|
+
const innerId = chunkGraph.getModuleId(innerModule);
|
|
408
|
+
if (innerId !== null) {
|
|
409
|
+
moduleIds.push(innerId);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
records.chunkModuleIds[chunkId] = moduleIds;
|
|
392
416
|
}
|
|
393
417
|
});
|
|
394
418
|
/** @type {TupleSet<Module, Chunk>} */
|
|
@@ -402,6 +426,7 @@ class HotModuleReplacementPlugin {
|
|
|
402
426
|
const records = /** @type {Records} */ (compilation.records);
|
|
403
427
|
for (const chunk of compilation.chunks) {
|
|
404
428
|
/**
|
|
429
|
+
* Returns module hash.
|
|
405
430
|
* @param {Module} module module
|
|
406
431
|
* @returns {string} module hash
|
|
407
432
|
*/
|
|
@@ -547,6 +572,8 @@ class HotModuleReplacementPlugin {
|
|
|
547
572
|
removedChunkIds: new Set(),
|
|
548
573
|
/** @type {ModuleSet} */
|
|
549
574
|
removedModules: new Set(),
|
|
575
|
+
/** @type {ChunkIds} */
|
|
576
|
+
forceLoadChunkIds: new Set(),
|
|
550
577
|
filename,
|
|
551
578
|
assetInfo
|
|
552
579
|
}
|
|
@@ -673,30 +700,43 @@ class HotModuleReplacementPlugin {
|
|
|
673
700
|
}
|
|
674
701
|
} else {
|
|
675
702
|
// module is no longer in this runtime combination
|
|
676
|
-
// We (incorrectly) assume that it's not in an overlapping runtime combination
|
|
677
|
-
// and dispose it from the main runtimes the chunk was removed from
|
|
678
703
|
forEachRuntime(removedFromRuntime, (runtime) => {
|
|
679
|
-
// If the module is still used in this runtime, do not dispose it
|
|
680
|
-
// This could create a bad runtime state where the module is still loaded,
|
|
681
|
-
// but no chunk which contains it. This means we don't receive further HMR updates
|
|
682
|
-
// to this module and that's bad.
|
|
683
|
-
// TODO force load one of the chunks which contains the module
|
|
684
|
-
for (const moduleRuntime of runtimes) {
|
|
685
|
-
if (typeof moduleRuntime === "string") {
|
|
686
|
-
if (moduleRuntime === runtime) return;
|
|
687
|
-
} else if (
|
|
688
|
-
moduleRuntime !== undefined &&
|
|
689
|
-
moduleRuntime.has(/** @type {string} */ (runtime))
|
|
690
|
-
) {
|
|
691
|
-
return;
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
704
|
const item =
|
|
695
705
|
/** @type {HotUpdateMainContentByRuntimeItem} */ (
|
|
696
706
|
hotUpdateMainContentByRuntime.get(
|
|
697
707
|
/** @type {string} */ (runtime)
|
|
698
708
|
)
|
|
699
709
|
);
|
|
710
|
+
// Module still in this runtime via another chunk: force-load one so
|
|
711
|
+
// it keeps an installed owner instead of being disposed (lost updates).
|
|
712
|
+
const stillInRuntime = [...runtimes].some(
|
|
713
|
+
(moduleRuntime) =>
|
|
714
|
+
typeof moduleRuntime === "string"
|
|
715
|
+
? moduleRuntime === runtime
|
|
716
|
+
: moduleRuntime !== undefined &&
|
|
717
|
+
moduleRuntime.has(/** @type {string} */ (runtime))
|
|
718
|
+
);
|
|
719
|
+
if (stillInRuntime) {
|
|
720
|
+
for (const moduleChunk of chunkGraph.getModuleChunksIterable(
|
|
721
|
+
module
|
|
722
|
+
)) {
|
|
723
|
+
const chunkRuntime = moduleChunk.runtime;
|
|
724
|
+
const inRuntime =
|
|
725
|
+
typeof chunkRuntime === "string"
|
|
726
|
+
? chunkRuntime === runtime
|
|
727
|
+
: chunkRuntime !== undefined &&
|
|
728
|
+
chunkRuntime.has(
|
|
729
|
+
/** @type {string} */ (runtime)
|
|
730
|
+
);
|
|
731
|
+
if (inRuntime) {
|
|
732
|
+
item.forceLoadChunkIds.add(
|
|
733
|
+
/** @type {ChunkId} */ (moduleChunk.id)
|
|
734
|
+
);
|
|
735
|
+
break;
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
700
740
|
item.removedModules.add(module);
|
|
701
741
|
});
|
|
702
742
|
}
|
|
@@ -794,6 +834,7 @@ class HotModuleReplacementPlugin {
|
|
|
794
834
|
removedChunkIds,
|
|
795
835
|
removedModules,
|
|
796
836
|
updatedChunkIds,
|
|
837
|
+
forceLoadChunkIds,
|
|
797
838
|
filename,
|
|
798
839
|
assetInfo
|
|
799
840
|
} of hotUpdateMainContentByRuntime.values()) {
|
|
@@ -802,7 +843,8 @@ class HotModuleReplacementPlugin {
|
|
|
802
843
|
old &&
|
|
803
844
|
(!isSubset(old.removedChunkIds, removedChunkIds) ||
|
|
804
845
|
!isSubset(old.removedModules, removedModules) ||
|
|
805
|
-
!isSubset(old.updatedChunkIds, updatedChunkIds)
|
|
846
|
+
!isSubset(old.updatedChunkIds, updatedChunkIds) ||
|
|
847
|
+
!isSubset(old.forceLoadChunkIds, forceLoadChunkIds))
|
|
806
848
|
) {
|
|
807
849
|
compilation.warnings.push(
|
|
808
850
|
new WebpackError(`HotModuleReplacementPlugin
|
|
@@ -819,20 +861,30 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
819
861
|
for (const chunkId of updatedChunkIds) {
|
|
820
862
|
old.updatedChunkIds.add(chunkId);
|
|
821
863
|
}
|
|
864
|
+
for (const chunkId of forceLoadChunkIds) {
|
|
865
|
+
old.forceLoadChunkIds.add(chunkId);
|
|
866
|
+
}
|
|
822
867
|
continue;
|
|
823
868
|
}
|
|
824
869
|
hotUpdateMainContentByFilename.set(filename, {
|
|
825
870
|
removedChunkIds,
|
|
826
871
|
removedModules,
|
|
827
872
|
updatedChunkIds,
|
|
873
|
+
forceLoadChunkIds,
|
|
828
874
|
assetInfo
|
|
829
875
|
});
|
|
830
876
|
}
|
|
831
877
|
for (const [
|
|
832
878
|
filename,
|
|
833
|
-
{
|
|
879
|
+
{
|
|
880
|
+
removedChunkIds,
|
|
881
|
+
removedModules,
|
|
882
|
+
updatedChunkIds,
|
|
883
|
+
forceLoadChunkIds,
|
|
884
|
+
assetInfo
|
|
885
|
+
}
|
|
834
886
|
] of hotUpdateMainContentByFilename) {
|
|
835
|
-
/** @type {{ c: ChunkId[], r: ChunkId[], m: ModuleId[], css?: { r: ChunkId[] } }} */
|
|
887
|
+
/** @type {{ c: ChunkId[], r: ChunkId[], m: ModuleId[], f?: ChunkId[], css?: { r: ChunkId[] } }} */
|
|
836
888
|
const hotUpdateMainJson = {
|
|
837
889
|
c: [...updatedChunkIds],
|
|
838
890
|
r: [...removedChunkIds],
|
|
@@ -849,6 +901,12 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
849
901
|
]
|
|
850
902
|
};
|
|
851
903
|
|
|
904
|
+
// Chunks the client must load so a module whose only loaded chunk
|
|
905
|
+
// left a runtime keeps an installed owner (see force-load branch).
|
|
906
|
+
if (forceLoadChunkIds.size > 0) {
|
|
907
|
+
hotUpdateMainJson.f = [...forceLoadChunkIds];
|
|
908
|
+
}
|
|
909
|
+
|
|
852
910
|
// Build CSS removed chunks list (chunks in updatedChunkIds that no longer have CSS)
|
|
853
911
|
/** @type {ChunkId[]} */
|
|
854
912
|
const cssRemovedChunkIds = [];
|
|
@@ -897,9 +955,13 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
897
955
|
|
|
898
956
|
normalModuleFactory.hooks.parser
|
|
899
957
|
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
|
900
|
-
.tap(PLUGIN_NAME, (parser) => {
|
|
958
|
+
.tap(PLUGIN_NAME, (parser, parserOptions) => {
|
|
901
959
|
applyModuleHot(parser);
|
|
902
|
-
|
|
960
|
+
if (
|
|
961
|
+
isImportMetaFieldEnabled(parserOptions.importMeta, "webpackHot")
|
|
962
|
+
) {
|
|
963
|
+
applyImportMetaHot(parser);
|
|
964
|
+
}
|
|
903
965
|
});
|
|
904
966
|
normalModuleFactory.hooks.parser
|
|
905
967
|
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
|
@@ -908,11 +970,15 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
908
970
|
});
|
|
909
971
|
normalModuleFactory.hooks.parser
|
|
910
972
|
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
|
911
|
-
.tap(PLUGIN_NAME, (parser) => {
|
|
912
|
-
|
|
973
|
+
.tap(PLUGIN_NAME, (parser, parserOptions) => {
|
|
974
|
+
if (
|
|
975
|
+
isImportMetaFieldEnabled(parserOptions.importMeta, "webpackHot")
|
|
976
|
+
) {
|
|
977
|
+
applyImportMetaHot(parser);
|
|
978
|
+
}
|
|
913
979
|
});
|
|
914
980
|
normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module) => {
|
|
915
|
-
module.hot = true;
|
|
981
|
+
if (module instanceof NormalModule) module.hot = true;
|
|
916
982
|
return module;
|
|
917
983
|
});
|
|
918
984
|
|
package/lib/IgnorePlugin.js
CHANGED
|
@@ -19,9 +19,11 @@ const PLUGIN_NAME = "IgnorePlugin";
|
|
|
19
19
|
|
|
20
20
|
class IgnorePlugin {
|
|
21
21
|
/**
|
|
22
|
+
* Creates an instance of IgnorePlugin.
|
|
22
23
|
* @param {IgnorePluginOptions} options IgnorePlugin options
|
|
23
24
|
*/
|
|
24
25
|
constructor(options) {
|
|
26
|
+
/** @type {IgnorePluginOptions} */
|
|
25
27
|
this.options = options;
|
|
26
28
|
this.checkIgnore = this.checkIgnore.bind(this);
|
|
27
29
|
}
|
|
@@ -58,14 +60,15 @@ class IgnorePlugin {
|
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
/**
|
|
61
|
-
*
|
|
63
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
62
64
|
* @param {Compiler} compiler the compiler instance
|
|
63
65
|
* @returns {void}
|
|
64
66
|
*/
|
|
65
67
|
apply(compiler) {
|
|
66
68
|
compiler.hooks.validate.tap(PLUGIN_NAME, () => {
|
|
67
69
|
compiler.validate(
|
|
68
|
-
|
|
70
|
+
/** @type {EXPECTED_ANY} */
|
|
71
|
+
(require("../schemas/plugins/IgnorePlugin.json")),
|
|
69
72
|
this.options,
|
|
70
73
|
{
|
|
71
74
|
name: "Ignore Plugin",
|
|
@@ -14,6 +14,7 @@ const PLUGIN_NAME = "IgnoreWarningsPlugin";
|
|
|
14
14
|
|
|
15
15
|
class IgnoreWarningsPlugin {
|
|
16
16
|
/**
|
|
17
|
+
* Creates an instance of IgnoreWarningsPlugin.
|
|
17
18
|
* @param {IgnoreFn[]} ignoreWarnings conditions to ignore warnings
|
|
18
19
|
*/
|
|
19
20
|
constructor(ignoreWarnings) {
|
|
@@ -22,7 +23,7 @@ class IgnoreWarningsPlugin {
|
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
|
-
*
|
|
26
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
26
27
|
* @param {Compiler} compiler the compiler instance
|
|
27
28
|
* @returns {void}
|
|
28
29
|
*/
|
package/lib/InitFragment.js
CHANGED
|
@@ -16,6 +16,7 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
16
16
|
/** @typedef {string} InitFragmentKey */
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Defines the maybe mergeable init fragment type used by this module.
|
|
19
20
|
* @template GenerateContext
|
|
20
21
|
* @typedef {object} MaybeMergeableInitFragment
|
|
21
22
|
* @property {InitFragmentKey=} key
|
|
@@ -28,33 +29,13 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
28
29
|
*/
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
-
* @param {T} fragment the init fragment
|
|
33
|
-
* @param {number} index index
|
|
34
|
-
* @returns {[T, number]} tuple with both
|
|
35
|
-
*/
|
|
36
|
-
const extractFragmentIndex = (fragment, index) => [fragment, index];
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* @template T
|
|
40
|
-
* @param {[MaybeMergeableInitFragment<T>, number]} a first pair
|
|
41
|
-
* @param {[MaybeMergeableInitFragment<T>, number]} b second pair
|
|
42
|
-
* @returns {number} sort value
|
|
43
|
-
*/
|
|
44
|
-
const sortFragmentWithIndex = ([a, i], [b, j]) => {
|
|
45
|
-
const stageCmp = a.stage - b.stage;
|
|
46
|
-
if (stageCmp !== 0) return stageCmp;
|
|
47
|
-
const positionCmp = a.position - b.position;
|
|
48
|
-
if (positionCmp !== 0) return positionCmp;
|
|
49
|
-
return i - j;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/**
|
|
32
|
+
* Represents InitFragment.
|
|
53
33
|
* @template GenerateContext
|
|
54
34
|
* @implements {MaybeMergeableInitFragment<GenerateContext>}
|
|
55
35
|
*/
|
|
56
36
|
class InitFragment {
|
|
57
37
|
/**
|
|
38
|
+
* Creates an instance of InitFragment.
|
|
58
39
|
* @param {string | Source | undefined} content the source code that will be included as initialization code
|
|
59
40
|
* @param {number} stage category of initialization code (contribute to order)
|
|
60
41
|
* @param {number} position position in the category (contribute to order)
|
|
@@ -62,14 +43,20 @@ class InitFragment {
|
|
|
62
43
|
* @param {string | Source=} endContent the source code that will be included at the end of the module
|
|
63
44
|
*/
|
|
64
45
|
constructor(content, stage, position, key, endContent) {
|
|
46
|
+
/** @type {string | Source | undefined} */
|
|
65
47
|
this.content = content;
|
|
48
|
+
/** @type {number} */
|
|
66
49
|
this.stage = stage;
|
|
50
|
+
/** @type {number} */
|
|
67
51
|
this.position = position;
|
|
52
|
+
/** @type {string | undefined} */
|
|
68
53
|
this.key = key;
|
|
54
|
+
/** @type {string | Source | undefined} */
|
|
69
55
|
this.endContent = endContent;
|
|
70
56
|
}
|
|
71
57
|
|
|
72
58
|
/**
|
|
59
|
+
* Returns the source code that will be included as initialization code.
|
|
73
60
|
* @param {GenerateContext} context context
|
|
74
61
|
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
75
62
|
*/
|
|
@@ -78,6 +65,7 @@ class InitFragment {
|
|
|
78
65
|
}
|
|
79
66
|
|
|
80
67
|
/**
|
|
68
|
+
* Returns the source code that will be included at the end of the module.
|
|
81
69
|
* @param {GenerateContext} context context
|
|
82
70
|
* @returns {string | Source | undefined} the source code that will be included at the end of the module
|
|
83
71
|
*/
|
|
@@ -86,6 +74,7 @@ class InitFragment {
|
|
|
86
74
|
}
|
|
87
75
|
|
|
88
76
|
/**
|
|
77
|
+
* Adds the provided source to the init fragment.
|
|
89
78
|
* @template Context
|
|
90
79
|
* @param {Source} source sources
|
|
91
80
|
* @param {MaybeMergeableInitFragment<Context>[]} initFragments init fragments
|
|
@@ -94,16 +83,28 @@ class InitFragment {
|
|
|
94
83
|
*/
|
|
95
84
|
static addToSource(source, initFragments, context) {
|
|
96
85
|
if (initFragments.length > 0) {
|
|
97
|
-
// Sort
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
86
|
+
// Sort fragment indices by (stage, position), falling back to the
|
|
87
|
+
// original index — one flat number array instead of N [fragment, index]
|
|
88
|
+
// tuples for a stable-by-index order.
|
|
89
|
+
const sortedIndices = initFragments.map((_, index) => index);
|
|
90
|
+
sortedIndices.sort((a, b) => {
|
|
91
|
+
const fragmentA = initFragments[a];
|
|
92
|
+
const fragmentB = initFragments[b];
|
|
93
|
+
const stageCmp = fragmentA.stage - fragmentB.stage;
|
|
94
|
+
if (stageCmp !== 0) return stageCmp;
|
|
95
|
+
const positionCmp = fragmentA.position - fragmentB.position;
|
|
96
|
+
if (positionCmp !== 0) return positionCmp;
|
|
97
|
+
return a - b;
|
|
98
|
+
});
|
|
102
99
|
|
|
103
100
|
// Deduplicate fragments. If a fragment has no key, it is always included.
|
|
104
|
-
|
|
101
|
+
// Keyless fragments get a unique numeric key; number keys never collide
|
|
102
|
+
// with the string `InitFragmentKey`s used for keyed fragments.
|
|
103
|
+
/** @type {Map<InitFragmentKey | number, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
|
|
105
104
|
const keyedFragments = new Map();
|
|
106
|
-
|
|
105
|
+
let keylessKey = 0;
|
|
106
|
+
for (const index of sortedIndices) {
|
|
107
|
+
const fragment = initFragments[index];
|
|
107
108
|
if (typeof fragment.mergeAll === "function") {
|
|
108
109
|
if (!fragment.key) {
|
|
109
110
|
throw new Error(
|
|
@@ -129,7 +130,7 @@ class InitFragment {
|
|
|
129
130
|
continue;
|
|
130
131
|
}
|
|
131
132
|
}
|
|
132
|
-
keyedFragments.set(fragment.key ||
|
|
133
|
+
keyedFragments.set(fragment.key || keylessKey++, fragment);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
const concatSource = new ConcatSource();
|
|
@@ -165,6 +166,7 @@ class InitFragment {
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
/**
|
|
169
|
+
* Serializes this instance into the provided serializer context.
|
|
168
170
|
* @param {ObjectSerializerContext} context context
|
|
169
171
|
*/
|
|
170
172
|
serialize(context) {
|
|
@@ -178,6 +180,7 @@ class InitFragment {
|
|
|
178
180
|
}
|
|
179
181
|
|
|
180
182
|
/**
|
|
183
|
+
* Restores this instance from the provided deserializer context.
|
|
181
184
|
* @param {ObjectDeserializerContext} context context
|
|
182
185
|
*/
|
|
183
186
|
deserialize(context) {
|
|
@@ -10,17 +10,18 @@ const {
|
|
|
10
10
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
11
11
|
JAVASCRIPT_MODULE_TYPE_ESM
|
|
12
12
|
} = require("./ModuleTypeConstants");
|
|
13
|
-
const
|
|
13
|
+
const { getInnerGraphUtils } = require("./optimize/InnerGraph");
|
|
14
14
|
|
|
15
15
|
/** @typedef {import("./Compiler")} Compiler */
|
|
16
16
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
17
|
+
/** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
|
|
17
18
|
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
|
18
19
|
|
|
19
20
|
const PLUGIN_NAME = "JavascriptMetaInfoPlugin";
|
|
20
21
|
|
|
21
22
|
class JavascriptMetaInfoPlugin {
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
24
25
|
* @param {Compiler} compiler the compiler instance
|
|
25
26
|
* @returns {void}
|
|
26
27
|
*/
|
|
@@ -28,21 +29,23 @@ class JavascriptMetaInfoPlugin {
|
|
|
28
29
|
compiler.hooks.compilation.tap(
|
|
29
30
|
PLUGIN_NAME,
|
|
30
31
|
(compilation, { normalModuleFactory }) => {
|
|
32
|
+
const innerGraph = getInnerGraphUtils(compilation);
|
|
31
33
|
/**
|
|
34
|
+
* Handles the hook callback for this code path.
|
|
32
35
|
* @param {JavascriptParser} parser the parser
|
|
33
36
|
* @returns {void}
|
|
34
37
|
*/
|
|
35
38
|
const handler = (parser) => {
|
|
36
39
|
parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
|
|
37
40
|
const buildInfo =
|
|
38
|
-
/** @type {
|
|
41
|
+
/** @type {JavascriptModuleBuildInfo} */
|
|
39
42
|
(parser.state.module.buildInfo);
|
|
40
43
|
buildInfo.moduleConcatenationBailout = "eval()";
|
|
41
|
-
const currentSymbol =
|
|
44
|
+
const currentSymbol = innerGraph.getTopLevelSymbol(parser.state);
|
|
42
45
|
if (currentSymbol) {
|
|
43
|
-
|
|
46
|
+
innerGraph.addUsage(parser.state, null, currentSymbol);
|
|
44
47
|
} else {
|
|
45
|
-
|
|
48
|
+
innerGraph.bailout(parser.state);
|
|
46
49
|
}
|
|
47
50
|
});
|
|
48
51
|
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|