webpack 5.101.3 → 5.102.1

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 (339) hide show
  1. package/README.md +21 -26
  2. package/lib/APIPlugin.js +30 -36
  3. package/lib/AsyncDependenciesBlock.js +1 -4
  4. package/lib/BannerPlugin.js +0 -1
  5. package/lib/Cache.js +7 -6
  6. package/lib/CacheFacade.js +0 -1
  7. package/lib/Chunk.js +49 -31
  8. package/lib/ChunkGraph.js +37 -27
  9. package/lib/ChunkGroup.js +8 -10
  10. package/lib/ChunkTemplate.js +1 -1
  11. package/lib/CleanPlugin.js +3 -3
  12. package/lib/CodeGenerationResults.js +3 -2
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +209 -196
  15. package/lib/Compiler.js +36 -35
  16. package/lib/ConcatenationScope.js +6 -1
  17. package/lib/ConditionalInitFragment.js +1 -1
  18. package/lib/ConstPlugin.js +6 -5
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +25 -21
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +5 -9
  24. package/lib/DelegatedModule.js +7 -11
  25. package/lib/DependenciesBlock.js +0 -2
  26. package/lib/Dependency.js +9 -11
  27. package/lib/DependencyTemplates.js +2 -4
  28. package/lib/DllModule.js +1 -7
  29. package/lib/DllReferencePlugin.js +2 -4
  30. package/lib/DynamicEntryPlugin.js +0 -2
  31. package/lib/EntryOptionPlugin.js +0 -5
  32. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  33. package/lib/EvalDevToolModulePlugin.js +4 -3
  34. package/lib/EvalSourceMapDevToolPlugin.js +3 -4
  35. package/lib/ExportsInfo.js +50 -49
  36. package/lib/ExternalModule.js +84 -52
  37. package/lib/ExternalModuleFactoryPlugin.js +27 -7
  38. package/lib/ExternalsPlugin.js +24 -17
  39. package/lib/FileSystemInfo.js +105 -90
  40. package/lib/FlagDependencyUsagePlugin.js +3 -4
  41. package/lib/Generator.js +2 -13
  42. package/lib/GraphHelpers.js +0 -3
  43. package/lib/HookWebpackError.js +0 -2
  44. package/lib/HotModuleReplacementPlugin.js +22 -24
  45. package/lib/HotUpdateChunk.js +0 -3
  46. package/lib/IgnorePlugin.js +5 -2
  47. package/lib/InitFragment.js +41 -29
  48. package/lib/InvalidDependenciesModuleWarning.js +0 -1
  49. package/lib/LibManifestPlugin.js +4 -6
  50. package/lib/LoaderOptionsPlugin.js +1 -10
  51. package/lib/MainTemplate.js +8 -19
  52. package/lib/Module.js +32 -20
  53. package/lib/ModuleFactory.js +1 -1
  54. package/lib/ModuleFilenameHelpers.js +42 -25
  55. package/lib/ModuleGraph.js +30 -16
  56. package/lib/ModuleInfoHeaderPlugin.js +0 -1
  57. package/lib/ModuleTemplate.js +0 -2
  58. package/lib/ModuleTypeConstants.js +11 -1
  59. package/lib/MultiCompiler.js +23 -15
  60. package/lib/MultiWatching.js +6 -10
  61. package/lib/NodeStuffPlugin.js +2 -10
  62. package/lib/NormalModule.js +146 -89
  63. package/lib/NormalModuleFactory.js +132 -42
  64. package/lib/OptionsApply.js +1 -1
  65. package/lib/Parser.js +1 -1
  66. package/lib/ProgressPlugin.js +6 -10
  67. package/lib/ProvidePlugin.js +5 -7
  68. package/lib/RawModule.js +1 -6
  69. package/lib/RecordIdsPlugin.js +10 -6
  70. package/lib/ResolverFactory.js +0 -2
  71. package/lib/RuntimeGlobals.js +5 -0
  72. package/lib/RuntimeModule.js +1 -3
  73. package/lib/RuntimePlugin.js +26 -22
  74. package/lib/RuntimeTemplate.js +22 -12
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +11 -18
  77. package/lib/Stats.js +0 -1
  78. package/lib/Template.js +6 -11
  79. package/lib/TemplatedPathPlugin.js +2 -1
  80. package/lib/WatchIgnorePlugin.js +2 -3
  81. package/lib/Watching.js +15 -15
  82. package/lib/WebpackIsIncludedPlugin.js +0 -2
  83. package/lib/WebpackOptionsApply.js +74 -107
  84. package/lib/asset/AssetBytesGenerator.js +167 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +22 -37
  87. package/lib/asset/AssetModulesPlugin.js +34 -16
  88. package/lib/asset/AssetParser.js +7 -3
  89. package/lib/asset/AssetSourceGenerator.js +1 -1
  90. package/lib/asset/RawDataUrlModule.js +3 -2
  91. package/lib/async-modules/AsyncModuleHelpers.js +6 -4
  92. package/lib/buildChunkGraph.js +0 -1
  93. package/lib/cache/MemoryCachePlugin.js +0 -2
  94. package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
  95. package/lib/cache/PackFileCacheStrategy.js +14 -1
  96. package/lib/cache/ResolverCachePlugin.js +9 -15
  97. package/lib/cache/getLazyHashedEtag.js +1 -1
  98. package/lib/config/browserslistTargetHandler.js +77 -76
  99. package/lib/config/defaults.js +162 -23
  100. package/lib/config/normalization.js +18 -3
  101. package/lib/config/target.js +1 -1
  102. package/lib/container/ContainerEntryDependency.js +0 -1
  103. package/lib/container/ContainerEntryModule.js +3 -7
  104. package/lib/container/ContainerPlugin.js +1 -2
  105. package/lib/container/ContainerReferencePlugin.js +0 -1
  106. package/lib/container/FallbackDependency.js +2 -1
  107. package/lib/container/FallbackModule.js +6 -7
  108. package/lib/container/ModuleFederationPlugin.js +0 -1
  109. package/lib/container/RemoteModule.js +8 -8
  110. package/lib/container/RemoteRuntimeModule.js +2 -2
  111. package/lib/css/CssGenerator.js +3 -6
  112. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  113. package/lib/css/CssModulesPlugin.js +13 -19
  114. package/lib/css/CssParser.js +3 -3
  115. package/lib/css/walkCssTokens.js +2 -2
  116. package/lib/debug/ProfilingPlugin.js +35 -8
  117. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  118. package/lib/dependencies/AMDPlugin.js +2 -2
  119. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  120. package/lib/dependencies/CachedConstDependency.js +0 -4
  121. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  122. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  123. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  124. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  125. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  126. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  127. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  128. package/lib/dependencies/ConstDependency.js +2 -2
  129. package/lib/dependencies/ContextDependency.js +9 -4
  130. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  131. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  132. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  133. package/lib/dependencies/ContextElementDependency.js +22 -11
  134. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  135. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  136. package/lib/dependencies/CssImportDependency.js +0 -8
  137. package/lib/dependencies/CssLocalIdentifierDependency.js +4 -7
  138. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  139. package/lib/dependencies/CssUrlDependency.js +0 -6
  140. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  141. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  142. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  143. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  144. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  146. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  147. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  148. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  150. package/lib/dependencies/HarmonyImportDependency.js +33 -14
  151. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -23
  152. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  153. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  154. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  155. package/lib/dependencies/ImportContextDependency.js +13 -0
  156. package/lib/dependencies/ImportDependency.js +18 -6
  157. package/lib/dependencies/ImportEagerDependency.js +2 -3
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  159. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  160. package/lib/dependencies/ImportMetaPlugin.js +3 -2
  161. package/lib/dependencies/ImportParserPlugin.js +288 -45
  162. package/lib/dependencies/ImportWeakDependency.js +2 -3
  163. package/lib/dependencies/JsonExportsDependency.js +0 -1
  164. package/lib/dependencies/LoaderDependency.js +0 -3
  165. package/lib/dependencies/LoaderImportDependency.js +0 -3
  166. package/lib/dependencies/LoaderPlugin.js +11 -5
  167. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  168. package/lib/dependencies/ModuleDependency.js +3 -9
  169. package/lib/dependencies/NullDependency.js +2 -0
  170. package/lib/dependencies/ProvidedDependency.js +6 -8
  171. package/lib/dependencies/PureExpressionDependency.js +0 -1
  172. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  173. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  174. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  175. package/lib/dependencies/RequireResolveDependency.js +2 -2
  176. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  177. package/lib/dependencies/StaticExportsDependency.js +3 -5
  178. package/lib/dependencies/URLDependency.js +2 -7
  179. package/lib/dependencies/URLPlugin.js +1 -2
  180. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  181. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  182. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  183. package/lib/dependencies/WorkerDependency.js +2 -3
  184. package/lib/dependencies/WorkerPlugin.js +4 -12
  185. package/lib/dependencies/processExportInfo.js +2 -3
  186. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  187. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  188. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  189. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  190. package/lib/hmr/lazyCompilationBackend.js +13 -10
  191. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  192. package/lib/ids/HashedModuleIdsPlugin.js +5 -7
  193. package/lib/ids/IdHelpers.js +1 -1
  194. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  195. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  196. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  197. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  198. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  199. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  200. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  201. package/lib/index.js +8 -7
  202. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  203. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  204. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  205. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  206. package/lib/javascript/JavascriptGenerator.js +2 -3
  207. package/lib/javascript/JavascriptModulesPlugin.js +46 -24
  208. package/lib/javascript/JavascriptParser.js +120 -55
  209. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  210. package/lib/javascript/StartupHelpers.js +2 -4
  211. package/lib/json/JsonData.js +1 -1
  212. package/lib/json/JsonGenerator.js +4 -5
  213. package/lib/json/JsonModulesPlugin.js +0 -3
  214. package/lib/json/JsonParser.js +4 -2
  215. package/lib/library/AbstractLibraryPlugin.js +2 -2
  216. package/lib/library/AmdLibraryPlugin.js +0 -1
  217. package/lib/library/AssignLibraryPlugin.js +23 -12
  218. package/lib/library/EnableLibraryPlugin.js +7 -11
  219. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  220. package/lib/library/JsonpLibraryPlugin.js +5 -2
  221. package/lib/library/ModuleLibraryPlugin.js +88 -43
  222. package/lib/library/SystemLibraryPlugin.js +15 -6
  223. package/lib/library/UmdLibraryPlugin.js +12 -18
  224. package/lib/logging/Logger.js +12 -10
  225. package/lib/logging/createConsoleLogger.js +15 -14
  226. package/lib/logging/truncateArgs.js +1 -1
  227. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  228. package/lib/node/NodeWatchFileSystem.js +4 -4
  229. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  230. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  231. package/lib/node/nodeConsole.js +2 -2
  232. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  233. package/lib/optimize/ConcatenatedModule.js +142 -100
  234. package/lib/optimize/InnerGraph.js +17 -11
  235. package/lib/optimize/InnerGraphPlugin.js +0 -3
  236. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  237. package/lib/optimize/RealContentHashPlugin.js +5 -3
  238. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  239. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  240. package/lib/optimize/SplitChunksPlugin.js +46 -40
  241. package/lib/performance/SizeLimitsPlugin.js +2 -1
  242. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  243. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  244. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  245. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  246. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  247. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  248. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  249. package/lib/rules/RuleSetCompiler.js +8 -6
  250. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  251. package/lib/runtime/CompatRuntimeModule.js +0 -1
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  253. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  254. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  255. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  256. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  257. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  258. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  259. package/lib/schemes/DataUriPlugin.js +2 -28
  260. package/lib/schemes/FileUriPlugin.js +5 -2
  261. package/lib/schemes/HttpUriPlugin.js +4 -2
  262. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  263. package/lib/serialization/FileMiddleware.js +1 -1
  264. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  265. package/lib/serialization/ObjectMiddleware.js +31 -20
  266. package/lib/serialization/SerializerMiddleware.js +1 -3
  267. package/lib/serialization/types.js +1 -1
  268. package/lib/sharing/ConsumeSharedModule.js +3 -5
  269. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  270. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  271. package/lib/sharing/ProvideSharedModule.js +3 -7
  272. package/lib/sharing/SharePlugin.js +0 -2
  273. package/lib/sharing/ShareRuntimeModule.js +4 -1
  274. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  275. package/lib/sharing/utils.js +0 -6
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +179 -95
  277. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  279. package/lib/stats/StatsFactory.js +14 -11
  280. package/lib/url/URLParserPlugin.js +2 -4
  281. package/lib/util/ArrayHelpers.js +4 -4
  282. package/lib/util/AsyncQueue.js +1 -0
  283. package/lib/util/Hash.js +35 -5
  284. package/lib/util/LazySet.js +2 -2
  285. package/lib/util/StackedCacheMap.js +0 -2
  286. package/lib/util/TupleSet.js +9 -4
  287. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  288. package/lib/util/WeakTupleMap.js +1 -1
  289. package/lib/util/chainedImports.js +3 -1
  290. package/lib/util/cleverMerge.js +15 -18
  291. package/lib/util/comparators.js +2 -4
  292. package/lib/util/compileBooleanMatcher.js +11 -9
  293. package/lib/util/concatenate.js +1 -2
  294. package/lib/util/create-schema-validation.js +1 -2
  295. package/lib/util/createHash.js +85 -15
  296. package/lib/util/dataURL.js +39 -0
  297. package/lib/util/deprecation.js +29 -31
  298. package/lib/util/deterministicGrouping.js +34 -30
  299. package/lib/util/extractSourceMap.js +319 -0
  300. package/lib/util/findGraphRoots.js +15 -5
  301. package/lib/util/fs.js +29 -8
  302. package/lib/util/hash/BatchedHash.js +47 -8
  303. package/lib/util/hash/wasm-hash.js +53 -13
  304. package/lib/util/semver.js +9 -8
  305. package/lib/util/smartGrouping.js +41 -26
  306. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  307. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  308. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  309. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  310. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  311. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  312. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  313. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  314. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  315. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  316. package/lib/wasm-sync/WebAssemblyParser.js +1 -13
  317. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  318. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  319. package/lib/web/JsonpTemplatePlugin.js +0 -1
  320. package/lib/webpack.js +21 -8
  321. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  322. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  323. package/package.json +21 -21
  324. package/schemas/WebpackOptions.check.js +1 -1
  325. package/schemas/WebpackOptions.json +93 -96
  326. package/schemas/plugins/BannerPlugin.check.js +1 -1
  327. package/schemas/plugins/BannerPlugin.json +4 -0
  328. package/schemas/plugins/IgnorePlugin.json +1 -1
  329. package/schemas/plugins/ProgressPlugin.json +1 -1
  330. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  331. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  332. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  333. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  334. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  335. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  336. package/types.d.ts +1699 -706
  337. package/SECURITY.md +0 -9
  338. package/schemas/plugins/HashedModuleIdsPlugin.check.d.ts +0 -7
  339. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
