@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -22,110 +22,120 @@ const {
22
22
  WebpackParser,
23
23
  buildLineStarts,
24
24
  hasOctalEscape,
25
+ isIdentifierChar,
25
26
  positionAt
26
27
  } = require("./syntax");
27
28
 
28
29
  /** @typedef {typeof import("acorn").Parser} AcornParser */
29
- /** @typedef {import("acorn").Options} AcornOptions */
30
- /** @typedef {import("acorn").ecmaVersion} EcmaVersion */
31
- /** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
32
- /** @typedef {import("estree").BinaryExpression} BinaryExpression */
33
- /** @typedef {import("estree").BlockStatement} BlockStatement */
34
- /** @typedef {import("estree").SequenceExpression} SequenceExpression */
35
- /** @typedef {import("estree").CallExpression} CallExpression */
36
- /** @typedef {import("estree").StaticBlock} StaticBlock */
37
- /** @typedef {import("estree").ClassDeclaration} ClassDeclaration */
38
- /** @typedef {import("estree").ForStatement} ForStatement */
39
- /** @typedef {import("estree").SwitchStatement} SwitchStatement */
40
- /** @typedef {import("estree").ClassExpression} ClassExpression */
41
- /** @typedef {import("estree").SourceLocation} SourceLocation */
42
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
43
- /** @typedef {import("../Dependency").SourcePosition} SourcePosition */
30
+ /**
31
+ * @import {
32
+ * Options as AcornOptions,
33
+ * ecmaVersion as EcmaVersion
34
+ * } from "acorn"
35
+ */
36
+ /**
37
+ * @import {
38
+ * AssignmentExpression,
39
+ * BinaryExpression,
40
+ * BlockStatement,
41
+ * SequenceExpression,
42
+ * CallExpression,
43
+ * StaticBlock,
44
+ * ClassDeclaration,
45
+ * ForStatement,
46
+ * SwitchStatement,
47
+ * ClassExpression,
48
+ * SourceLocation,
49
+ * ConditionalExpression,
50
+ * Declaration,
51
+ * PrivateIdentifier,
52
+ * PropertyDefinition,
53
+ * Expression,
54
+ * ImportDeclaration,
55
+ * Identifier,
56
+ * VariableDeclaration,
57
+ * IfStatement,
58
+ * LabeledStatement,
59
+ * Literal,
60
+ * LogicalExpression,
61
+ * ChainExpression,
62
+ * MemberExpression,
63
+ * YieldExpression,
64
+ * MetaProperty,
65
+ * Property,
66
+ * AssignmentPattern,
67
+ * Pattern,
68
+ * UpdateExpression,
69
+ * ObjectExpression,
70
+ * UnaryExpression,
71
+ * ArrayExpression,
72
+ * ArrayPattern,
73
+ * AwaitExpression,
74
+ * ThisExpression,
75
+ * RestElement,
76
+ * ObjectPattern,
77
+ * SwitchCase,
78
+ * CatchClause,
79
+ * VariableDeclarator,
80
+ * ForInStatement,
81
+ * ForOfStatement,
82
+ * ReturnStatement,
83
+ * WithStatement,
84
+ * ThrowStatement,
85
+ * MethodDefinition,
86
+ * NewExpression,
87
+ * SpreadElement,
88
+ * FunctionExpression,
89
+ * WhileStatement,
90
+ * ArrowFunctionExpression,
91
+ * ExpressionStatement,
92
+ * ExportAllDeclaration,
93
+ * ExportNamedDeclaration,
94
+ * FunctionDeclaration,
95
+ * DoWhileStatement,
96
+ * TryStatement,
97
+ * Node,
98
+ * Program,
99
+ * Directive,
100
+ * Statement,
101
+ * ExportDefaultDeclaration,
102
+ * Super,
103
+ * TaggedTemplateExpression,
104
+ * TemplateLiteral,
105
+ * ModuleDeclaration,
106
+ * MaybeNamedFunctionDeclaration,
107
+ * MaybeNamedClassDeclaration
108
+ * } from "estree"
109
+ */
110
+ /** @import { DependencyLocation } from "../Dependency" */
44
111
  /** @typedef {import("estree").Comment & { start: number, end: number, loc?: SourceLocation | null }} Comment */
