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
@@ -9,6 +9,20 @@ const memoize = require("../util/memoize");
9
9
  const LAZY_TARGET = Symbol("lazy serialization target");
10
10
  const LAZY_SERIALIZED_VALUE = Symbol("lazy serialization data");
11
11
 
12
+ /** @typedef {TODO} Context */
13
+
14
+ /**
15
+ * @template LazyResult
16
+ * @typedef {() => LazyResult | Promise<LazyResult>} InternalLazyFunction
17
+ */
18
+
19
+ /** @typedef {Record<string, any>} LazyOptions */
20
+
21
+ /**
22
+ * @template LazyResult
23
+ * @typedef {InternalLazyFunction<LazyResult> & { [LAZY_TARGET]: TODO, [LAZY_SERIALIZED_VALUE]?: TODO, options: LazyOptions }} LazyFunction
24
+ */
25
+
12
26
  /**
13
27
  * @template DeserializedType
14
28
  * @template SerializedType
@@ -18,8 +32,8 @@ class SerializerMiddleware {
18
32
  /**
19
33
  * @abstract
20
34
  * @param {DeserializedType} data data
21
- * @param {object} context context object
22
- * @returns {SerializedType|Promise<SerializedType>} serialized data
35
+ * @param {Context} context context object
36
+ * @returns {SerializedType | Promise<SerializedType> | null} serialized data
23
37
  */