@@ -92,7 +92,7 @@ const cachedSetProperty = (obj, property, value) => {
92
92
  * @template T
93
93
  * @typedef {object} ObjectParsedPropertyEntry
94
94
  * @property {T[keyof T] | undefined} base base value
95
- * @property {string | undefined} byProperty the name of the selector property
95
+ * @property {`by${string}` | undefined} byProperty the name of the selector property
96
96
  * @property {ByValues | undefined} byValues value depending on selector property, merged with base
97
97
  */
98
98
 
@@ -105,7 +105,7 @@ const cachedSetProperty = (obj, property, value) => {
105
105
 
106
106
  /**
107
107
  * @template {object} T
108
- * @typedef {{ byProperty: string, fn: DynamicFunction }} ParsedObjectDynamic
108
+ * @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
109
109
  */
110
110
 
111
111
  /**
@@ -169,7 +169,7 @@ const parseObject = (obj) => {
169
169
  for (const key of Object.keys(obj)) {
170
170
  const entry = getInfo(/** @type {keyof T} */ (key));
171
171
  if (entry.byProperty === undefined) {
172
- entry.byProperty = byProperty;
172
+ entry.byProperty = /** @type {`by${string}`} */ (byProperty);
173
173
  entry.byValues = new Map();
174
174
  } else if (entry.byProperty !== byProperty) {
175
175
  throw new Error(
@@ -196,7 +196,7 @@ const parseObject = (obj) => {
196
196
  } else if (typeof byObj === "function") {
197
197
  if (dynamicInfo === undefined) {
198
198
  dynamicInfo = {
199
- byProperty: key,
199
+ byProperty: /** @type {`by${string}`} */ (key),
200
200
  fn: byObj
201
201
  };
202
202
  } else {
@@ -222,17 +222,16 @@ const parseObject = (obj) => {
222
222
  /**
223
223
  * @template {object} T
224
224
  * @param {ParsedObjectStatic<T>} info static properties (key is property name)
225
- * @param {{ byProperty: string, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
225
+ * @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
226
226
  * @returns {T} the object
227
227
  */
228
228
  const serializeObject = (info, dynamicInfo) => {
229
- const obj = /** @type {T} */ ({});
229
+ const obj = /** @type {EXPECTED_ANY} */ ({});
230
230
  // Setup byProperty structure
231
231
  for (const entry of info.values()) {
232
232
  if (entry.byProperty !== undefined) {
233
- const byProperty = /** @type {keyof T} */ (entry.byProperty);
234
- const byObj = (obj[byProperty] =
235
- obj[byProperty] || /** @type {TODO} */ ({}));
233
+ const byProperty = entry.byProperty;
234
+ const byObj = (obj[byProperty] = obj[byProperty] || {});
236
235
  for (const byValue of /** @type {ByValues} */ (entry.byValues).keys()) {
237
236
  byObj[byValue] = byObj[byValue] || {};
238
237
  }
@@ -240,13 +239,12 @@ const serializeObject = (info, dynamicInfo) => {
240
239
  }
241
240
  for (const [key, entry] of info) {
242
241
  if (entry.base !== undefined) {
243
- obj[/** @type {keyof T} */ (key)] = entry.base;
242
+ obj[key] = entry.base;
244
243
  }
245
244
  // Fill byProperty structure
246
245
  if (entry.byProperty !== undefined) {
247
- const byProperty = /** @type {keyof T} */ (entry.byProperty);
248
- const byObj = (obj[byProperty] =
249
- obj[byProperty] || /** @type {TODO} */ ({}));
246
+ const byProperty = entry.byProperty;
247
+ const byObj = (obj[byProperty] = obj[byProperty] || {});
250
248
  for (const byValue of Object.keys(byObj)) {
251
249
  const value = getFromByValues(
252
250
  /** @type {ByValues} */
@@ -258,8 +256,7 @@ const serializeObject = (info, dynamicInfo) => {
258
256
  }
259
257
  }
260
258
  if (dynamicInfo !== undefined) {
261
- /** @type {TODO} */
262
- (obj)[dynamicInfo.byProperty] = dynamicInfo.fn;
259
+ obj[dynamicInfo.byProperty] = dynamicInfo.fn;
263
260
  }
264
261
  return obj;
265
262
  };
@@ -384,7 +381,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
384
381
  * @param {ObjectParsedPropertyEntry<T>} firstEntry a
385
382
  * @param {ObjectParsedPropertyEntry<O>} secondEntry b
386
383
  * @param {boolean} internalCaching should parsing of objects and nested merges be cached
387
- * @returns {ObjectParsedPropertyEntry<TODO>} new entry
384
+ * @returns {ObjectParsedPropertyEntry<T> | ObjectParsedPropertyEntry<O> | ObjectParsedPropertyEntry<T & O>} new entry
388
385
  */
389
386
  const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
390
387
  switch (getValueType(secondEntry.base)) {
@@ -479,7 +476,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
479
476
  if (!secondEntry.byProperty) {
480
477
  // = first.base + (first.byProperty + second.base)
481
478
  return {
482
- base: newBase,
479
+ base: /** @type {T[keyof T] & O[keyof O]} */ (newBase),
483
480
  byProperty: firstEntry.byProperty,
484
481
  byValues: intermediateByValues
485
482
  };
@@ -499,7 +496,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
499
496
  );
500
497
  }
501
498
  return {
502
- base: newBase,
499
+ base: /** @type {T[keyof T] & O[keyof O]} */ (newBase),
503
500
  byProperty: firstEntry.byProperty,
504
501
  byValues: newByValues
505
502
  };
@@ -8,6 +8,7 @@
8
8
  const { compareRuntime } = require("./runtime");
9
9
 
10
10
  /** @typedef {import("../Chunk")} Chunk */
11
+ /** @typedef {import("../Chunk").ChunkName} ChunkName */
11
12
  /** @typedef {import("../Chunk").ChunkId} ChunkId */
12
13
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
13
14
  /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
@@ -490,10 +491,7 @@ const compareChunksNatural = (chunkGraph) => {
490
491
  const cmpFn = module.exports.compareModulesById(chunkGraph);
491
492
  const cmpIterableFn = compareIterables(cmpFn);
492
493
  return concatComparators(
493
- compareSelect(
494
- (chunk) => /** @type {string|number} */ (chunk.name),
495
- compareIds
496
- ),
494
+ compareSelect((chunk) => /** @type {ChunkName} */ (chunk.name), compareIds),
497
495
  compareSelect((chunk) => chunk.runtime, compareRuntime),
498
496
  compareSelect(
499
497
  /**
@@ -56,28 +56,30 @@ const compileBooleanMatcherFromLists = (positiveItems, negativeItems) => {
56
56
  return (value) => `!/^${negativeRegexp}$/.test(${value})`;
57
57
  };
58
58
 
59
+ /** @typedef {string[][]} ListOfCommonItems */
60
+
59
61
  /**
60
62
  * @param {Set<string>} itemsSet items set
61
63
  * @param {(str: string) => string | false} getKey get key function
62
- * @param {(str: Array<string>) => boolean} condition condition
63
- * @returns {Array<Array<string>>} list of common items
64
+ * @param {(str: string[]) => boolean} condition condition
65
+ * @returns {ListOfCommonItems} list of common items
64
66
  */
65
67
  const popCommonItems = (itemsSet, getKey, condition) => {
66
- /** @type {Map<string, Array<string>>} */
68
+ /** @type {Map<string, string[]>} */
67
69
  const map = new Map();
68
70
  for (const item of itemsSet) {
69
71
  const key = getKey(item);
70
72
  if (key) {
71
73
  let list = map.get(key);
72
74
  if (list === undefined) {
73
- /** @type {Array<string>} */
75
+ /** @type {string[]} */
74
76
  list = [];
75
77
  map.set(key, list);
76
78
  }
77
79
  list.push(item);
78
80
  }
79
81
  }
80
- /** @type {Array<Array<string>>} */
82
+ /** @type {ListOfCommonItems} */
81
83
  const result = [];
82
84
  for (const list of map.values()) {
83
85
  if (condition(list)) {
@@ -91,7 +93,7 @@ const popCommonItems = (itemsSet, getKey, condition) => {
91
93
  };
92
94
 
93
95
  /**
94
- * @param {Array<string>} items items
96
+ * @param {string[]} items items
95
97
  * @returns {string} common prefix
96
98
  */
97
99
  const getCommonPrefix = (items) => {
@@ -109,7 +111,7 @@ const getCommonPrefix = (items) => {
109
111
  };
110
112
 
111
113
  /**
112
- * @param {Array<string>} items items
114
+ * @param {string[]} items items
113
115
  * @returns {string} common suffix
114
116
  */
115
117
  const getCommonSuffix = (items) => {
@@ -127,14 +129,14 @@ const getCommonSuffix = (items) => {
127
129
  };
128
130
 
129
131
  /**
130
- * @param {Array<string>} itemsArr array of items
132
+ * @param {string[]} itemsArr array of items
131
133
  * @returns {string} regexp
132
134
  */
133
135
  const itemsToRegexp = (itemsArr) => {
134
136
  if (itemsArr.length === 1) {
135
137
  return quoteMeta(itemsArr[0]);
136
138
  }
137
- /** @type {Array<string>} */
139
+ /** @type {string[]} */
138
140
  const finishedItems = [];
139
141
 
140
142
  // merge single char items: (a|b|c|d|ef) => ([abcd]|ef)
@@ -12,7 +12,6 @@ const Template = require("../Template");
12
12
  /** @typedef {import("eslint-scope").Variable} Variable */
13
13
  /** @typedef {import("estree").Node} Node */
14
14
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
- /** @typedef {import("../javascript/JavascriptParser").Program} Program */
16
15
  /** @typedef {Set<string>} UsedNames */
17
16
 
18
17
  const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
@@ -72,7 +71,7 @@ const getPathInAst = (ast, node) => {
72
71
  }
73
72
  } else if (ast && typeof ast === "object") {
74
73
  const keys =
75
- /** @type {Array<keyof Node>} */
74
+ /** @type {(keyof Node)[]} */
76
75
  (Object.keys(ast));
77
76
  for (let i = 0; i < keys.length; i++) {
78
77
  // We are making the faster check in `enterNode` using `n.range`
@@ -8,8 +8,7 @@
8
8
  const memoize = require("./memoize");
9
9
 
10
10
  /** @typedef {import("schema-utils").Schema} Schema */
11
- /** @typedef {import("schema-utils/declarations/validate").ValidationErrorConfiguration} ValidationErrorConfiguration */
12
- /** @typedef {import("./fs").JsonObject} JsonObject */
11
+ /** @typedef {import("schema-utils").ValidationErrorConfiguration} ValidationErrorConfiguration */
13
12
 
14
13
  const getValidate = memoize(() => require("schema-utils").validate);
15
14
 
@@ -7,9 +7,10 @@
7
7
 
8
8
  const Hash = require("./Hash");
9
9
 
10
+ /** @typedef {import("../../declarations/WebpackOptions").HashDigest} Encoding */
10
11
  /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
11
12
 
12
- const BULK_SIZE = 2000;
13
+ const BULK_SIZE = 3;
13
14
 
14
15
  // We are using an object instead of a Map as this will stay static during the runtime
15
16
  // so access to it can be optimized by v8
@@ -38,9 +39,22 @@ class BulkUpdateDecorator extends Hash {
38
39
 
39
40
  /**
40
41
  * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
41
- * @param {string|Buffer} data data
42
- * @param {string=} inputEncoding data encoding
43
- * @returns {this} updated hash
42
+ * @overload
43
+ * @param {string | Buffer} data data
44
+ * @returns {Hash} updated hash
45
+ */
46
+ /**
47
+ * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
48
+ * @overload
49
+ * @param {string} data data
50
+ * @param {Encoding} inputEncoding data encoding
51
+ * @returns {Hash} updated hash
52
+ */
53
+ /**
54
+ * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
55
+ * @param {string | Buffer} data data
56
+ * @param {Encoding=} inputEncoding data encoding
57
+ * @returns {Hash} updated hash
44
58
  */
45
59
  update(data, inputEncoding) {
46
60
  if (
@@ -55,7 +69,11 @@ class BulkUpdateDecorator extends Hash {
55
69
  this.hash.update(this.buffer);
56
70
  this.buffer = "";
57
71
  }
58
- this.hash.update(data, inputEncoding);
72
+ if (typeof data === "string" && inputEncoding) {
73
+ this.hash.update(data, inputEncoding);
74
+ } else {
75
+ this.hash.update(data);
76
+ }
59
77
  } else {
60
78
  this.buffer += data;
61
79
  if (this.buffer.length > BULK_SIZE) {
@@ -71,8 +89,19 @@ class BulkUpdateDecorator extends Hash {
71
89
 
72
90
  /**
73
91
  * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
74
- * @param {string=} encoding encoding of the return value
75
- * @returns {string|Buffer} digest
92
+ * @overload
93
+ * @returns {Buffer} digest
94
+ */
95
+ /**
96
+ * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
97
+ * @overload
98
+ * @param {Encoding} encoding encoding of the return value
99
+ * @returns {string} digest
100
+ */
101
+ /**
102
+ * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
103
+ * @param {Encoding=} encoding encoding of the return value
104
+ * @returns {string | Buffer} digest
76
105
  */
77
106
  digest(encoding) {
78
107
  let digestCache;
@@ -91,9 +120,19 @@ class BulkUpdateDecorator extends Hash {
91
120
  if (buffer.length > 0) {
92
121
  this.hash.update(buffer);
93
122
  }
123
+ if (!encoding) {
124
+ const result = this.hash.digest();
125
+ if (digestCache !== undefined) {
126
+ digestCache.set(buffer, result);
127
+ }
128
+ return result;
129
+ }
94
130
  const digestResult = this.hash.digest(encoding);
131
+ // Compatibility with the old hash library
95
132
  const result =
96
- typeof digestResult === "string" ? digestResult : digestResult.toString();
133
+ typeof digestResult === "string"
134
+ ? digestResult
135
+ : /** @type {NodeJS.TypedArray} */ (digestResult).toString();
97
136
  if (digestCache !== undefined) {
98
137
  digestCache.set(buffer, result);
99
138
  }
@@ -110,9 +149,22 @@ class DebugHash extends Hash {
110
149
 
111
150
  /**
112
151
  * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
113
- * @param {string|Buffer} data data
114
- * @param {string=} inputEncoding data encoding
115
- * @returns {this} updated hash
152
+ * @overload
153
+ * @param {string | Buffer} data data
154
+ * @returns {Hash} updated hash
155
+ */
156
+ /**
157
+ * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
158
+ * @overload
159
+ * @param {string} data data
160
+ * @param {Encoding} inputEncoding data encoding
161
+ * @returns {Hash} updated hash
162
+ */
163
+ /**
164
+ * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}
165
+ * @param {string | Buffer} data data
166
+ * @param {Encoding=} inputEncoding data encoding
167
+ * @returns {Hash} updated hash
116
168
  */
117
169
  update(data, inputEncoding) {
118
170
  if (typeof data !== "string") data = data.toString("utf8");
@@ -132,8 +184,19 @@ class DebugHash extends Hash {
132
184
 
133
185
  /**
134
186
  * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
135
- * @param {string=} encoding encoding of the return value
136
- * @returns {string|Buffer} digest
187
+ * @overload
188
+ * @returns {Buffer} digest
189
+ */
190
+ /**
191
+ * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
192
+ * @overload
193
+ * @param {Encoding} encoding encoding of the return value
194
+ * @returns {string} digest
195
+ */
196
+ /**
197
+ * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}
198
+ * @param {Encoding=} encoding encoding of the return value
199
+ * @returns {string | Buffer} digest
137
200
  */
138
201
  digest(encoding) {
139
202
  return Buffer.from(`@webpack-debug-digest@${this.string}`).toString("hex");
@@ -186,14 +249,21 @@ module.exports = (algorithm) => {
186
249
  case "native-md4":
187
250
  if (crypto === undefined) crypto = require("crypto");
188
251
  return new BulkUpdateDecorator(
189
- () => /** @type {typeof import("crypto")} */ (crypto).createHash("md4"),
252
+ () =>
253
+ /** @type {Hash} */ (
254
+ /** @type {typeof import("crypto")} */
255
+ (crypto).createHash("md4")
256
+ ),
190
257
  "md4"
191
258
  );
192
259
  default:
193
260
  if (crypto === undefined) crypto = require("crypto");
194
261
  return new BulkUpdateDecorator(
195
262
  () =>
196
- /** @type {typeof import("crypto")} */ (crypto).createHash(algorithm),
263
+ /** @type {Hash} */ (
264
+ /** @type {typeof import("crypto")} */
265
+ (crypto).createHash(algorithm)
266
+ ),
197
267
  algorithm
198
268
  );
199
269
  }
@@ -0,0 +1,39 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Natsu @xiaoxiaojx
4
+ */
5
+
6
+ "use strict";
7
+
8
+ // data URL scheme: "data:text/javascript;charset=utf-8;base64,some-string"
9
+ // http://www.ietf.org/rfc/rfc2397.txt
10
+ const URIRegEx = /^data:([^;,]+)?((?:;[^;,]+)*?)(?:;(base64)?)?,(.*)$/i;
11
+
12
+ /**
13
+ * @param {string} uri data URI
14
+ * @returns {Buffer | null} decoded data
15
+ */
16
+ const decodeDataURI = (uri) => {
17
+ const match = URIRegEx.exec(uri);
18
+ if (!match) return null;
19
+
20
+ const isBase64 = match[3];
21
+ const body = match[4];
22
+
23
+ if (isBase64) {
24
+ return Buffer.from(body, "base64");
25
+ }
26
+
27
+ // CSS allows to use `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="stroke: rgb(223,224,225); stroke-width: 2px; fill: none; stroke-dasharray: 6px 3px" /></svg>`
28
+ // so we return original body if we can't `decodeURIComponent`
29
+ try {
30
+ return Buffer.from(decodeURIComponent(body), "ascii");
31
+ } catch (_) {
32
+ return Buffer.from(body, "ascii");
33
+ }
34
+ };
35
+
36
+ module.exports = {
37
+ URIRegEx,
38
+ decodeDataURI
39
+ };
@@ -75,38 +75,37 @@ const DISABLED_METHODS = [
75
75
 
76
76
  /**
77
77
  * @template T
78
- * @typedef {Set<T> & {[Symbol.isConcatSpreadable]?: boolean} & { push?: (...items: T[]) => void } & { [P in DISABLED_METHODS_NAMES]?: () => void } & { [P in COPY_METHODS_NAMES]?: () => TODO }} SetWithDeprecatedArrayMethods
78
+ * @typedef {Set<T> & { [Symbol.isConcatSpreadable]: boolean } & { push: (...items: T[]) => void, length?: number } & { [P in DISABLED_METHODS_NAMES]: () => void } & { [P in COPY_METHODS_NAMES]: P extends keyof Array<T> ? () => Pick<Array<T>, P> : never }} SetWithDeprecatedArrayMethods
79
79
  */
80
80
 
81
81
  /**
82
82
  * @template T
83
- * @param {SetWithDeprecatedArrayMethods<T>} set new set
83
+ * @param {Set<T>} set new set
84
84
  * @param {string} name property name
85
85
  * @returns {void}
86
86
  */
87
87
  module.exports.arrayToSetDeprecation = (set, name) => {
88
88
  for (const method of COPY_METHODS) {
89
- if (set[method]) continue;
89
+ if (/** @type {SetWithDeprecatedArrayMethods<T>} */ (set)[method]) continue;
90
90
  const d = createDeprecation(
91
91
  `${name} was changed from Array to Set (using Array method '${method}' is deprecated)`,
92
92
  "ARRAY_TO_SET"
93
93
  );
94
- /**
95
- * @deprecated
96
- * @this {Set<T>}
97
- * @returns {number} count
98
- */
99
- // eslint-disable-next-line func-names
100
- set[method] = function () {
101
- d();
102
- // eslint-disable-next-line unicorn/prefer-spread
103
- const array = Array.from(this);
104
- return Array.prototype[/** @type {keyof COPY_METHODS} */ (method)].apply(
105
- array,
106
- // eslint-disable-next-line prefer-rest-params
107
- arguments
108
- );
109
- };
94
+ /** @type {EXPECTED_ANY} */
95
+ (set)[method] =
96
+ // eslint-disable-next-line func-names
97
+ function () {
98
+ d();
99
+ // eslint-disable-next-line unicorn/prefer-spread
100
+ const array = Array.from(this);
101
+ return Array.prototype[
102
+ /** @type {keyof COPY_METHODS} */ (method)
103
+ ].apply(
104
+ array,
105
+ // eslint-disable-next-line prefer-rest-params
106
+ arguments
107
+ );
108
+ };
110
109
  }
111
110
  const dPush = createDeprecation(
112
111
  `${name} was changed from Array to Set (using Array method 'push' is deprecated)`,
@@ -120,12 +119,8 @@ module.exports.arrayToSetDeprecation = (set, name) => {
120
119
  `${name} was changed from Array to Set (indexing Array is deprecated)`,
121
120
  "ARRAY_TO_SET_INDEXER"
122
121
  );
123
- /**
124
- * @deprecated
125
- * @this {Set<T>}
126
- * @returns {number} count
127
- */
128
- set.push = function push() {
122
+ /** @type {SetWithDeprecatedArrayMethods<T>} */
123
+ (set).push = function push() {
129
124
  dPush();
130
125
  // eslint-disable-next-line prefer-rest-params, unicorn/prefer-spread
131
126
  for (const item of Array.from(arguments)) {
@@ -134,9 +129,10 @@ module.exports.arrayToSetDeprecation = (set, name) => {
134
129
  return this.size;
135
130
  };
136
131
  for (const method of DISABLED_METHODS) {
137
- if (set[method]) continue;
132
+ if (/** @type {SetWithDeprecatedArrayMethods<T>} */ (set)[method]) continue;
138
133
 
139
- set[method] = () => {
134
+ /** @type {SetWithDeprecatedArrayMethods<T>} */
135
+ (set)[method] = () => {
140
136
  throw new Error(
141
137
  `${name} was changed from Array to Set (using Array method '${method}' is not possible)`
142
138
  );
@@ -191,13 +187,14 @@ module.exports.arrayToSetDeprecation = (set, name) => {
191
187
  );
192
188
  }
193
189
  });
194
- set[Symbol.isConcatSpreadable] = true;
190
+ /** @type {SetWithDeprecatedArrayMethods<T>} */
191
+ (set)[Symbol.isConcatSpreadable] = true;
195
192
  };
196
193
 
197
194
  /**
198
195
  * @template T
199
196
  * @param {string} name name
200
- * @returns {{ new <T = any>(values?: readonly T[] | null): SetDeprecatedArray<T> }} SetDeprecatedArray
197
+ * @returns {{ new <T = any>(values?: ReadonlyArray<T> | null): SetDeprecatedArray<T> }} SetDeprecatedArray
201
198
  */
202
199
  module.exports.createArrayToSetDeprecationSet = (name) => {
203
200
  let initialized = false;
@@ -207,14 +204,15 @@ module.exports.createArrayToSetDeprecationSet = (name) => {
207
204
  */
208
205
  class SetDeprecatedArray extends Set {
209
206
  /**
210
- * @param {readonly T[] | null=} items items
207
+ * @param {ReadonlyArray<T> | null=} items items
211
208
  */
212
209
  constructor(items) {
213
210
  super(items);
214
211
  if (!initialized) {
215
212
  initialized = true;
216
213
  module.exports.arrayToSetDeprecation(
217
- SetDeprecatedArray.prototype,
214
+ /** @type {SetWithDeprecatedArrayMethods<T>} */
215
+ (SetDeprecatedArray.prototype),
218
216
  name
219
217
  );
220
218
  }