webpack 5.98.0 → 5.99.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.
Files changed (251) hide show
  1. package/README.md +7 -3
  2. package/lib/AsyncDependenciesBlock.js +3 -1
  3. package/lib/BannerPlugin.js +1 -1
  4. package/lib/Cache.js +9 -7
  5. package/lib/CacheFacade.js +5 -5
  6. package/lib/Chunk.js +2 -2
  7. package/lib/ChunkGraph.js +21 -16
  8. package/lib/ChunkTemplate.js +6 -6
  9. package/lib/CleanPlugin.js +10 -10
  10. package/lib/CodeGenerationResults.js +4 -3
  11. package/lib/CompatibilityPlugin.js +4 -1
  12. package/lib/Compilation.js +326 -152
  13. package/lib/Compiler.js +13 -18
  14. package/lib/ConditionalInitFragment.js +1 -1
  15. package/lib/ConstPlugin.js +5 -3
  16. package/lib/ContextModule.js +4 -2
  17. package/lib/ContextModuleFactory.js +3 -3
  18. package/lib/ContextReplacementPlugin.js +43 -16
  19. package/lib/DefinePlugin.js +25 -24
  20. package/lib/DelegatedModule.js +4 -2
  21. package/lib/DelegatedModuleFactoryPlugin.js +2 -1
  22. package/lib/Dependency.js +19 -13
  23. package/lib/DependencyTemplates.js +4 -3
  24. package/lib/DllModule.js +4 -2
  25. package/lib/DllModuleFactory.js +2 -2
  26. package/lib/DllReferencePlugin.js +2 -1
  27. package/lib/DynamicEntryPlugin.js +1 -1
  28. package/lib/EnvironmentPlugin.js +4 -2
  29. package/lib/ExportsInfo.js +72 -40
  30. package/lib/ExternalModule.js +14 -5
  31. package/lib/ExternalModuleFactoryPlugin.js +24 -12
  32. package/lib/FileSystemInfo.js +129 -94
  33. package/lib/FlagDependencyExportsPlugin.js +6 -4
  34. package/lib/FlagDependencyUsagePlugin.js +1 -1
  35. package/lib/Generator.js +29 -1
  36. package/lib/HookWebpackError.js +2 -2
  37. package/lib/HotModuleReplacementPlugin.js +3 -9
  38. package/lib/IgnoreErrorModuleFactory.js +2 -2
  39. package/lib/IgnorePlugin.js +0 -5
  40. package/lib/InitFragment.js +1 -1
  41. package/lib/LoaderOptionsPlugin.js +8 -5
  42. package/lib/MainTemplate.js +7 -7
  43. package/lib/Module.js +40 -17
  44. package/lib/ModuleBuildError.js +3 -1
  45. package/lib/ModuleDependencyError.js +4 -3
  46. package/lib/ModuleDependencyWarning.js +4 -3
  47. package/lib/ModuleFactory.js +9 -3
  48. package/lib/ModuleFilenameHelpers.js +13 -13
  49. package/lib/ModuleGraph.js +20 -14
  50. package/lib/ModuleGraphConnection.js +7 -13
  51. package/lib/ModuleNotFoundError.js +1 -1
  52. package/lib/ModuleParseError.js +2 -1
  53. package/lib/ModuleSourceTypesConstants.js +11 -0
  54. package/lib/ModuleTemplate.js +5 -5
  55. package/lib/ModuleTypeConstants.js +15 -0
  56. package/lib/MultiCompiler.js +4 -4
  57. package/lib/MultiStats.js +1 -1
  58. package/lib/NormalModule.js +101 -54
  59. package/lib/NormalModuleFactory.js +38 -33
  60. package/lib/NormalModuleReplacementPlugin.js +3 -2
  61. package/lib/NullFactory.js +2 -2
  62. package/lib/Parser.js +4 -3
  63. package/lib/ProgressPlugin.js +1 -2
  64. package/lib/RawModule.js +4 -2
  65. package/lib/RecordIdsPlugin.js +6 -2
  66. package/lib/RequestShortener.js +3 -1
  67. package/lib/ResolverFactory.js +12 -9
  68. package/lib/RuntimeModule.js +4 -2
  69. package/lib/RuntimeTemplate.js +2 -1
  70. package/lib/SelfModuleFactory.js +2 -2
  71. package/lib/SourceMapDevToolPlugin.js +0 -8
  72. package/lib/Template.js +6 -5
  73. package/lib/TemplatedPathPlugin.js +15 -12
  74. package/lib/WebpackOptionsApply.js +1 -1
  75. package/lib/asset/AssetGenerator.js +237 -170
  76. package/lib/asset/AssetModulesPlugin.js +50 -8
  77. package/lib/asset/AssetSourceGenerator.js +18 -0
  78. package/lib/asset/RawDataUrlModule.js +4 -2
  79. package/lib/buildChunkGraph.js +14 -4
  80. package/lib/cache/MemoryWithGcCachePlugin.js +6 -2
  81. package/lib/cache/PackFileCacheStrategy.js +137 -121
  82. package/lib/cache/ResolverCachePlugin.js +15 -7
  83. package/lib/cache/getLazyHashedEtag.js +4 -3
  84. package/lib/cli.js +23 -15
  85. package/lib/config/defaults.js +93 -26
  86. package/lib/config/normalization.js +14 -13
  87. package/lib/config/target.js +8 -8
  88. package/lib/container/ContainerEntryModule.js +4 -2
  89. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  90. package/lib/container/FallbackModule.js +4 -2
  91. package/lib/container/FallbackModuleFactory.js +2 -2
  92. package/lib/container/RemoteModule.js +4 -2
  93. package/lib/container/options.js +5 -5
  94. package/lib/css/CssGenerator.js +71 -9
  95. package/lib/css/CssModulesPlugin.js +30 -5
  96. package/lib/css/CssParser.js +37 -17
  97. package/lib/css/walkCssTokens.js +17 -17
  98. package/lib/debug/ProfilingPlugin.js +98 -38
  99. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +10 -4
  100. package/lib/dependencies/AMDPlugin.js +5 -2
  101. package/lib/dependencies/AMDRequireArrayDependency.js +4 -3
  102. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  103. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +15 -7
  104. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  105. package/lib/dependencies/CommonJsExportRequireDependency.js +4 -5
  106. package/lib/dependencies/CommonJsExportsParserPlugin.js +3 -3
  107. package/lib/dependencies/CommonJsImportsParserPlugin.js +8 -7
  108. package/lib/dependencies/CommonJsRequireContextDependency.js +2 -1
  109. package/lib/dependencies/ContextDependencyHelpers.js +13 -6
  110. package/lib/dependencies/CssIcssExportDependency.js +15 -12
  111. package/lib/dependencies/CssIcssImportDependency.js +4 -1
  112. package/lib/dependencies/CssLocalIdentifierDependency.js +17 -14
  113. package/lib/dependencies/ExportsInfoDependency.js +6 -1
  114. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +5 -5
  115. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +22 -15
  116. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +23 -8
  117. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  118. package/lib/dependencies/HarmonyImportDependency.js +8 -6
  119. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -14
  120. package/lib/dependencies/HarmonyImportSpecifierDependency.js +5 -5
  121. package/lib/dependencies/ImportContextDependency.js +2 -1
  122. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -4
  123. package/lib/dependencies/JsonExportsDependency.js +24 -8
  124. package/lib/dependencies/LoaderPlugin.js +4 -14
  125. package/lib/dependencies/RequireContextDependency.js +2 -1
  126. package/lib/dependencies/RequireContextDependencyParserPlugin.js +6 -3
  127. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -2
  128. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +11 -5
  129. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  130. package/lib/dependencies/WebAssemblyExportImportedDependency.js +1 -1
  131. package/lib/dependencies/WorkerDependency.js +6 -3
  132. package/lib/dependencies/WorkerPlugin.js +100 -41
  133. package/lib/esm/ModuleChunkFormatPlugin.js +5 -0
  134. package/lib/hmr/HotModuleReplacement.runtime.js +1 -0
  135. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +1 -0
  136. package/lib/hmr/LazyCompilationPlugin.js +32 -24
  137. package/lib/hmr/lazyCompilationBackend.js +1 -1
  138. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  139. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  140. package/lib/ids/IdHelpers.js +15 -14
  141. package/lib/ids/SyncModuleIdsPlugin.js +9 -5
  142. package/lib/index.js +5 -5
  143. package/lib/javascript/BasicEvaluatedExpression.js +6 -6
  144. package/lib/javascript/JavascriptGenerator.js +11 -1
  145. package/lib/javascript/JavascriptModulesPlugin.js +51 -31
  146. package/lib/javascript/JavascriptParser.js +272 -188
  147. package/lib/javascript/JavascriptParserHelpers.js +10 -9
  148. package/lib/javascript/StartupHelpers.js +4 -1
  149. package/lib/json/JsonData.js +4 -4
  150. package/lib/json/JsonGenerator.js +54 -22
  151. package/lib/json/JsonModulesPlugin.js +16 -2
  152. package/lib/json/JsonParser.js +8 -4
  153. package/lib/library/AbstractLibraryPlugin.js +7 -3
  154. package/lib/library/AssignLibraryPlugin.js +29 -1
  155. package/lib/library/EnableLibraryPlugin.js +7 -10
  156. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  157. package/lib/library/ModuleLibraryPlugin.js +121 -15
  158. package/lib/logging/Logger.js +2 -2
  159. package/lib/logging/createConsoleLogger.js +4 -4
  160. package/lib/node/NodeEnvironmentPlugin.js +6 -2
  161. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -2
  162. package/lib/node/ReadFileCompileWasmPlugin.js +1 -2
  163. package/lib/node/nodeConsole.js +3 -1
  164. package/lib/optimize/AggressiveSplittingPlugin.js +1 -1
  165. package/lib/optimize/ConcatenatedModule.js +19 -12
  166. package/lib/optimize/InnerGraph.js +3 -2
  167. package/lib/optimize/InnerGraphPlugin.js +13 -7
  168. package/lib/optimize/LimitChunkCountPlugin.js +20 -0
  169. package/lib/optimize/ModuleConcatenationPlugin.js +10 -7
  170. package/lib/optimize/RealContentHashPlugin.js +8 -4
  171. package/lib/optimize/SideEffectsFlagPlugin.js +4 -2
  172. package/lib/optimize/SplitChunksPlugin.js +87 -65
  173. package/lib/rules/BasicEffectRulePlugin.js +9 -1
  174. package/lib/rules/BasicMatcherRulePlugin.js +15 -4
  175. package/lib/rules/ObjectMatcherRulePlugin.js +12 -3
  176. package/lib/rules/RuleSetCompiler.js +25 -14
  177. package/lib/rules/UseEffectRulePlugin.js +47 -17
  178. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  179. package/lib/schemes/HttpUriPlugin.js +38 -17
  180. package/lib/serialization/BinaryMiddleware.js +52 -19
  181. package/lib/serialization/FileMiddleware.js +78 -48
  182. package/lib/serialization/ObjectMiddleware.js +78 -29
  183. package/lib/serialization/PlainObjectSerializer.js +1 -1
  184. package/lib/serialization/Serializer.js +15 -10
  185. package/lib/serialization/SerializerMiddleware.js +80 -41
  186. package/lib/serialization/SingleItemMiddleware.js +10 -7
  187. package/lib/serialization/types.js +1 -1
  188. package/lib/sharing/ConsumeSharedModule.js +4 -2
  189. package/lib/sharing/ProvideSharedModule.js +4 -2
  190. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  191. package/lib/sharing/utils.js +2 -2
  192. package/lib/stats/DefaultStatsFactoryPlugin.js +80 -78
  193. package/lib/stats/DefaultStatsPresetPlugin.js +43 -23
  194. package/lib/stats/DefaultStatsPrinterPlugin.js +85 -43
  195. package/lib/stats/StatsFactory.js +11 -11
  196. package/lib/stats/StatsPrinter.js +7 -7
  197. package/lib/util/ArrayHelpers.js +2 -4
  198. package/lib/util/ArrayQueue.js +1 -1
  199. package/lib/util/AsyncQueue.js +4 -4
  200. package/lib/util/IterableHelpers.js +1 -1
  201. package/lib/util/LazyBucketSortedSet.js +41 -23
  202. package/lib/util/LazySet.js +3 -2
  203. package/lib/util/MapHelpers.js +1 -1
  204. package/lib/util/ParallelismFactorCalculator.js +1 -1
  205. package/lib/util/Semaphore.js +3 -3
  206. package/lib/util/SetHelpers.js +1 -1
  207. package/lib/util/SortableSet.js +9 -7
  208. package/lib/util/TupleQueue.js +9 -8
  209. package/lib/util/TupleSet.js +2 -2
  210. package/lib/util/WeakTupleMap.js +12 -11
  211. package/lib/util/binarySearchBounds.js +2 -1
  212. package/lib/util/cleverMerge.js +84 -54
  213. package/lib/util/comparators.js +22 -21
  214. package/lib/util/compileBooleanMatcher.js +3 -3
  215. package/lib/util/concatenate.js +6 -4
  216. package/lib/util/create-schema-validation.js +4 -4
  217. package/lib/util/createHash.js +2 -2
  218. package/lib/util/deprecation.js +35 -33
  219. package/lib/util/deterministicGrouping.js +6 -6
  220. package/lib/util/findGraphRoots.js +1 -1
  221. package/lib/util/fs.js +39 -39
  222. package/lib/util/hash/wasm-hash.js +2 -2
  223. package/lib/util/identifier.js +15 -18
  224. package/lib/util/makeSerializable.js +1 -1
  225. package/lib/util/memoize.js +4 -1
  226. package/lib/util/objectToMap.js +3 -2
  227. package/lib/util/processAsyncTree.js +2 -2
  228. package/lib/util/propertyName.js +0 -1
  229. package/lib/util/registerExternalSerializer.js +15 -18
  230. package/lib/util/removeBOM.js +25 -0
  231. package/lib/util/runtime.js +34 -27
  232. package/lib/util/serialization.js +5 -16
  233. package/lib/util/smartGrouping.js +3 -3
  234. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  235. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +11 -0
  236. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +10 -0
  237. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +4 -0
  238. package/lib/wasm-sync/WebAssemblyGenerator.js +28 -12
  239. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +10 -0
  240. package/lib/wasm-sync/WebAssemblyParser.js +9 -4
  241. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -0
  242. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -25
  243. package/package.json +19 -17
  244. package/schemas/WebpackOptions.check.js +1 -1
  245. package/schemas/WebpackOptions.json +48 -13
  246. package/schemas/plugins/JsonModulesPluginGenerator.check.d.ts +7 -0
  247. package/schemas/plugins/JsonModulesPluginGenerator.check.js +6 -0
  248. package/schemas/plugins/JsonModulesPluginGenerator.json +11 -0
  249. package/schemas/plugins/SourceMapDevToolPlugin.json +2 -2
  250. package/types.d.ts +918 -615
  251. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