24
38
  serialize(data, context) {
25
39
  const AbstractMethodError = require("../AbstractMethodError");
@@ -30,8 +44,8 @@ class SerializerMiddleware {
30
44
  /**
31
45
  * @abstract
32
46
  * @param {SerializedType} data data
33
- * @param {object} context context object
34
- * @returns {DeserializedType|Promise<DeserializedType>} deserialized data
47
+ * @param {Context} context context object
48
+ * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
35
49
  */
36
50
  deserialize(data, context) {
37
51
  const AbstractMethodError = require("../AbstractMethodError");
@@ -39,23 +53,26 @@ class SerializerMiddleware {
39
53
  }
40
54
 
41
55
  /**
42
- * @param {any | function(): Promise<any> | any} value contained value or function to value
56
+ * @template LazyResult
57
+ * @param {LazyFunction<LazyResult> | EXPECTED_ANY} value contained value or function to value
43
58
  * @param {SerializerMiddleware<any, any>} target target middleware
44
- * @param {object=} options lazy options
59
+ * @param {LazyOptions=} options lazy options
45
60
  * @param {any=} serializedValue serialized value
46
- * @returns {function(): Promise<any> | any} lazy function
61
+ * @returns {LazyFunction<LazyResult>} lazy function
47
62
  */
48
63
  static createLazy(value, target, options = {}, serializedValue = undefined) {
49
64
  if (SerializerMiddleware.isLazy(value, target)) return value;
50
- const fn = typeof value === "function" ? value : () => value;
65
+ const fn =
66
+ /** @type {LazyFunction<LazyResult>} */
67
+ (typeof value === "function" ? value : () => value);
51
68
  fn[LAZY_TARGET] = target;
52
- /** @type {any} */ (fn).options = options;
69
+ fn.options = options;
53
70
  fn[LAZY_SERIALIZED_VALUE] = serializedValue;
54
71
  return fn;
55
72
  }
56
73
 
57
74
  /**
58
- * @param {function(): Promise<any> | any} fn lazy function
75
+ * @param {EXPECTED_ANY} fn lazy function
59
76
  * @param {SerializerMiddleware<any, any>=} target target middleware
60
77
  * @returns {boolean} true, when fn is a lazy function (optionally of that target)
61
78
  */
@@ -66,8 +83,9 @@ class SerializerMiddleware {
66
83
  }
67
84
 
68
85
  /**
69
- * @param {function(): Promise<any> | any} fn lazy function
70
- * @returns {object | undefined} options
86
+ * @template LazyResult
87
+ * @param {LazyFunction<LazyResult>} fn lazy function
88
+ * @returns {LazyOptions | undefined} options
71
89
  */
72
90
  static getLazyOptions(fn) {
73
91
  if (typeof fn !== "function") return;
@@ -75,7 +93,8 @@ class SerializerMiddleware {
75
93
  }
76
94
 
77
95
  /**
78
- * @param {function(): Promise<any> | any} fn lazy function
96
+ * @template LazyResult
97
+ * @param {LazyFunction<LazyResult> | EXPECTED_ANY} fn lazy function
79
98
  * @returns {any | undefined} serialized value
80
99
  */
81
100
  static getLazySerializedValue(fn) {
@@ -84,8 +103,9 @@ class SerializerMiddleware {
84
103
  }
85
104
 
86
105
  /**
87
- * @param {function(): Promise<any> | any} fn lazy function
88
- * @param {any} value serialized value
106
+ * @template LazyResult
107
+ * @param {LazyFunction<LazyResult>} fn lazy function
108
+ * @param {TODO} value serialized value
89
109
  * @returns {void}
90
110
  */
91
111
  static setLazySerializedValue(fn, value) {
@@ -93,50 +113,69 @@ class SerializerMiddleware {
93
113
  }
94
114
 
95
115
  /**
96
- * @param {function(): Promise<any> | any} lazy lazy function
97
- * @param {function(any): Promise<any> | any} serialize serialize function
98
- * @returns {function(): Promise<any> | any} new lazy
116
+ * @template LazyResult, R
117
+ * @param {LazyFunction<LazyResult>} lazy lazy function
118
+ * @param {(lazyResult: LazyResult) => Promise<R> | R} serialize serialize function
119
+ * @returns {LazyFunction<R>} new lazy
99
120
  */
100
121
  static serializeLazy(lazy, serialize) {
101
- const fn = memoize(() => {
102
- const r = lazy();
103
- if (r && typeof r.then === "function") {
104
- return r.then(data => data && serialize(data));
105
- }
106
- return serialize(r);
107
- });
122
+ const fn = /** @type {LazyFunction<R>} */ (
123
+ memoize(() => {
124
+ const r = lazy();
125
+ if (
126
+ r &&
127
+ typeof (/** @type {Promise<LazyResult>} */ (r).then) === "function"
128
+ ) {
129
+ return (
130
+ /** @type {Promise<LazyResult>} */
131
+ (r).then(data => data && serialize(data))
132
+ );
133
+ }
134
+ return serialize(/** @type {LazyResult} */ (r));
135
+ })
136
+ );
108
137
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
109
- /** @type {any} */ (fn).options = /** @type {any} */ (lazy).options;
138
+ fn.options = lazy.options;
110
139
  lazy[LAZY_SERIALIZED_VALUE] = fn;
111
140
  return fn;
112
141
  }
113
142
 
114
143
  /**
115
- * @template T
116
- * @param {function(): Promise<any> | any} lazy lazy function
117
- * @param {function(T): Promise<T> | T} deserialize deserialize function
118
- * @returns {function(): Promise<T> | T} new lazy
144
+ * @template LazyResult, R
145
+ * @param {LazyFunction<LazyResult>} lazy lazy function
146
+ * @param {(lazyResult: LazyResult) => Promise<R> | R} deserialize deserialize function
147
+ * @returns {LazyFunction<R>} new lazy
119
148
  */
120
149
  static deserializeLazy(lazy, deserialize) {
121
- const fn = memoize(() => {
122
- const r = lazy();
123
- if (r && typeof r.then === "function") {
124
- return r.then(data => deserialize(data));
125
- }
126
- return deserialize(r);
127
- });
150
+ const fn = /** @type {LazyFunction<R>} */ (
151
+ memoize(() => {
152
+ const r = lazy();
153
+ if (
154
+ r &&
155
+ typeof (/** @type {Promise<LazyResult>} */ (r).then) === "function"
156
+ ) {
157
+ return (
158
+ /** @type {Promise<LazyResult>} */
159
+ (r).then(data => deserialize(data))
160
+ );
161
+ }
162
+ return deserialize(/** @type {LazyResult} */ (r));
163
+ })
164
+ );
128
165
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
129
- /** @type {any} */ (fn).options = /** @type {any} */ (lazy).options;
166
+ fn.options = lazy.options;
130
167
  fn[LAZY_SERIALIZED_VALUE] = lazy;
131
168
  return fn;
132
169
  }
133
170
 
134
171
  /**
135
- * @param {function(): Promise<any> | any} lazy lazy function
136
- * @returns {function(): Promise<any> | any} new lazy
172
+ * @template LazyResult
173
+ * @param {LazyFunction<LazyResult> | EXPECTED_ANY} lazy lazy function
174
+ * @returns {LazyFunction<LazyResult> | EXPECTED_ANY} new lazy
137
175
  */
138
176
  static unMemoizeLazy(lazy) {
139
177
  if (!SerializerMiddleware.isLazy(lazy)) return lazy;
178
+ /** @type {LazyFunction<LazyResult>} */
140
179
  const fn = () => {
141
180
  throw new Error(
142
181
  "A lazy value that has been unmemorized can't be called again"
@@ -146,7 +185,7 @@ class SerializerMiddleware {
146
185
  lazy[LAZY_SERIALIZED_VALUE]
147
186
  );
148
187
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
149
- fn.options = /** @type {any} */ (lazy).options;
188
+ fn.options = lazy.options;
150
189
  return fn;
151
190
  }
152
191
  }
@@ -6,16 +6,19 @@
6
6
 
7
7
  const SerializerMiddleware = require("./SerializerMiddleware");
8
8
 
9
+ /** @typedef {import("./SerializerMiddleware").Context} Context */
10
+
11
+ /** @typedef {any} DeserializedType */
12
+ /** @typedef {any[]} SerializedType */
13
+
9
14
  /**
10
- * @typedef {any} DeserializedType
11
- * @typedef {any[]} SerializedType
12
- * @extends {SerializerMiddleware<any, any[]>}
15
+ * @extends {SerializerMiddleware<DeserializedType, SerializedType>}
13
16
  */
14
17
  class SingleItemMiddleware extends SerializerMiddleware {
15
18
  /**
16
19
  * @param {DeserializedType} data data
17
- * @param {object} context context object
18
- * @returns {SerializedType|Promise<SerializedType>} serialized data
20
+ * @param {Context} context context object
21
+ * @returns {SerializedType | Promise<SerializedType> | null} serialized data
19
22
  */
20
23
  serialize(data, context) {
21
24
  return [data];
@@ -23,8 +26,8 @@ class SingleItemMiddleware extends SerializerMiddleware {
23
26
 
24
27
  /**
25
28
  * @param {SerializedType} data data
26
- * @param {object} context context object
27
- * @returns {DeserializedType|Promise<DeserializedType>} deserialized data
29
+ * @param {Context} context context object
30
+ * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
28
31
  */
29
32
  deserialize(data, context) {
30
33
  return data[0];
@@ -4,7 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {undefined | null | number | string | boolean | Buffer | object | (() => ComplexSerializableType[] | Promise<ComplexSerializableType[]>)} ComplexSerializableType */
7
+ /** @typedef {undefined | null | number | string | boolean | Buffer | EXPECTED_OBJECT | (() => ComplexSerializableType[] | Promise<ComplexSerializableType[]>)} ComplexSerializableType */
8
8
 
9
9
  /** @typedef {undefined | null | number | bigint | string | boolean | Buffer | (() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>)} PrimitiveSerializableType */
10
10
 
@@ -22,9 +22,11 @@ const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependen
22
22
  /** @typedef {import("../ChunkGroup")} ChunkGroup */
23
23
  /** @typedef {import("../Compilation")} Compilation */
24
24
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
25
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
25
26
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
26
27
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
27
28
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
29
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
28
30
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
29
31
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
30
32
  /** @typedef {import("../RequestShortener")} RequestShortener */
@@ -115,7 +117,7 @@ class ConsumeSharedModule extends Module {
115
117
 
116
118
  /**
117
119
  * @param {NeedBuildContext} context context info
118
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
120
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
119
121
  * @returns {void}
120
122
  */
121
123
  needBuild(context, callback) {
@@ -127,7 +129,7 @@ class ConsumeSharedModule extends Module {
127
129
  * @param {Compilation} compilation the compilation
128
130
  * @param {ResolverWithOptions} resolver the resolver
129
131
  * @param {InputFileSystem} fs the file system
130
- * @param {function(WebpackError=): void} callback callback function
132
+ * @param {BuildCallback} callback callback function
131
133
  * @returns {void}
132
134
  */
133
135
  build(options, compilation, resolver, fs, callback) {
@@ -18,9 +18,11 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
18
18
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
19
19
  /** @typedef {import("../ChunkGroup")} ChunkGroup */
20
20
  /** @typedef {import("../Compilation")} Compilation */
21
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
21
22
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
22
23
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
23
24
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
25
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
24
26
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
25
27
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
26
28
  /** @typedef {import("../RequestShortener")} RequestShortener */
@@ -77,7 +79,7 @@ class ProvideSharedModule extends Module {
77
79
 
78
80
  /**
79
81
  * @param {NeedBuildContext} context context info
80
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
82
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
81
83
  * @returns {void}
82
84
  */
83
85
  needBuild(context, callback) {
@@ -89,7 +91,7 @@ class ProvideSharedModule extends Module {
89
91
  * @param {Compilation} compilation the compilation
90
92
  * @param {ResolverWithOptions} resolver the resolver
91
93
  * @param {InputFileSystem} fs the file system
92
- * @param {function(WebpackError=): void} callback callback function
94
+ * @param {BuildCallback} callback callback function
93
95
  * @returns {void}
94
96
  */
95
97
  build(options, compilation, resolver, fs, callback) {
@@ -8,18 +8,20 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const ProvideSharedModule = require("./ProvideSharedModule");
10
10
 
11
+ /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
11
12
  /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
13
13
  /** @typedef {import("./ProvideSharedDependency")} ProvideSharedDependency */
14
14
 
15
15
  class ProvideSharedModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
18
+ * @param {ModuleFactoryCallback} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create(data, callback) {
22
- const dep = /** @type {ProvideSharedDependency} */ (data.dependencies[0]);
22
+ const dep =
23
+ /** @type {ProvideSharedDependency} */
24
+ (data.dependencies[0]);
23
25
  callback(null, {
24
26
  module: new ProvideSharedModule(
25
27
  dep.shareScope,
@@ -326,8 +326,8 @@ module.exports.normalizeVersion = normalizeVersion;
326
326
  * @param {InputFileSystem} fs file system
327
327
  * @param {string} directory directory to start looking into
328
328
  * @param {string[]} descriptionFiles possible description filenames
329
- * @param {function((Error | null)=, DescriptionFile=, string[]=): void} callback callback
330
- * @param {function(DescriptionFile=): boolean} satisfiesDescriptionFileData file data compliance check
329
+ * @param {(err?: Error | null, descriptionFile?: DescriptionFile, paths?: string[]) => void} callback callback
330
+ * @param {(descriptionFile?: DescriptionFile) => boolean} satisfiesDescriptionFileData file data compliance check
331
331
  * @param {Set<string>} checkedFilePaths set of file paths that have been checked
332
332
  */
333
333
  const getDescriptionFile = (