45
- /** @typedef {import("estree").ConditionalExpression} ConditionalExpression */
46
- /** @typedef {import("estree").Declaration} Declaration */
47
- /** @typedef {import("estree").PrivateIdentifier} PrivateIdentifier */
48
- /** @typedef {import("estree").PropertyDefinition} PropertyDefinition */
49
- /** @typedef {import("estree").Expression} Expression */
50
- /** @typedef {import("estree").ImportAttribute} ImportAttribute */
51
- /** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
52
- /** @typedef {import("estree").Identifier} Identifier */
53
- /** @typedef {import("estree").VariableDeclaration} VariableDeclaration */
54
- /** @typedef {import("estree").IfStatement} IfStatement */
55
- /** @typedef {import("estree").LabeledStatement} LabeledStatement */
56
- /** @typedef {import("estree").Literal} Literal */
57
- /** @typedef {import("estree").LogicalExpression} LogicalExpression */
58
- /** @typedef {import("estree").ChainExpression} ChainExpression */
59
- /** @typedef {import("estree").MemberExpression} MemberExpression */
60
- /** @typedef {import("estree").YieldExpression} YieldExpression */
61
- /** @typedef {import("estree").MetaProperty} MetaProperty */
62
- /** @typedef {import("estree").Property} Property */
63
- /** @typedef {import("estree").AssignmentPattern} AssignmentPattern */
64
- /** @typedef {import("estree").Pattern} Pattern */
65
- /** @typedef {import("estree").UpdateExpression} UpdateExpression */
66
- /** @typedef {import("estree").ObjectExpression} ObjectExpression */
67
- /** @typedef {import("estree").UnaryExpression} UnaryExpression */
68
- /** @typedef {import("estree").ArrayExpression} ArrayExpression */
69
- /** @typedef {import("estree").ArrayPattern} ArrayPattern */
70
- /** @typedef {import("estree").AwaitExpression} AwaitExpression */
71
- /** @typedef {import("estree").ThisExpression} ThisExpression */
72
- /** @typedef {import("estree").RestElement} RestElement */
73
- /** @typedef {import("estree").ObjectPattern} ObjectPattern */
74
- /** @typedef {import("estree").SwitchCase} SwitchCase */
75
- /** @typedef {import("estree").CatchClause} CatchClause */
76
- /** @typedef {import("estree").VariableDeclarator} VariableDeclarator */
77
- /** @typedef {import("estree").ForInStatement} ForInStatement */
78
- /** @typedef {import("estree").ForOfStatement} ForOfStatement */
79
- /** @typedef {import("estree").ReturnStatement} ReturnStatement */
80
- /** @typedef {import("estree").WithStatement} WithStatement */
81
- /** @typedef {import("estree").ThrowStatement} ThrowStatement */
82
- /** @typedef {import("estree").MethodDefinition} MethodDefinition */
83
- /** @typedef {import("estree").NewExpression} NewExpression */
84
- /** @typedef {import("estree").SpreadElement} SpreadElement */
85
- /** @typedef {import("estree").FunctionExpression} FunctionExpression */
86
- /** @typedef {import("estree").WhileStatement} WhileStatement */
87
- /** @typedef {import("estree").ArrowFunctionExpression} ArrowFunctionExpression */
88
- /** @typedef {import("estree").ExpressionStatement} ExpressionStatement */
89
- /** @typedef {import("estree").ExportAllDeclaration} ExportAllDeclaration */
90
- /** @typedef {import("estree").ExportNamedDeclaration} ExportNamedDeclaration */
91
- /** @typedef {import("estree").FunctionDeclaration} FunctionDeclaration */
92
- /** @typedef {import("estree").DoWhileStatement} DoWhileStatement */
93
- /** @typedef {import("estree").TryStatement} TryStatement */
94
- /** @typedef {import("estree").Node} Node */
95
- /** @typedef {import("estree").Program} Program */
96
- /** @typedef {import("estree").Directive} Directive */
97
- /** @typedef {import("estree").Statement} Statement */
98
- /** @typedef {import("estree").ExportDefaultDeclaration} ExportDefaultDeclaration */
99
- /** @typedef {import("estree").Super} Super */
100
- /** @typedef {import("estree").TaggedTemplateExpression} TaggedTemplateExpression */
101
- /** @typedef {import("estree").TemplateLiteral} TemplateLiteral */
102
- /** @typedef {import("estree").ModuleDeclaration} ModuleDeclaration */
103
- /** @typedef {import("estree").MaybeNamedFunctionDeclaration} MaybeNamedFunctionDeclaration */
104
- /** @typedef {import("estree").MaybeNamedClassDeclaration} MaybeNamedClassDeclaration */
105
112
  /**
106
113
  * Defines the shared type used by this module.
107
114
  * @template T
108
115
  * @typedef {import("tapable").AsArray<T>} AsArray<T>
109
116
  */
