webpack 5.107.2 → 5.108.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 (357) hide show
  1. package/hot/dev-server.js +2 -0
  2. package/lib/APIPlugin.js +8 -4
  3. package/lib/CacheFacade.js +7 -0
  4. package/lib/Chunk.js +4 -0
  5. package/lib/ChunkGraph.js +30 -9
  6. package/lib/CircularModulesPlugin.js +190 -0
  7. package/lib/CleanPlugin.js +2 -1
  8. package/lib/Compilation.js +396 -65
  9. package/lib/Compiler.js +25 -11
  10. package/lib/ConcatenationScope.js +10 -3
  11. package/lib/ContextExclusionPlugin.js +1 -0
  12. package/lib/ContextModule.js +92 -47
  13. package/lib/ContextReplacementPlugin.js +4 -0
  14. package/lib/DefinePlugin.js +89 -15
  15. package/lib/Dependency.js +111 -7
  16. package/lib/EntryOptionPlugin.js +39 -2
  17. package/lib/EntryPlugin.js +2 -0
  18. package/lib/ExportsInfo.js +314 -73
  19. package/lib/ExternalModule.js +82 -34
  20. package/lib/ExternalModuleFactoryPlugin.js +1 -0
  21. package/lib/ExternalsPlugin.js +1 -0
  22. package/lib/FileSystemInfo.js +173 -23
  23. package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
  24. package/lib/FlagDependencyExportsPlugin.js +23 -0
  25. package/lib/FlagDependencyUsagePlugin.js +87 -5
  26. package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
  27. package/lib/Generator.js +8 -0
  28. package/lib/HotModuleReplacementPlugin.js +65 -28
  29. package/lib/IgnorePlugin.js +1 -0
  30. package/lib/InitFragment.js +5 -0
  31. package/lib/JavascriptMetaInfoPlugin.js +7 -5
  32. package/lib/LazyBarrel.js +361 -0
  33. package/lib/LoaderTargetPlugin.js +1 -0
  34. package/lib/Module.js +21 -42
  35. package/lib/ModuleGraph.js +3 -2
  36. package/lib/ModuleProfile.js +27 -1
  37. package/lib/ModuleTemplate.js +2 -0
  38. package/lib/MultiCompiler.js +2 -0
  39. package/lib/MultiStats.js +1 -0
  40. package/lib/MultiWatching.js +2 -0
  41. package/lib/NodeStuffPlugin.js +22 -17
  42. package/lib/NormalModule.js +142 -80
  43. package/lib/NormalModuleReplacementPlugin.js +2 -0
  44. package/lib/PrefetchPlugin.js +2 -0
  45. package/lib/ProgressPlugin.js +8 -0
  46. package/lib/ProvidePlugin.js +1 -0
  47. package/lib/RawModule.js +20 -16
  48. package/lib/RecordIdsPlugin.js +1 -0
  49. package/lib/RuntimeGlobals.js +5 -0
  50. package/lib/RuntimePlugin.js +58 -26
  51. package/lib/RuntimeTemplate.js +278 -21
  52. package/lib/SelfModuleFactory.js +1 -0
  53. package/lib/SourceMapDevToolPlugin.js +3 -5
  54. package/lib/Stats.js +1 -0
  55. package/lib/Template.js +8 -2
  56. package/lib/TemplatedPathPlugin.js +473 -131
  57. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
  58. package/lib/WarnDeprecatedOptionPlugin.js +4 -0
  59. package/lib/WarnNoModeSetPlugin.js +1 -0
  60. package/lib/WatchIgnorePlugin.js +1 -0
  61. package/lib/Watching.js +9 -0
  62. package/lib/WebpackOptionsApply.js +50 -5
  63. package/lib/asset/AssetBytesGenerator.js +11 -3
  64. package/lib/asset/AssetGenerator.js +47 -22
  65. package/lib/asset/AssetModule.js +47 -0
  66. package/lib/asset/AssetModulesPlugin.js +14 -14
  67. package/lib/asset/AssetParser.js +2 -2
  68. package/lib/asset/AssetSourceGenerator.js +8 -0
  69. package/lib/asset/RawDataUrlModule.js +12 -13
  70. package/lib/buildChunkGraph.js +64 -7
  71. package/lib/bun/BunTargetPlugin.js +48 -0
  72. package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
  73. package/lib/cache/AddManagedPathsPlugin.js +3 -0
  74. package/lib/cache/IdleFileCachePlugin.js +4 -0
  75. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  76. package/lib/cache/PackFileCacheStrategy.js +1 -0
  77. package/lib/cache/ResolverCachePlugin.js +2 -0
  78. package/lib/cache/mergeEtags.js +2 -0
  79. package/lib/cli.js +109 -19
  80. package/lib/config/browserslistTargetHandler.js +99 -0
  81. package/lib/config/defaults.js +147 -7
  82. package/lib/config/defineConfig.js +31 -0
  83. package/lib/config/normalization.js +5 -0
  84. package/lib/config/target.js +181 -2
  85. package/lib/container/ContainerEntryModule.js +15 -14
  86. package/lib/container/ContainerExposedDependency.js +2 -2
  87. package/lib/container/ContainerReferencePlugin.js +1 -1
  88. package/lib/container/FallbackDependency.js +5 -7
  89. package/lib/container/FallbackModule.js +10 -9
  90. package/lib/container/RemoteModule.js +20 -10
  91. package/lib/container/RemoteRuntimeModule.js +14 -12
  92. package/lib/css/CssGenerator.js +353 -327
  93. package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
  94. package/lib/css/CssLoadingRuntimeModule.js +118 -47
  95. package/lib/css/CssModule.js +52 -23
  96. package/lib/css/CssModulesPlugin.js +107 -124
  97. package/lib/css/CssParser.js +2759 -2205
  98. package/lib/css/syntax.js +2859 -0
  99. package/lib/debug/ProfilingPlugin.js +2 -0
  100. package/lib/deno/DenoTargetPlugin.js +47 -0
  101. package/lib/dependencies/AMDDefineDependency.js +22 -17
  102. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
  103. package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
  104. package/lib/dependencies/AMDRequireContextDependency.js +7 -11
  105. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
  106. package/lib/dependencies/AMDRequireDependency.js +24 -20
  107. package/lib/dependencies/CachedConstDependency.js +3 -0
  108. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  109. package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
  110. package/lib/dependencies/CommonJsExportsDependency.js +21 -16
  111. package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
  112. package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
  113. package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
  114. package/lib/dependencies/CommonJsPlugin.js +1 -1
  115. package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
  116. package/lib/dependencies/CommonJsRequireDependency.js +42 -11
  117. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
  118. package/lib/dependencies/ConstDependency.js +16 -11
  119. package/lib/dependencies/ContextDependency.js +4 -0
  120. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
  121. package/lib/dependencies/ContextElementDependency.js +23 -14
  122. package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
  123. package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
  124. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  125. package/lib/dependencies/CssIcssExportDependency.js +512 -574
  126. package/lib/dependencies/CssIcssImportDependency.js +9 -9
  127. package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
  128. package/lib/dependencies/CssImportDependency.js +25 -1
  129. package/lib/dependencies/CssUrlDependency.js +23 -14
  130. package/lib/dependencies/DllEntryDependency.js +9 -13
  131. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  132. package/lib/dependencies/ExportsInfoDependency.js +12 -12
  133. package/lib/dependencies/ExternalModuleDependency.js +8 -5
  134. package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
  135. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
  136. package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
  137. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  138. package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
  139. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
  140. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
  141. package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
  142. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
  143. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
  144. package/lib/dependencies/HarmonyExportInitFragment.js +18 -15
  145. package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
  146. package/lib/dependencies/HarmonyExports.js +4 -1
  147. package/lib/dependencies/HarmonyImportDependency.js +24 -0
  148. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
  149. package/lib/dependencies/HarmonyImportGuard.js +254 -0
  150. package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
  151. package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
  152. package/lib/dependencies/HarmonyLinkingError.js +1 -0
  153. package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
  154. package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +261 -109
  155. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  156. package/lib/dependencies/HtmlInlineScriptDependency.js +17 -13
  157. package/lib/dependencies/HtmlInlineStyleDependency.js +45 -11
  158. package/lib/dependencies/ImportContextDependency.js +5 -9
  159. package/lib/dependencies/ImportDependency.js +44 -2
  160. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  161. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  162. package/lib/dependencies/ImportMetaPlugin.js +74 -30
  163. package/lib/dependencies/ImportParserPlugin.js +19 -0
  164. package/lib/dependencies/ImportWeakDependency.js +1 -0
  165. package/lib/dependencies/JsonExportsDependency.js +9 -9
  166. package/lib/dependencies/LoaderImportDependency.js +1 -0
  167. package/lib/dependencies/LocalModule.js +11 -12
  168. package/lib/dependencies/LocalModuleDependency.js +11 -13
  169. package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
  170. package/lib/dependencies/ModuleDependency.js +7 -0
  171. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  172. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  173. package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
  174. package/lib/dependencies/ProvidedDependency.js +31 -27
  175. package/lib/dependencies/PureExpressionDependency.js +7 -9
  176. package/lib/dependencies/RequireEnsureDependency.js +12 -13
  177. package/lib/dependencies/RequireHeaderDependency.js +3 -4
  178. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  179. package/lib/dependencies/RequireResolveContextDependency.js +7 -11
  180. package/lib/dependencies/RequireResolveDependency.js +1 -0
  181. package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
  182. package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
  183. package/lib/dependencies/StaticExportsDependency.js +10 -10
  184. package/lib/dependencies/SystemPlugin.js +2 -0
  185. package/lib/dependencies/URLContextDependency.js +5 -7
  186. package/lib/dependencies/URLDependency.js +14 -16
  187. package/lib/dependencies/UnsupportedDependency.js +8 -13
  188. package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
  189. package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
  190. package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
  191. package/lib/dependencies/WorkerDependency.js +19 -8
  192. package/lib/dependencies/WorkerPlugin.js +22 -6
  193. package/lib/dependencies/processExportInfo.js +13 -11
  194. package/lib/dll/DelegatedModule.js +29 -15
  195. package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
  196. package/lib/dll/DelegatedPlugin.js +1 -0
  197. package/lib/dll/DllEntryPlugin.js +3 -0
  198. package/lib/dll/DllModule.js +3 -2
  199. package/lib/dll/DllPlugin.js +16 -0
  200. package/lib/dll/DllReferencePlugin.js +3 -0
  201. package/lib/dll/LibManifestPlugin.js +1 -0
  202. package/lib/electron/ElectronTargetPlugin.js +22 -4
  203. package/lib/errors/ConcurrentCompilationError.js +1 -0
  204. package/lib/errors/HookWebpackError.js +11 -13
  205. package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
  206. package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
  207. package/lib/errors/JSONParseError.js +9 -8
  208. package/lib/errors/ModuleBuildError.js +16 -13
  209. package/lib/errors/ModuleDependencyError.js +8 -1
  210. package/lib/errors/ModuleDependencyWarning.js +8 -1
  211. package/lib/errors/ModuleError.js +5 -11
  212. package/lib/errors/ModuleHashingError.js +4 -0
  213. package/lib/errors/ModuleNotFoundError.js +3 -0
  214. package/lib/errors/ModuleParseError.js +5 -11
  215. package/lib/errors/ModuleRestoreError.js +2 -0
  216. package/lib/errors/ModuleStoreError.js +3 -0
  217. package/lib/errors/ModuleWarning.js +7 -11
  218. package/lib/errors/NodeStuffInWebError.js +1 -0
  219. package/lib/errors/NonErrorEmittedError.js +2 -0
  220. package/lib/errors/UnhandledSchemeError.js +1 -0
  221. package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
  222. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
  223. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  224. package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
  225. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  226. package/lib/hmr/LazyCompilationPlugin.js +30 -6
  227. package/lib/html/HtmlGenerator.js +217 -23
  228. package/lib/html/HtmlModule.js +40 -0
  229. package/lib/html/HtmlModulesPlugin.js +219 -55
  230. package/lib/html/HtmlParser.js +1108 -1099
  231. package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
  232. package/lib/ids/IdHelpers.js +4 -2
  233. package/lib/index.js +19 -0
  234. package/lib/javascript/BasicEvaluatedExpression.js +1 -0
  235. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
  236. package/lib/javascript/JavascriptGenerator.js +6 -2
  237. package/lib/javascript/JavascriptModule.js +54 -0
  238. package/lib/javascript/JavascriptModulesPlugin.js +257 -102
  239. package/lib/javascript/JavascriptParser.js +285 -158
  240. package/lib/json/JsonModule.js +40 -0
  241. package/lib/json/JsonModulesPlugin.js +7 -0
  242. package/lib/json/JsonParser.js +4 -2
  243. package/lib/library/AssignLibraryPlugin.js +5 -3
  244. package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
  245. package/lib/library/FalseIIFEUmdWarning.js +1 -0
  246. package/lib/library/ModuleLibraryPlugin.js +24 -5
  247. package/lib/library/SystemLibraryPlugin.js +3 -3
  248. package/lib/node/NodeTargetPlugin.js +1 -0
  249. package/lib/node/NodeWatchFileSystem.js +1 -0
  250. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
  251. package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
  252. package/lib/optimize/ConcatenatedModule.js +395 -77
  253. package/lib/optimize/ConstExportsPlugin.js +211 -0
  254. package/lib/optimize/InlineExports.js +178 -0
  255. package/lib/optimize/InnerGraph.js +372 -275
  256. package/lib/optimize/InnerGraphPlugin.js +196 -99
  257. package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
  258. package/lib/optimize/RealContentHashPlugin.js +14 -1
  259. package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
  260. package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
  261. package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
  262. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
  263. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
  264. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
  265. package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
  266. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  267. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
  268. package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
  269. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
  270. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
  271. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  272. package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
  273. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  274. package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
  275. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  276. package/lib/schemes/HttpUriPlugin.js +3 -2
  277. package/lib/serialization/AggregateErrorSerializer.js +7 -6
  278. package/lib/serialization/ArraySerializer.js +4 -8
  279. package/lib/serialization/BinaryMiddleware.js +538 -468
  280. package/lib/serialization/DateObjectSerializer.js +2 -2
  281. package/lib/serialization/ErrorObjectSerializer.js +7 -6
  282. package/lib/serialization/MapObjectSerializer.js +5 -9
  283. package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
  284. package/lib/serialization/ObjectMiddleware.js +50 -13
  285. package/lib/serialization/PlainObjectSerializer.js +9 -8
  286. package/lib/serialization/RegExpObjectSerializer.js +2 -2
  287. package/lib/serialization/Serializer.js +1 -0
  288. package/lib/serialization/SetObjectSerializer.js +4 -8
  289. package/lib/sharing/ConsumeSharedModule.js +6 -7
  290. package/lib/sharing/ConsumeSharedPlugin.js +1 -0
  291. package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
  292. package/lib/sharing/ProvideSharedDependency.js +30 -15
  293. package/lib/sharing/ProvideSharedModule.js +30 -11
  294. package/lib/sharing/ProvideSharedPlugin.js +4 -2
  295. package/lib/sharing/SharePlugin.js +3 -0
  296. package/lib/sharing/ShareRuntimeModule.js +18 -16
  297. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  298. package/lib/sharing/utils.js +1 -1
  299. package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
  300. package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
  301. package/lib/stats/StatsFactory.js +11 -9
  302. package/lib/stats/StatsPrinter.js +9 -2
  303. package/lib/url/URLParserPlugin.js +5 -2
  304. package/lib/util/AsyncQueue.js +10 -0
  305. package/lib/util/LazyBucketSortedSet.js +5 -0
  306. package/lib/util/LazySet.js +6 -4
  307. package/lib/util/LocConverter.js +11 -1
  308. package/lib/util/Semaphore.js +1 -0
  309. package/lib/util/SourceProcessor.js +106 -0
  310. package/lib/util/TupleSet.js +1 -0
  311. package/lib/util/WeakTupleMap.js +27 -1
  312. package/lib/util/chainedImports.js +3 -3
  313. package/lib/util/comparators.js +2 -2
  314. package/lib/util/concatenate.js +31 -7
  315. package/lib/util/createHash.js +0 -1
  316. package/lib/util/deterministicGrouping.js +19 -12
  317. package/lib/util/extractSourceMap.js +1 -1
  318. package/lib/util/findGraphRoots.js +2 -0
  319. package/lib/util/fs.js +10 -5
  320. package/lib/util/hash/DebugHash.js +1 -0
  321. package/lib/util/hash/hash-digest.js +24 -15
  322. package/lib/util/identifier.js +7 -0
  323. package/lib/util/internalSerializables.js +11 -2
  324. package/lib/util/magicComment.js +42 -0
  325. package/lib/util/makeSerializable.js +1 -0
  326. package/lib/util/nonNumericOnlyHash.js +30 -1
  327. package/lib/util/property.js +7 -1
  328. package/lib/util/publicPathPlaceholder.js +64 -0
  329. package/lib/util/registerExternalSerializer.js +4 -4
  330. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  331. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
  333. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  334. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
  335. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  336. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  337. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
  338. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
  339. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  340. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  341. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
  342. package/lib/wasm-sync/WebAssemblyParser.js +7 -3
  343. package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
  344. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
  345. package/package.json +35 -27
  346. package/schemas/WebpackOptions.check.js +1 -1
  347. package/schemas/WebpackOptions.json +212 -3
  348. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
  349. package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
  350. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  351. package/schemas/plugins/HtmlParserOptions.json +3 -0
  352. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  353. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  354. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  355. package/types.d.ts +1456 -290
  356. package/lib/css/walkCssTokens.js +0 -2020
  357. package/lib/util/AppendOnlyStackedSet.js +0 -93