@@ -11,6 +11,7 @@ const ModuleGraphConnection = require("./ModuleGraphConnection");
11
11
  const SortableSet = require("./util/SortableSet");
12
12
  const WeakTupleMap = require("./util/WeakTupleMap");
13
13
 
14
+ /** @typedef {import("./Compilation").ModuleMemCaches} ModuleMemCaches */
14
15
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
15
16
  /** @typedef {import("./Dependency")} Dependency */
16
17
  /** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
@@ -119,6 +120,11 @@ class ModuleGraphModule {
119
120
  }
120
121
  }
121
122
 
123
+ /** @typedef {(moduleGraphConnection: ModuleGraphConnection) => boolean} FilterConnection */
124
+
125
+ /** @typedef {EXPECTED_OBJECT} MetaKey */
126
+ /** @typedef {TODO} Meta */
127
+
122
128
  class ModuleGraph {
123
129
  constructor() {
124
130
  /**
@@ -132,7 +138,7 @@ class ModuleGraph {
132
138
  */
133
139
  this._moduleMap = new Map();
134
140
  /**
135
- * @type {WeakMap<any, object>}
141
+ * @type {WeakMap<MetaKey, Meta>}
136
142
  * @private
137
143
  */
138
144
  this._metaMap = new WeakMap();
@@ -142,7 +148,7 @@ class ModuleGraph {
142
148
  */
143
149
  this._cache = undefined;
144
150
  /**
145
- * @type {Map<Module, WeakTupleMap<any, any>> | undefined}
151
+ * @type {ModuleMemCaches | undefined}
146
152
  * @private
147
153
  */
148
154
  this._moduleMemCaches = undefined;
@@ -331,7 +337,7 @@ class ModuleGraph {
331
337
  /**
332
338
  * @param {Module} oldModule the old referencing module
333
339
  * @param {Module} newModule the new referencing module
334
- * @param {function(ModuleGraphConnection): boolean} filterConnection filter predicate for replacement
340
+ * @param {FilterConnection} filterConnection filter predicate for replacement
335
341
  * @returns {void}
336
342
  */
337
343
  moveModuleConnections(oldModule, newModule, filterConnection) {
@@ -368,7 +374,7 @@ class ModuleGraph {
368
374
  /**
369
375
  * @param {Module} oldModule the old referencing module
370
376
  * @param {Module} newModule the new referencing module
371
- * @param {function(ModuleGraphConnection): boolean} filterConnection filter predicate for replacement
377
+ * @param {FilterConnection} filterConnection filter predicate for replacement
372
378
  * @returns {void}
373
379
  */
374
380
  copyOutgoingModuleConnections(oldModule, newModule, filterConnection) {
@@ -756,21 +762,21 @@ class ModuleGraph {
756
762
  }
757
763
 
758
764
  /**
759
- * @param {any} thing any thing
760
- * @returns {object} metadata
765
+ * @param {MetaKey} thing any thing
766
+ * @returns {Meta} metadata
761
767
  */
762
768
  getMeta(thing) {
763
769
  let meta = this._metaMap.get(thing);
764
770
  if (meta === undefined) {
765
771
  meta = Object.create(null);
766
- this._metaMap.set(thing, /** @type {object} */ (meta));
772
+ this._metaMap.set(thing, meta);
767
773
  }
768
- return /** @type {object} */ (meta);
774
+ return meta;
769
775
  }
770
776
 
771
777
  /**
772
- * @param {any} thing any thing
773
- * @returns {object | undefined} metadata
778
+ * @param {MetaKey} thing any thing
779
+ * @returns {Meta | undefined} metadata
774
780
  */
775
781
  getMetaIfExisting(thing) {
776
782
  return this._metaMap.get(thing);
@@ -790,10 +796,10 @@ class ModuleGraph {
790
796
  }
791
797
 
792
798
  /**
793
- * @template {any[]} T
799
+ * @template T
794
800
  * @template V
795
- * @param {(moduleGraph: ModuleGraph, ...args: T) => V} fn computer
796
- * @param {T} args arguments
801
+ * @param {(moduleGraph: ModuleGraph, ...args: T[]) => V} fn computer
802
+ * @param {...T} args arguments
797
803
  * @returns {V} computed value or cached
798
804
  */
799
805
  cached(fn, ...args) {
@@ -802,7 +808,7 @@ class ModuleGraph {
802
808
  }
803
809
 
804
810
  /**
805
- * @param {Map<Module, WeakTupleMap<any, any>>} moduleMemCaches mem caches for modules for better caching
811
+ * @param {ModuleMemCaches} moduleMemCaches mem caches for modules for better caching
806
812
  */
807
813
  setModuleMemCaches(moduleMemCaches) {
808
814
  this._moduleMemCaches = moduleMemCaches;
@@ -75,7 +75,6 @@ class ModuleGraphConnection {
75
75
  this.weak = weak;
76
76
  this.conditional = Boolean(condition);
77
77
  this._active = condition !== false;
78
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
79
78
  this.condition = condition || undefined;
80
79
  /** @type {Set<string> | undefined} */
81
80
  this.explanations = undefined;
@@ -103,15 +102,16 @@ class ModuleGraphConnection {
103
102
  }
104
103
 
105
104
  /**
106
- * @param {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} condition condition for the connection
105
+ * @param {GetConditionFn} condition condition for the connection
107
106
  * @returns {void}
108
107
  */
109
108
  addCondition(condition) {
110
109
  if (this.conditional) {
111
110
  const old =
112
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */
111
+ /** @type {GetConditionFn} */
113
112
  (this.condition);
114
- this.condition = (c, r) =>
113
+ /** @type {GetConditionFn} */
114
+ (this.condition) = (c, r) =>
115
115
  intersectConnectionStates(old(c, r), condition(c, r));
116
116
  } else if (this._active) {
117
117
  this.conditional = true;
@@ -143,9 +143,7 @@ class ModuleGraphConnection {
143
143
  if (!this.conditional) return this._active;
144
144
 
145
145
  return (
146
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
147
- this.condition
148
- )(this, runtime) !== false
146
+ /** @type {GetConditionFn} */ (this.condition)(this, runtime) !== false
149
147
  );
150
148
  }
151
149
 
@@ -156,9 +154,7 @@ class ModuleGraphConnection {
156
154
  isTargetActive(runtime) {
157
155
  if (!this.conditional) return this._active;
158
156
  return (
159
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
160
- this.condition
161
- )(this, runtime) === true
157
+ /** @type {GetConditionFn} */ (this.condition)(this, runtime) === true
162
158
  );
163
159
  }
164
160
 
@@ -168,9 +164,7 @@ class ModuleGraphConnection {
168
164
  */
169
165
  getActiveState(runtime) {
170
166
  if (!this.conditional) return this._active;
171
- return /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
172
- this.condition
173
- )(this, runtime);
167
+ return /** @type {GetConditionFn} */ (this.condition)(this, runtime);
174
168
  }
175
169
 
176
170
  /**
@@ -44,7 +44,7 @@ const previouslyPolyfilledBuiltinModules = {
44
44
  class ModuleNotFoundError extends WebpackError {
45
45
  /**
46
46
  * @param {Module | null} module module tied to dependency
47
- * @param {Error&any} err error thrown
47
+ * @param {Error & { details?: string }} err error thrown
48
48
  * @param {DependencyLocation} loc location of dependency
49
49
  */
50
50
  constructor(module, err, loc) {
@@ -8,6 +8,7 @@
8
8
  const WebpackError = require("./WebpackError");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
+ /** @typedef {import("./Dependency").SourcePosition} SourcePosition */
11
12
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
13
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
14
 
@@ -16,7 +17,7 @@ const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]);
16
17
  class ModuleParseError extends WebpackError {
17
18
  /**
18
19
  * @param {string | Buffer} source source code
19
- * @param {Error & any} err the parse error
20
+ * @param {Error & { loc?: SourcePosition }} err the parse error
20
21
  * @param {string[]} loaders the loaders used
21
22
  * @param {string} type module type
22
23
  */
@@ -34,6 +34,11 @@ const ASSET_AND_JS_AND_CSS_URL_TYPES = new Set([
34
34
  "css-url"
35
35
  ]);
36
36
 
37
+ /**
38
+ * @type {"javascript"}
39
+ */
40
+ const JS_TYPE = "javascript";
41
+
37
42
  /**
38
43
  * @type {ReadonlySet<"javascript">}
39
44
  */
@@ -54,6 +59,10 @@ const JS_AND_CSS_URL_TYPES = new Set(["javascript", "css-url"]);
54
59
  */
55
60
  const JS_AND_CSS_TYPES = new Set(["javascript", "css"]);
56
61
 
62
+ /**
63
+ * @type {"css"}
64
+ */
65
+ const CSS_TYPE = "css";
57
66
  /**
58
67
  * @type {ReadonlySet<"css">}
59
68
  */
@@ -94,6 +103,7 @@ const CONSUME_SHARED_TYPES = new Set(["consume-shared"]);
94
103
  const SHARED_INIT_TYPES = new Set(["share-init"]);
95
104
 
96
105
  module.exports.NO_TYPES = NO_TYPES;
106
+ module.exports.JS_TYPE = JS_TYPE;
97
107
  module.exports.JS_TYPES = JS_TYPES;
98
108
  module.exports.JS_AND_CSS_TYPES = JS_AND_CSS_TYPES;
99
109
  module.exports.JS_AND_CSS_URL_TYPES = JS_AND_CSS_URL_TYPES;
@@ -102,6 +112,7 @@ module.exports.ASSET_TYPES = ASSET_TYPES;
102
112
  module.exports.ASSET_AND_JS_TYPES = ASSET_AND_JS_TYPES;
103
113
  module.exports.ASSET_AND_CSS_URL_TYPES = ASSET_AND_CSS_URL_TYPES;
104
114
  module.exports.ASSET_AND_JS_AND_CSS_URL_TYPES = ASSET_AND_JS_AND_CSS_URL_TYPES;
115
+ module.exports.CSS_TYPE = CSS_TYPE;
105
116
  module.exports.CSS_TYPES = CSS_TYPES;
106
117
  module.exports.CSS_URL_TYPES = CSS_URL_TYPES;
107
118
  module.exports.CSS_IMPORT_TYPES = CSS_IMPORT_TYPES;
@@ -44,7 +44,7 @@ class ModuleTemplate {
44
44
  /**
45
45
  * @template AdditionalOptions
46
46
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
47
- * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
47
+ * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
48
48
  */
49
49
  (options, fn) => {
50
50
  getJavascriptModulesPlugin()
@@ -69,7 +69,7 @@ class ModuleTemplate {
69
69
  /**
70
70
  * @template AdditionalOptions
71
71
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
72
- * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
72
+ * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
73
73
  */
74
74
  (options, fn) => {
75
75
  getJavascriptModulesPlugin()
@@ -94,7 +94,7 @@ class ModuleTemplate {
94
94
  /**
95
95
  * @template AdditionalOptions
96
96
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
97
- * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
97
+ * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
98
98
  */
99
99
  (options, fn) => {
100
100
  getJavascriptModulesPlugin()
@@ -119,7 +119,7 @@ class ModuleTemplate {
119
119
  /**
120
120
  * @template AdditionalOptions
121
121
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
122
- * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
122
+ * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
123
123
  */
124
124
  (options, fn) => {
125
125
  getJavascriptModulesPlugin()
@@ -144,7 +144,7 @@ class ModuleTemplate {
144
144
  /**
145
145
  * @template AdditionalOptions
146
146
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
147
- * @param {function(Hash): void} fn fn
147
+ * @param {(hash: Hash) => void} fn fn
148
148
  */
149
149
  (options, fn) => {
150
150
  compilation.hooks.fullHash.tap(options, fn);
@@ -151,13 +151,28 @@ module.exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
151
151
  module.exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
152
152
  module.exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
153
153
  module.exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
154
+ module.exports.JAVASCRIPT_MODULES = [
155
+ JAVASCRIPT_MODULE_TYPE_AUTO,
156
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
157
+ JAVASCRIPT_MODULE_TYPE_ESM
158
+ ];
154
159
  module.exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
155
160
  module.exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC;
156
161
  module.exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
162
+ module.exports.WEBASSEMBLY_MODULES = [
163
+ WEBASSEMBLY_MODULE_TYPE_SYNC,
164
+ WEBASSEMBLY_MODULE_TYPE_SYNC
165
+ ];
157
166
  module.exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
158
167
  module.exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
159
168
  module.exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
160
169
  module.exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
170
+ module.exports.CSS_MODULES = [
171
+ CSS_MODULE_TYPE,
172
+ CSS_MODULE_TYPE_GLOBAL,
173
+ CSS_MODULE_TYPE_MODULE,
174
+ CSS_MODULE_TYPE_AUTO
175
+ ];
161
176
  module.exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
162
177
  module.exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
163
178
  module.exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
@@ -70,7 +70,7 @@ module.exports = class MultiCompiler {
70
70
  watchClose: new SyncHook([]),
71
71
  /** @type {MultiHook<AsyncSeriesHook<[Compiler]>>} */
72
72
  watchRun: new MultiHook(compilers.map(c => c.hooks.watchRun)),
73
- /** @type {MultiHook<SyncBailHook<[string, string, any[]], true>>} */
73
+ /** @type {MultiHook<SyncBailHook<[string, string, EXPECTED_ANY[] | undefined], true | void>>} */
74
74
  infrastructureLog: new MultiHook(
75
75
  compilers.map(c => c.hooks.infrastructureLog)
76
76
  )
@@ -223,7 +223,7 @@ module.exports = class MultiCompiler {
223
223
  }
224
224
 
225
225
  /**
226
- * @param {string | (function(): string)} name name of the logger, or function called once to get the logger name
226
+ * @param {string | (() => string)} name name of the logger, or function called once to get the logger name
227
227
  * @returns {Logger} a logger with that name
228
228
  */
229
229
  getInfrastructureLogger(name) {
@@ -377,8 +377,8 @@ module.exports = class MultiCompiler {
377
377
 
378
378
  /**
379
379
  * @template SetupResult
380
- * @param {function(Compiler, number, Callback<Stats>, function(): boolean, function(): void, function(): void): SetupResult} setup setup a single compiler
381
- * @param {function(Compiler, SetupResult, Callback<Stats>): void} run run/continue a single compiler
380
+ * @param {(compiler: Compiler, index: number, doneCallback: Callback<Stats>, isBlocked: () => boolean, setChanged: () => void, setInvalid: () => void) => SetupResult} setup setup a single compiler
381
+ * @param {(compiler: Compiler, setupResult: SetupResult, callback: Callback<Stats>) => void} run run/continue a single compiler
382
382
  * @param {Callback<MultiStats>} callback callback when all compilers are done, result includes Stats of all changed compilers
383
383
  * @returns {SetupResult[]} result of setup
384
384
  */
package/lib/MultiStats.js CHANGED
@@ -135,7 +135,7 @@ class MultiStats {
135
135
  /**
136
136
  * @param {StatsCompilation} j stats error
137
137
  * @param {StatsError} obj Stats error
138
- * @returns {TODO} result
138
+ * @returns {StatsError} result
139
139
  */
140
140
  const mapError = (j, obj) => ({
141
141
  ...obj,