webpack 5.107.2 → 5.108.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/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +8 -4
- package/lib/CacheFacade.js +7 -0
- package/lib/Chunk.js +4 -0
- package/lib/ChunkGraph.js +30 -9
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +2 -1
- package/lib/Compilation.js +396 -65
- package/lib/Compiler.js +25 -11
- package/lib/ConcatenationScope.js +10 -3
- package/lib/ContextExclusionPlugin.js +1 -0
- package/lib/ContextModule.js +92 -47
- package/lib/ContextReplacementPlugin.js +4 -0
- package/lib/DefinePlugin.js +89 -15
- package/lib/Dependency.js +111 -7
- package/lib/EntryOptionPlugin.js +39 -2
- package/lib/EntryPlugin.js +2 -0
- package/lib/ExportsInfo.js +314 -73
- package/lib/ExternalModule.js +82 -34
- package/lib/ExternalModuleFactoryPlugin.js +1 -0
- package/lib/ExternalsPlugin.js +1 -0
- package/lib/FileSystemInfo.js +173 -23
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
- package/lib/FlagDependencyExportsPlugin.js +23 -0
- package/lib/FlagDependencyUsagePlugin.js +87 -5
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
- package/lib/Generator.js +8 -0
- package/lib/HotModuleReplacementPlugin.js +65 -28
- package/lib/IgnorePlugin.js +1 -0
- package/lib/InitFragment.js +5 -0
- package/lib/JavascriptMetaInfoPlugin.js +7 -5
- package/lib/LazyBarrel.js +361 -0
- package/lib/LoaderTargetPlugin.js +1 -0
- package/lib/Module.js +21 -42
- package/lib/ModuleGraph.js +3 -2
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleTemplate.js +2 -0
- package/lib/MultiCompiler.js +2 -0
- package/lib/MultiStats.js +1 -0
- package/lib/MultiWatching.js +2 -0
- package/lib/NodeStuffPlugin.js +22 -17
- package/lib/NormalModule.js +142 -80
- package/lib/NormalModuleReplacementPlugin.js +2 -0
- package/lib/PrefetchPlugin.js +2 -0
- package/lib/ProgressPlugin.js +8 -0
- package/lib/ProvidePlugin.js +1 -0
- package/lib/RawModule.js +20 -16
- package/lib/RecordIdsPlugin.js +1 -0
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimePlugin.js +58 -26
- package/lib/RuntimeTemplate.js +278 -21
- package/lib/SelfModuleFactory.js +1 -0
- package/lib/SourceMapDevToolPlugin.js +3 -5
- package/lib/Stats.js +1 -0
- package/lib/Template.js +8 -2
- package/lib/TemplatedPathPlugin.js +473 -131
- package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
- package/lib/WarnDeprecatedOptionPlugin.js +4 -0
- package/lib/WarnNoModeSetPlugin.js +1 -0
- package/lib/WatchIgnorePlugin.js +1 -0
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +50 -5
- package/lib/asset/AssetBytesGenerator.js +11 -3
- package/lib/asset/AssetGenerator.js +47 -22
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +14 -14
- package/lib/asset/AssetParser.js +2 -2
- package/lib/asset/AssetSourceGenerator.js +8 -0
- package/lib/asset/RawDataUrlModule.js +12 -13
- package/lib/buildChunkGraph.js +64 -7
- package/lib/bun/BunTargetPlugin.js +48 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
- package/lib/cache/AddManagedPathsPlugin.js +3 -0
- package/lib/cache/IdleFileCachePlugin.js +4 -0
- package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
- package/lib/cache/PackFileCacheStrategy.js +1 -0
- package/lib/cache/ResolverCachePlugin.js +2 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +109 -19
- package/lib/config/browserslistTargetHandler.js +99 -0
- package/lib/config/defaults.js +147 -7
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +5 -0
- package/lib/config/target.js +181 -2
- package/lib/container/ContainerEntryModule.js +15 -14
- package/lib/container/ContainerExposedDependency.js +2 -2
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +5 -7
- package/lib/container/FallbackModule.js +10 -9
- package/lib/container/RemoteModule.js +20 -10
- package/lib/container/RemoteRuntimeModule.js +14 -12
- package/lib/css/CssGenerator.js +353 -327
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
- package/lib/css/CssLoadingRuntimeModule.js +118 -47
- package/lib/css/CssModule.js +52 -23
- package/lib/css/CssModulesPlugin.js +107 -124
- package/lib/css/CssParser.js +2759 -2205
- package/lib/css/syntax.js +2859 -0
- package/lib/debug/ProfilingPlugin.js +2 -0
- package/lib/deno/DenoTargetPlugin.js +47 -0
- package/lib/dependencies/AMDDefineDependency.js +22 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
- package/lib/dependencies/AMDRequireContextDependency.js +7 -11
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireDependency.js +24 -20
- package/lib/dependencies/CachedConstDependency.js +3 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
- package/lib/dependencies/CommonJsExportsDependency.js +21 -16
- package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
- package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
- package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
- package/lib/dependencies/CommonJsPlugin.js +1 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
- package/lib/dependencies/CommonJsRequireDependency.js +42 -11
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
- package/lib/dependencies/ConstDependency.js +16 -11
- package/lib/dependencies/ContextDependency.js +4 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
- package/lib/dependencies/ContextElementDependency.js +23 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
- package/lib/dependencies/CriticalDependencyWarning.js +1 -0
- package/lib/dependencies/CssIcssExportDependency.js +512 -574
- package/lib/dependencies/CssIcssImportDependency.js +9 -9
- package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
- package/lib/dependencies/CssImportDependency.js +25 -1
- package/lib/dependencies/CssUrlDependency.js +23 -14
- package/lib/dependencies/DllEntryDependency.js +9 -13
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +12 -12
- package/lib/dependencies/ExternalModuleDependency.js +8 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
- package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -15
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
- package/lib/dependencies/HarmonyExports.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +24 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
- package/lib/dependencies/HarmonyImportGuard.js +254 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
- package/lib/dependencies/HarmonyLinkingError.js +1 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
- package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +261 -109
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +17 -13
- package/lib/dependencies/HtmlInlineStyleDependency.js +45 -11
- package/lib/dependencies/ImportContextDependency.js +5 -9
- package/lib/dependencies/ImportDependency.js +44 -2
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +74 -30
- package/lib/dependencies/ImportParserPlugin.js +19 -0
- package/lib/dependencies/ImportWeakDependency.js +1 -0
- package/lib/dependencies/JsonExportsDependency.js +9 -9
- package/lib/dependencies/LoaderImportDependency.js +1 -0
- package/lib/dependencies/LocalModule.js +11 -12
- package/lib/dependencies/LocalModuleDependency.js +11 -13
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
- package/lib/dependencies/ProvidedDependency.js +31 -27
- package/lib/dependencies/PureExpressionDependency.js +7 -9
- package/lib/dependencies/RequireEnsureDependency.js +12 -13
- package/lib/dependencies/RequireHeaderDependency.js +3 -4
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireResolveContextDependency.js +7 -11
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
- package/lib/dependencies/StaticExportsDependency.js +10 -10
- package/lib/dependencies/SystemPlugin.js +2 -0
- package/lib/dependencies/URLContextDependency.js +5 -7
- package/lib/dependencies/URLDependency.js +14 -16
- package/lib/dependencies/UnsupportedDependency.js +8 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
- package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
- package/lib/dependencies/WorkerDependency.js +19 -8
- package/lib/dependencies/WorkerPlugin.js +22 -6
- package/lib/dependencies/processExportInfo.js +13 -11
- package/lib/dll/DelegatedModule.js +29 -15
- package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
- package/lib/dll/DelegatedPlugin.js +1 -0
- package/lib/dll/DllEntryPlugin.js +3 -0
- package/lib/dll/DllModule.js +3 -2
- package/lib/dll/DllPlugin.js +16 -0
- package/lib/dll/DllReferencePlugin.js +3 -0
- package/lib/dll/LibManifestPlugin.js +1 -0
- package/lib/electron/ElectronTargetPlugin.js +22 -4
- package/lib/errors/ConcurrentCompilationError.js +1 -0
- package/lib/errors/HookWebpackError.js +11 -13
- package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
- package/lib/errors/JSONParseError.js +9 -8
- package/lib/errors/ModuleBuildError.js +16 -13
- package/lib/errors/ModuleDependencyError.js +8 -1
- package/lib/errors/ModuleDependencyWarning.js +8 -1
- package/lib/errors/ModuleError.js +5 -11
- package/lib/errors/ModuleHashingError.js +4 -0
- package/lib/errors/ModuleNotFoundError.js +3 -0
- package/lib/errors/ModuleParseError.js +5 -11
- package/lib/errors/ModuleRestoreError.js +2 -0
- package/lib/errors/ModuleStoreError.js +3 -0
- package/lib/errors/ModuleWarning.js +7 -11
- package/lib/errors/NodeStuffInWebError.js +1 -0
- package/lib/errors/NonErrorEmittedError.js +2 -0
- package/lib/errors/UnhandledSchemeError.js +1 -0
- package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/LazyCompilationPlugin.js +30 -6
- package/lib/html/HtmlGenerator.js +217 -23
- package/lib/html/HtmlModule.js +40 -0
- package/lib/html/HtmlModulesPlugin.js +219 -55
- package/lib/html/HtmlParser.js +1108 -1099
- package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
- package/lib/ids/IdHelpers.js +4 -2
- package/lib/index.js +19 -0
- package/lib/javascript/BasicEvaluatedExpression.js +1 -0
- package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
- package/lib/javascript/JavascriptGenerator.js +6 -2
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +257 -102
- package/lib/javascript/JavascriptParser.js +285 -158
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +7 -0
- package/lib/json/JsonParser.js +4 -2
- package/lib/library/AssignLibraryPlugin.js +5 -3
- package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
- package/lib/library/FalseIIFEUmdWarning.js +1 -0
- package/lib/library/ModuleLibraryPlugin.js +24 -5
- package/lib/library/SystemLibraryPlugin.js +3 -3
- package/lib/node/NodeTargetPlugin.js +1 -0
- package/lib/node/NodeWatchFileSystem.js +1 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
- package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
- package/lib/optimize/ConcatenatedModule.js +395 -77
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +372 -275
- package/lib/optimize/InnerGraphPlugin.js +196 -99
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
- package/lib/optimize/RealContentHashPlugin.js +14 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
- package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
- package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/HttpUriPlugin.js +3 -2
- package/lib/serialization/AggregateErrorSerializer.js +7 -6
- package/lib/serialization/ArraySerializer.js +4 -8
- package/lib/serialization/BinaryMiddleware.js +538 -468
- package/lib/serialization/DateObjectSerializer.js +2 -2
- package/lib/serialization/ErrorObjectSerializer.js +7 -6
- package/lib/serialization/MapObjectSerializer.js +5 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
- package/lib/serialization/ObjectMiddleware.js +50 -13
- package/lib/serialization/PlainObjectSerializer.js +9 -8
- package/lib/serialization/RegExpObjectSerializer.js +2 -2
- package/lib/serialization/Serializer.js +1 -0
- package/lib/serialization/SetObjectSerializer.js +4 -8
- package/lib/sharing/ConsumeSharedModule.js +6 -7
- package/lib/sharing/ConsumeSharedPlugin.js +1 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
- package/lib/sharing/ProvideSharedDependency.js +30 -15
- package/lib/sharing/ProvideSharedModule.js +30 -11
- package/lib/sharing/ProvideSharedPlugin.js +4 -2
- package/lib/sharing/SharePlugin.js +3 -0
- package/lib/sharing/ShareRuntimeModule.js +18 -16
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
- package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
- package/lib/stats/StatsFactory.js +11 -9
- package/lib/stats/StatsPrinter.js +9 -2
- package/lib/url/URLParserPlugin.js +5 -2
- package/lib/util/AsyncQueue.js +10 -0
- package/lib/util/LazyBucketSortedSet.js +5 -0
- package/lib/util/LazySet.js +6 -4
- package/lib/util/LocConverter.js +11 -1
- package/lib/util/Semaphore.js +1 -0
- package/lib/util/SourceProcessor.js +106 -0
- package/lib/util/TupleSet.js +1 -0
- package/lib/util/WeakTupleMap.js +27 -1
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/comparators.js +2 -2
- package/lib/util/concatenate.js +31 -7
- package/lib/util/createHash.js +0 -1
- package/lib/util/deterministicGrouping.js +19 -12
- package/lib/util/extractSourceMap.js +1 -1
- package/lib/util/findGraphRoots.js +2 -0
- package/lib/util/fs.js +10 -5
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +24 -15
- package/lib/util/identifier.js +7 -0
- package/lib/util/internalSerializables.js +11 -2
- package/lib/util/magicComment.js +42 -0
- package/lib/util/makeSerializable.js +1 -0
- package/lib/util/nonNumericOnlyHash.js +30 -1
- package/lib/util/property.js +7 -1
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +4 -4
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
- package/lib/wasm-sync/WebAssemblyParser.js +7 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
- package/package.json +35 -27
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +212 -3
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
- package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -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 +1456 -290
- package/lib/css/walkCssTokens.js +0 -2020
- package/lib/util/AppendOnlyStackedSet.js +0 -93
|
@@ -150,6 +150,13 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
150
150
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_module`
|
|
151
151
|
: undefined;
|
|
152
152
|
|
|
153
|
+
const cst = runtimeTemplate.renderConst();
|
|
154
|
+
const lt = runtimeTemplate.renderLet();
|
|
155
|
+
const installedChunksObject = `{\n${Template.indent(
|
|
156
|
+
Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
|
|
157
|
+
",\n"
|
|
158
|
+
)
|
|
159
|
+
)}\n}`;
|
|
153
160
|
return Template.asString([
|
|
154
161
|
withBaseURI
|
|
155
162
|
? this._generateBaseUri(chunk, rootOutputDir)
|
|
@@ -158,18 +165,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
158
165
|
"// object to store loaded and loading chunks",
|
|
159
166
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
160
167
|
"// [resolve, Promise] = chunk loading, 0 = chunk loaded",
|
|
161
|
-
|
|
162
|
-
stateExpression
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
",\n"
|
|
167
|
-
)
|
|
168
|
-
),
|
|
169
|
-
"};",
|
|
168
|
+
`${cst} installedChunks = ${
|
|
169
|
+
stateExpression
|
|
170
|
+
? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
|
|
171
|
+
: installedChunksObject
|
|
172
|
+
};`,
|
|
170
173
|
"",
|
|
171
174
|
withLoading || withExternalInstallChunk
|
|
172
|
-
?
|
|
175
|
+
? `${cst} installChunk = ${runtimeTemplate.basicFunction("data", [
|
|
173
176
|
runtimeTemplate.destructureObject(
|
|
174
177
|
[
|
|
175
178
|
RuntimeGlobals.esmIds,
|
|
@@ -211,7 +214,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
211
214
|
hasJsMatcher !== false
|
|
212
215
|
? Template.indent([
|
|
213
216
|
"// import() chunk loading for javascript",
|
|
214
|
-
|
|
217
|
+
`${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
|
|
215
218
|
'if(installedChunkData !== 0) { // 0 means "already installed".',
|
|
216
219
|
Template.indent([
|
|
217
220
|
"",
|
|
@@ -227,7 +230,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
227
230
|
: `if(${hasJsMatcher("chunkId")}) {`,
|
|
228
231
|
Template.indent([
|
|
229
232
|
"// setup Promise in chunk cache",
|
|
230
|
-
|
|
233
|
+
`${lt} promise = ${importFunctionName}(${
|
|
231
234
|
compilation.outputOptions.publicPath === "auto"
|
|
232
235
|
? JSON.stringify(rootOutputDir)
|
|
233
236
|
: RuntimeGlobals.publicPath
|
|
@@ -240,7 +243,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
240
243
|
"throw e;"
|
|
241
244
|
]
|
|
242
245
|
)});`,
|
|
243
|
-
`
|
|
246
|
+
`promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
|
|
244
247
|
"installedChunkData = installedChunks[chunkId] = [resolve]",
|
|
245
248
|
"resolve"
|
|
246
249
|
)})])`,
|
|
@@ -263,6 +266,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
263
266
|
? `${
|
|
264
267
|
RuntimeGlobals.prefetchChunkHandlers
|
|
265
268
|
}.j = ${runtimeTemplate.basicFunction("chunkId", [
|
|
269
|
+
// prefetch is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
|
|
266
270
|
isNeutralPlatform
|
|
267
271
|
? "if (typeof document === 'undefined') return;"
|
|
268
272
|
: "",
|
|
@@ -275,7 +279,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
275
279
|
"installedChunks[chunkId] = null;",
|
|
276
280
|
linkPrefetch.call(
|
|
277
281
|
Template.asString([
|
|
278
|
-
|
|
282
|
+
`${cst} link = document.createElement('link');`,
|
|
279
283
|
charset ? "link.charset = 'utf-8';" : "",
|
|
280
284
|
crossOriginLoading
|
|
281
285
|
? `link.crossOrigin = ${JSON.stringify(
|
|
@@ -303,6 +307,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
303
307
|
? `${
|
|
304
308
|
RuntimeGlobals.preloadChunkHandlers
|
|
305
309
|
}.j = ${runtimeTemplate.basicFunction("chunkId", [
|
|
310
|
+
// preload is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
|
|
306
311
|
isNeutralPlatform
|
|
307
312
|
? "if (typeof document === 'undefined') return;"
|
|
308
313
|
: "",
|
|
@@ -315,7 +320,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
315
320
|
"installedChunks[chunkId] = null;",
|
|
316
321
|
linkPreload.call(
|
|
317
322
|
Template.asString([
|
|
318
|
-
|
|
323
|
+
`${cst} link = document.createElement('link');`,
|
|
319
324
|
charset ? "link.charset = 'utf-8';" : "",
|
|
320
325
|
`if (${RuntimeGlobals.scriptNonce}) {`,
|
|
321
326
|
Template.indent(
|
|
@@ -370,30 +375,30 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
370
375
|
"resolve, reject",
|
|
371
376
|
[
|
|
372
377
|
"// start update chunk loading",
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
378
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
|
|
379
|
+
`${cst} onResolve = ${runtimeTemplate.basicFunction("obj", [
|
|
380
|
+
`${cst} updatedModules = obj.${RuntimeGlobals.esmModules};`,
|
|
381
|
+
`${cst} updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
|
|
377
382
|
"if(updatedRuntime) currentUpdateRuntime.push(updatedRuntime);",
|
|
378
383
|
"for(var moduleId in updatedModules) {",
|
|
379
384
|
Template.indent([
|
|
380
385
|
`if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
|
|
381
386
|
Template.indent([
|
|
382
387
|
"currentUpdate[moduleId] = updatedModules[moduleId];",
|
|
383
|
-
"
|
|
388
|
+
`${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
|
|
384
389
|
]),
|
|
385
390
|
"}"
|
|
386
391
|
]),
|
|
387
392
|
"}",
|
|
388
393
|
"resolve(obj);"
|
|
389
394
|
])};`,
|
|
390
|
-
|
|
391
|
-
|
|
395
|
+
`${cst} onReject = ${runtimeTemplate.basicFunction("error", [
|
|
396
|
+
`${cst} errorMsg = error.message || 'unknown reason';`,
|
|
392
397
|
"error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorMsg + ')';",
|
|
393
398
|
"error.name = 'ChunkLoadError';",
|
|
394
399
|
"reject(error);"
|
|
395
400
|
])}`,
|
|
396
|
-
|
|
401
|
+
`${cst} loadScript = ${runtimeTemplate.basicFunction(
|
|
397
402
|
"url, onResolve, onReject",
|
|
398
403
|
[
|
|
399
404
|
`return ${importFunctionName}(/* webpackIgnore: true */ url).then(onResolve).catch(onReject)`
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
/*
|
|
3
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
4
3
|
Author Tobias Koppers @sokra
|
|
@@ -6,33 +5,115 @@
|
|
|
6
5
|
|
|
7
6
|
"use strict";
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** @
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
/** @typedef {string | number} ModuleId */
|
|
9
|
+
/** @typedef {Record<string, unknown>} HotData */
|
|
10
|
+
/** @typedef {(data: HotData) => void} DisposeHandler */
|
|
11
|
+
/** @typedef {(outdatedDependencies: ModuleId[]) => void} AcceptCallback */
|
|
12
|
+
/** @typedef {(err: Error, context: { moduleId: ModuleId, dependencyId?: ModuleId, module?: HotModule }) => void} AcceptErrorHandler */
|
|
13
|
+
/** @typedef {(status: string) => (Promise<void> | void)} StatusHandler */
|
|
14
|
+
/** @typedef {Record<string, unknown>} ApplyOptions */
|
|
15
|
+
/** @typedef {(reportError: (err: Error) => void) => Promise<ModuleId[]>} ApplyFn */
|
|
16
|
+
/** @typedef {{ (id: ModuleId): unknown, e: (chunkId: ModuleId, fetchPriority?: string) => Promise<unknown>, [name: string]: unknown }} WebpackRequire */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {object} ApplyResult
|
|
20
|
+
* @property {Error=} error fatal error that aborts the update
|
|
21
|
+
* @property {(() => void)=} dispose dispose phase of the update
|
|
22
|
+
* @property {ApplyFn=} apply apply phase of the update
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/** @typedef {(options: ApplyOptions) => ApplyResult} ApplyHandler */
|
|
26
|
+
/** @typedef {(moduleId: ModuleId, applyHandlers: ApplyHandler[]) => void} InvalidateModuleHandler */
|
|
27
|
+
/** @typedef {(chunkIds: ModuleId[], removedChunks: ModuleId[], removedModules: ModuleId[], promises: Promise<unknown>[], applyHandlers: ApplyHandler[], updatedModulesList: ModuleId[], css: ModuleId[] | undefined, forceLoadChunks: ModuleId[] | undefined) => void} DownloadUpdateHandler */
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @typedef {object} HMRManifest
|
|
31
|
+
* @property {ModuleId[]} c updated chunk ids
|
|
32
|
+
* @property {ModuleId[]} r removed chunk ids
|
|
33
|
+
* @property {ModuleId[]} m removed module ids
|
|
34
|
+
* @property {ModuleId[]=} css updated css chunk ids
|
|
35
|
+
* @property {ModuleId[]=} f chunk ids to force-load
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @typedef {object} HotModule
|
|
40
|
+
* @property {ModuleId} id module id
|
|
41
|
+
* @property {Hot} hot hot API of the module
|
|
42
|
+
* @property {ModuleId[]} parents ids of modules requiring this module
|
|
43
|
+
* @property {ModuleId[]} children ids of modules required by this module
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @typedef {object} Hot
|
|
48
|
+
* @property {Record<ModuleId, AcceptCallback>} _acceptedDependencies accept callbacks by dependency id
|
|
49
|
+
* @property {Record<ModuleId, AcceptErrorHandler | undefined>} _acceptedErrorHandlers error handlers by dependency id
|
|
50
|
+
* @property {Record<ModuleId, boolean>} _declinedDependencies declined dependency ids
|
|
51
|
+
* @property {boolean | EXPECTED_FUNCTION} _selfAccepted true or the self-accept error handler
|
|
52
|
+
* @property {boolean} _selfDeclined module declined itself
|
|
53
|
+
* @property {boolean} _selfInvalidated module invalidated itself
|
|
54
|
+
* @property {DisposeHandler[]} _disposeHandlers registered dispose handlers
|
|
55
|
+
* @property {boolean} _main module is the entry of the update
|
|
56
|
+
* @property {() => void} _requireSelf re-require the module on apply
|
|
57
|
+
* @property {boolean} active module is not disposed
|
|
58
|
+
* @property {(dep?: ModuleId | ModuleId[] | AcceptCallback, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
|
|
59
|
+
* @property {(dep?: ModuleId | ModuleId[]) => void} decline decline updates
|
|
60
|
+
* @property {(callback: DisposeHandler) => void} dispose add a dispose handler
|
|
61
|
+
* @property {(callback: DisposeHandler) => void} addDisposeHandler add a dispose handler
|
|
62
|
+
* @property {(callback: DisposeHandler) => void} removeDisposeHandler remove a dispose handler
|
|
63
|
+
* @property {() => void} invalidate invalidate the module
|
|
64
|
+
* @property {(applyOnUpdate?: boolean | ApplyOptions) => Promise<ModuleId[] | null>} check check for an update
|
|
65
|
+
* @property {(options?: ApplyOptions) => Promise<ModuleId[]>} apply apply a checked update
|
|
66
|
+
* @property {(l?: StatusHandler) => string | void} status get status or add a status handler
|
|
67
|
+
* @property {(l: StatusHandler) => void} addStatusHandler add a status handler
|
|
68
|
+
* @property {(l: StatusHandler) => void} removeStatusHandler remove a status handler
|
|
69
|
+
* @property {HotData} data data left from the previous dispose
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
/** @typedef {{ module: HotModule, require: WebpackRequire, id: ModuleId }} InterceptOptions */
|
|
73
|
+
|
|
74
|
+
// Globals injected by code generation; declared here only to type the template.
|
|
75
|
+
/* eslint-disable no-unassigned-vars */
|
|
76
|
+
/** @type {((options: InterceptOptions) => void)[]} */
|
|
77
|
+
var $interceptModuleExecution$;
|
|
78
|
+
/** @type {Record<ModuleId, HotModule>} */
|
|
79
|
+
var $moduleCache$;
|
|
80
|
+
/** @type {Record<ModuleId, HotData>} */
|
|
81
|
+
var $hmrModuleData$;
|
|
82
|
+
/** @type {() => Promise<HMRManifest | void>} */
|
|
83
|
+
var $hmrDownloadManifest$;
|
|
84
|
+
/** @type {Record<string, DownloadUpdateHandler>} */
|
|
85
|
+
var $hmrDownloadUpdateHandlers$;
|
|
86
|
+
/** @type {Record<string, InvalidateModuleHandler>} */
|
|
87
|
+
var $hmrInvalidateModuleHandlers$;
|
|
88
|
+
/** @type {(id: ModuleId) => unknown} */
|
|
89
|
+
var __webpack_require__;
|
|
90
|
+
/* eslint-enable no-unassigned-vars */
|
|
17
91
|
|
|
18
92
|
module.exports = function () {
|
|
93
|
+
/** @type {Record<ModuleId, HotData>} */
|
|
19
94
|
var currentModuleData = {};
|
|
20
95
|
var installedModules = $moduleCache$;
|
|
21
96
|
|
|
22
97
|
// module and require creation
|
|
98
|
+
/** @type {ModuleId | undefined} */
|
|
23
99
|
var currentChildModule;
|
|
100
|
+
/** @type {ModuleId[]} */
|
|
24
101
|
var currentParents = [];
|
|
25
102
|
|
|
26
103
|
// status
|
|
104
|
+
/** @type {StatusHandler[]} */
|
|
27
105
|
var registeredStatusHandlers = [];
|
|
28
106
|
var currentStatus = "idle";
|
|
29
107
|
|
|
30
108
|
// while downloading
|
|
31
109
|
var blockingPromises = 0;
|
|
110
|
+
/** @type {(() => void)[]} */
|
|
32
111
|
var blockingPromisesWaiting = [];
|
|
33
112
|
|
|
34
113
|
// The update info
|
|
114
|
+
/** @type {ApplyHandler[] | undefined} */
|
|
35
115
|
var currentUpdateApplyHandlers;
|
|
116
|
+
/** @type {ModuleId[] | undefined} */
|
|
36
117
|
var queuedInvalidatedModules;
|
|
37
118
|
|
|
38
119
|
$hmrModuleData$ = currentModuleData;
|
|
@@ -50,9 +131,18 @@ module.exports = function () {
|
|
|
50
131
|
$hmrDownloadUpdateHandlers$ = {};
|
|
51
132
|
$hmrInvalidateModuleHandlers$ = {};
|
|
52
133
|
|
|
134
|
+
/**
|
|
135
|
+
* @param {WebpackRequire} require the original require function
|
|
136
|
+
* @param {ModuleId} moduleId module id
|
|
137
|
+
* @returns {WebpackRequire} hot-aware require function
|
|
138
|
+
*/
|
|
53
139
|
function createRequire(require, moduleId) {
|
|
54
140
|
var me = installedModules[moduleId];
|
|
55
141
|
if (!me) return require;
|
|
142
|
+
/**
|
|
143
|
+
* @param {ModuleId} request requested module id
|
|
144
|
+
* @returns {unknown} module exports
|
|
145
|
+
*/
|
|
56
146
|
var fn = function (request) {
|
|
57
147
|
if (me.hot.active) {
|
|
58
148
|
if (installedModules[request]) {
|
|
@@ -78,6 +168,10 @@ module.exports = function () {
|
|
|
78
168
|
}
|
|
79
169
|
return require(request);
|
|
80
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* @param {string} name property name
|
|
173
|
+
* @returns {PropertyDescriptor} descriptor forwarding to require
|
|
174
|
+
*/
|
|
81
175
|
var createPropertyDescriptor = function (name) {
|
|
82
176
|
return {
|
|
83
177
|
configurable: true,
|
|
@@ -95,14 +189,20 @@ module.exports = function () {
|
|
|
95
189
|
Object.defineProperty(fn, name, createPropertyDescriptor(name));
|
|
96
190
|
}
|
|
97
191
|
}
|
|
98
|
-
fn.e = function (chunkId, fetchPriority) {
|
|
192
|
+
/** @type {WebpackRequire} */ (fn).e = function (chunkId, fetchPriority) {
|
|
99
193
|
return trackBlockingPromise(require.e(chunkId, fetchPriority));
|
|
100
194
|
};
|
|
101
|
-
return fn;
|
|
195
|
+
return /** @type {WebpackRequire} */ (fn);
|
|
102
196
|
}
|
|
103
197
|
|
|
198
|
+
/**
|
|
199
|
+
* @param {ModuleId} moduleId module id
|
|
200
|
+
* @param {HotModule} me the module
|
|
201
|
+
* @returns {Hot} hot API
|
|
202
|
+
*/
|
|
104
203
|
function createModuleHotObject(moduleId, me) {
|
|
105
204
|
var _main = currentChildModule !== moduleId;
|
|
205
|
+
/** @type {Hot} */
|
|
106
206
|
var hot = {
|
|
107
207
|
// private stuff
|
|
108
208
|
_acceptedDependencies: {},
|
|
@@ -159,7 +259,7 @@ module.exports = function () {
|
|
|
159
259
|
Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
|
|
160
260
|
$hmrInvalidateModuleHandlers$[key](
|
|
161
261
|
moduleId,
|
|
162
|
-
currentUpdateApplyHandlers
|
|
262
|
+
/** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
|
|
163
263
|
);
|
|
164
264
|
});
|
|
165
265
|
setStatus("ready");
|
|
@@ -168,7 +268,7 @@ module.exports = function () {
|
|
|
168
268
|
Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
|
|
169
269
|
$hmrInvalidateModuleHandlers$[key](
|
|
170
270
|
moduleId,
|
|
171
|
-
currentUpdateApplyHandlers
|
|
271
|
+
/** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
|
|
172
272
|
);
|
|
173
273
|
});
|
|
174
274
|
break;
|
|
@@ -208,8 +308,13 @@ module.exports = function () {
|
|
|
208
308
|
return hot;
|
|
209
309
|
}
|
|
210
310
|
|
|
311
|
+
/**
|
|
312
|
+
* @param {string} newStatus new status
|
|
313
|
+
* @returns {Promise<void>} promise resolving when all handlers ran
|
|
314
|
+
*/
|
|
211
315
|
function setStatus(newStatus) {
|
|
212
316
|
currentStatus = newStatus;
|
|
317
|
+
/** @type {(Promise<void> | void)[]} */
|
|
213
318
|
var results = [];
|
|
214
319
|
|
|
215
320
|
for (var i = 0; i < registeredStatusHandlers.length; i++)
|
|
@@ -232,6 +337,10 @@ module.exports = function () {
|
|
|
232
337
|
}
|
|
233
338
|
}
|
|
234
339
|
|
|
340
|
+
/**
|
|
341
|
+
* @param {Promise<unknown>} promise blocking promise
|
|
342
|
+
* @returns {Promise<unknown>} the same promise
|
|
343
|
+
*/
|
|
235
344
|
function trackBlockingPromise(promise) {
|
|
236
345
|
switch (currentStatus) {
|
|
237
346
|
case "ready":
|
|
@@ -246,15 +355,25 @@ module.exports = function () {
|
|
|
246
355
|
}
|
|
247
356
|
}
|
|
248
357
|
|
|
358
|
+
/**
|
|
359
|
+
* @param {() => Promise<ModuleId[]>} fn function to run once unblocked
|
|
360
|
+
* @returns {Promise<ModuleId[]>} result of fn
|
|
361
|
+
*/
|
|
249
362
|
function waitForBlockingPromises(fn) {
|
|
250
363
|
if (blockingPromises === 0) return fn();
|
|
251
|
-
return
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
364
|
+
return /** @type {Promise<ModuleId[]>} */ (
|
|
365
|
+
new Promise(function (resolve) {
|
|
366
|
+
blockingPromisesWaiting.push(function () {
|
|
367
|
+
resolve(fn());
|
|
368
|
+
});
|
|
369
|
+
})
|
|
370
|
+
);
|
|
256
371
|
}
|
|
257
372
|
|
|
373
|
+
/**
|
|
374
|
+
* @param {boolean | ApplyOptions=} applyOnUpdate apply the update right away
|
|
375
|
+
* @returns {Promise<ModuleId[] | null>} updated module ids or null
|
|
376
|
+
*/
|
|
258
377
|
function hotCheck(applyOnUpdate) {
|
|
259
378
|
if (currentStatus !== "idle") {
|
|
260
379
|
throw new Error("check() is only allowed in idle status");
|
|
@@ -271,6 +390,7 @@ module.exports = function () {
|
|
|
271
390
|
}
|
|
272
391
|
|
|
273
392
|
return setStatus("prepare").then(function () {
|
|
393
|
+
/** @type {ModuleId[]} */
|
|
274
394
|
var updatedModules = [];
|
|
275
395
|
currentUpdateApplyHandlers = [];
|
|
276
396
|
|
|
@@ -284,12 +404,13 @@ module.exports = function () {
|
|
|
284
404
|
update.r,
|
|
285
405
|
update.m,
|
|
286
406
|
promises,
|
|
287
|
-
currentUpdateApplyHandlers,
|
|
407
|
+
/** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers),
|
|
288
408
|
updatedModules,
|
|
289
|
-
update.css
|
|
409
|
+
update.css,
|
|
410
|
+
update.f
|
|
290
411
|
);
|
|
291
412
|
return promises;
|
|
292
|
-
}, [])
|
|
413
|
+
}, /** @type {Promise<unknown>[]} */ ([]))
|
|
293
414
|
).then(function () {
|
|
294
415
|
return waitForBlockingPromises(function () {
|
|
295
416
|
if (applyOnUpdate) {
|
|
@@ -304,6 +425,10 @@ module.exports = function () {
|
|
|
304
425
|
});
|
|
305
426
|
}
|
|
306
427
|
|
|
428
|
+
/**
|
|
429
|
+
* @param {ApplyOptions=} options apply options
|
|
430
|
+
* @returns {Promise<ModuleId[]>} updated module ids
|
|
431
|
+
*/
|
|
307
432
|
function hotApply(options) {
|
|
308
433
|
if (currentStatus !== "ready") {
|
|
309
434
|
return Promise.resolve().then(function () {
|
|
@@ -317,13 +442,19 @@ module.exports = function () {
|
|
|
317
442
|
return internalApply(options);
|
|
318
443
|
}
|
|
319
444
|
|
|
445
|
+
/**
|
|
446
|
+
* @param {boolean | ApplyOptions=} options apply options
|
|
447
|
+
* @returns {Promise<ModuleId[]>} updated module ids
|
|
448
|
+
*/
|
|
320
449
|
function internalApply(options) {
|
|
321
450
|
options = options || {};
|
|
322
451
|
|
|
323
452
|
applyInvalidatedModules();
|
|
324
453
|
|
|
325
|
-
var results =
|
|
326
|
-
|
|
454
|
+
var results = /** @type {ApplyHandler[]} */ (
|
|
455
|
+
currentUpdateApplyHandlers
|
|
456
|
+
).map(function (handler) {
|
|
457
|
+
return handler(/** @type {ApplyOptions} */ (options));
|
|
327
458
|
});
|
|
328
459
|
currentUpdateApplyHandlers = undefined;
|
|
329
460
|
|
|
@@ -349,13 +480,22 @@ module.exports = function () {
|
|
|
349
480
|
// Now in "apply" phase
|
|
350
481
|
var applyPromise = setStatus("apply");
|
|
351
482
|
|
|
483
|
+
/** @type {Error | undefined} */
|
|
352
484
|
var error;
|
|
485
|
+
/**
|
|
486
|
+
* @param {Error} err error thrown while applying
|
|
487
|
+
* @returns {void}
|
|
488
|
+
*/
|
|
353
489
|
var reportError = function (err) {
|
|
354
490
|
if (!error) error = err;
|
|
355
491
|
};
|
|
356
492
|
|
|
493
|
+
/** @type {ModuleId[]} */
|
|
357
494
|
var outdatedModules = [];
|
|
358
495
|
|
|
496
|
+
/**
|
|
497
|
+
* @returns {Promise<ModuleId[]>} updated module ids
|
|
498
|
+
*/
|
|
359
499
|
var onAccepted = function () {
|
|
360
500
|
return Promise.all([disposePromise, applyPromise]).then(function () {
|
|
361
501
|
// handle errors in accept handlers and self accepted module load
|
|
@@ -386,7 +526,7 @@ module.exports = function () {
|
|
|
386
526
|
return result.apply;
|
|
387
527
|
})
|
|
388
528
|
.map(function (result) {
|
|
389
|
-
return result.apply(reportError);
|
|
529
|
+
return /** @type {ApplyFn} */ (result.apply)(reportError);
|
|
390
530
|
})
|
|
391
531
|
)
|
|
392
532
|
.then(function (applyResults) {
|
|
@@ -401,16 +541,21 @@ module.exports = function () {
|
|
|
401
541
|
.then(onAccepted);
|
|
402
542
|
}
|
|
403
543
|
|
|
544
|
+
/**
|
|
545
|
+
* @returns {boolean | undefined} true when invalidated modules were applied
|
|
546
|
+
*/
|
|
404
547
|
function applyInvalidatedModules() {
|
|
405
548
|
if (queuedInvalidatedModules) {
|
|
406
549
|
if (!currentUpdateApplyHandlers) currentUpdateApplyHandlers = [];
|
|
407
550
|
Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
|
|
408
|
-
queuedInvalidatedModules.forEach(
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
551
|
+
/** @type {ModuleId[]} */ (queuedInvalidatedModules).forEach(
|
|
552
|
+
function (moduleId) {
|
|
553
|
+
$hmrInvalidateModuleHandlers$[key](
|
|
554
|
+
moduleId,
|
|
555
|
+
/** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
|
|
556
|
+
);
|
|
557
|
+
}
|
|
558
|
+
);
|
|
414
559
|
});
|
|
415
560
|
queuedInvalidatedModules = undefined;
|
|
416
561
|
return true;
|
|
@@ -9,6 +9,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
13
|
+
|
|
12
14
|
class HotModuleReplacementRuntimeModule extends RuntimeModule {
|
|
13
15
|
constructor() {
|
|
14
16
|
super("hot module replacement", RuntimeModule.STAGE_BASIC);
|
|
@@ -19,9 +21,14 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
|
|
|
19
21
|
* @returns {string | null} runtime code
|
|
20
22
|
*/
|
|
21
23
|
generate() {
|
|
24
|
+
const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
|
|
22
25
|
return Template.getFunctionContent(
|
|
23
26
|
require("./HotModuleReplacement.runtime")
|
|
24
27
|
)
|
|
28
|
+
.replace(
|
|
29
|
+
"Object.prototype.hasOwnProperty.call(require, name)",
|
|
30
|
+
runtimeTemplate.objectHasOwn("require", "name")
|
|
31
|
+
)
|
|
25
32
|
.replace(
|
|
26
33
|
/\$interceptModuleExecution\$/g,
|
|
27
34
|
RuntimeGlobals.interceptModuleExecution
|