webpack 5.92.1 → 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 +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- 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 +132 -70
- 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/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -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 +39 -40
- package/lib/css/CssGenerator.js +11 -14
- 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 +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- 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 +41 -16
- 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 +11 -12
- 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 +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- 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 +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- 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 +144 -61
- 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 +56 -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/ChunkPrefetchPreloadPlugin.js +1 -0
- 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/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- 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 +10 -13
- 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 +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- 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 +682 -347
@@ -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
|
@@ -16,6 +16,7 @@ const {
|
|
16
16
|
getChunkFilenameTemplate
|
17
17
|
} = require("../javascript/JavascriptModulesPlugin");
|
18
18
|
const { updateHashForEntryStartup } = require("../javascript/StartupHelpers");
|
19
|
+
const { getUndoPath } = require("../util/identifier");
|
19
20
|
|
20
21
|
/** @typedef {import("../Chunk")} Chunk */
|
21
22
|
/** @typedef {import("../Compiler")} Compiler */
|
@@ -57,9 +58,9 @@ class ModuleChunkFormatPlugin {
|
|
57
58
|
} else {
|
58
59
|
source.add(`export const id = ${JSON.stringify(chunk.id)};\n`);
|
59
60
|
source.add(`export const ids = ${JSON.stringify(chunk.ids)};\n`);
|
60
|
-
source.add(
|
61
|
+
source.add("export const modules = ");
|
61
62
|
source.add(modules);
|
62
|
-
source.add(
|
63
|
+
source.add(";\n");
|
63
64
|
const runtimeModules =
|
64
65
|
chunkGraph.getChunkRuntimeModulesInOrder(chunk);
|
65
66
|
if (runtimeModules.length > 0) {
|
@@ -86,11 +87,9 @@ class ModuleChunkFormatPlugin {
|
|
86
87
|
contentHashType: "javascript"
|
87
88
|
}
|
88
89
|
)
|
90
|
+
.replace(/^\/+/g, "")
|
89
91
|
.split("/");
|
90
92
|
|
91
|
-
// remove filename, we only need the directory
|
92
|
-
currentOutputName.pop();
|
93
|
-
|
94
93
|
/**
|
95
94
|
* @param {Chunk} chunk the chunk
|
96
95
|
* @returns {string} the relative path
|
@@ -104,26 +103,26 @@ class ModuleChunkFormatPlugin {
|
|
104
103
|
compilation.outputOptions
|
105
104
|
),
|
106
105
|
{
|
107
|
-
chunk
|
106
|
+
chunk,
|
108
107
|
contentHashType: "javascript"
|
109
108
|
}
|
110
109
|
)
|
110
|
+
.replace(/^\/+/g, "")
|
111
111
|
.split("/");
|
112
112
|
|
113
|
-
// remove common parts
|
113
|
+
// remove common parts except filename
|
114
114
|
while (
|
115
|
-
baseOutputName.length >
|
116
|
-
chunkOutputName.length >
|
115
|
+
baseOutputName.length > 1 &&
|
116
|
+
chunkOutputName.length > 1 &&
|
117
117
|
baseOutputName[0] === chunkOutputName[0]
|
118
118
|
) {
|
119
119
|
baseOutputName.shift();
|
120
120
|
chunkOutputName.shift();
|
121
121
|
}
|
122
|
+
const last = chunkOutputName.join("/");
|
122
123
|
// create final path
|
123
124
|
return (
|
124
|
-
(baseOutputName.
|
125
|
-
? "../".repeat(baseOutputName.length)
|
126
|
-
: "./") + chunkOutputName.join("/")
|
125
|
+
getUndoPath(baseOutputName.join("/"), last, true) + last
|
127
126
|
);
|
128
127
|
};
|
129
128
|
|
@@ -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(
|
@@ -5,15 +5,22 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("http").IncomingMessage} IncomingMessage */
|
9
|
+
/** @typedef {import("http").RequestListener} RequestListener */
|
8
10
|
/** @typedef {import("http").ServerOptions} HttpServerOptions */
|
11
|
+
/** @typedef {import("http").ServerResponse} ServerResponse */
|
9
12
|
/** @typedef {import("https").ServerOptions} HttpsServerOptions */
|
13
|
+
/** @typedef {import("net").AddressInfo} AddressInfo */
|
14
|
+
/** @typedef {import("net").Server} Server */
|
10
15
|
/** @typedef {import("../../declarations/WebpackOptions").LazyCompilationDefaultBackendOptions} LazyCompilationDefaultBackendOptions */
|
11
16
|
/** @typedef {import("../Compiler")} Compiler */
|
17
|
+
/** @typedef {import("../Module")} Module */
|
18
|
+
/** @typedef {import("./LazyCompilationPlugin").BackendApi} BackendApi */
|
12
19
|
|
13
20
|
/**
|
14
21
|
* @callback BackendHandler
|
15
22
|
* @param {Compiler} compiler compiler
|
16
|
-
* @param {function(
|
23
|
+
* @param {function(Error | null, BackendApi=): void} callback callback
|
17
24
|
* @returns {void}
|
18
25
|
*/
|
19
26
|
|
@@ -36,8 +43,13 @@ module.exports = options => (compiler, callback) => {
|
|
36
43
|
? options.server
|
37
44
|
: (() => {
|
38
45
|
const http = isHttps ? require("https") : require("http");
|
39
|
-
return http.createServer.bind(
|
46
|
+
return http.createServer.bind(
|
47
|
+
http,
|
48
|
+
/** @type {HttpServerOptions | HttpsServerOptions} */
|
49
|
+
(options.server)
|
50
|
+
);
|
40
51
|
})();
|
52
|
+
/** @type {function(Server): void} */
|
41
53
|
const listen =
|
42
54
|
typeof options.listen === "function"
|
43
55
|
? options.listen
|
@@ -50,7 +62,9 @@ module.exports = options => (compiler, callback) => {
|
|
50
62
|
|
51
63
|
const protocol = options.protocol || (isHttps ? "https" : "http");
|
52
64
|
|
65
|
+
/** @type {RequestListener} */
|
53
66
|
const requestListener = (req, res) => {
|
67
|
+
if (req.url === undefined) return;
|
54
68
|
const keys = req.url.slice(prefix.length).split("@");
|
55
69
|
req.socket.on("close", () => {
|
56
70
|
setTimeout(() => {
|
@@ -85,7 +99,7 @@ module.exports = options => (compiler, callback) => {
|
|
85
99
|
if (moduleActivated && compiler.watching) compiler.watching.invalidate();
|
86
100
|
};
|
87
101
|
|
88
|
-
const server = /** @type {
|
102
|
+
const server = /** @type {Server} */ (createServer());
|
89
103
|
server.on("request", requestListener);
|
90
104
|
|
91
105
|
let isClosing = false;
|
@@ -101,43 +115,53 @@ module.exports = options => (compiler, callback) => {
|
|
101
115
|
server.on("clientError", e => {
|
102
116
|
if (e.message !== "Server is disposing") logger.warn(e);
|
103
117
|
});
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
}
|
125
|
-
|
126
|
-
|
118
|
+
|
119
|
+
server.on(
|
120
|
+
"listening",
|
121
|
+
/**
|
122
|
+
* @param {Error} err error
|
123
|
+
* @returns {void}
|
124
|
+
*/
|
125
|
+
err => {
|
126
|
+
if (err) return callback(err);
|
127
|
+
const _addr = server.address();
|
128
|
+
if (typeof _addr === "string")
|
129
|
+
throw new Error("addr must not be a string");
|
130
|
+
const addr = /** @type {AddressInfo} */ (_addr);
|
131
|
+
const urlBase =
|
132
|
+
addr.address === "::" || addr.address === "0.0.0.0"
|
133
|
+
? `${protocol}://localhost:${addr.port}`
|
134
|
+
: addr.family === "IPv6"
|
135
|
+
? `${protocol}://[${addr.address}]:${addr.port}`
|
136
|
+
: `${protocol}://${addr.address}:${addr.port}`;
|
137
|
+
logger.log(
|
138
|
+
`Server-Sent-Events server for lazy compilation open at ${urlBase}.`
|
139
|
+
);
|
140
|
+
callback(null, {
|
141
|
+
dispose(callback) {
|
142
|
+
isClosing = true;
|
143
|
+
// Removing the listener is a workaround for a memory leak in node.js
|
144
|
+
server.off("request", requestListener);
|
145
|
+
server.close(err => {
|
146
|
+
callback(err);
|
147
|
+
});
|
148
|
+
for (const socket of sockets) {
|
149
|
+
socket.destroy(new Error("Server is disposing"));
|
150
|
+
}
|
151
|
+
},
|
152
|
+
module(originalModule) {
|
153
|
+
const key = `${encodeURIComponent(
|
154
|
+
originalModule.identifier().replace(/\\/g, "/").replace(/@/g, "_")
|
155
|
+
).replace(/%(2F|3A|24|26|2B|2C|3B|3D)/g, decodeURIComponent)}`;
|
156
|
+
const active = activeModules.get(key) > 0;
|
157
|
+
return {
|
158
|
+
client: `${options.client}?${encodeURIComponent(urlBase + prefix)}`,
|
159
|
+
data: key,
|
160
|
+
active
|
161
|
+
};
|
127
162
|
}
|
128
|
-
}
|
129
|
-
|
130
|
-
|
131
|
-
originalModule.identifier().replace(/\\/g, "/").replace(/@/g, "_")
|
132
|
-
).replace(/%(2F|3A|24|26|2B|2C|3B|3D|3A)/g, decodeURIComponent)}`;
|
133
|
-
const active = activeModules.get(key) > 0;
|
134
|
-
return {
|
135
|
-
client: `${options.client}?${encodeURIComponent(urlBase + prefix)}`,
|
136
|
-
data: key,
|
137
|
-
active
|
138
|
-
};
|
139
|
-
}
|
140
|
-
});
|
141
|
-
});
|
163
|
+
});
|
164
|
+
}
|
165
|
+
);
|
142
166
|
listen(server);
|
143
167
|
};
|
@@ -70,9 +70,7 @@ class ChunkModuleIdRangePlugin {
|
|
70
70
|
chunkModules = chunkGraph.getOrderedChunkModules(chunk, cmpFn);
|
71
71
|
} else {
|
72
72
|
chunkModules = Array.from(modules)
|
73
|
-
.filter(m =>
|
74
|
-
return chunkGraph.isModuleInChunk(m, chunk);
|
75
|
-
})
|
73
|
+
.filter(m => chunkGraph.isModuleInChunk(m, chunk))
|
76
74
|
.sort(compareModulesByPreOrderIndexOrIdentifier(moduleGraph));
|
77
75
|
}
|
78
76
|
|
@@ -51,9 +51,7 @@ class DeterministicChunkIdsPlugin {
|
|
51
51
|
|
52
52
|
const usedIds = getUsedChunkIds(compilation);
|
53
53
|
assignDeterministicIds(
|
54
|
-
Array.from(chunks).filter(chunk =>
|
55
|
-
return chunk.id === null;
|
56
|
-
}),
|
54
|
+
Array.from(chunks).filter(chunk => chunk.id === null),
|
57
55
|
chunk =>
|
58
56
|
getFullChunkName(chunk, chunkGraph, context, compiler.root),
|
59
57
|
compareNatural,
|
@@ -65,7 +63,7 @@ class DeterministicChunkIdsPlugin {
|
|
65
63
|
chunk.ids = [id];
|
66
64
|
return true;
|
67
65
|
},
|
68
|
-
[
|
66
|
+
[10 ** maxLength],
|
69
67
|
10,
|
70
68
|
usedIds.size
|
71
69
|
);
|
@@ -64,7 +64,11 @@ class HashedModuleIdsPlugin {
|
|
64
64
|
);
|
65
65
|
for (const module of modulesInNaturalOrder) {
|
66
66
|
const ident = getFullModuleName(module, context, compiler.root);
|
67
|
-
const hash = createHash(
|
67
|
+
const hash = createHash(
|
68
|
+
/** @type {NonNullable<HashedModuleIdsPluginOptions["hashFunction"]>} */ (
|
69
|
+
options.hashFunction
|
70
|
+
)
|
71
|
+
);
|
68
72
|
hash.update(ident || "");
|
69
73
|
const hashId = /** @type {string} */ (
|
70
74
|
hash.digest(options.hashDigest)
|