@depup/webpack 5.109.2-depup.0 → 5.110.1-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 +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +26 -17
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +101 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +32 -47
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +141 -85
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +332 -169
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +261 -79
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +57 -24
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +168 -88
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +9579 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +27 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +282 -162
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +5557 -1155
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +98 -113
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +985 -470
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +10 -6
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -78
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +7 -7
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +670 -36
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3144 -454
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -6,12 +6,19 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
-
const
|
|
10
|
-
const ModuleChunkLoadingRuntimeModule = require("./ModuleChunkLoadingRuntimeModule");
|
|
9
|
+
const lazyModule = require("../util/lazyModule");
|
|
11
10
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
/** @import { RuntimeRequirements } from "../Module" */
|
|
14
|
+
|
|
15
|
+
// only a chunk that loads other chunks at runtime emits these
|
|
16
|
+
const getExportWebpackRequireRuntimeModule = lazyModule(() =>
|
|
17
|
+
require("./ExportWebpackRequireRuntimeModule")
|
|
18
|
+
);
|
|
19
|
+
const getModuleChunkLoadingRuntimeModule = lazyModule(() =>
|
|
20
|
+
require("./ModuleChunkLoadingRuntimeModule")
|
|
21
|
+
);
|
|
15
22
|
|
|
16
23
|
const PLUGIN_NAME = "ModuleChunkLoadingPlugin";
|
|
17
24
|
|
|
@@ -48,65 +55,89 @@ class ModuleChunkLoadingPlugin {
|
|
|
48
55
|
if (onceForChunkSet.has(chunk)) return;
|
|
49
56
|
onceForChunkSet.add(chunk);
|
|
50
57
|
if (!isEnabledForChunk(chunk)) return;
|
|
51
|
-
|
|
52
|
-
set.add(RuntimeGlobals.hasOwnProperty);
|
|
53
|
-
compilation.addRuntimeModule(
|
|
58
|
+
compilation.addLazyRuntimeModule(
|
|
54
59
|
chunk,
|
|
55
|
-
|
|
60
|
+
getModuleChunkLoadingRuntimeModule,
|
|
61
|
+
(Ctor) => new Ctor(set)
|
|
56
62
|
);
|
|
57
63
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.
|
|
69
|
-
.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.
|
|
64
|
+
/**
|
|
65
|
+
* Installing a chunk is the only part that writes the module factories and
|
|
66
|
+
* looks a chunk id up; a base uri, `onChunksLoaded` or the hot manifest come
|
|
67
|
+
* without either. Kept off `handler`, which runs once per chunk and so cannot
|
|
68
|
+
* see which of the requirements below the chunk ends up with.
|
|
69
|
+
* @param {Chunk} chunk chunk to check
|
|
70
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
71
|
+
*/
|
|
72
|
+
const installHandler = (chunk, set) => {
|
|
73
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
74
|
+
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
|
75
|
+
set.add(RuntimeGlobals.hasOwnProperty);
|
|
76
|
+
};
|
|
77
|
+
for (const requirement of [
|
|
78
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
79
|
+
RuntimeGlobals.baseURI,
|
|
80
|
+
RuntimeGlobals.externalInstallChunk,
|
|
81
|
+
RuntimeGlobals.analyzableChunkImport,
|
|
82
|
+
RuntimeGlobals.onChunksLoaded,
|
|
83
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers,
|
|
84
|
+
RuntimeGlobals.hmrDownloadManifest
|
|
85
|
+
]) {
|
|
86
|
+
compilation.hooks.runtimeRequirementInTree
|
|
87
|
+
.for(requirement)
|
|
88
|
+
.tap(PLUGIN_NAME, handler);
|
|
89
|
+
}
|
|
90
|
+
for (const requirement of [
|
|
91
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
92
|
+
RuntimeGlobals.externalInstallChunk,
|
|
93
|
+
RuntimeGlobals.analyzableChunkImport,
|
|
94
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers
|
|
95
|
+
]) {
|
|
96
|
+
compilation.hooks.runtimeRequirementInTree
|
|
97
|
+
.for(requirement)
|
|
98
|
+
.tap(PLUGIN_NAME, installHandler);
|
|
99
|
+
}
|
|
79
100
|
compilation.hooks.runtimeRequirementInTree
|
|
80
101
|
.for(RuntimeGlobals.externalInstallChunk)
|
|
81
102
|
.tap(PLUGIN_NAME, (chunk) => {
|
|
82
103
|
if (!isEnabledForChunk(chunk)) return;
|
|
83
|
-
compilation.
|
|
104
|
+
compilation.addLazyRuntimeModule(
|
|
84
105
|
chunk,
|
|
85
|
-
|
|
106
|
+
getExportWebpackRequireRuntimeModule,
|
|
107
|
+
(Ctor) => new Ctor()
|
|
86
108
|
);
|
|
87
109
|
});
|
|
88
110
|
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
// A handler that builds its url asks for both directly: an analyzable
|
|
112
|
+
// `import()` may replace `ensureChunkHandlers`, which otherwise pulls them in.
|
|
113
|
+
for (const requirement of [
|
|
114
|
+
RuntimeGlobals.prefetchChunkHandlers,
|
|
115
|
+
RuntimeGlobals.preloadChunkHandlers
|
|
116
|
+
]) {
|
|
117
|
+
compilation.hooks.runtimeRequirementInTree
|
|
118
|
+
.for(requirement)
|
|
119
|
+
.tap(PLUGIN_NAME, (chunk, set, { chunkGraph }) => {
|
|
120
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
121
|
+
// A baked url carries where the chunk is, so neither is read for it.
|
|
122
|
+
// Asked as the runtime module asks, so the two always agree.
|
|
123
|
+
if (
|
|
124
|
+
compilation.runtimeTemplate.analyzableChunkScriptUrls(
|
|
125
|
+
chunk,
|
|
126
|
+
chunkGraph,
|
|
127
|
+
set
|
|
128
|
+
) !== null
|
|
129
|
+
) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
set.add(RuntimeGlobals.publicPath);
|
|
133
|
+
set.add(RuntimeGlobals.getChunkScriptFilename);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
107
136
|
|
|
137
|
+
// Keyed on `ensureChunk`, not on the handler map: only the runtime chunk loader
|
|
138
|
+
// builds a URL from a chunk id, and an analyzable `import()` carries its own.
|
|
108
139
|
compilation.hooks.runtimeRequirementInTree
|
|
109
|
-
.for(RuntimeGlobals.
|
|
140
|
+
.for(RuntimeGlobals.ensureChunk)
|
|
110
141
|
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
111
142
|
if (!isEnabledForChunk(chunk)) return;
|
|
112
143
|
|
|
@@ -123,6 +154,13 @@ class ModuleChunkLoadingPlugin {
|
|
|
123
154
|
if (!isEnabledForChunk(chunk)) return;
|
|
124
155
|
set.add(RuntimeGlobals.publicPath);
|
|
125
156
|
set.add(RuntimeGlobals.getChunkUpdateScriptFilename);
|
|
157
|
+
// The hot runtime force-loads through the handler map by bare chunk id, so
|
|
158
|
+
// the map and loader stay however analyzable — but only where there are
|
|
159
|
+
// async chunks to force-load.
|
|
160
|
+
if (chunk.hasAsyncChunks()) {
|
|
161
|
+
set.add(RuntimeGlobals.ensureChunkHandlers);
|
|
162
|
+
set.add(RuntimeGlobals.getChunkScriptFilename);
|
|
163
|
+
}
|
|
126
164
|
set.add(RuntimeGlobals.moduleCache);
|
|
127
165
|
set.add(RuntimeGlobals.hmrModuleData);
|
|
128
166
|
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
|
@@ -5,25 +5,25 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const { SyncWaterfallHook } = require("tapable");
|
|
8
|
-
/** @
|
|
8
|
+
/** @import Compilation from "../Compilation" */
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const RuntimeModule = require("../RuntimeModule");
|
|
11
11
|
const Template = require("../Template");
|
|
12
12
|
const {
|
|
13
13
|
generateJavascriptHMR
|
|
14
14
|
} = require("../hmr/JavascriptHotModuleReplacementHelper");
|
|
15
|
-
const {
|
|
16
|
-
chunkHasJs,
|
|
17
|
-
getChunkFilenameTemplate
|
|
18
|
-
} = require("../javascript/JavascriptModulesPlugin");
|
|
15
|
+
const { chunkHasJs } = require("../javascript/JavascriptModulesPlugin");
|
|
19
16
|
const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
17
|
+
const { renderBaseUri } = require("../runtime/baseUri");
|
|
20
18
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
21
19
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
22
|
-
const
|
|
20
|
+
const memoize = require("../util/memoize");
|
|
21
|
+
|
|
22
|
+
const getAPIPlugin = memoize(() => require("../APIPlugin"));
|
|
23
23
|
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
24
|
+
/** @import Chunk from "../Chunk" */
|
|
25
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
26
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
27
27
|
|
|
28
28
|
const createCompilationHooks = () => ({
|
|
29
29
|
/**
|
|
@@ -62,16 +62,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
62
62
|
*/
|
|
63
63
|
_generateBaseUri(chunk, rootOutputDir) {
|
|
64
64
|
const options = chunk.getEntryOptions();
|
|
65
|
-
if (options && options.baseUri) {
|
|
66
|
-
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
|
67
|
-
}
|
|
68
65
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
69
66
|
const {
|
|
70
67
|
outputOptions: { importMetaName }
|
|
71
68
|
} = compilation;
|
|
72
|
-
return
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
return renderBaseUri(
|
|
70
|
+
options ? options.baseUri : undefined,
|
|
71
|
+
`new URL(${JSON.stringify(rootOutputDir)}, ${importMetaName}.url)`
|
|
72
|
+
);
|
|
75
73
|
}
|
|
76
74
|
|
|
77
75
|
/**
|
|
@@ -85,8 +83,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
85
83
|
const environment = compilation.outputOptions.environment;
|
|
86
84
|
const {
|
|
87
85
|
runtimeTemplate,
|
|
88
|
-
outputOptions: {
|
|
86
|
+
outputOptions: {
|
|
87
|
+
importFunctionName,
|
|
88
|
+
crossOriginLoading,
|
|
89
|
+
charset,
|
|
90
|
+
resourceHints
|
|
91
|
+
}
|
|
89
92
|
} = compilation;
|
|
93
|
+
const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
|
|
90
94
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
|
91
95
|
const withBaseURI = this._runtimeRequirements.has(RuntimeGlobals.baseURI);
|
|
92
96
|
const withExternalInstallChunk = this._runtimeRequirements.has(
|
|
@@ -107,6 +111,11 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
107
111
|
const withHmrManifest = this._runtimeRequirements.has(
|
|
108
112
|
RuntimeGlobals.hmrDownloadManifest
|
|
109
113
|
);
|
|
114
|
+
// `.f.j` serves `ensureChunk`: an analyzable import dispatches every handler but
|
|
115
|
+
// this one. HMR's force-load knows only a chunk id, so it needs the loader too.
|
|
116
|
+
const withJsLoading =
|
|
117
|
+
withLoading &&
|
|
118
|
+
(this._runtimeRequirements.has(RuntimeGlobals.ensureChunk) || withHmr);
|
|
110
119
|
const { linkPreload, linkPrefetch } =
|
|
111
120
|
ModuleChunkLoadingRuntimeModule.getCompilationHooks(compilation);
|
|
112
121
|
const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
|
|
@@ -118,22 +127,35 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
118
127
|
(environment.document || isNeutralPlatform) &&
|
|
119
128
|
this._runtimeRequirements.has(RuntimeGlobals.preloadChunkHandlers) &&
|
|
120
129
|
chunk.hasChildByOrder(chunkGraph, "preload", true, chunkHasJs);
|
|
130
|
+
// Under module output each hinted chunk is a known file, so the urls are written
|
|
131
|
+
// out and read by id rather than built from the chunk id at runtime.
|
|
132
|
+
const chunkUrls =
|
|
133
|
+
withPrefetch || withPreload
|
|
134
|
+
? runtimeTemplate.analyzableChunkScriptUrls(
|
|
135
|
+
chunk,
|
|
136
|
+
chunkGraph,
|
|
137
|
+
this._runtimeRequirements,
|
|
138
|
+
this
|
|
139
|
+
)
|
|
140
|
+
: null;
|
|
121
141
|
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs);
|
|
122
142
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
|
123
143
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
|
124
144
|
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
145
|
+
const rootOutputDir = runtimeTemplate.chunkRootOutputDir(chunk, true);
|
|
146
|
+
|
|
147
|
+
const { publicPath } = compilation.outputOptions;
|
|
148
|
+
// `import()` resolves a bare specifier as a package name, so a public path that
|
|
149
|
+
// leaves one — empty, or a plain relative directory — needs an explicit `./`.
|
|
150
|
+
// A runtime override can swap in an absolute path, so leave those alone.
|
|
151
|
+
const chunkImportBase =
|
|
152
|
+
publicPath === "auto"
|
|
153
|
+
? JSON.stringify(rootOutputDir)
|
|
154
|
+
: typeof publicPath === "string" &&
|
|
155
|
+
!/^(?:\.{0,2}\/|[a-zA-Z][\w+.-]*:)/.test(publicPath) &&
|
|
156
|
+
!getAPIPlugin().usesRuntimePublicPathOverride(compilation)
|
|
157
|
+
? `"./" + ${RuntimeGlobals.publicPath}`
|
|
158
|
+
: RuntimeGlobals.publicPath;
|
|
137
159
|
|
|
138
160
|
const stateExpression = withHmr
|
|
139
161
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_module`
|
|
@@ -146,19 +168,58 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
146
168
|
",\n"
|
|
147
169
|
)
|
|
148
170
|
)}\n}`;
|
|
171
|
+
// Every part below that reads the table. A chunk asking only for `.b` gets this
|
|
172
|
+
// module for the base uri alone, and then has nothing to look up.
|
|
173
|
+
const withInstalledChunks =
|
|
174
|
+
withLoading ||
|
|
175
|
+
withExternalInstallChunk ||
|
|
176
|
+
withAnalyzableImport ||
|
|
177
|
+
withOnChunkLoad ||
|
|
178
|
+
withHmr ||
|
|
179
|
+
withPrefetch ||
|
|
180
|
+
withPreload;
|
|
181
|
+
// The url is read through a thunk so a runtime hinting at many chunks builds only
|
|
182
|
+
// the one it appends.
|
|
183
|
+
/**
|
|
184
|
+
* @param {string} id expression naming the chunk whose url is wanted
|
|
185
|
+
* @returns {string} expression evaluating to its url
|
|
186
|
+
*/
|
|
187
|
+
const chunkUrl = (id) =>
|
|
188
|
+
chunkUrls === null
|
|
189
|
+
? `${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(${id})`
|
|
190
|
+
: `chunkUrls[${id}]()`;
|
|
149
191
|
return Template.asString([
|
|
150
192
|
withBaseURI
|
|
151
193
|
? this._generateBaseUri(chunk, rootOutputDir)
|
|
152
194
|
: "// no baseURI",
|
|
153
195
|
"",
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
196
|
+
...(chunkUrls
|
|
197
|
+
? [
|
|
198
|
+
`${cst} chunkUrls = {\n${Template.indent(
|
|
199
|
+
Array.from(
|
|
200
|
+
chunkUrls,
|
|
201
|
+
([id, url]) =>
|
|
202
|
+
`${JSON.stringify(String(id))}: ${runtimeTemplate.returningFunction(url)}`
|
|
203
|
+
).join(",\n")
|
|
204
|
+
)}\n};`,
|
|
205
|
+
""
|
|
206
|
+
]
|
|
207
|
+
: []),
|
|
208
|
+
withInstalledChunks
|
|
209
|
+
? Template.asString([
|
|
210
|
+
"// object to store loaded and loading chunks",
|
|
211
|
+
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
212
|
+
"// [resolve, Promise] = chunk loading, 0 = chunk loaded",
|
|
213
|
+
`${cst} installedChunks = ${
|
|
214
|
+
stateExpression
|
|
215
|
+
? runtimeTemplate.assignOr(
|
|
216
|
+
stateExpression,
|
|
217
|
+
installedChunksObject
|
|
218
|
+
)
|
|
219
|
+
: installedChunksObject
|
|
220
|
+
};`
|
|
221
|
+
])
|
|
222
|
+
: "// no installed chunks",
|
|
162
223
|
"",
|
|
163
224
|
withLoading || withExternalInstallChunk || withAnalyzableImport
|
|
164
225
|
? `${cst} installChunk = ${runtimeTemplate.basicFunction("data", [
|
|
@@ -189,14 +250,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
189
250
|
`if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) && installedChunks[chunkId]) {`,
|
|
190
251
|
Template.indent("installedChunks[chunkId][0]();"),
|
|
191
252
|
"}",
|
|
192
|
-
|
|
253
|
+
"installedChunks[chunkId] = 0;"
|
|
193
254
|
]),
|
|
194
255
|
"}",
|
|
195
256
|
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
|
|
196
257
|
])}`
|
|
197
258
|
: "// no install chunk",
|
|
198
259
|
"",
|
|
199
|
-
|
|
260
|
+
withJsLoading
|
|
200
261
|
? Template.asString([
|
|
201
262
|
`${fn}.j = ${runtimeTemplate.basicFunction(
|
|
202
263
|
"chunkId, promises",
|
|
@@ -219,11 +280,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
219
280
|
: `if(${hasJsMatcher("chunkId")}) {`,
|
|
220
281
|
Template.indent([
|
|
221
282
|
"// setup Promise in chunk cache",
|
|
222
|
-
`${lt} promise = ${importFunctionName}(${
|
|
223
|
-
compilation.outputOptions.publicPath === "auto"
|
|
224
|
-
? JSON.stringify(rootOutputDir)
|
|
225
|
-
: RuntimeGlobals.publicPath
|
|
226
|
-
} + ${
|
|
283
|
+
`${lt} promise = ${importFunctionName}(${chunkImportBase} + ${
|
|
227
284
|
RuntimeGlobals.getChunkScriptFilename
|
|
228
285
|
}(chunkId)).then(installChunk, ${runtimeTemplate.basicFunction(
|
|
229
286
|
"e",
|
|
@@ -265,6 +322,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
265
322
|
hasJsMatcher === true ? "true" : hasJsMatcher("chunkId")
|
|
266
323
|
}) {`,
|
|
267
324
|
Template.indent([
|
|
325
|
+
// A hint is best-effort, so an id no url was written for is
|
|
326
|
+
// skipped rather than turned into a bogus href.
|
|
327
|
+
...(chunkUrls ? ["if(!chunkUrls[chunkId]) return;"] : []),
|
|
268
328
|
"installedChunks[chunkId] = null;",
|
|
269
329
|
linkPrefetch.call(
|
|
270
330
|
Template.asString([
|
|
@@ -282,10 +342,23 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
282
342
|
"}",
|
|
283
343
|
'link.rel = "prefetch";',
|
|
284
344
|
'link.as = "script";',
|
|
285
|
-
`link.href = ${
|
|
345
|
+
`link.href = ${chunkUrl("chunkId")};`
|
|
286
346
|
]),
|
|
287
347
|
chunk
|
|
288
348
|
),
|
|
349
|
+
dedupePrefetch
|
|
350
|
+
? Template.asString([
|
|
351
|
+
// Chrome re-requests a resource when a prefetch link is added
|
|
352
|
+
// after it was already (pre)loaded via markup; skip in that case.
|
|
353
|
+
`${cst} links = document.getElementsByTagName("link");`,
|
|
354
|
+
`for(${lt} i = 0; i < links.length; i++) {`,
|
|
355
|
+
Template.indent([
|
|
356
|
+
`${cst} l = links[i];`,
|
|
357
|
+
'if(l.href === link.href && (l.rel === "prefetch" || l.rel === "preload" || l.rel === "modulepreload")) return;'
|
|
358
|
+
]),
|
|
359
|
+
"}"
|
|
360
|
+
])
|
|
361
|
+
: "",
|
|
289
362
|
"document.head.appendChild(link);"
|
|
290
363
|
]),
|
|
291
364
|
"}"
|
|
@@ -306,6 +379,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
306
379
|
hasJsMatcher === true ? "true" : hasJsMatcher("chunkId")
|
|
307
380
|
}) {`,
|
|
308
381
|
Template.indent([
|
|
382
|
+
// A hint is best-effort, so an id no url was written for is
|
|
383
|
+
// skipped rather than turned into a bogus href.
|
|
384
|
+
...(chunkUrls ? ["if(!chunkUrls[chunkId]) return;"] : []),
|
|
309
385
|
"installedChunks[chunkId] = null;",
|
|
310
386
|
linkPreload.call(
|
|
311
387
|
Template.asString([
|
|
@@ -317,7 +393,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
317
393
|
),
|
|
318
394
|
"}",
|
|
319
395
|
'link.rel = "modulepreload";',
|
|
320
|
-
`link.href = ${
|
|
396
|
+
`link.href = ${chunkUrl("chunkId")};`,
|
|
321
397
|
crossOriginLoading
|
|
322
398
|
? crossOriginLoading === "use-credentials"
|
|
323
399
|
? 'link.crossOrigin = "use-credentials";'
|
|
@@ -350,24 +426,41 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
350
426
|
? `${
|
|
351
427
|
RuntimeGlobals.analyzableChunkImport
|
|
352
428
|
} = ${runtimeTemplate.basicFunction("chunkId, importFn", [
|
|
353
|
-
//
|
|
354
|
-
//
|
|
355
|
-
//
|
|
429
|
+
// `ensureChunk` with its `.j` half replaced by a literal `import()` a foreign
|
|
430
|
+
// bundler can follow. The remaining handlers still run, so a chunk's css and
|
|
431
|
+
// its prefetch/preload children are not lost by taking this path.
|
|
432
|
+
`${lt} promises = [];`,
|
|
356
433
|
`${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
"
|
|
361
|
-
[
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
434
|
+
'if(installedChunkData !== 0) { // 0 means "already installed".',
|
|
435
|
+
Template.indent([
|
|
436
|
+
'// a Promise means "currently loading".',
|
|
437
|
+
"if(installedChunkData) {",
|
|
438
|
+
Template.indent(["promises.push(installedChunkData[1]);"]),
|
|
439
|
+
"} else {",
|
|
440
|
+
Template.indent([
|
|
441
|
+
`${lt} promise = importFn().then(installChunk, ${runtimeTemplate.basicFunction(
|
|
442
|
+
"e",
|
|
443
|
+
[
|
|
444
|
+
"if(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;",
|
|
445
|
+
"throw e;"
|
|
446
|
+
]
|
|
447
|
+
)});`,
|
|
448
|
+
`promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
|
|
449
|
+
"installedChunkData = installedChunks[chunkId] = [resolve]",
|
|
450
|
+
"resolve"
|
|
451
|
+
)})]);`,
|
|
452
|
+
"promises.push((installedChunkData[1] = promise));"
|
|
453
|
+
]),
|
|
454
|
+
"}"
|
|
455
|
+
]),
|
|
456
|
+
"}",
|
|
457
|
+
withLoading
|
|
458
|
+
? `Object.keys(${fn}).forEach(${runtimeTemplate.basicFunction(
|
|
459
|
+
"key",
|
|
460
|
+
[`if(key !== "j") ${fn}[key](chunkId, promises);`]
|
|
461
|
+
)});`
|
|
462
|
+
: "// no other chunk loading handlers",
|
|
463
|
+
"return Promise.all(promises);"
|
|
371
464
|
])};`
|
|
372
465
|
: "// no analyzable chunk import",
|
|
373
466
|
"",
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
/** @typedef {(status: string) => (Promise<void> | void)} StatusHandler */
|
|
14
14
|
/** @typedef {Record<string, unknown>} ApplyOptions */
|
|
15
15
|
/** @typedef {(reportError: (err: Error) => void) => Promise<ModuleId[]>} ApplyFn */
|
|
16
|
-
/** @typedef {
|
|
16
|
+
/** @typedef {(chunkId: ModuleId, fetchPriority?: string) => Promise<unknown>} EnsureChunk */
|
|
17
|
+
/** @typedef {(chunkId: ModuleId, importFn: () => Promise<unknown>) => Promise<unknown>} AnalyzableChunkImport */
|
|
18
|
+
/** @typedef {{ (id: ModuleId): unknown, e?: EnsureChunk, ei?: AnalyzableChunkImport, [name: string]: unknown }} WebpackRequire */
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* @typedef {object} ApplyResult
|
|
@@ -185,13 +187,30 @@ module.exports = function () {
|
|
|
185
187
|
};
|
|
186
188
|
};
|
|
187
189
|
for (var name in require) {
|
|
188
|
-
if (
|
|
190
|
+
if (
|
|
191
|
+
Object.prototype.hasOwnProperty.call(require, name) &&
|
|
192
|
+
name !== "e" &&
|
|
193
|
+
name !== "ei"
|
|
194
|
+
) {
|
|
189
195
|
Object.defineProperty(fn, name, createPropertyDescriptor(name));
|
|
190
196
|
}
|
|
191
197
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
198
|
+
// A chunk load blocks the update until it settles, and `.ei` is the analyzable
|
|
199
|
+
// half of `.e`. A runtime that loads no chunks has neither to wrap.
|
|
200
|
+
if (require.e) {
|
|
201
|
+
/** @type {WebpackRequire} */ (fn).e = function (chunkId, fetchPriority) {
|
|
202
|
+
return trackBlockingPromise(
|
|
203
|
+
/** @type {EnsureChunk} */ (require.e)(chunkId, fetchPriority)
|
|
204
|
+
);
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
if (require.ei) {
|
|
208
|
+
/** @type {WebpackRequire} */ (fn).ei = function (chunkId, importFn) {
|
|
209
|
+
return trackBlockingPromise(
|
|
210
|
+
/** @type {AnalyzableChunkImport} */ (require.ei)(chunkId, importFn)
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
}
|
|
195
214
|
return /** @type {WebpackRequire} */ (fn);
|
|
196
215
|
}
|
|
197
216
|
|
|
@@ -9,7 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
13
|
|
|
14
14
|
class HotModuleReplacementRuntimeModule extends RuntimeModule {
|
|
15
15
|
constructor() {
|
|
@@ -21,29 +21,41 @@ const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDepend
|
|
|
21
21
|
const { resolveByProperty } = require("../util/cleverMerge");
|
|
22
22
|
const { registerNotSerializable } = require("../util/serialization");
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
24
|
+
/**
|
|
25
|
+
* @import {
|
|
26
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
27
|
+
* } from "../config/defaults"
|
|
28
|
+
*/
|
|
29
|
+
/** @import Compilation from "../Compilation" */
|
|
30
|
+
/** @import Compiler from "../Compiler" */
|
|
31
|
+
/** @import { UpdateHashContext } from "../Dependency" */
|
|
32
|
+
/**
|
|
33
|
+
* @import {
|
|
34
|
+
* BuildCallback,
|
|
35
|
+
* BuildInfo,
|
|
36
|
+
* BuildMeta,
|
|
37
|
+
* CodeGenerationContext,
|
|
38
|
+
* CodeGenerationResult,
|
|
39
|
+
* LibIdentOptions,
|
|
40
|
+
* LibIdent,
|
|
41
|
+
* NeedBuildCallback,
|
|
42
|
+
* NeedBuildContext,
|
|
43
|
+
* SourceTypes,
|
|
44
|
+
* Sources,
|
|
45
|
+
* RuntimeRequirements
|
|
46
|
+
* } from "../Module"
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* @import {
|
|
50
|
+
* ModuleFactoryCallback,
|
|
51
|
+
* ModuleFactoryCreateData
|
|
52
|
+
* } from "../ModuleFactory"
|
|
53
|
+
*/
|
|
54
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
55
|
+
/** @import { ResolverWithOptions } from "../ResolverFactory" */
|
|
56
|
+
/** @import HarmonyImportDependency from "../dependencies/HarmonyImportDependency" */
|
|
57
|
+
/** @import Hash from "../util/Hash" */
|
|
58
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
47
59
|
|
|
48
60
|
/** @typedef {{ client: string, data: string, active: boolean }} ModuleResult */
|
|
49
61
|
|
|
@@ -403,7 +415,8 @@ class LazyCompilationProxyModule extends Module {
|
|
|
403
415
|
dependency: dep,
|
|
404
416
|
strict: false, // TODO this should be inherited from the original module
|
|
405
417
|
message: "import()",
|
|
406
|
-
runtimeRequirements
|
|
418
|
+
runtimeRequirements,
|
|
419
|
+
originModule: this
|
|
407
420
|
})};`,
|
|
408
421
|
"if (module.hot) {",
|
|
409
422
|
Template.indent([
|
|
@@ -547,6 +560,14 @@ class LazyCompilationPlugin {
|
|
|
547
560
|
compiler.hooks.thisCompilation.tap(
|
|
548
561
|
PLUGIN_NAME,
|
|
549
562
|
(compilation, { normalModuleFactory }) => {
|
|
563
|
+
// A proxy already loaded in the client outlives the build that required
|
|
564
|
+
// `ensureChunk`, so every runtime keeps it or the proxy calls a dropped global.
|
|
565
|
+
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
|
566
|
+
PLUGIN_NAME,
|
|
567
|
+
(chunk, set) => {
|
|
568
|
+
set.add(RuntimeGlobals.ensureChunk);
|
|
569
|
+
}
|
|
570
|
+
);
|
|
550
571
|
normalModuleFactory.hooks.module.tap(
|
|
551
572
|
PLUGIN_NAME,
|
|
552
573
|
(module, createData, resolveData) => {
|