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
package/lib/WatchIgnorePlugin.js
CHANGED
@@ -9,9 +9,12 @@ const { groupBy } = require("./util/ArrayHelpers");
|
|
9
9
|
const createSchemaValidation = require("./util/create-schema-validation");
|
10
10
|
|
11
11
|
/** @typedef {import("../declarations/plugins/WatchIgnorePlugin").WatchIgnorePluginOptions} WatchIgnorePluginOptions */
|
12
|
+
/** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
|
12
13
|
/** @typedef {import("./Compiler")} Compiler */
|
14
|
+
/** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
|
13
15
|
/** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
|
14
|
-
|
16
|
+
/** @typedef {import("./util/fs").WatchMethod} WatchMethod */
|
17
|
+
/** @typedef {import("./util/fs").Watcher} Watcher */
|
15
18
|
const validate = createSchemaValidation(
|
16
19
|
require("../schemas/plugins/WatchIgnorePlugin.check.js"),
|
17
20
|
() => require("../schemas/plugins/WatchIgnorePlugin.json"),
|
@@ -26,13 +29,14 @@ const IGNORE_TIME_ENTRY = "ignore";
|
|
26
29
|
class IgnoringWatchFileSystem {
|
27
30
|
/**
|
28
31
|
* @param {WatchFileSystem} wfs original file system
|
29
|
-
* @param {
|
32
|
+
* @param {WatchIgnorePluginOptions["paths"]} paths ignored paths
|
30
33
|
*/
|
31
34
|
constructor(wfs, paths) {
|
32
35
|
this.wfs = wfs;
|
33
36
|
this.paths = paths;
|
34
37
|
}
|
35
38
|
|
39
|
+
/** @type {WatchMethod} */
|
36
40
|
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
37
41
|
files = Array.from(files);
|
38
42
|
dirs = Array.from(dirs);
|
@@ -45,8 +49,16 @@ class IgnoringWatchFileSystem {
|
|
45
49
|
p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0
|
46
50
|
);
|
47
51
|
|
48
|
-
const [ignoredFiles, notIgnoredFiles] = groupBy(
|
49
|
-
|
52
|
+
const [ignoredFiles, notIgnoredFiles] = groupBy(
|
53
|
+
/** @type {Array<string>} */
|
54
|
+
(files),
|
55
|
+
ignored
|
56
|
+
);
|
57
|
+
const [ignoredDirs, notIgnoredDirs] = groupBy(
|
58
|
+
/** @type {Array<string>} */
|
59
|
+
(dirs),
|
60
|
+
ignored
|
61
|
+
);
|
50
62
|
|
51
63
|
const watcher = this.wfs.watch(
|
52
64
|
notIgnoredFiles,
|
@@ -57,15 +69,17 @@ class IgnoringWatchFileSystem {
|
|
57
69
|
(err, fileTimestamps, dirTimestamps, changedFiles, removedFiles) => {
|
58
70
|
if (err) return callback(err);
|
59
71
|
for (const path of ignoredFiles) {
|
60
|
-
|
72
|
+
/** @type {TimeInfoEntries} */
|
73
|
+
(fileTimestamps).set(path, IGNORE_TIME_ENTRY);
|
61
74
|
}
|
62
75
|
|
63
76
|
for (const path of ignoredDirs) {
|
64
|
-
|
77
|
+
/** @type {TimeInfoEntries} */
|
78
|
+
(dirTimestamps).set(path, IGNORE_TIME_ENTRY);
|
65
79
|
}
|
66
80
|
|
67
81
|
callback(
|
68
|
-
|
82
|
+
null,
|
69
83
|
fileTimestamps,
|
70
84
|
dirTimestamps,
|
71
85
|
changedFiles,
|
@@ -95,7 +109,9 @@ class IgnoringWatchFileSystem {
|
|
95
109
|
getInfo:
|
96
110
|
watcher.getInfo &&
|
97
111
|
(() => {
|
98
|
-
const info =
|
112
|
+
const info =
|
113
|
+
/** @type {NonNullable<Watcher["getInfo"]>} */
|
114
|
+
(watcher.getInfo)();
|
99
115
|
const { fileTimeInfoEntries, contextTimeInfoEntries } = info;
|
100
116
|
for (const path of ignoredFiles) {
|
101
117
|
fileTimeInfoEntries.set(path, IGNORE_TIME_ENTRY);
|
@@ -126,7 +142,8 @@ class WatchIgnorePlugin {
|
|
126
142
|
apply(compiler) {
|
127
143
|
compiler.hooks.afterEnvironment.tap("WatchIgnorePlugin", () => {
|
128
144
|
compiler.watchFileSystem = new IgnoringWatchFileSystem(
|
129
|
-
|
145
|
+
/** @type {WatchFileSystem} */
|
146
|
+
(compiler.watchFileSystem),
|
130
147
|
this.paths
|
131
148
|
);
|
132
149
|
});
|
package/lib/Watching.js
CHANGED
@@ -13,7 +13,9 @@ const Stats = require("./Stats");
|
|
13
13
|
/** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
|
14
14
|
/** @typedef {import("./WebpackError")} WebpackError */
|
15
15
|
/** @typedef {import("./logging/Logger").Logger} Logger */
|
16
|
+
/** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
|
16
17
|
/** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
|
18
|
+
/** @typedef {import("./util/fs").Watcher} Watcher */
|
17
19
|
|
18
20
|
/**
|
19
21
|
* @template T
|
@@ -43,12 +45,15 @@ class Watching {
|
|
43
45
|
this._onChange = () => {};
|
44
46
|
this._onInvalid = () => {};
|
45
47
|
if (typeof watchOptions === "number") {
|
48
|
+
/** @type {WatchOptions} */
|
46
49
|
this.watchOptions = {
|
47
50
|
aggregateTimeout: watchOptions
|
48
51
|
};
|
49
52
|
} else if (watchOptions && typeof watchOptions === "object") {
|
53
|
+
/** @type {WatchOptions} */
|
50
54
|
this.watchOptions = { ...watchOptions };
|
51
55
|
} else {
|
56
|
+
/** @type {WatchOptions} */
|
52
57
|
this.watchOptions = {};
|
53
58
|
}
|
54
59
|
if (typeof this.watchOptions.aggregateTimeout !== "number") {
|
@@ -95,8 +100,8 @@ class Watching {
|
|
95
100
|
}
|
96
101
|
|
97
102
|
/**
|
98
|
-
* @param {
|
99
|
-
* @param {
|
103
|
+
* @param {TimeInfoEntries=} fileTimeInfoEntries info for files
|
104
|
+
* @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
|
100
105
|
* @param {ReadonlySet<string>=} changedFiles changed files
|
101
106
|
* @param {ReadonlySet<string>=} removedFiles removed files
|
102
107
|
* @returns {void}
|
@@ -255,7 +260,7 @@ class Watching {
|
|
255
260
|
(compilation && compilation.getLogger("webpack.Watching"));
|
256
261
|
|
257
262
|
/** @type {Stats | undefined} */
|
258
|
-
let stats
|
263
|
+
let stats;
|
259
264
|
|
260
265
|
/**
|
261
266
|
* @param {Error} err error
|
@@ -406,8 +411,8 @@ class Watching {
|
|
406
411
|
}
|
407
412
|
|
408
413
|
/**
|
409
|
-
* @param {
|
410
|
-
* @param {
|
414
|
+
* @param {TimeInfoEntries=} fileTimeInfoEntries info for files
|
415
|
+
* @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
|
411
416
|
* @param {ReadonlySet<string>=} changedFiles changed files
|
412
417
|
* @param {ReadonlySet<string>=} removedFiles removed files
|
413
418
|
* @returns {void}
|
@@ -71,13 +71,13 @@ class WebpackOptionsApply extends OptionsApply {
|
|
71
71
|
* @returns {WebpackOptions} options object
|
72
72
|
*/
|
73
73
|
process(options, compiler) {
|
74
|
-
compiler.outputPath = options.output.path;
|
74
|
+
compiler.outputPath = /** @type {string} */ (options.output.path);
|
75
75
|
compiler.recordsInputPath = options.recordsInputPath || null;
|
76
76
|
compiler.recordsOutputPath = options.recordsOutputPath || null;
|
77
77
|
compiler.name = options.name;
|
78
78
|
|
79
79
|
if (options.externals) {
|
80
|
-
|
80
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
81
81
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
82
82
|
new ExternalsPlugin(options.externalsType, options.externals).apply(
|
83
83
|
compiler
|
@@ -89,17 +89,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
89
89
|
new NodeTargetPlugin().apply(compiler);
|
90
90
|
}
|
91
91
|
if (options.externalsPresets.electronMain) {
|
92
|
-
|
92
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
93
93
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
94
94
|
new ElectronTargetPlugin("main").apply(compiler);
|
95
95
|
}
|
96
96
|
if (options.externalsPresets.electronPreload) {
|
97
|
-
|
97
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
98
98
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
99
99
|
new ElectronTargetPlugin("preload").apply(compiler);
|
100
100
|
}
|
101
101
|
if (options.externalsPresets.electronRenderer) {
|
102
|
-
|
102
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
103
103
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
104
104
|
new ElectronTargetPlugin("renderer").apply(compiler);
|
105
105
|
}
|
@@ -109,17 +109,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
109
109
|
!options.externalsPresets.electronPreload &&
|
110
110
|
!options.externalsPresets.electronRenderer
|
111
111
|
) {
|
112
|
-
|
112
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
113
113
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
114
114
|
new ElectronTargetPlugin().apply(compiler);
|
115
115
|
}
|
116
116
|
if (options.externalsPresets.nwjs) {
|
117
|
-
|
117
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
118
118
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
119
119
|
new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
|
120
120
|
}
|
121
121
|
if (options.externalsPresets.webAsync) {
|
122
|
-
|
122
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
123
123
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
124
124
|
new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
|
125
125
|
if (dependencyType === "url") {
|
@@ -139,7 +139,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
139
139
|
callback();
|
140
140
|
}).apply(compiler);
|
141
141
|
} else if (options.externalsPresets.web) {
|
142
|
-
|
142
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
143
143
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
144
144
|
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
145
145
|
if (dependencyType === "url") {
|
@@ -155,28 +155,23 @@ class WebpackOptionsApply extends OptionsApply {
|
|
155
155
|
}
|
156
156
|
callback();
|
157
157
|
}).apply(compiler);
|
158
|
-
} else if (options.externalsPresets.node) {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
}
|
176
|
-
callback();
|
177
|
-
}
|
178
|
-
).apply(compiler);
|
179
|
-
}
|
158
|
+
} else if (options.externalsPresets.node && options.experiments.css) {
|
159
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
160
|
+
const ExternalsPlugin = require("./ExternalsPlugin");
|
161
|
+
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
162
|
+
if (dependencyType === "url") {
|
163
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
164
|
+
return callback(null, `asset ${request}`);
|
165
|
+
} else if (dependencyType === "css-import") {
|
166
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
167
|
+
return callback(null, `css-import ${request}`);
|
168
|
+
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
169
|
+
if (/^\.css(\?|$)/.test(request))
|
170
|
+
return callback(null, `css-import ${request}`);
|
171
|
+
return callback(null, `module ${request}`);
|
172
|
+
}
|
173
|
+
callback();
|
174
|
+
}).apply(compiler);
|
180
175
|
}
|
181
176
|
|
182
177
|
new ChunkPrefetchPreloadPlugin().apply(compiler);
|
@@ -200,27 +195,39 @@ class WebpackOptionsApply extends OptionsApply {
|
|
200
195
|
}
|
201
196
|
default:
|
202
197
|
throw new Error(
|
203
|
-
|
198
|
+
`Unsupported chunk format '${options.output.chunkFormat}'.`
|
204
199
|
);
|
205
200
|
}
|
206
201
|
}
|
207
202
|
|
208
|
-
|
209
|
-
|
203
|
+
const enabledChunkLoadingTypes =
|
204
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledChunkLoadingTypes"]>} */
|
205
|
+
(options.output.enabledChunkLoadingTypes);
|
206
|
+
|
207
|
+
if (enabledChunkLoadingTypes.length > 0) {
|
208
|
+
for (const type of enabledChunkLoadingTypes) {
|
210
209
|
const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
|
211
210
|
new EnableChunkLoadingPlugin(type).apply(compiler);
|
212
211
|
}
|
213
212
|
}
|
214
213
|
|
215
|
-
|
216
|
-
|
214
|
+
const enabledWasmLoadingTypes =
|
215
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledWasmLoadingTypes"]>} */
|
216
|
+
(options.output.enabledWasmLoadingTypes);
|
217
|
+
|
218
|
+
if (enabledWasmLoadingTypes.length > 0) {
|
219
|
+
for (const type of enabledWasmLoadingTypes) {
|
217
220
|
const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
|
218
221
|
new EnableWasmLoadingPlugin(type).apply(compiler);
|
219
222
|
}
|
220
223
|
}
|
221
224
|
|
222
|
-
|
223
|
-
|
225
|
+
const enabledLibraryTypes =
|
226
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledLibraryTypes"]>} */
|
227
|
+
(options.output.enabledLibraryTypes);
|
228
|
+
|
229
|
+
if (enabledLibraryTypes.length > 0) {
|
230
|
+
for (const type of enabledLibraryTypes) {
|
224
231
|
const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
|
225
232
|
new EnableLibraryPlugin(type).apply(compiler);
|
226
233
|
}
|
@@ -257,9 +264,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
257
264
|
fallbackModuleFilenameTemplate:
|
258
265
|
options.output.devtoolFallbackModuleFilenameTemplate,
|
259
266
|
append: hidden ? false : undefined,
|
260
|
-
module: moduleMaps ? true : cheap
|
261
|
-
columns: cheap
|
262
|
-
noSources
|
267
|
+
module: moduleMaps ? true : !cheap,
|
268
|
+
columns: !cheap,
|
269
|
+
noSources,
|
263
270
|
namespace: options.output.devtoolNamespace
|
264
271
|
}).apply(compiler);
|
265
272
|
} else if (options.devtool.includes("eval")) {
|
@@ -291,7 +298,10 @@ class WebpackOptionsApply extends OptionsApply {
|
|
291
298
|
"library type \"modern-module\" is only allowed when 'experiments.outputModule' is enabled"
|
292
299
|
);
|
293
300
|
}
|
294
|
-
if (
|
301
|
+
if (
|
302
|
+
options.externalsType === "module" ||
|
303
|
+
options.externalsType === "module-import"
|
304
|
+
) {
|
295
305
|
throw new Error(
|
296
306
|
"'externalsType: \"module\"' is only allowed when 'experiments.outputModule' is enabled"
|
297
307
|
);
|
@@ -322,7 +332,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
322
332
|
const lazyOptions =
|
323
333
|
typeof options.experiments.lazyCompilation === "object"
|
324
334
|
? options.experiments.lazyCompilation
|
325
|
-
:
|
335
|
+
: {};
|
326
336
|
new LazyCompilationPlugin({
|
327
337
|
backend:
|
328
338
|
typeof lazyOptions.backend === "function"
|
@@ -350,7 +360,11 @@ class WebpackOptionsApply extends OptionsApply {
|
|
350
360
|
}
|
351
361
|
|
352
362
|
new EntryOptionPlugin().apply(compiler);
|
353
|
-
compiler.hooks.entryOption.call(
|
363
|
+
compiler.hooks.entryOption.call(
|
364
|
+
/** @type {string} */
|
365
|
+
(options.context),
|
366
|
+
options.entry
|
367
|
+
);
|
354
368
|
|
355
369
|
new RuntimePlugin().apply(compiler);
|
356
370
|
|
@@ -545,7 +559,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
545
559
|
break;
|
546
560
|
}
|
547
561
|
case "size": {
|
548
|
-
|
562
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
549
563
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
550
564
|
new OccurrenceChunkIdsPlugin({
|
551
565
|
prioritiseInitial: true
|
@@ -553,7 +567,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
553
567
|
break;
|
554
568
|
}
|
555
569
|
case "total-size": {
|
556
|
-
|
570
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
557
571
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
558
572
|
new OccurrenceChunkIdsPlugin({
|
559
573
|
prioritiseInitial: false
|
@@ -597,23 +611,28 @@ class WebpackOptionsApply extends OptionsApply {
|
|
597
611
|
|
598
612
|
const AddManagedPathsPlugin = require("./cache/AddManagedPathsPlugin");
|
599
613
|
new AddManagedPathsPlugin(
|
600
|
-
|
601
|
-
options.snapshot.
|
602
|
-
|
614
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
615
|
+
(options.snapshot.managedPaths),
|
616
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
617
|
+
(options.snapshot.immutablePaths),
|
618
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
619
|
+
(options.snapshot.unmanagedPaths)
|
603
620
|
).apply(compiler);
|
604
621
|
|
605
622
|
if (options.cache && typeof options.cache === "object") {
|
606
623
|
const cacheOptions = options.cache;
|
607
624
|
switch (cacheOptions.type) {
|
608
625
|
case "memory": {
|
609
|
-
if (isFinite(cacheOptions.maxGenerations)) {
|
610
|
-
|
626
|
+
if (Number.isFinite(cacheOptions.maxGenerations)) {
|
627
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
611
628
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
612
629
|
new MemoryWithGcCachePlugin({
|
613
|
-
maxGenerations:
|
630
|
+
maxGenerations:
|
631
|
+
/** @type {number} */
|
632
|
+
(cacheOptions.maxGenerations)
|
614
633
|
}).apply(compiler);
|
615
634
|
} else {
|
616
|
-
|
635
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
617
636
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
618
637
|
new MemoryCachePlugin().apply(compiler);
|
619
638
|
}
|
@@ -629,16 +648,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
629
648
|
}
|
630
649
|
case "filesystem": {
|
631
650
|
const AddBuildDependenciesPlugin = require("./cache/AddBuildDependenciesPlugin");
|
651
|
+
// eslint-disable-next-line guard-for-in
|
632
652
|
for (const key in cacheOptions.buildDependencies) {
|
633
653
|
const list = cacheOptions.buildDependencies[key];
|
634
654
|
new AddBuildDependenciesPlugin(list).apply(compiler);
|
635
655
|
}
|
636
|
-
if (!isFinite(cacheOptions.maxMemoryGenerations)) {
|
637
|
-
|
656
|
+
if (!Number.isFinite(cacheOptions.maxMemoryGenerations)) {
|
657
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
638
658
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
639
659
|
new MemoryCachePlugin().apply(compiler);
|
640
660
|
} else if (cacheOptions.maxMemoryGenerations !== 0) {
|
641
|
-
|
661
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
642
662
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
643
663
|
new MemoryWithGcCachePlugin({
|
644
664
|
maxGenerations: cacheOptions.maxMemoryGenerations
|
@@ -659,17 +679,19 @@ class WebpackOptionsApply extends OptionsApply {
|
|
659
679
|
new IdleFileCachePlugin(
|
660
680
|
new PackFileCacheStrategy({
|
661
681
|
compiler,
|
662
|
-
fs:
|
663
|
-
|
664
|
-
|
665
|
-
context: options.context,
|
666
|
-
cacheLocation:
|
682
|
+
fs:
|
683
|
+
/** @type {IntermediateFileSystem} */
|
684
|
+
(compiler.intermediateFileSystem),
|
685
|
+
context: /** @type {string} */ (options.context),
|
686
|
+
cacheLocation:
|
687
|
+
/** @type {string} */
|
688
|
+
(cacheOptions.cacheLocation),
|
667
689
|
version: cacheOptions.version,
|
668
690
|
logger: compiler.getInfrastructureLogger(
|
669
691
|
"webpack.cache.PackFileCacheStrategy"
|
670
692
|
),
|
671
693
|
snapshot: options.snapshot,
|
672
|
-
maxAge: cacheOptions.maxAge,
|
694
|
+
maxAge: /** @type {number} */ (cacheOptions.maxAge),
|
673
695
|
profile: cacheOptions.profile,
|
674
696
|
allowCollectingMemory: cacheOptions.allowCollectingMemory,
|
675
697
|
compression: cacheOptions.compression,
|