webpack 5.97.1 → 5.104.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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -5,29 +5,18 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { pathToFileURL } = require("url");
9
- const CommentCompilationWarning = require("../CommentCompilationWarning");
10
8
  const {
11
9
  JAVASCRIPT_MODULE_TYPE_AUTO,
12
10
  JAVASCRIPT_MODULE_TYPE_ESM
13
11
  } = require("../ModuleTypeConstants");
14
- const RuntimeGlobals = require("../RuntimeGlobals");
15
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
16
- const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
17
- const { approve } = require("../javascript/JavascriptParserHelpers");
18
- const InnerGraph = require("../optimize/InnerGraph");
19
- const ConstDependency = require("./ConstDependency");
20
- const URLDependency = require("./URLDependency");
21
12
 
22
- /** @typedef {import("estree").MemberExpression} MemberExpression */
23
- /** @typedef {import("estree").NewExpression} NewExpressionNode */
13
+ const URLContextDependency = require("../dependencies/URLContextDependency");
14
+ const URLDependency = require("../dependencies/URLDependency");
15
+ const URLParserPlugin = require("../url/URLParserPlugin");
16
+
24
17
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
25
18
  /** @typedef {import("../Compiler")} Compiler */
26
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
27
- /** @typedef {import("../NormalModule")} NormalModule */
28
19
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
29
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
30
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
31
20
 
32
21
  const PLUGIN_NAME = "URLPlugin";
33
22
 