110
- /** @typedef {import("../Parser").ParserState} ParserState */
111
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
117
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
112
118
 
113
- /** @typedef {import("../dependencies/LocalModule")} LocalModule */
114
- /** @typedef {import("../dependencies/HarmonyExportImportedSpecifierDependency").HarmonyStarExportsList} HarmonyStarExportsList */
119
+ /** @import LocalModule from "../dependencies/LocalModule" */
120
+ /**
121
+ * @import {
122
+ * HarmonyStarExportsList
123
+ * } from "../dependencies/HarmonyExportImportedSpecifierDependency"
124
+ */
115
125
 
116
126
  /**
117
127
  * Defines the known javascript parser state type used by this module.
118
128
  * @typedef {object} KnownJavascriptParserState
119
129
  * @property {Set<string>=} harmonyNamedExports
120
- * @property {HarmonyStarExportsList=} harmonyStarExports
130
+ * @property {InstanceType<HarmonyStarExportsList>=} harmonyStarExports
121
131
  * @property {number=} lastHarmonyImportOrder
122
132
  * @property {LocalModule[]=} localModules
123
133
  */
124
134
 
125
135
  /** @typedef {ParserState & KnownJavascriptParserState} JavascriptParserState */
126
136
 
127
- /** @typedef {import("../Compilation")} Compilation */
128
- /** @typedef {import("../Module")} Module */
137
+ /** @import Compilation from "../Compilation" */
138
+ /** @import Module from "../Module" */
129
139
 
130
140
  /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => Members, getMembersOptionals: () => MembersOptionals, getMemberRanges: () => MemberRanges }} GetInfoResult */
131
141
  /** @typedef {{ consequent?: EXPECTED_OBJECT, alternate?: EXPECTED_OBJECT }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
@@ -337,11 +347,19 @@ class VariableInfo {
337
347
 
338
348
  /** @typedef {symbol} Tag */
339
349
 
340
- /** @typedef {import("../dependencies/HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
341
- /** @typedef {import("../dependencies/ImportParserPlugin").ImportSettings} ImportSettings */
342
- /** @typedef {import("../dependencies/CommonJsImportsParserPlugin").CommonJsImportSettings} CommonJsImportSettings */
343
- /** @typedef {import("../CompatibilityPlugin").CompatibilitySettings} CompatibilitySettings */
344
- /** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
350
+ /**
351
+ * @import {
352
+ * HarmonySettings
353
+ * } from "../dependencies/HarmonyImportDependencyParserPlugin"
354
+ */
355
+ /** @import { ImportSettings } from "../dependencies/ImportParserPlugin" */
356
+ /**
357
+ * @import {
358
+ * CommonJsImportSettings
359
+ * } from "../dependencies/CommonJsImportsParserPlugin"
360
+ */
361
+ /** @import { CompatibilitySettings } from "../CompatibilityPlugin" */
362
+ /** @import { TopLevelSymbol } from "../optimize/InnerGraph" */
345
363
 
