webpack 5.93.0 → 5.94.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +126 -69
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +26 -24
- package/lib/css/CssGenerator.js +9 -4
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +91 -69
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +80 -48
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +8 -11
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +15 -14
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/types.d.ts +667 -347
@@ -64,7 +64,7 @@ class ProvidedDependency extends ModuleDependency {
|
|
64
64
|
* @returns {(string[] | ReferencedExport)[]} referenced exports
|
65
65
|
*/
|
66
66
|
getReferencedExports(moduleGraph, runtime) {
|
67
|
-
|
67
|
+
const ids = this.ids;
|
68
68
|
if (ids.length === 0) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
69
69
|
return [ids];
|
70
70
|
}
|
@@ -77,12 +77,12 @@ class PureExpressionDependency extends NullDependency {
|
|
77
77
|
hash.update("null");
|
78
78
|
} else {
|
79
79
|
hash.update(
|
80
|
-
runtimeToString(runtimeCondition)
|
81
|
-
|
82
|
-
|
80
|
+
`${runtimeToString(runtimeCondition)}|${runtimeToString(
|
81
|
+
context.runtime
|
82
|
+
)}`
|
83
83
|
);
|
84
84
|
}
|
85
|
-
hash.update(this.range
|
85
|
+
hash.update(String(this.range));
|
86
86
|
}
|
87
87
|
|
88
88
|
/**
|
@@ -136,11 +136,11 @@ PureExpressionDependency.Template = class PureExpressionDependencyTemplate exten
|
|
136
136
|
const dep = /** @type {PureExpressionDependency} */ (dependency);
|
137
137
|
const runtimeCondition = dep._getRuntimeCondition(moduleGraph, runtime);
|
138
138
|
if (runtimeCondition === true) {
|
139
|
-
|
139
|
+
// Do nothing
|
140
140
|
} else if (runtimeCondition === false) {
|
141
141
|
source.insert(
|
142
142
|
dep.range[0],
|
143
|
-
|
143
|
+
"(/* unused pure expression or super */ null && ("
|
144
144
|
);
|
145
145
|
source.insert(dep.range[1], "))");
|
146
146
|
} else {
|
@@ -56,7 +56,7 @@ module.exports = class RequireContextDependencyParserPlugin {
|
|
56
56
|
/** @type {Range} */ (expr.range)
|
57
57
|
);
|
58
58
|
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
59
|
-
dep.optional =
|
59
|
+
dep.optional = Boolean(parser.scope.inTry);
|
60
60
|
parser.state.current.addDependency(dep);
|
61
61
|
return true;
|
62
62
|
}
|
@@ -36,7 +36,7 @@ class RuntimeRequirementsDependency extends NullDependency {
|
|
36
36
|
*/
|
37
37
|
updateHash(hash, context) {
|
38
38
|
if (this._hashUpdate === undefined) {
|
39
|
-
this._hashUpdate = Array.from(this.runtimeRequirements).join()
|
39
|
+
this._hashUpdate = `${Array.from(this.runtimeRequirements).join()}`;
|
40
40
|
}
|
41
41
|
hash.update(this._hashUpdate);
|
42
42
|
}
|
@@ -30,9 +30,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
30
30
|
/** @typedef {import("../util/Hash")} Hash */
|
31
31
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
32
32
|
|
33
|
-
const getIgnoredRawDataUrlModule = memoize(
|
34
|
-
|
35
|
-
|
33
|
+
const getIgnoredRawDataUrlModule = memoize(
|
34
|
+
() => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
|
35
|
+
);
|
36
36
|
|
37
37
|
class URLDependency extends ModuleDependency {
|
38
38
|
/**
|
@@ -6,13 +6,17 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const { pathToFileURL } = require("url");
|
9
|
+
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
9
10
|
const {
|
10
11
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
11
12
|
JAVASCRIPT_MODULE_TYPE_ESM
|
12
13
|
} = require("../ModuleTypeConstants");
|
14
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
15
|
+
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
13
16
|
const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
|
14
17
|
const { approve } = require("../javascript/JavascriptParserHelpers");
|
15
18
|
const InnerGraph = require("../optimize/InnerGraph");
|
19
|
+
const ConstDependency = require("./ConstDependency");
|
16
20
|
const URLDependency = require("./URLDependency");
|
17
21
|
|
18
22
|
/** @typedef {import("estree").NewExpression} NewExpressionNode */
|
@@ -44,8 +48,21 @@ class URLPlugin {
|
|
44
48
|
* @param {NormalModule} module module
|
45
49
|
* @returns {URL} file url
|
46
50
|
*/
|
47
|
-
const getUrl = module =>
|
48
|
-
|
51
|
+
const getUrl = module => pathToFileURL(module.resource);
|
52
|
+
|
53
|
+
const isMetaUrl = (parser, arg) => {
|
54
|
+
const chain = parser.extractMemberExpressionChain(arg);
|
55
|
+
|
56
|
+
if (
|
57
|
+
chain.members.length !== 1 ||
|
58
|
+
chain.object.type !== "MetaProperty" ||
|
59
|
+
chain.object.meta.name !== "import" ||
|
60
|
+
chain.object.property.name !== "meta" ||
|
61
|
+
chain.members[0] !== "url"
|
62
|
+
)
|
63
|
+
return false;
|
64
|
+
|
65
|
+
return true;
|
49
66
|
};
|
50
67
|
|
51
68
|
/**
|
@@ -72,16 +89,7 @@ class URLPlugin {
|
|
72
89
|
)
|
73
90
|
return;
|
74
91
|
|
75
|
-
|
76
|
-
|
77
|
-
if (
|
78
|
-
chain.members.length !== 1 ||
|
79
|
-
chain.object.type !== "MetaProperty" ||
|
80
|
-
chain.object.meta.name !== "import" ||
|
81
|
-
chain.object.property.name !== "meta" ||
|
82
|
-
chain.members[0] !== "url"
|
83
|
-
)
|
84
|
-
return;
|
92
|
+
if (!isMetaUrl(parser, arg2)) return;
|
85
93
|
|
86
94
|
return parser.evaluateExpression(arg1).asString();
|
87
95
|
};
|
@@ -100,6 +108,52 @@ class URLPlugin {
|
|
100
108
|
});
|
101
109
|
parser.hooks.new.for("URL").tap(PLUGIN_NAME, _expr => {
|
102
110
|
const expr = /** @type {NewExpressionNode} */ (_expr);
|
111
|
+
const { options: importOptions, errors: commentErrors } =
|
112
|
+
parser.parseCommentOptions(/** @type {Range} */ (expr.range));
|
113
|
+
|
114
|
+
if (commentErrors) {
|
115
|
+
for (const e of commentErrors) {
|
116
|
+
const { comment } = e;
|
117
|
+
parser.state.module.addWarning(
|
118
|
+
new CommentCompilationWarning(
|
119
|
+
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
120
|
+
comment.loc
|
121
|
+
)
|
122
|
+
);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
if (importOptions && importOptions.webpackIgnore !== undefined) {
|
127
|
+
if (typeof importOptions.webpackIgnore !== "boolean") {
|
128
|
+
parser.state.module.addWarning(
|
129
|
+
new UnsupportedFeatureWarning(
|
130
|
+
`\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
|
131
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
132
|
+
)
|
133
|
+
);
|
134
|
+
return;
|
135
|
+
} else if (importOptions.webpackIgnore) {
|
136
|
+
if (expr.arguments.length !== 2) return;
|
137
|
+
|
138
|
+
const [, arg2] = expr.arguments;
|
139
|
+
|
140
|
+
if (
|
141
|
+
arg2.type !== "MemberExpression" ||
|
142
|
+
!isMetaUrl(parser, arg2)
|
143
|
+
)
|
144
|
+
return;
|
145
|
+
|
146
|
+
const dep = new ConstDependency(
|
147
|
+
RuntimeGlobals.baseURI,
|
148
|
+
/** @type {Range} */ (arg2.range),
|
149
|
+
[RuntimeGlobals.baseURI]
|
150
|
+
);
|
151
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
152
|
+
parser.state.module.addPresentationalDependency(dep);
|
153
|
+
|
154
|
+
return true;
|
155
|
+
}
|
156
|
+
}
|
103
157
|
|
104
158
|
const request = getUrlRequest(expr);
|
105
159
|
|
@@ -45,15 +45,14 @@ const WorkerDependency = require("./WorkerDependency");
|
|
45
45
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
46
46
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
47
47
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
48
|
+
/** @typedef {import("../util/createHash").Algorithm} Algorithm */
|
48
49
|
/** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
|
49
50
|
|
50
51
|
/**
|
51
52
|
* @param {NormalModule} module module
|
52
53
|
* @returns {string} url
|
53
54
|
*/
|
54
|
-
const getUrl = module =>
|
55
|
-
return pathToFileURL(module.resource).toString();
|
56
|
-
};
|
55
|
+
const getUrl = module => pathToFileURL(module.resource).toString();
|
57
56
|
|
58
57
|
const WorkerSpecifierTag = Symbol("worker specifier tag");
|
59
58
|
|
@@ -82,6 +81,7 @@ class WorkerPlugin {
|
|
82
81
|
this._module = module;
|
83
82
|
this._workerPublicPath = workerPublicPath;
|
84
83
|
}
|
84
|
+
|
85
85
|
/**
|
86
86
|
* Apply the plugin
|
87
87
|
* @param {Compiler} compiler the compiler instance
|
@@ -258,7 +258,7 @@ class WorkerPlugin {
|
|
258
258
|
}
|
259
259
|
|
260
260
|
/** @type {EntryOptions} */
|
261
|
-
|
261
|
+
const entryOptions = {};
|
262
262
|
|
263
263
|
if (importOptions) {
|
264
264
|
if (importOptions.webpackIgnore !== undefined) {
|
@@ -269,10 +269,8 @@ class WorkerPlugin {
|
|
269
269
|
/** @type {DependencyLocation} */ (expr.loc)
|
270
270
|
)
|
271
271
|
);
|
272
|
-
} else {
|
273
|
-
|
274
|
-
return false;
|
275
|
-
}
|
272
|
+
} else if (importOptions.webpackIgnore) {
|
273
|
+
return false;
|
276
274
|
}
|
277
275
|
}
|
278
276
|
if (importOptions.webpackEntryOptions !== undefined) {
|
@@ -316,16 +314,19 @@ class WorkerPlugin {
|
|
316
314
|
}
|
317
315
|
|
318
316
|
if (entryOptions.runtime === undefined) {
|
319
|
-
|
317
|
+
const i = workerIndexMap.get(parser.state) || 0;
|
320
318
|
workerIndexMap.set(parser.state, i + 1);
|
321
|
-
|
319
|
+
const name = `${cachedContextify(
|
322
320
|
parser.state.module.identifier()
|
323
321
|
)}|${i}`;
|
324
|
-
const hash = createHash(
|
325
|
-
|
326
|
-
|
327
|
-
hash.digest(compilation.outputOptions.hashDigest)
|
322
|
+
const hash = createHash(
|
323
|
+
/** @type {Algorithm} */
|
324
|
+
(compilation.outputOptions.hashFunction)
|
328
325
|
);
|
326
|
+
hash.update(name);
|
327
|
+
const digest =
|
328
|
+
/** @type {string} */
|
329
|
+
(hash.digest(compilation.outputOptions.hashDigest));
|
329
330
|
entryOptions.runtime = digest.slice(
|
330
331
|
0,
|
331
332
|
compilation.outputOptions.hashDigestLength
|
@@ -394,15 +395,13 @@ class WorkerPlugin {
|
|
394
395
|
dep2.loc = /** @type {DependencyLocation} */ (expr.loc);
|
395
396
|
parser.state.module.addPresentationalDependency(dep1);
|
396
397
|
parser.state.module.addPresentationalDependency(dep2);
|
397
|
-
} else if (insertType === "argument") {
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
parser.state.module.addPresentationalDependency(dep);
|
405
|
-
}
|
398
|
+
} else if (insertType === "argument" && this._module) {
|
399
|
+
const dep = new ConstDependency(
|
400
|
+
', { type: "module" }',
|
401
|
+
insertLocation
|
402
|
+
);
|
403
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
404
|
+
parser.state.module.addPresentationalDependency(dep);
|
406
405
|
}
|
407
406
|
|
408
407
|
parser.walkExpression(expr.callee);
|
@@ -482,7 +481,9 @@ class WorkerPlugin {
|
|
482
481
|
};
|
483
482
|
for (const item of options) {
|
484
483
|
if (item === "...") {
|
485
|
-
DEFAULT_SYNTAX
|
484
|
+
for (const itemFromDefault of DEFAULT_SYNTAX) {
|
485
|
+
processItem(itemFromDefault);
|
486
|
+
}
|
486
487
|
} else processItem(item);
|
487
488
|
}
|
488
489
|
};
|
@@ -10,9 +10,11 @@ const { UsageState } = require("../ExportsInfo");
|
|
10
10
|
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
11
11
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
12
12
|
|
13
|
+
/** @typedef {string[][]} ReferencedExports */
|
14
|
+
|
13
15
|
/**
|
14
16
|
* @param {RuntimeSpec} runtime the runtime
|
15
|
-
* @param {
|
17
|
+
* @param {ReferencedExports} referencedExports list of referenced exports, will be added to
|
16
18
|
* @param {string[]} prefix export prefix
|
17
19
|
* @param {ExportInfo=} exportInfo the export info
|
18
20
|
* @param {boolean} defaultPointsToSelf when true, using default will reference itself
|
@@ -58,9 +58,9 @@ class ModuleChunkFormatPlugin {
|
|
58
58
|
} else {
|
59
59
|
source.add(`export const id = ${JSON.stringify(chunk.id)};\n`);
|
60
60
|
source.add(`export const ids = ${JSON.stringify(chunk.ids)};\n`);
|
61
|
-
source.add(
|
61
|
+
source.add("export const modules = ");
|
62
62
|
source.add(modules);
|
63
|
-
source.add(
|
63
|
+
source.add(";\n");
|
64
64
|
const runtimeModules =
|
65
65
|
chunkGraph.getChunkRuntimeModulesInOrder(chunk);
|
66
66
|
if (runtimeModules.length > 0) {
|
@@ -103,7 +103,7 @@ class ModuleChunkFormatPlugin {
|
|
103
103
|
compilation.outputOptions
|
104
104
|
),
|
105
105
|
{
|
106
|
-
chunk
|
106
|
+
chunk,
|
107
107
|
contentHashType: "javascript"
|
108
108
|
}
|
109
109
|
)
|
@@ -17,6 +17,7 @@ const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
17
17
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
18
18
|
const { getUndoPath } = require("../util/identifier");
|
19
19
|
|
20
|
+
/** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
|
20
21
|
/** @typedef {import("../Chunk")} Chunk */
|
21
22
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
22
23
|
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
@@ -87,9 +88,12 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
87
88
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
88
89
|
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
89
90
|
const chunk = /** @type {Chunk} */ (this.chunk);
|
91
|
+
const environment =
|
92
|
+
/** @type {Environment} */
|
93
|
+
(compilation.outputOptions.environment);
|
90
94
|
const {
|
91
95
|
runtimeTemplate,
|
92
|
-
outputOptions: {
|
96
|
+
outputOptions: { importFunctionName, crossOriginLoading }
|
93
97
|
} = compilation;
|
94
98
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
95
99
|
const withBaseURI = this._runtimeRequirements.has(RuntimeGlobals.baseURI);
|
@@ -219,10 +223,10 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
219
223
|
]
|
220
224
|
)});`,
|
221
225
|
`var promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
|
222
|
-
|
226
|
+
"installedChunkData = installedChunks[chunkId] = [resolve]",
|
223
227
|
"resolve"
|
224
228
|
)})])`,
|
225
|
-
|
229
|
+
"promises.push(installedChunkData[1] = promise);"
|
226
230
|
]),
|
227
231
|
hasJsMatcher === true
|
228
232
|
? "}"
|
package/lib/formatLocation.js
CHANGED
@@ -48,9 +48,8 @@ const formatLocation = loc => {
|
|
48
48
|
typeof loc.end.column !== "number"
|
49
49
|
) {
|
50
50
|
return `${loc.start.line}-${loc.end.line}`;
|
51
|
-
} else {
|
52
|
-
return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`;
|
53
51
|
}
|
52
|
+
return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`;
|
54
53
|
}
|
55
54
|
if ("start" in loc && loc.start) {
|
56
55
|
return formatPosition(loc.start);
|
@@ -201,7 +201,7 @@ module.exports = function () {
|
|
201
201
|
if (idx >= 0) registeredStatusHandlers.splice(idx, 1);
|
202
202
|
},
|
203
203
|
|
204
|
-
//inherit from previous dispose call
|
204
|
+
// inherit from previous dispose call
|
205
205
|
data: currentModuleData[moduleId]
|
206
206
|
};
|
207
207
|
currentChildModule = undefined;
|
@@ -293,11 +293,10 @@ module.exports = function () {
|
|
293
293
|
return waitForBlockingPromises(function () {
|
294
294
|
if (applyOnUpdate) {
|
295
295
|
return internalApply(applyOnUpdate);
|
296
|
-
} else {
|
297
|
-
return setStatus("ready").then(function () {
|
298
|
-
return updatedModules;
|
299
|
-
});
|
300
296
|
}
|
297
|
+
return setStatus("ready").then(function () {
|
298
|
+
return updatedModules;
|
299
|
+
});
|
301
300
|
});
|
302
301
|
});
|
303
302
|
});
|
@@ -117,15 +117,12 @@ module.exports = function () {
|
|
117
117
|
if ($hasOwnProperty$(currentUpdate, moduleId)) {
|
118
118
|
var newModuleFactory = currentUpdate[moduleId];
|
119
119
|
/** @type {TODO} */
|
120
|
-
var result
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
moduleId: moduleId
|
127
|
-
};
|
128
|
-
}
|
120
|
+
var result = newModuleFactory
|
121
|
+
? getAffectedModuleEffects(moduleId)
|
122
|
+
: {
|
123
|
+
type: "disposed",
|
124
|
+
moduleId: moduleId
|
125
|
+
};
|
129
126
|
/** @type {Error|false} */
|
130
127
|
var abortError = false;
|
131
128
|
var doApply = false;
|
@@ -376,17 +373,17 @@ module.exports = function () {
|
|
376
373
|
moduleId: moduleId,
|
377
374
|
module: $moduleCache$[moduleId]
|
378
375
|
});
|
379
|
-
} catch (
|
376
|
+
} catch (err1) {
|
380
377
|
if (options.onErrored) {
|
381
378
|
options.onErrored({
|
382
379
|
type: "self-accept-error-handler-errored",
|
383
380
|
moduleId: moduleId,
|
384
|
-
error:
|
381
|
+
error: err1,
|
385
382
|
originalError: err
|
386
383
|
});
|
387
384
|
}
|
388
385
|
if (!options.ignoreErrored) {
|
389
|
-
reportError(
|
386
|
+
reportError(err1);
|
390
387
|
reportError(err);
|
391
388
|
}
|
392
389
|
}
|
@@ -37,10 +37,12 @@ const { registerNotSerializable } = require("../util/serialization");
|
|
37
37
|
/** @typedef {import("../util/Hash")} Hash */
|
38
38
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
39
39
|
|
40
|
+
/** @typedef {{ client: string, data: string, active: boolean }} ModuleResult */
|
41
|
+
|
40
42
|
/**
|
41
43
|
* @typedef {object} BackendApi
|
42
|
-
* @property {function(Error=): void} dispose
|
43
|
-
* @property {function(Module):
|
44
|
+
* @property {function(function((Error | null)=) : void): void} dispose
|
45
|
+
* @property {function(Module): ModuleResult} module
|
44
46
|
*/
|
45
47
|
|
46
48
|
const HMR_DEPENDENCY_TYPES = new Set([
|
@@ -53,7 +55,7 @@ const HMR_DEPENDENCY_TYPES = new Set([
|
|
53
55
|
/**
|
54
56
|
* @param {undefined|string|RegExp|Function} test test option
|
55
57
|
* @param {Module} module the module
|
56
|
-
* @returns {boolean} true, if the module should be selected
|
58
|
+
* @returns {boolean | null | string} true, if the module should be selected
|
57
59
|
*/
|
58
60
|
const checkTest = (test, module) => {
|
59
61
|
if (test === undefined) return true;
|
@@ -74,6 +76,9 @@ const checkTest = (test, module) => {
|
|
74
76
|
const TYPES = new Set(["javascript"]);
|
75
77
|
|
76
78
|
class LazyCompilationDependency extends Dependency {
|
79
|
+
/**
|
80
|
+
* @param {LazyCompilationProxyModule} proxyModule proxy module
|
81
|
+
*/
|
77
82
|
constructor(proxyModule) {
|
78
83
|
super();
|
79
84
|
this.proxyModule = proxyModule;
|
@@ -98,6 +103,14 @@ class LazyCompilationDependency extends Dependency {
|
|
98
103
|
registerNotSerializable(LazyCompilationDependency);
|
99
104
|
|
100
105
|
class LazyCompilationProxyModule extends Module {
|
106
|
+
/**
|
107
|
+
* @param {string} context context
|
108
|
+
* @param {Module} originalModule an original module
|
109
|
+
* @param {string} request request
|
110
|
+
* @param {ModuleResult["client"]} client client
|
111
|
+
* @param {ModuleResult["data"]} data data
|
112
|
+
* @param {ModuleResult["active"]} active true when active, otherwise false
|
113
|
+
*/
|
101
114
|
constructor(context, originalModule, request, client, data, active) {
|
102
115
|
super(
|
103
116
|
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY,
|
@@ -229,13 +242,13 @@ class LazyCompilationProxyModule extends Module {
|
|
229
242
|
]);
|
230
243
|
const keepActive = Template.asString([
|
231
244
|
`var dispose = client.keepAlive({ data: data, active: ${JSON.stringify(
|
232
|
-
|
245
|
+
Boolean(block)
|
233
246
|
)}, module: module, onError: onError });`
|
234
247
|
]);
|
235
248
|
let source;
|
236
249
|
if (block) {
|
237
250
|
const dep = block.dependencies[0];
|
238
|
-
const module = moduleGraph.getModule(dep);
|
251
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
239
252
|
source = Template.asString([
|
240
253
|
client,
|
241
254
|
`module.exports = ${runtimeTemplate.moduleNamespacePromise({
|
@@ -264,7 +277,7 @@ class LazyCompilationProxyModule extends Module {
|
|
264
277
|
source = Template.asString([
|
265
278
|
client,
|
266
279
|
"var resolveSelf, onError;",
|
267
|
-
|
280
|
+
"module.exports = new Promise(function(resolve, reject) { resolveSelf = resolve; onError = reject; });",
|
268
281
|
"if (module.hot) {",
|
269
282
|
Template.indent([
|
270
283
|
"module.hot.accept();",
|
@@ -297,9 +310,8 @@ class LazyCompilationProxyModule extends Module {
|
|
297
310
|
registerNotSerializable(LazyCompilationProxyModule);
|
298
311
|
|
299
312
|
class LazyCompilationDependencyFactory extends ModuleFactory {
|
300
|
-
constructor(
|
313
|
+
constructor() {
|
301
314
|
super();
|
302
|
-
this._factory = factory;
|
303
315
|
}
|
304
316
|
|
305
317
|
/**
|
@@ -320,10 +332,10 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
|
|
320
332
|
class LazyCompilationPlugin {
|
321
333
|
/**
|
322
334
|
* @param {object} options options
|
323
|
-
* @param {(function(Compiler, function(Error
|
335
|
+
* @param {(function(Compiler, function(Error=, BackendApi?): void): void) | function(Compiler): Promise<BackendApi>} options.backend the backend
|
324
336
|
* @param {boolean} options.entries true, when entries are lazy compiled
|
325
337
|
* @param {boolean} options.imports true, when import() modules are lazy compiled
|
326
|
-
* @param {RegExp | string | (function(Module): boolean)} options.test additional filter for lazy compiled entrypoint modules
|
338
|
+
* @param {RegExp | string | (function(Module): boolean) | undefined} options.test additional filter for lazy compiled entrypoint modules
|
327
339
|
*/
|
328
340
|
constructor({ backend, entries, imports, test }) {
|
329
341
|
this.backend = backend;
|
@@ -331,12 +343,14 @@ class LazyCompilationPlugin {
|
|
331
343
|
this.imports = imports;
|
332
344
|
this.test = test;
|
333
345
|
}
|
346
|
+
|
334
347
|
/**
|
335
348
|
* Apply the plugin
|
336
349
|
* @param {Compiler} compiler the compiler instance
|
337
350
|
* @returns {void}
|
338
351
|
*/
|
339
352
|
apply(compiler) {
|
353
|
+
/** @type {BackendApi} */
|
340
354
|
let backend;
|
341
355
|
compiler.hooks.beforeCompile.tapAsync(
|
342
356
|
"LazyCompilationPlugin",
|
@@ -344,7 +358,7 @@ class LazyCompilationPlugin {
|
|
344
358
|
if (backend !== undefined) return callback();
|
345
359
|
const promise = this.backend(compiler, (err, result) => {
|
346
360
|
if (err) return callback(err);
|
347
|
-
backend = result;
|
361
|
+
backend = /** @type {BackendApi} */ (result);
|
348
362
|
callback();
|
349
363
|
});
|
350
364
|
if (promise && promise.then) {
|
@@ -370,7 +384,8 @@ class LazyCompilationPlugin {
|
|
370
384
|
// an import() or not
|
371
385
|
const hmrDep = resolveData.dependencies[0];
|
372
386
|
const originModule =
|
373
|
-
|
387
|
+
/** @type {Module} */
|
388
|
+
(compilation.moduleGraph.getParentModule(hmrDep));
|
374
389
|
const isReferringToDynamicImport = originModule.blocks.some(
|
375
390
|
block =>
|
376
391
|
block.dependencies.some(
|