@@ -38,168 +27,38 @@ class URLPlugin {
38
27
  apply(compiler) {
39
28
  compiler.hooks.compilation.tap(
40
29
  PLUGIN_NAME,
41
- (compilation, { normalModuleFactory }) => {
30
+ (compilation, { normalModuleFactory, contextModuleFactory }) => {
42
31
  compilation.dependencyFactories.set(URLDependency, normalModuleFactory);
43
32
  compilation.dependencyTemplates.set(
44
33
  URLDependency,
45
34
  new URLDependency.Template()
46
35
  );
36
+ compilation.dependencyFactories.set(
37
+ URLContextDependency,
38
+ contextModuleFactory
39
+ );
40
+ compilation.dependencyTemplates.set(
41
+ URLContextDependency,
42
+ new URLContextDependency.Template()
43
+ );
47
44
 
48
45
  /**
49
- * @param {NormalModule} module module
50
- * @returns {URL} file url
51
- */
52
- const getUrl = module => pathToFileURL(module.resource);
53
-
54
- /**
55
- * @param {Parser} parser parser parser
56
- * @param {MemberExpression} arg arg
57
- * @returns {boolean} true when it is `meta.url`, otherwise false
58
- */
59
- const isMetaUrl = (parser, arg) => {
60
- const chain = parser.extractMemberExpressionChain(arg);
61
-
62
- if (
63
- chain.members.length !== 1 ||
64
- chain.object.type !== "MetaProperty" ||
65
- chain.object.meta.name !== "import" ||
66
- chain.object.property.name !== "meta" ||
67
- chain.members[0] !== "url"
68
- )
69
- return false;
70
-
71
- return true;
72
- };
73
-
74
- /**
75
- * @param {Parser} parser parser parser
46
+ * @param {JavascriptParser} parser parser parser
76
47
  * @param {JavascriptParserOptions} parserOptions parserOptions
77
48
  * @returns {void}
78
49
  */
79
- const parserCallback = (parser, parserOptions) => {
50
+ const handler = (parser, parserOptions) => {
80
51
  if (parserOptions.url === false) return;
81
- const relative = parserOptions.url === "relative";
82
-
83
- /**
84
- * @param {NewExpressionNode} expr expression
85
- * @returns {undefined | string} request
86
- */
87
- const getUrlRequest = expr => {
88
- if (expr.arguments.length !== 2) return;
89
-
90
- const [arg1, arg2] = expr.arguments;
91
-
92
- if (
93
- arg2.type !== "MemberExpression" ||
94
- arg1.type === "SpreadElement"
95
- )
96
- return;
97
-
98
- if (!isMetaUrl(parser, arg2)) return;
99
-
100
- return parser.evaluateExpression(arg1).asString();
101
- };
102
-
103
- parser.hooks.canRename.for("URL").tap(PLUGIN_NAME, approve);
104
- parser.hooks.evaluateNewExpression
105
- .for("URL")
106
- .tap(PLUGIN_NAME, expr => {
107
- const request = getUrlRequest(expr);
108
- if (!request) return;
109
- const url = new URL(request, getUrl(parser.state.module));
110
-
111
- return new BasicEvaluatedExpression()
112
- .setString(url.toString())
113
- .setRange(/** @type {Range} */ (expr.range));
114
- });
115
- parser.hooks.new.for("URL").tap(PLUGIN_NAME, _expr => {
116
- const expr = /** @type {NewExpressionNode} */ (_expr);
117
- const { options: importOptions, errors: commentErrors } =
118
- parser.parseCommentOptions(/** @type {Range} */ (expr.range));
119
-
120
- if (commentErrors) {
121
- for (const e of commentErrors) {
122
- const { comment } = e;
123
- parser.state.module.addWarning(
124
- new CommentCompilationWarning(
125
- `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
126
- /** @type {DependencyLocation} */ (comment.loc)
127
- )
128
- );
129
- }
130
- }
131
-
132
- if (importOptions && importOptions.webpackIgnore !== undefined) {
133
- if (typeof importOptions.webpackIgnore !== "boolean") {
134
- parser.state.module.addWarning(
135
- new UnsupportedFeatureWarning(
136
- `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
137
- /** @type {DependencyLocation} */ (expr.loc)
138
- )
139
- );
140
- return;
141
- } else if (importOptions.webpackIgnore) {
142
- if (expr.arguments.length !== 2) return;
143
-
144
- const [, arg2] = expr.arguments;
145
-
146
- if (
147
- arg2.type !== "MemberExpression" ||
148
- !isMetaUrl(parser, arg2)
149
- )
150
- return;
151
-
152
- const dep = new ConstDependency(
153
- RuntimeGlobals.baseURI,
154
- /** @type {Range} */ (arg2.range),
155
- [RuntimeGlobals.baseURI]
156
- );
157
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
158
- parser.state.module.addPresentationalDependency(dep);
159
-
160
- return true;
161
- }
162
- }
163
-
164
- const request = getUrlRequest(expr);
165
-
166
- if (!request) return;
167
-
168
- const [arg1, arg2] = expr.arguments;
169
- const dep = new URLDependency(
170
- request,
171
- [
172
- /** @type {Range} */ (arg1.range)[0],
173
- /** @type {Range} */ (arg2.range)[1]
174
- ],
175
- /** @type {Range} */ (expr.range),
176
- relative
177
- );
178
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
179
- parser.state.current.addDependency(dep);
180
- InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
181
- return true;
182
- });
183
- parser.hooks.isPure.for("NewExpression").tap(PLUGIN_NAME, _expr => {
184
- const expr = /** @type {NewExpressionNode} */ (_expr);
185
- const { callee } = expr;
186
- if (callee.type !== "Identifier") return;
187
- const calleeInfo = parser.getFreeInfoFromVariable(callee.name);
188
- if (!calleeInfo || calleeInfo.name !== "URL") return;
189
-
190
- const request = getUrlRequest(expr);
191
-
192
- if (request) return true;
193
- });
52
+ new URLParserPlugin(parserOptions).apply(parser);
194
53
  };
195
54
 
196
55
  normalModuleFactory.hooks.parser
197
56
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)
198
- .tap(PLUGIN_NAME, parserCallback);
57
+ .tap(PLUGIN_NAME, handler);
199
58
 
200
59
  normalModuleFactory.hooks.parser
201
60
  .for(JAVASCRIPT_MODULE_TYPE_ESM)
202
- .tap(PLUGIN_NAME, parserCallback);
61
+ .tap(PLUGIN_NAME, handler);
203
62
  }
204
63
  );
205
64
  }
@@ -9,7 +9,7 @@ const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
12
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
13
13
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -21,7 +21,7 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
21
21
  * @param {string} exportName export name
22
22
  * @param {string} request request
23
23
  * @param {string} name name
24
- * @param {TODO} valueType value type
24
+ * @param {string} valueType value type
25
25
  */
26
26
  constructor(exportName, request, name, valueType) {
27
27
  super(request);
@@ -44,7 +44,7 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
44
44
  * Returns list of exports referenced by this dependency
45
45
  * @param {ModuleGraph} moduleGraph module graph
46
46
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
47
- * @returns {(string[] | ReferencedExport)[]} referenced exports
47
+ * @returns {ReferencedExports} referenced exports
48
48
  */
49
49
  getReferencedExports(moduleGraph, runtime) {
50
50
  return [[this.name]];
@@ -10,7 +10,7 @@ const UnsupportedWebAssemblyFeatureError = require("../wasm-sync/UnsupportedWebA
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
12
  /** @typedef {import("@webassemblyjs/ast").ModuleImportDescription} ModuleImportDescription */
13
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
13
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
15
  /** @typedef {import("../WebpackError")} WebpackError */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -46,7 +46,7 @@ class WebAssemblyImportDependency extends ModuleDependency {
46
46
  * Returns list of exports referenced by this dependency
47
47
  * @param {ModuleGraph} moduleGraph module graph
48
48
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
49
- * @returns {(string[] | ReferencedExport)[]} referenced exports
49
+ * @returns {ReferencedExports} referenced exports
50
50
  */
51
51
  getReferencedExports(moduleGraph, runtime) {
52
52
  return [[this.name]];
@@ -11,8 +11,7 @@ const makeSerializable = require("../util/makeSerializable");
11
11
  const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Compilation")} Compilation */
15
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
16
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
17
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
@@ -34,7 +33,7 @@ class WebpackIsIncludedDependency extends ModuleDependency {
34
33
  * Returns list of exports referenced by this dependency
35
34
  * @param {ModuleGraph} moduleGraph module graph
36
35
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
37
- * @returns {(string[] | ReferencedExport)[]} referenced exports
36
+ * @returns {ReferencedExports} referenced exports
38
37
  */
39
38
  getReferencedExports(moduleGraph, runtime) {
40
39
  // This doesn't use any export
@@ -12,8 +12,7 @@ const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
14
  /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
15
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
16
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
15
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
17
16
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
18
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
18
  /** @typedef {import("../Entrypoint")} Entrypoint */
@@ -30,6 +29,7 @@ class WorkerDependency extends ModuleDependency {
30
29
  * @param {Range} range range
31
30
  * @param {object} workerDependencyOptions options
32
31
  * @param {string=} workerDependencyOptions.publicPath public path for the worker
32
+ * @param {boolean=} workerDependencyOptions.needNewUrl need generate `new URL(...)`
33
33
  */
34
34
  constructor(request, range, workerDependencyOptions) {
35
35
  super(request);
@@ -44,7 +44,7 @@ class WorkerDependency extends ModuleDependency {
44
44
  * Returns list of exports referenced by this dependency
45
45
  * @param {ModuleGraph} moduleGraph module graph
46
46
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
47
- * @returns {(string[] | ReferencedExport)[]} referenced exports
47
+ * @returns {ReferencedExports} referenced exports
48
48
  */
49
49
  getReferencedExports(moduleGraph, runtime) {
50
50
  return Dependency.NO_EXPORTS_REFERENCED;
@@ -118,12 +118,14 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
118
118
  runtimeRequirements.add(RuntimeGlobals.baseURI);
119
119
  runtimeRequirements.add(RuntimeGlobals.getChunkScriptFilename);
120
120
 
121
+ const workerImportStr = `/* worker import */ ${workerImportBaseUrl} + ${
122
+ RuntimeGlobals.getChunkScriptFilename
123
+ }(${JSON.stringify(chunk.id)}), ${RuntimeGlobals.baseURI}`;
124
+
121
125
  source.replace(
122
126
  dep.range[0],
123
127
  dep.range[1] - 1,
124
- `/* worker import */ ${workerImportBaseUrl} + ${
125
- RuntimeGlobals.getChunkScriptFilename
126
- }(${JSON.stringify(chunk.id)}), ${RuntimeGlobals.baseURI}`
128
+ dep.options.needNewUrl ? `new URL(${workerImportStr})` : workerImportStr
127
129
  );
128
130
  }
129
131
  };
@@ -27,6 +27,7 @@ const WorkerDependency = require("./WorkerDependency");
27
27
 
28
28
  /** @typedef {import("estree").CallExpression} CallExpression */
29
29
  /** @typedef {import("estree").Expression} Expression */
30
+ /** @typedef {import("estree").MemberExpression} MemberExpression */
30
31
  /** @typedef {import("estree").ObjectExpression} ObjectExpression */
31
32
  /** @typedef {import("estree").Pattern} Pattern */
32
33
  /** @typedef {import("estree").Property} Property */
@@ -40,19 +41,17 @@ const WorkerDependency = require("./WorkerDependency");
40
41
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
41
42
  /** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
42
43
  /** @typedef {import("../NormalModule")} NormalModule */
43
- /** @typedef {import("../Parser").ParserState} ParserState */
44
- /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
45
44
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
46
45
  /** @typedef {import("../javascript/JavascriptParser")} Parser */
46
+ /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
47
47
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
48
- /** @typedef {import("../util/createHash").Algorithm} Algorithm */
49
48
  /** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
50
49
 
51
50
  /**
52
51
  * @param {NormalModule} module module
53
52
  * @returns {string} url
54
53
  */
55
- const getUrl = module => pathToFileURL(module.resource).toString();
54
+ const getUrl = (module) => pathToFileURL(module.resource).toString();
56
55
 
57
56
  const WorkerSpecifierTag = Symbol("worker specifier tag");
58
57
 
@@ -63,7 +62,7 @@ const DEFAULT_SYNTAX = [
63
62
  "Worker from worker_threads"
64
63
  ];
65
64
 
66
- /** @type {WeakMap<ParserState, number>} */
65
+ /** @type {WeakMap<JavascriptParserState, number>} */
67
66
  const workerIndexMap = new WeakMap();
68
67
 
69
68
  const PLUGIN_NAME = "WorkerPlugin";
@@ -117,45 +116,83 @@ class WorkerPlugin {
117
116
  /**
118
117
  * @param {JavascriptParser} parser the parser
119
118
  * @param {Expression} expr expression
120
- * @returns {[BasicEvaluatedExpression, [number, number]] | void} parsed
119
+ * @returns {[string, Range] | void} parsed
121
120
  */
122
121
  const parseModuleUrl = (parser, expr) => {
123
- if (
124
- expr.type !== "NewExpression" ||
125
- expr.callee.type === "Super" ||
126
- expr.arguments.length !== 2
127
- )
122
+ if (expr.type !== "NewExpression" || expr.callee.type === "Super") {
128
123
  return;
129
- const [arg1, arg2] = expr.arguments;
130
- if (arg1.type === "SpreadElement") return;
131
- if (arg2.type === "SpreadElement") return;
132
- const callee = parser.evaluateExpression(expr.callee);
133
- if (!callee.isIdentifier() || callee.identifier !== "URL") return;
134
- const arg2Value = parser.evaluateExpression(arg2);
124
+ }
135
125
  if (
136
- !arg2Value.isString() ||
137
- !(/** @type {string} */ (arg2Value.string).startsWith("file://")) ||
138
- arg2Value.string !== getUrl(parser.state.module)
126
+ expr.arguments.length === 1 &&
127
+ expr.arguments[0].type === "MemberExpression" &&
128
+ isMetaUrl(parser, expr.arguments[0])
139
129
  ) {
140
- return;
130
+ const arg1 = expr.arguments[0];
131
+ return [
132
+ getUrl(parser.state.module),
133
+ [
134
+ /** @type {Range} */ (arg1.range)[0],
135
+ /** @type {Range} */ (arg1.range)[1]
136
+ ]
137
+ ];
138
+ } else if (expr.arguments.length === 2) {
139
+ const [arg1, arg2] = expr.arguments;
140
+ if (arg1.type === "SpreadElement") return;
141
+ if (arg2.type === "SpreadElement") return;
142
+ const callee = parser.evaluateExpression(expr.callee);
143
+ if (!callee.isIdentifier() || callee.identifier !== "URL") return;
144
+ const arg2Value = parser.evaluateExpression(arg2);
145
+ if (
146
+ !arg2Value.isString() ||
147
+ !(
148
+ /** @type {string} */ (arg2Value.string).startsWith("file://")
149
+ ) ||
150
+ arg2Value.string !== getUrl(parser.state.module)
151
+ ) {
152
+ return;
153
+ }
154
+ const arg1Value = parser.evaluateExpression(arg1);
155
+ if (!arg1Value.isString()) return;
156
+ return [
157
+ /** @type {string} */ (arg1Value.string),
158
+ [
159
+ /** @type {Range} */ (arg1.range)[0],
160
+ /** @type {Range} */ (arg2.range)[1]
161
+ ]
162
+ ];
141
163
  }
142
- const arg1Value = parser.evaluateExpression(arg1);
143
- return [
144
- arg1Value,
145
- [
146
- /** @type {Range} */ (arg1.range)[0],
147
- /** @type {Range} */ (arg2.range)[1]
148
- ]
149
- ];
150
164
  };
151
165
 
166
+ /**
167
+ * @param {JavascriptParser} parser the parser
168
+ * @param {MemberExpression} expr expression
169
+ * @returns {boolean} is `import.meta.url`
170
+ */
171
+ const isMetaUrl = (parser, expr) => {
172
+ const chain = parser.extractMemberExpressionChain(expr);
173
+
174
+ if (
175
+ chain.members.length !== 1 ||
176
+ chain.object.type !== "MetaProperty" ||
177
+ chain.object.meta.name !== "import" ||
178
+ chain.object.property.name !== "meta" ||
179
+ chain.members[0] !== "url"
180
+ ) {
181
+ return false;
182
+ }
183
+
184
+ return true;
185
+ };
186
+
187
+ /** @typedef {Record<string, EXPECTED_ANY>} Values */
188
+
152
189
  /**
153
190
  * @param {JavascriptParser} parser the parser
154
191
  * @param {ObjectExpression} expr expression
155
- * @returns {{ expressions: Record<string, Expression | Pattern>, otherElements: (Property | SpreadElement)[], values: Record<string, any>, spread: boolean, insertType: "comma" | "single", insertLocation: number }} parsed object
192
+ * @returns {{ expressions: Record<string, Expression | Pattern>, otherElements: (Property | SpreadElement)[], values: Values, spread: boolean, insertType: "comma" | "single", insertLocation: number }} parsed object
156
193
  */
157
194
  const parseObjectExpression = (parser, expr) => {
158
- /** @type {Record<string, any>} */
195
+ /** @type {Values} */
159
196
  const values = {};
160
197
  /** @type {Record<string, Expression | Pattern>} */
161
198
  const expressions = {};
@@ -174,10 +211,12 @@ class WorkerPlugin {
174
211
  expressions[prop.key.name] = prop.value;
175
212
  if (!prop.shorthand && !prop.value.type.endsWith("Pattern")) {
176
213
  const value = parser.evaluateExpression(
177
- /** @type {Expression} */ (prop.value)
214
+ /** @type {Expression} */
215
+ (prop.value)
178
216
  );
179
- if (value.isCompileTimeValue())
217
+ if (value.isCompileTimeValue()) {
180
218
  values[prop.key.name] = value.asCompileTimeValue();
219
+ }
181
220
  }
182
221
  } else {
183
222
  otherElements.push(prop);
@@ -211,16 +250,34 @@ class WorkerPlugin {
211
250
  * @param {CallExpression} expr expression
212
251
  * @returns {boolean | void} true when handled
213
252
  */
214
- const handleNewWorker = expr => {
215
- if (expr.arguments.length === 0 || expr.arguments.length > 2)
253
+ const handleNewWorker = (expr) => {
254
+ if (expr.arguments.length === 0 || expr.arguments.length > 2) {
216
255
  return;
256
+ }
217
257
  const [arg1, arg2] = expr.arguments;
218
258
  if (arg1.type === "SpreadElement") return;
219
259
  if (arg2 && arg2.type === "SpreadElement") return;
220
- const parsedUrl = parseModuleUrl(parser, arg1);
221
- if (!parsedUrl) return;
222
- const [url, range] = parsedUrl;
223
- if (!url.isString()) return;
260
+
261
+ /** @type {string} */
262
+ let url;
263
+ /** @type {Range} */
264
+ let range;
265
+ /** @type {boolean} */
266
+ let needNewUrl = false;
267
+
268
+ if (arg1.type === "MemberExpression" && isMetaUrl(parser, arg1)) {
269
+ url = getUrl(parser.state.module);
270
+ range = [
271
+ /** @type {Range} */ (arg1.range)[0],
272
+ /** @type {Range} */ (arg1.range)[1]
273
+ ];
274
+ needNewUrl = true;
275
+ } else {
276
+ const parsedUrl = parseModuleUrl(parser, arg1);
277
+ if (!parsedUrl) return;
278
+ [url, range] = parsedUrl;
279
+ }
280
+
224
281
  const {
225
282
  expressions,
226
283
  otherElements,
@@ -231,10 +288,10 @@ class WorkerPlugin {
231
288
  } = arg2 && arg2.type === "ObjectExpression"
232
289
  ? parseObjectExpression(parser, arg2)
233
290
  : {
234
- /** @type {Record<string, Expression | Pattern>} */
235
- expressions: {},
291
+ expressions:
292
+ /** @type {Record<string, Expression | Pattern>} */ ({}),
236
293
  otherElements: [],
237
- /** @type {Record<string, any>} */
294
+ /** @type {Values} */
238
295
  values: {},
239
296
  spread: false,
240
297
  insertType: arg2 ? "spread" : "argument",
@@ -319,14 +376,9 @@ class WorkerPlugin {
319
376
  const name = `${cachedContextify(
320
377
  parser.state.module.identifier()
321
378
  )}|${i}`;
322
- const hash = createHash(
323
- /** @type {Algorithm} */
324
- (compilation.outputOptions.hashFunction)
325
- );
379
+ const hash = createHash(compilation.outputOptions.hashFunction);
326
380
  hash.update(name);
327
- const digest =
328
- /** @type {string} */
329
- (hash.digest(compilation.outputOptions.hashDigest));
381
+ const digest = hash.digest(compilation.outputOptions.hashDigest);
330
382
  entryOptions.runtime = digest.slice(
331
383
  0,
332
384
  compilation.outputOptions.hashDigestLength
@@ -342,13 +394,10 @@ class WorkerPlugin {
342
394
  }
343
395
  });
344
396
  block.loc = expr.loc;
345
- const dep = new WorkerDependency(
346
- /** @type {string} */ (url.string),
347
- range,
348
- {
349
- publicPath: this._workerPublicPath
350
- }
351
- );
397
+ const dep = new WorkerDependency(url, range, {
398
+ publicPath: this._workerPublicPath,
399
+ needNewUrl
400
+ });
352
401
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
353
402
  block.addDependency(dep);
354
403
  parser.state.module.addBlock(block);
@@ -370,7 +419,7 @@ class WorkerPlugin {
370
419
  );
371
420
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
372
421
  parser.state.module.addPresentationalDependency(dep);
373
- /** @type {TODO} */
422
+ /** @type {EXPECTED_ANY} */
374
423
  (expressions).type = undefined;
375
424
  }
376
425
  } else if (insertType === "comma") {
@@ -406,7 +455,13 @@ class WorkerPlugin {
406
455
 
407
456
  parser.walkExpression(expr.callee);
408
457
  for (const key of Object.keys(expressions)) {
409
- if (expressions[key]) parser.walkExpression(expressions[key]);
458
+ if (expressions[key]) {
459
+ if (expressions[key].type.endsWith("Pattern")) continue;
460
+ parser.walkExpression(
461
+ /** @type {Expression} */
462
+ (expressions[key])
463
+ );
464
+ }
410
465
  }
411
466
  for (const prop of otherElements) {
412
467
  parser.walkProperty(prop);
@@ -420,7 +475,7 @@ class WorkerPlugin {
420
475
  /**
421
476
  * @param {string} item item
422
477
  */
423
- const processItem = item => {
478
+ const processItem = (item) => {
424
479
  if (
425
480
  item.startsWith("*") &&
426
481
  item.includes(".") &&
@@ -430,13 +485,19 @@ class WorkerPlugin {
430
485
  const pattern = item.slice(1, firstDot);
431
486
  const itemMembers = item.slice(firstDot + 1, -2);
432
487
 
433
- parser.hooks.preDeclarator.tap(PLUGIN_NAME, (decl, statement) => {
434
- if (decl.id.type === "Identifier" && decl.id.name === pattern) {
435
- parser.tagVariable(decl.id.name, WorkerSpecifierTag);
436
- return true;
488
+ parser.hooks.preDeclarator.tap(
489
+ PLUGIN_NAME,
490
+ (decl, _statement) => {
491
+ if (
492
+ decl.id.type === "Identifier" &&
493
+ decl.id.name === pattern
494
+ ) {
495
+ parser.tagVariable(decl.id.name, WorkerSpecifierTag);
496
+ return true;
497
+ }
437
498
  }
438
- });
439
- parser.hooks.pattern.for(pattern).tap(PLUGIN_NAME, pattern => {
499
+ );
500
+ parser.hooks.pattern.for(pattern).tap(PLUGIN_NAME, (pattern) => {
440
501
  parser.tagVariable(pattern.name, WorkerSpecifierTag);
441
502
  return true;
442
503
  });
@@ -461,7 +522,7 @@ class WorkerPlugin {
461
522
  const source = match[3];
462
523
  (call ? parser.hooks.call : parser.hooks.new)
463
524
  .for(harmonySpecifierTag)
464
- .tap(PLUGIN_NAME, expr => {
525
+ .tap(PLUGIN_NAME, (expr) => {
465
526
  const settings = /** @type {HarmonySettings} */ (
466
527
  parser.currentTagData
467
528
  );
@@ -484,7 +545,9 @@ class WorkerPlugin {
484
545
  for (const itemFromDefault of DEFAULT_SYNTAX) {
485
546
  processItem(itemFromDefault);
486
547
  }
487
- } else processItem(item);
548
+ } else {
549
+ processItem(item);
550
+ }
488
551
  }
489
552
  };
490
553
  normalModuleFactory.hooks.parser
@@ -497,4 +560,5 @@ class WorkerPlugin {
497
560
  );
498
561
  }
499
562
  }
563
+
500
564
  module.exports = WorkerPlugin;
@@ -12,9 +12,9 @@
12
12
 
13
13
  /**
14
14
  * @param {Expression | SpreadElement} expr expressions
15
- * @returns {{fn: FunctionExpression | ArrowFunctionExpression, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined } | undefined} function expression with additional information
15
+ * @returns {{ fn: FunctionExpression | ArrowFunctionExpression, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined } | undefined} function expression with additional information
16
16
  */
17
- module.exports = expr => {
17
+ module.exports = (expr) => {
18
18
  // <FunctionExpression>
19
19
  if (
20
20
  expr.type === "FunctionExpression" ||