@@ -19,8 +19,8 @@ const CssImportDependency = require("./CssImportDependency");
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
21
21
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
23
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string]>} ObjectDeserializerContext */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string]>} ObjectSerializerContext */
24
24
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
25
25
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
26
26
  /** @typedef {import("./CssIcssExportDependency").ExportMode} ExportMode */
@@ -39,7 +39,9 @@ class CssIcssImportDependency extends CssImportDependency {
39
39
  */
40
40
  constructor(request, range, mode, importName, localName) {
41
41
  super(request, range, mode);
42
+ /** @type {string} */
42
43
  this.importName = importName;
44
+ /** @type {string} */
43
45
  this.localName = localName;
44
46
  /** @type {undefined | string[]} */
45
47
  this._importNameConventionNames = undefined;
@@ -130,9 +132,7 @@ class CssIcssImportDependency extends CssImportDependency {
130
132
  * @param {ObjectSerializerContext} context context
131
133
  */
132
134
  serialize(context) {
133
- const { write } = context;
134
- write(this.importName);
135
- write(this.localName);
135
+ context.write(this.importName).write(this.localName);
136
136
  super.serialize(context);
137
137
  }
138
138
 
@@ -141,10 +141,10 @@ class CssIcssImportDependency extends CssImportDependency {
141
141
  * @param {ObjectDeserializerContext} context context
142
142
  */
143
143
  deserialize(context) {
144
- const { read } = context;
145
- this.importName = read();
146
- this.localName = read();
147
- super.deserialize(context);
144
+ this.importName = context.read();
145
+ const c1 = context.rest;
146
+ this.localName = c1.read();
147
+ super.deserialize(c1.rest);
148
148
  }
149
149
  }
150
150
 
@@ -18,8 +18,8 @@ const NullDependency = require("./NullDependency");
18
18
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../css/CssParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, Range, string | undefined, string | undefined, string | undefined]>} ObjectDeserializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, Range, string | undefined, string | undefined, string | undefined]>} ObjectSerializerContext */
23
23
  /** @typedef {import("../util/Hash")} Hash */