346
364
  /** @typedef {HarmonySettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
347
365
  /** @typedef {KnownTagData | Record<string, EXPECTED_ANY>} TagData */
@@ -495,6 +513,25 @@ const EVALUATE_AST_CACHE_LIMIT = 4096;
495
513
 
496
514
  const CLASS_NAME = "JavascriptParser";
497
515
 
516
+ // Reserved words in strict mode, so unusable as binding names there (12.7.2).
517
+ const STRICT_MODE_RESERVED_WORDS = new Set([
518
+ "implements",
519
+ "interface",
520
+ "let",
521
+ "package",
522
+ "private",
523
+ "protected",
524
+ "public",
525
+ "static",
526
+ "yield"
527
+ ]);
528
+
529
+ const STRICT_MODE_OUTPUT_REASON =
530
+ "The output is an ES module, which runs in strict mode.";
531
+ // `await` is reserved by the module goal rather than by strict mode itself.
532
+ const MODULE_GOAL_OUTPUT_REASON =
533
+ 'The output is an ES module, where "await" is a reserved word.';
534
+
498
535
  class JavascriptParser extends Parser {
499
536
  /**
500
537
  * Creates an instance of JavascriptParser.
@@ -652,7 +689,7 @@ class JavascriptParser extends Parser {
652
689
  typeof: new HookMap(() => new SyncBailHook(["expression"])),
653
690
  /** @type {SyncBailHook<[ImportExpression, CallExpression?], boolean | void>} */
654
691
  importCall: new SyncBailHook(["expression", "importThen"]),
655
- /** @type {SyncBailHook<[Expression | ForOfStatement], boolean | void>} */
692
+ /** @type {SyncBailHook<[Expression | ForOfStatement | VariableDeclaration], boolean | void>} */
656
693
  topLevelAwait: new SyncBailHook(["expression"]),
657
694
  /** @type {HookMap<SyncBailHook<[CallExpression], boolean | void>>} */
658
695
  call: new HookMap(() => new SyncBailHook(["expression"])),
@@ -2871,6 +2908,9 @@ class JavascriptParser extends Parser {
2871
2908
  */
2872
2909
  preWalkFunctionDeclaration(statement) {
2873
2910
  if (statement.id) {
2911
+ if (this._strictInModuleOutput) {
2912
+ this._checkStrictModeBinding(statement.id.name, statement.id);
2913
+ }
2874
2914
  this.defineVariable(statement.id.name);
2875
2915
  }
2876
2916
  }
@@ -3241,6 +3281,10 @@ class JavascriptParser extends Parser {
3241
3281
  blockPreWalkVariableDeclaration(statement) {
3242
3282
  if (statement.kind === "var") return;
3243
3283
 
3284
+ if (statement.kind === "await using" && this.scope.topLevelScope === true) {
3285
+ this.hooks.topLevelAwait.call(statement);
3286
+ }
3287
+
3244
3288
  const hookMap =
3245
3289
  statement.kind === "const"
3246
3290
  ? this.hooks.varDeclarationConst
@@ -3258,12 +3302,14 @@ class JavascriptParser extends Parser {
3258
3302
  _preWalkVariableDeclaration(statement, hookMap) {
3259
3303
  /** @type {OnIdent | undefined} */
3260
3304
  let onIdent;
3305
+ const checkStrictBindings = this._strictInModuleOutput;
3261
3306
  for (const declarator of statement.declarations) {
3262
3307
  if (declarator.type !== "VariableDeclarator") continue;
3263
3308
  this.preWalkVariableDeclarator(declarator);
3264
3309
  if (this.hooks.preDeclarator.call(declarator, statement)) continue;
3265
3310
  const id = declarator.id;
3266
3311
  if (id.type === "Identifier") {
3312
+ if (checkStrictBindings) this._checkStrictModeBinding(id.name, id);
3267
3313
  // fast path: plain `const x =` skips the enterPattern dispatch and
3268
3314
  // the per-declaration onIdent closure (only patterns need it)
3269
3315
  if (!this.callHooksForName(this.hooks.pattern, id.name, id)) {
@@ -3271,8 +3317,10 @@ class JavascriptParser extends Parser {
3271
3317
  }
3272
3318
  } else {
3273
3319
  if (onIdent === undefined) {
3274
- onIdent = (name, ident) =>
3320
+ onIdent = (name, ident) => {
3321
+ if (checkStrictBindings) this._checkStrictModeBinding(name, ident);
3275
3322
  this._defineVariableForDeclaration(name, ident, hookMap);
3323
+ };
3276
3324
  }
3277
3325
  this.enterPattern(id, onIdent);
3278
3326
  }
@@ -3442,6 +3490,11 @@ class JavascriptParser extends Parser {
3442
3490
  */
3443
3491
  blockPreWalkClassDeclaration(statement) {
3444
3492
  if (statement.id) {
3493
+ // only `await` reaches here: acorn rejects the other names itself,
3494
+ // since a class body is always strict even in a loose script
3495
+ if (this._strictInModuleOutput) {
3496
+ this._checkStrictModeBinding(statement.id.name, statement.id);
3497
+ }
3445
3498
  this.defineVariable(statement.id.name);
3446
3499
  }
3447
3500
  }
@@ -3522,7 +3575,10 @@ class JavascriptParser extends Parser {
3522
3575
  this.inBlockScope(() => {
3523
3576
  // Error binding is optional in catch clause since ECMAScript 2019
3524
3577
  if (catchClause.param !== null) {
3525
- this.enterPattern(catchClause.param, (ident) => {
3578
+ this.enterPattern(catchClause.param, (ident, identifier) => {
3579
+ if (this._strictInModuleOutput) {
3580
+ this._checkStrictModeBinding(ident, identifier);
3581
+ }
3526
3582
  this.defineVariable(ident);
3527
3583
  });
3528
3584
  this.walkPattern(catchClause.param);
@@ -3825,6 +3881,9 @@ class JavascriptParser extends Parser {
3825
3881
 
3826
3882
  if (this._strictInModuleOutput) {
3827
3883
  this._checkStrictModeParams(expression.params);
3884
+ if (expression.id) {
3885
+ this._checkStrictModeBinding(expression.id.name, expression.id);
3886
+ }
3828
3887
  }
3829
3888
  this.inFunctionScope(true, scopeParams, () => {
3830
3889
  for (const param of expression.params) {
@@ -3962,6 +4021,32 @@ class JavascriptParser extends Parser {
3962
4021
  }
3963
4022
  }
3964
4023
 
4024
+ /**
4025
+ * Reports a binding name a loose script allows but strict-mode ESM output
4026
+ * rejects — the whole bundle fails to parse, so this is never merely latent.
4027
+ * @param {string} name binding name
4028
+ * @param {Statement | Expression | Identifier} node node to report the violation at
4029
+ */
4030
+ _checkStrictModeBinding(name, node) {
4031
+ if (name === "eval" || name === "arguments") {
4032
+ this._reportStrictModeViolation(
4033
+ `"${name}" is not allowed as a binding name`,
4034
+ node
4035
+ );
4036
+ } else if (STRICT_MODE_RESERVED_WORDS.has(name)) {
4037
+ this._reportStrictModeViolation(
4038
+ `"${name}" is a reserved word in strict mode and is not allowed as a binding name`,
4039
+ node
4040
+ );
4041
+ } else if (name === "await") {
4042
+ this._reportStrictModeViolation(
4043
+ '"await" is not allowed as a binding name',
4044
+ node,
4045
+ MODULE_GOAL_OUTPUT_REASON
4046
+ );
4047
+ }
4048
+ }
4049
+
3965
4050
  /**
3966
4051
  * Reports strict-mode-only errors in a function's parameter list: a duplicate
3967
4052
  * simple parameter, or a parameter named `eval` / `arguments`.
@@ -3978,6 +4063,17 @@ class JavascriptParser extends Parser {
3978
4063
  `"${name}" is not allowed as a parameter name`,
3979
4064
  param
3980
4065
  );
4066
+ } else if (STRICT_MODE_RESERVED_WORDS.has(name)) {
4067
+ this._reportStrictModeViolation(
4068
+ `"${name}" is a reserved word in strict mode and is not allowed as a parameter name`,
4069
+ param
4070
+ );
4071
+ } else if (name === "await") {
4072
+ this._reportStrictModeViolation(
4073
+ '"await" is not allowed as a parameter name',
4074
+ param,
4075
+ MODULE_GOAL_OUTPUT_REASON
4076
+ );
3981
4077
  }
3982
4078
  if (seen === undefined) seen = new Set();
3983
4079
  if (seen.has(name)) {
@@ -4031,10 +4127,11 @@ class JavascriptParser extends Parser {
4031
4127
  * The location is computed here, on the rare violation path only.
4032
4128
  * @param {string} reason what is not allowed
4033
4129
  * @param {Statement | Expression | Identifier} node node to report the violation at
4130
+ * @param {string=} outputReason why the output rejects it, defaults to strict mode
4034
4131
  */
4035
- _reportStrictModeViolation(reason, node) {
4132
+ _reportStrictModeViolation(reason, node, outputReason) {
4036
4133
  const diagnostic = new WebpackError(
4037
- `${reason}. The output is an ES module, which runs in strict mode.`
4134
+ `${reason}. ${outputReason === undefined ? STRICT_MODE_OUTPUT_REASON : outputReason}`
4038
4135
  );
4039
4136
  diagnostic.loc = this.getLocation(node);
4040
4137
  if (this.options.strictModeViolations === "error") {
@@ -4238,6 +4335,10 @@ class JavascriptParser extends Parser {
4238
4335
  * @param {ClassExpression} expression the class expression
4239
4336
  */
4240
4337
  walkClassExpression(expression) {
4338
+ // only `await` reaches here, as for class declarations
4339
+ if (this._strictInModuleOutput && expression.id) {
4340
+ this._checkStrictModeBinding(expression.id.name, expression.id);
4341
+ }
4241
4342
  this.walkClass(expression);
4242
4343
  }
4243
4344
 
@@ -4295,6 +4396,16 @@ class JavascriptParser extends Parser {
4295
4396
  };
4296
4397
  const { params, type } = functionExpression;
4297
4398
  const arrow = type === "ArrowFunctionExpression";
4399
+ // the walk skips walkFunctionExpression for a called function expression
4400
+ if (this._strictInModuleOutput) {
4401
+ this._checkStrictModeParams(params);
4402
+ if (type === "FunctionExpression" && functionExpression.id) {
4403
+ this._checkStrictModeBinding(
4404
+ functionExpression.id.name,
4405
+ functionExpression.id
4406
+ );
4407
+ }
4408
+ }
4298
4409
  const renameThis = currentThis ? getVarInfo(currentThis) : null;
4299
4410
  const varInfoForArgs = options.map(getVarInfo);
4300
4411
  const wasTopLevel = this.scope.topLevelScope;
@@ -5657,6 +5768,37 @@ class JavascriptParser extends Parser {
5657
5768
  );
5658
5769
  }
5659
5770
 
5771
+ /**
5772
+ * Reports whether `identifier` may occur as a word in the source text of
5773
+ * `range`. A conservative pre-filter for expensive AST scans: `false` means
5774
+ * it certainly does not occur, while a match inside a comment or a string
5775
+ * yields `true`. Also `true` when no source text is available (preparsed
5776
+ * AST), so callers must stay correct without the filter.
5777
+ * @param {Range} range range to search
5778
+ * @param {string} identifier identifier to look for
5779
+ * @returns {boolean} false when the identifier certainly does not occur
5780
+ */
5781
+ sourceMayContainIdentifier(range, identifier) {
5782
+ const source = this._source;
5783
+ if (source === undefined) return true;
5784
+ const end = range[1];
5785
+ const length = identifier.length;
5786
+ for (
5787
+ let index = source.indexOf(identifier, range[0]);
5788
+ index !== -1 && index + length <= end;
5789
+ index = source.indexOf(identifier, index + length)
5790
+ ) {
5791
+ if (
5792
+ (index === 0 || !isIdentifierChar(source.charCodeAt(index - 1))) &&
5793
+ (index + length === source.length ||
5794
+ !isIdentifierChar(source.charCodeAt(index + length)))
5795
+ ) {
5796
+ return true;
5797
+ }
5798
+ }
5799
+ return false;
5800
+ }
5801
+
5660
5802
  /**
5661
5803
  * First significant char code at or after `pos`, skipping whitespace,
5662
5804
  * comments and grouping `)` (a parenthesized node's range excludes its
@@ -6330,12 +6472,13 @@ class JavascriptParser extends Parser {
6330
6472
  }
6331
6473
  }
6332
6474
 
6333
- module.exports = JavascriptParser;
6334
- module.exports.ALLOWED_MEMBER_TYPES_ALL = ALLOWED_MEMBER_TYPES_ALL;
6335
- module.exports.ALLOWED_MEMBER_TYPES_CALL_EXPRESSION =
6475
+ JavascriptParser.ALLOWED_MEMBER_TYPES_ALL = ALLOWED_MEMBER_TYPES_ALL;
6476
+ JavascriptParser.ALLOWED_MEMBER_TYPES_CALL_EXPRESSION =
6336
6477
  ALLOWED_MEMBER_TYPES_CALL_EXPRESSION;
6337
- module.exports.ALLOWED_MEMBER_TYPES_EXPRESSION =
6478
+ JavascriptParser.ALLOWED_MEMBER_TYPES_EXPRESSION =
6338
6479
  ALLOWED_MEMBER_TYPES_EXPRESSION;
6339
- module.exports.VariableInfo = VariableInfo;
6340
- module.exports.VariableInfoFlags = VariableInfoFlags;
6341
- module.exports.getImportAttributes = getImportAttributes;
6480
+ JavascriptParser.VariableInfo = VariableInfo;
6481
+ JavascriptParser.VariableInfoFlags = VariableInfoFlags;
6482
+ JavascriptParser.getImportAttributes = getImportAttributes;
6483
+
6484
+ module.exports = JavascriptParser;
@@ -6,14 +6,17 @@
6
6
  "use strict";
7
7
 
8
8
  const ConstDependency = require("../dependencies/ConstDependency");
9
- const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
9
+ const memoize = require("../util/memoize");
10
+
10
11
  const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
11
12
 
12
- /** @typedef {import("estree").Expression} Expression */
13
- /** @typedef {import("estree").SourceLocation} SourceLocation */
14
- /** @typedef {import("./JavascriptParser")} JavascriptParser */
15
- /** @typedef {import("./JavascriptParser").Range} Range */
16
- /** @typedef {import("./BasicEvaluatedExpression").GetMembers} GetMembers */
13
+ const getUnsupportedFeatureWarning = memoize(() =>
14
+ require("../errors/UnsupportedFeatureWarning")
15
+ );
16
+
17
+ /** @import { Expression } from "estree" */
18
+ /** @import JavascriptParser, { Range } from "./JavascriptParser" */
19
+ /** @import { GetMembers } from "./BasicEvaluatedExpression" */
17
20
 
18
21
  module.exports.approve = () => true;
19
22
 
@@ -104,7 +107,7 @@ module.exports.expressionIsUnsupported = (parser, message) =>
104
107
  parser.state.module.addPresentationalDependency(dep);
105
108
  if (!parser.state.module) return;
106
109
  parser.state.module.addWarning(
107
- new UnsupportedFeatureWarning(message, parser.getLocation(expr))
110
+ new (getUnsupportedFeatureWarning())(message, parser.getLocation(expr))
108
111
  );
109
112
  return true;
110
113
  };