24
24
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
25
25
 
@@ -34,10 +34,14 @@ class CssIcssSymbolDependency extends NullDependency {
34
34
  */
35
35
  constructor(localName, range, value, importName, request) {
36
36
  super();
37
+ /** @type {string} */
37
38
  this.localName = localName;
38
39
  this.range = range;
40
+ /** @type {string | undefined} */
39
41
  this.value = value;
42
+ /** @type {string | undefined} */
40
43
  this.importName = importName;
44
+ /** @type {string | undefined} */
41
45
  this.request = request;
42
46
  /** @type {undefined | string} */
43
47
  this._hashUpdate = undefined;
@@ -68,12 +72,12 @@ class CssIcssSymbolDependency extends NullDependency {
68
72
  * @param {ObjectSerializerContext} context context
69
73
  */
70
74
  serialize(context) {
71
- const { write } = context;
72
- write(this.localName);
73
- write(this.range);
74
- write(this.value);
75
- write(this.importName);
76
- write(this.request);
75
+ context
76
+ .write(this.localName)
77
+ .write(this.range)
78
+ .write(this.value)
79
+ .write(this.importName)
80
+ .write(this.request);
77
81
  super.serialize(context);
78
82
  }
79
83
 
@@ -82,13 +86,16 @@ class CssIcssSymbolDependency extends NullDependency {
82
86
  * @param {ObjectDeserializerContext} context context
83
87
  */
84
88
  deserialize(context) {
85
- const { read } = context;
86
- this.localName = read();
87
- this.range = read();
88
- this.value = read();
89
- this.importName = read();
90
- this.request = read();
91
- super.deserialize(context);
89
+ this.localName = context.read();
90
+ const c1 = context.rest;
91
+ this.range = c1.read();
92
+ const c2 = c1.rest;
93
+ this.value = c2.read();
94
+ const c3 = c2.rest;
95
+ this.importName = c3.read();
96
+ const c4 = c3.rest;
97
+ this.request = c4.read();
98
+ super.deserialize(c4.rest);
92
99
  }
93
100
  }
94
101
 
@@ -9,8 +9,10 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
 
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
+ /** @typedef {import("../../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
12
13
  /** @typedef {import("../Dependency")} Dependency */
13
14
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../css/CssModule").Inheritance} Inheritance */
14
16
  /** @typedef {import("../css/CssParser").Range} Range */
15
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -25,14 +27,32 @@ class CssImportDependency extends ModuleDependency {
25
27
  * @param {string=} layer layer
26
28
  * @param {string=} supports list of supports conditions
27
29
  * @param {string=} media list of media conditions
30
+ * @param {Inheritance=} inheritance layer/supports/media chain inherited from the importing module
31
+ * @param {CssParserExportType=} exportType exportType inherited from the importing module
28
32
  */
29
- constructor(request, range, mode, layer, supports, media) {
33
+ constructor(
34
+ request,
35
+ range,
36
+ mode,
37
+ layer,
38
+ supports,
39
+ media,
40
+ inheritance,
41
+ exportType
42
+ ) {
30
43
  super(request);
31
44
  this.range = range;
32
45
  this.mode = mode;
46
+ /** @type {string | undefined} */
33
47
  this.layer = layer;
48
+ /** @type {string | undefined} */
34
49
  this.supports = supports;
50
+ /** @type {string | undefined} */
35
51
  this.media = media;
52
+ /** @type {Inheritance | undefined} */
53
+ this.inheritance = inheritance;
54
+ /** @type {CssParserExportType | undefined} */
55
+ this.exportType = exportType;
36
56
  }
37
57
 
38
58
  get type() {
@@ -88,6 +108,8 @@ class CssImportDependency extends ModuleDependency {
88
108
  write(this.layer);
89
109
  write(this.supports);
90
110
  write(this.media);
111
+ write(this.inheritance);
112
+ write(this.exportType);
91
113
  super.serialize(context);
92
114
  }
93
115
 
@@ -102,6 +124,8 @@ class CssImportDependency extends ModuleDependency {
102
124
  this.layer = read();
103
125
  this.supports = read();
104
126
  this.media = read();
127
+ this.inheritance = read();
128
+ this.exportType = read();
105
129
  super.deserialize(context);
106
130
  }
107
131
  }
@@ -21,10 +21,11 @@ const ModuleDependency = require("./ModuleDependency");
21
21
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
22
22
  /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
23
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
25
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<["string" | "url" | "src"]>} ObjectDeserializerContext */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<["string" | "url" | "src"]>} ObjectSerializerContext */
26
26
  /** @typedef {import("../util/Hash")} Hash */
27
27
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
+ /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
28
29
 
29
30
  const getIgnoredRawDataUrlModule = memoize(
30
31
  () => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
@@ -75,7 +76,9 @@ class CssUrlDependency extends ModuleDependency {
75
76
  const { chunkGraph } = context;
76
77
  const module = chunkGraph.moduleGraph.getModule(this);
77
78
  if (!module) return;
78
- const buildInfo = /** @type {BuildInfo | undefined} */ (module.buildInfo);
79
+ const buildInfo = /** @type {NormalModuleBuildInfo | undefined} */ (
80
+ module.buildInfo
81
+ );
79
82
  if (buildInfo && buildInfo.hash) {
80
83
  hash.update(/** @type {string} */ (buildInfo.hash));
81
84
  }
@@ -86,8 +89,7 @@ class CssUrlDependency extends ModuleDependency {
86
89
  * @param {ObjectSerializerContext} context context
87
90
  */
88
91
  serialize(context) {
89
- const { write } = context;
90
- write(this.urlType);
92
+ context.write(this.urlType);
91
93
  super.serialize(context);
92
94
  }
93
95
 
@@ -96,12 +98,22 @@ class CssUrlDependency extends ModuleDependency {
96
98
  * @param {ObjectDeserializerContext} context context
97
99
  */
98
100
  deserialize(context) {
99
- const { read } = context;
100
- this.urlType = read();
101
- super.deserialize(context);
101
+ this.urlType = context.read();
102
+ super.deserialize(context.rest);
102
103
  }
103
104
  }
104
105
 
106
+ // Hoisted out of `cssEscapeString` so the patterns + replacer aren't
107
+ // recompiled/reallocated per `url()` / `src()` reference at code-gen.
108
+ const CSS_ESCAPE_UNQUOTED_REGEXP = /[\n\t ()'"\\]/g;
109
+ const CSS_ESCAPE_DOUBLE_REGEXP = /[\n"\\]/g;
110
+ const CSS_ESCAPE_SINGLE_REGEXP = /[\n'\\]/g;
111
+ /**
112
+ * @param {string} m matched character
113
+ * @returns {string} the character backslash-escaped
114
+ */
115
+ const cssEscapeReplacer = (m) => `\\${m}`;
116
+
105
117
  /**
106
118
  * Returns string in quotes if needed.
107
119
  * @param {string} str string
@@ -130,11 +142,11 @@ const cssEscapeString = (str) => {
130
142
  }
131
143
  }
132
144
  if (countWhiteOrBracket < 2) {
133
- return str.replace(/[\n\t ()'"\\]/g, (m) => `\\${m}`);
145
+ return str.replace(CSS_ESCAPE_UNQUOTED_REGEXP, cssEscapeReplacer);
134
146
  } else if (countQuotation <= countApostrophe) {
135
- return `"${str.replace(/[\n"\\]/g, (m) => `\\${m}`)}"`;
147
+ return `"${str.replace(CSS_ESCAPE_DOUBLE_REGEXP, cssEscapeReplacer)}"`;
136
148
  }
137
- return `'${str.replace(/[\n'\\]/g, (m) => `\\${m}`)}'`;
149
+ return `'${str.replace(CSS_ESCAPE_SINGLE_REGEXP, cssEscapeReplacer)}'`;
138
150
  };
139
151
 
140
152
  CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
@@ -216,7 +228,4 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
216
228
 
217
229
  makeSerializable(CssUrlDependency, "webpack/lib/dependencies/CssUrlDependency");
218
230
 
219
- CssUrlDependency.PUBLIC_PATH_AUTO = "__WEBPACK_CSS_PUBLIC_PATH_AUTO__";
220
- CssUrlDependency.PUBLIC_PATH_FULL_HASH = "__WEBPACK_CSS_PUBLIC_PATH_FULL_HASH_";
221
-
222
231
  module.exports = CssUrlDependency;
@@ -8,9 +8,9 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
11
  /** @typedef {import("./EntryDependency")} EntryDependency */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[EntryDependency[], string]>} ObjectDeserializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[EntryDependency[], string]>} ObjectSerializerContext */
14
14
 
15
15
  class DllEntryDependency extends Dependency {
16
16
  /**
@@ -21,7 +21,9 @@ class DllEntryDependency extends Dependency {
21
21
  constructor(dependencies, name) {
22
22
  super();
23
23
 
24
+ /** @type {EntryDependency[]} */
24
25
  this.dependencies = dependencies;
26
+ /** @type {string} */
25
27
  this.name = name;
26
28
  }
27
29
 
@@ -34,11 +36,7 @@ class DllEntryDependency extends Dependency {
34
36
  * @param {ObjectSerializerContext} context context
35
37
  */
36
38
  serialize(context) {
37
- const { write } = context;
38
-
39
- write(this.dependencies);
40
- write(this.name);
41
-
39
+ context.write(this.dependencies).write(this.name);
42
40
  super.serialize(context);
43
41
  }
44
42
 
@@ -47,12 +45,10 @@ class DllEntryDependency extends Dependency {
47
45
  * @param {ObjectDeserializerContext} context context
48
46
  */
49
47
  deserialize(context) {
50
- const { read } = context;
51
-
52
- this.dependencies = read();
53
- this.name = read();
54
-
55
- super.deserialize(context);
48
+ this.dependencies = context.read();
49
+ const c1 = context.rest;
50
+ this.name = c1.read();
51
+ super.deserialize(c1.rest);
56
52
  }
57
53
  }
58
54
 
@@ -0,0 +1,164 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Natsu @xiaoxiaojx
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const InitFragment = require("../InitFragment");
9
+ const RuntimeGlobals = require("../RuntimeGlobals");
10
+
11
+ /** @typedef {import("webpack-sources").Source} Source */
12
+ /** @typedef {import("../Generator").GenerateContext} GenerateContext */
13
+ /** @typedef {import("../ExportsInfo").UsedName} UsedName */
14
+
15
+ /**
16
+ * @typedef {object} ExportBinding
17
+ * @property {UsedName} name the used export name
18
+ * @property {string} value the variable expression
19
+ * @property {"getter" | "value"=} bindingType "value" for value binding, defaults to "getter"
20
+ */
21
+
22
+ /**
23
+ * Init fragment for const export bindings.
24
+ * Generates a flat-array __webpack_require__.d() call.
25
+ * Getter bindings: "key", () => expr (2 items).
26
+ * Value bindings: "key", 0, expr (3 items, 0 is sentinel).
27
+ *
28
+ * Uses a separate key ("harmony-export-bindings") from HarmonyExportInitFragment
29
+ * so the two fragment types do not merge and cannot interfere with each
30
+ * other's placement (top vs bottom).
31
+ * @extends {InitFragment<GenerateContext>} Context
32
+ */
33
+ class ExportBindingInitFragment extends InitFragment {
34
+ /**
35
+ * @param {string} exportsArgument the exports identifier
36
+ * @param {ExportBinding[]} bindings list of export bindings
37
+ * @param {boolean=} placeAtEnd when true, place the d() call at the end of the module
38
+ */
39
+ constructor(exportsArgument, bindings, placeAtEnd = false) {
40
+ super(
41
+ undefined,
42
+ InitFragment.STAGE_HARMONY_EXPORTS,
43
+ 1,
44
+ "harmony-export-bindings"
45
+ );
46
+ /** @type {string} */
47
+ this.exportsArgument = exportsArgument;
48
+ /** @type {ExportBinding[]} */
49
+ this.bindings = bindings;
50
+ /** @type {boolean} */
51
+ this.placeAtEnd = placeAtEnd;
52
+ }
53
+
54
+ /**
55
+ * @param {ExportBindingInitFragment[]} fragments all fragments to merge
56
+ * @returns {ExportBindingInitFragment} merged fragment
57
+ */
58
+ mergeAll(fragments) {
59
+ /** @type {ExportBinding[]} */
60
+ const bindings = [];
61
+ /** @type {Set<string>} */
62
+ const seenNames = new Set();
63
+ let placeAtEnd = false;
64
+
65
+ for (const fragment of fragments) {
66
+ for (const binding of fragment.bindings) {
67
+ const key = /** @type {string} */ (binding.name);
68
+ if (!seenNames.has(key)) {
69
+ seenNames.add(key);
70
+ bindings.push(binding);
71
+ }
72
+ }
73
+ if (fragment.placeAtEnd) placeAtEnd = true;
74
+ }
75
+ return new ExportBindingInitFragment(
76
+ this.exportsArgument,
77
+ bindings,
78
+ placeAtEnd
79
+ );
80
+ }
81
+
82
+ /**
83
+ * @param {ExportBindingInitFragment} other other
84
+ * @returns {ExportBindingInitFragment} merged result
85
+ */
86
+ merge(other) {
87
+ /** @type {ExportBinding[]} */
88
+ const bindings = [];
89
+ /** @type {Set<string>} */
90
+ const seenNames = new Set();
91
+ for (const binding of other.bindings) {
92
+ const key = /** @type {string} */ (binding.name);
93
+ seenNames.add(key);
94
+ bindings.push(binding);
95
+ }
96
+ for (const binding of this.bindings) {
97
+ const key = /** @type {string} */ (binding.name);
98
+ if (!seenNames.has(key)) {
99
+ seenNames.add(key);
100
+ bindings.push(binding);
101
+ }
102
+ }
103
+ return new ExportBindingInitFragment(
104
+ this.exportsArgument,
105
+ bindings,
106
+ this.placeAtEnd || other.placeAtEnd
107
+ );
108
+ }
109
+
110
+ /**
111
+ * @param {GenerateContext} context context
112
+ * @returns {string} the d() call or empty string
113
+ */
114
+ _generateDefinition({ runtimeTemplate, runtimeRequirements }) {
115
+ if (this.bindings.length === 0) return "";
116
+
117
+ const sorted = [...this.bindings].sort((a, b) =>
118
+ /** @type {string} */ (a.name) < /** @type {string} */ (b.name) ? -1 : 1
119
+ );
120
+
121
+ /** @type {string[]} */
122
+ const items = [];
123
+ for (const binding of sorted) {
124
+ const key = JSON.stringify(/** @type {string} */ (binding.name));
125
+ if (binding.bindingType === "value") {
126
+ items.push(`\n/* harmony export */ ${key}, 0, ${binding.value}`);
127
+ } else {
128
+ items.push(
129
+ `\n/* harmony export */ ${key}, ${runtimeTemplate.returningFunction(binding.value)}`
130
+ );
131
+ }
132
+ }
133
+
134
+ runtimeRequirements.add(RuntimeGlobals.exports);
135
+ runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
136
+ return `/* harmony export */ ${RuntimeGlobals.definePropertyGetters}(${
137
+ this.exportsArgument
138
+ }, [${items.join(",")}\n/* harmony export */ ]);\n`;
139
+ }
140
+
141
+ /**
142
+ * Returns the source code that will be included as initialization code.
143
+ * @param {GenerateContext} context context
144
+ * @returns {string | Source | undefined} the source code that will be included as initialization code
145
+ */
146
+ getContent(context) {
147
+ if (this.placeAtEnd) return undefined;
148
+ return this._generateDefinition(context);
149
+ }
150
+
151
+ /**
152
+ * Returns the source code that will be included at the end of the module.
153
+ * @param {GenerateContext} context context
154
+ * @returns {string | Source | undefined} the source code that will be included at the end of the module
155
+ */
156
+ getEndContent(context) {
157
+ if (!this.placeAtEnd) return undefined;
158
+ const definePart = this._generateDefinition(context);
159
+ if (!definePart) return undefined;
160
+ return `\n${definePart}`;
161
+ }
162
+ }
163
+
164
+ module.exports = ExportBindingInitFragment;
@@ -16,9 +16,9 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
18
18
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
19
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectDeserializerContext */
21
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectSerializerContext */
22
22
 
23
23
  /**
24
24
  * Defines the sortable set type used by this module.
@@ -99,7 +99,9 @@ class ExportsInfoDependency extends NullDependency {
99
99
  constructor(range, exportName, property) {
100
100
  super();
101
101
  this.range = range;
102
+ /** @type {string[] | null} */
102
103
  this.exportName = exportName;
104
+ /** @type {string | null} */
103
105
  this.property = property;
104
106
  }
105
107
 
@@ -108,10 +110,7 @@ class ExportsInfoDependency extends NullDependency {
108
110
  * @param {ObjectSerializerContext} context context
109
111
  */
110
112
  serialize(context) {
111
- const { write } = context;
112
- write(this.range);
113
- write(this.exportName);
114
- write(this.property);
113
+ context.write(this.range).write(this.exportName).write(this.property);
115
114
  super.serialize(context);
116
115
  }
117
116
 
@@ -121,12 +120,13 @@ class ExportsInfoDependency extends NullDependency {
121
120
  * @returns {ExportsInfoDependency} ExportsInfoDependency
122
121
  */
123
122
  static deserialize(context) {
124
- const obj = new ExportsInfoDependency(
125
- context.read(),
126
- context.read(),
127
- context.read()
128
- );
129
- obj.deserialize(context);
123
+ const range = context.read();
124
+ const c1 = context.rest;
125
+ const exportName = c1.read();
126
+ const c2 = c1.rest;
127
+ const property = c2.read();
128
+ const obj = new ExportsInfoDependency(range, exportName, property);
129
+ obj.deserialize(c2.rest);
130
130
  return obj;
131
131
  }
132
132
  }
@@ -14,8 +14,8 @@ const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
15
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
16
  /** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectSerializerContext */
19
19
 
20
20
  class ExternalModuleDependency extends CachedConstDependency {
21
21
  /**
@@ -39,8 +39,11 @@ class ExternalModuleDependency extends CachedConstDependency {
39
39
  ) {
40
40
  super(expression, range, identifier, place);
41
41
 
42
+ /** @type {string} */
42
43
  this.importedModule = module;
44
+ /** @type {ArrayImportSpecifiers} */
43
45
  this.specifiers = importSpecifiers;
46
+ /** @type {string | undefined} */
44
47
  this.default = defaultImport;
45
48
  }
46
49
 
@@ -73,9 +76,9 @@ class ExternalModuleDependency extends CachedConstDependency {
73
76
  deserialize(context) {
74
77
  super.deserialize(context);
75
78
  const { read } = context;
76
- this.importedModule = read();
77
- this.specifiers = read();
78
- this.default = read();
79
+ this.importedModule = /** @type {string} */ (read());
80
+ this.specifiers = /** @type {ArrayImportSpecifiers} */ (read());
81
+ this.default = /** @type {string | undefined} */ (read());
79
82
  }
80
83
  }
81
84
 
@@ -10,11 +10,11 @@ const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  /** @typedef {import("webpack-sources").Source} Source */
12
12
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
13
  /** @typedef {{ name: string, value?: string }[]} ArrayImportSpecifiers */
16
14
  /** @typedef {Set<string>} ImportSpecifier */
17
15
  /** @typedef {Map<string, ImportSpecifier>} ImportSpecifiers */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(string | ArrayImportSpecifiers | ImportSpecifiers | undefined)[]>} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(string | ArrayImportSpecifiers | ImportSpecifiers | undefined)[]>} ObjectSerializerContext */
18
18
 
19
19
  /**
20
20
  * @extends {InitFragment<GenerateContext>}
@@ -32,6 +32,7 @@ class ExternalModuleInitFragment extends InitFragment {
32
32
  0,
33
33
  `external module imports|${importedModule}|${defaultImport || "null"}`
34
34
  );
35
+ /** @type {string} */
35
36
  this.importedModule = importedModule;
36
37
  if (Array.isArray(specifiers)) {
37
38
  /** @type {ImportSpecifiers} */
@@ -48,6 +49,7 @@ class ExternalModuleInitFragment extends InitFragment {
48
49
  } else {
49
50
  this.specifiers = specifiers;
50
51
  }
52
+ /** @type {string | undefined} */
51
53
  this.defaultImport = defaultImport;
52
54
  }
53
55
 
@@ -126,9 +128,9 @@ class ExternalModuleInitFragment extends InitFragment {
126
128
  deserialize(context) {
127
129
  super.deserialize(context);
128
130
  const { read } = context;
129
- this.importedModule = read();
130
- this.specifiers = read();
131
- this.defaultImport = read();
131
+ this.importedModule = /** @type {string} */ (read());
132
+ this.specifiers = /** @type {ImportSpecifiers} */ (read());
133
+ this.defaultImport = /** @type {string | undefined} */ (read());
132
134
  }
133
135
  }
134
136
 
@@ -15,8 +15,8 @@ const NullDependency = require("./NullDependency");
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
17
  /** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectSerializerContext */
20
20
 
21
21
  class ExternalModuleInitFragmentDependency extends NullDependency {
22
22
  /**
@@ -27,8 +27,11 @@ class ExternalModuleInitFragmentDependency extends NullDependency {
27
27
  */
28
28
  constructor(module, importSpecifiers, defaultImport) {
29
29
  super();
30
+ /** @type {string} */
30
31
  this.importedModule = module;
32
+ /** @type {ArrayImportSpecifiers} */
31
33
  this.specifiers = importSpecifiers;
34
+ /** @type {string | undefined} */
32
35
  this.default = defaultImport;
33
36
  }
34
37
 
@@ -37,10 +40,10 @@ class ExternalModuleInitFragmentDependency extends NullDependency {
37
40
  * @param {ObjectSerializerContext} context context
38
41
  */
39
42
  serialize(context) {
40
- const { write } = context;
41
- write(this.importedModule);
42
- write(this.specifiers);
43
- write(this.default);
43
+ context
44
+ .write(this.importedModule)
45
+ .write(this.specifiers)
46
+ .write(this.default);
44
47
  }
45
48
 
46
49
  /**
@@ -48,10 +51,10 @@ class ExternalModuleInitFragmentDependency extends NullDependency {
48
51
  * @param {ObjectDeserializerContext} context context
49
52
  */
50
53
  deserialize(context) {
51
- const { read } = context;
52
- this.importedModule = read();
53
- this.specifiers = read();
54
- this.default = read();
54
+ this.importedModule = context.read();
55
+ const c1 = context.rest;
56
+ this.specifiers = c1.read();
57
+ this.default = c1.rest.read();
55
58
  }
56
59
  }
57
60