@sonordev/site-kit 5.8.0 → 5.8.2

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 (454) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/{AnalyticsProvider-OCXRNIVE.js → AnalyticsProvider-4JV3OFCG.js} +10 -10
  3. package/dist/{AnalyticsProvider-OCXRNIVE.js.map → AnalyticsProvider-4JV3OFCG.js.map} +1 -1
  4. package/dist/{AnalyticsProvider-ZAUONQCX.mjs → AnalyticsProvider-LUEUDZZC.mjs} +6 -6
  5. package/dist/{AnalyticsProvider-ZAUONQCX.mjs.map → AnalyticsProvider-LUEUDZZC.mjs.map} +1 -1
  6. package/dist/{BlogViewTracker-HK5C7PU6.js → BlogViewTracker-32C4SCHA.js} +6 -6
  7. package/dist/{BlogViewTracker-HK5C7PU6.js.map → BlogViewTracker-32C4SCHA.js.map} +1 -1
  8. package/dist/{BlogViewTracker-KXRZHN3U.mjs → BlogViewTracker-YQMTEGYZ.mjs} +5 -5
  9. package/dist/{BlogViewTracker-KXRZHN3U.mjs.map → BlogViewTracker-YQMTEGYZ.mjs.map} +1 -1
  10. package/dist/ChatWidget-IRTAMRQS.mjs +15 -0
  11. package/dist/{ChatWidget-54GVS27I.mjs.map → ChatWidget-IRTAMRQS.mjs.map} +1 -1
  12. package/dist/ChatWidget-KCXQXNUF.js +24 -0
  13. package/dist/{ChatWidget-3OW5LY37.js.map → ChatWidget-KCXQXNUF.js.map} +1 -1
  14. package/dist/EngageWidget-7AIUJRXV.mjs +12 -0
  15. package/dist/{EngageWidget-7EUP76WE.mjs.map → EngageWidget-7AIUJRXV.mjs.map} +1 -1
  16. package/dist/EngageWidget-EUUZHQOU.js +21 -0
  17. package/dist/{EngageWidget-DDP5UFA4.js.map → EngageWidget-EUUZHQOU.js.map} +1 -1
  18. package/dist/{FileField-SBPL4JHP.js → FileField-SNI5XCHQ.js} +6 -6
  19. package/dist/{FileField-SBPL4JHP.js.map → FileField-SNI5XCHQ.js.map} +1 -1
  20. package/dist/{FileField-IQLN6E3C.mjs → FileField-XJYJO5HE.mjs} +5 -5
  21. package/dist/{FileField-IQLN6E3C.mjs.map → FileField-XJYJO5HE.mjs.map} +1 -1
  22. package/dist/{FormSpotlight-E2LKKHGV.mjs → FormSpotlight-BCXI4A4R.mjs} +3 -3
  23. package/dist/{FormSpotlight-E2LKKHGV.mjs.map → FormSpotlight-BCXI4A4R.mjs.map} +1 -1
  24. package/dist/{FormSpotlight-YTACNE57.js → FormSpotlight-S64G4CMM.js} +9 -9
  25. package/dist/{FormSpotlight-YTACNE57.js.map → FormSpotlight-S64G4CMM.js.map} +1 -1
  26. package/dist/{FormStage-S277U2CP.js → FormStage-PX5TVY25.js} +9 -9
  27. package/dist/{FormStage-S277U2CP.js.map → FormStage-PX5TVY25.js.map} +1 -1
  28. package/dist/{FormStage-YSBN5XKL.mjs → FormStage-RHARCSPS.mjs} +3 -3
  29. package/dist/{FormStage-YSBN5XKL.mjs.map → FormStage-RHARCSPS.mjs.map} +1 -1
  30. package/dist/ManagedForm-7IDXBQS6.mjs +16 -0
  31. package/dist/{ManagedForm-I3QVRQ53.mjs.map → ManagedForm-7IDXBQS6.mjs.map} +1 -1
  32. package/dist/ManagedForm-RI2TSUZD.js +25 -0
  33. package/dist/{ManagedForm-TSYKQFLJ.js.map → ManagedForm-RI2TSUZD.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-YSOPPKS6.js → ManagedNewsletterForm-IAGIHBNT.js} +8 -8
  35. package/dist/{ManagedNewsletterForm-YSOPPKS6.js.map → ManagedNewsletterForm-IAGIHBNT.js.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-T3YRAWKZ.mjs → ManagedNewsletterForm-UXBJ5OJB.mjs} +7 -7
  37. package/dist/{ManagedNewsletterForm-T3YRAWKZ.mjs.map → ManagedNewsletterForm-UXBJ5OJB.mjs.map} +1 -1
  38. package/dist/{SignalCore-PPSIQ4BW.mjs → SignalCore-37WGILFY.mjs} +5 -5
  39. package/dist/{SignalCore-PPSIQ4BW.mjs.map → SignalCore-37WGILFY.mjs.map} +1 -1
  40. package/dist/{SignalCore-SUZH3XWZ.js → SignalCore-Q2BQMPCJ.js} +11 -11
  41. package/dist/{SignalCore-SUZH3XWZ.js.map → SignalCore-Q2BQMPCJ.js.map} +1 -1
  42. package/dist/SitemapSync-DWEL7HTB.js +18 -0
  43. package/dist/{SitemapSync-LH6UVP4P.js.map → SitemapSync-DWEL7HTB.js.map} +1 -1
  44. package/dist/SitemapSync-YIAI7PMT.mjs +9 -0
  45. package/dist/{SitemapSync-HSHCOKCL.mjs.map → SitemapSync-YIAI7PMT.mjs.map} +1 -1
  46. package/dist/analytics/index.js +9 -9
  47. package/dist/analytics/index.mjs +4 -4
  48. package/dist/api-D745LGGU.mjs +0 -1
  49. package/dist/api-XR5APCH3.js +0 -1
  50. package/dist/blog/index.js +17 -17
  51. package/dist/blog/index.mjs +3 -3
  52. package/dist/blog/server-ui.js +14 -14
  53. package/dist/blog/server-ui.mjs +2 -2
  54. package/dist/{chunk-7THZOAUR.mjs → chunk-3EXBBFXX.mjs} +4 -4
  55. package/dist/{chunk-7THZOAUR.mjs.map → chunk-3EXBBFXX.mjs.map} +1 -1
  56. package/dist/{chunk-LBZGYF3B.js → chunk-3HGHWDCY.js} +4 -4
  57. package/dist/{chunk-LBZGYF3B.js.map → chunk-3HGHWDCY.js.map} +1 -1
  58. package/dist/{chunk-4RY7JETY.js → chunk-3Y7IKQDD.js} +14 -14
  59. package/dist/{chunk-4RY7JETY.js.map → chunk-3Y7IKQDD.js.map} +1 -1
  60. package/dist/{chunk-XCYKM2SA.js → chunk-3Z3TOPND.js} +3 -3
  61. package/dist/{chunk-XCYKM2SA.js.map → chunk-3Z3TOPND.js.map} +1 -1
  62. package/dist/{chunk-B35OJ7FR.mjs → chunk-4PXUMDHL.mjs} +3 -3
  63. package/dist/{chunk-B35OJ7FR.mjs.map → chunk-4PXUMDHL.mjs.map} +1 -1
  64. package/dist/{chunk-6SBTHS6C.mjs → chunk-5BZNVKNK.mjs} +3 -3
  65. package/dist/{chunk-6SBTHS6C.mjs.map → chunk-5BZNVKNK.mjs.map} +1 -1
  66. package/dist/chunk-5YA6SI4Z.mjs +0 -1
  67. package/dist/{chunk-TXMVU4EY.mjs → chunk-6FTC6EYD.mjs} +7 -7
  68. package/dist/{chunk-TXMVU4EY.mjs.map → chunk-6FTC6EYD.mjs.map} +1 -1
  69. package/dist/{chunk-QTJTDQYR.js → chunk-73EBIAF3.js} +18 -18
  70. package/dist/{chunk-QTJTDQYR.js.map → chunk-73EBIAF3.js.map} +1 -1
  71. package/dist/{chunk-UWHCHYCX.js → chunk-7BI2RVQD.js} +4 -4
  72. package/dist/{chunk-UWHCHYCX.js.map → chunk-7BI2RVQD.js.map} +1 -1
  73. package/dist/{chunk-B2VFMPVJ.mjs → chunk-7SLYI62M.mjs} +4 -4
  74. package/dist/{chunk-B2VFMPVJ.mjs.map → chunk-7SLYI62M.mjs.map} +1 -1
  75. package/dist/{chunk-L24RDT6Q.mjs → chunk-AHKVOYFO.mjs} +3 -3
  76. package/dist/{chunk-L24RDT6Q.mjs.map → chunk-AHKVOYFO.mjs.map} +1 -1
  77. package/dist/{chunk-HCX343AS.mjs → chunk-ALVQOG4M.mjs} +3 -3
  78. package/dist/{chunk-HCX343AS.mjs.map → chunk-ALVQOG4M.mjs.map} +1 -1
  79. package/dist/{chunk-HEOQT5SM.mjs → chunk-AUTJQGZ2.mjs} +43 -11
  80. package/dist/chunk-AUTJQGZ2.mjs.map +1 -0
  81. package/dist/{chunk-F6SKG34N.js → chunk-D7CF3OPZ.js} +5 -5
  82. package/dist/{chunk-F6SKG34N.js.map → chunk-D7CF3OPZ.js.map} +1 -1
  83. package/dist/{chunk-BER36QXU.js → chunk-DTWR7VRQ.js} +5 -5
  84. package/dist/{chunk-BER36QXU.js.map → chunk-DTWR7VRQ.js.map} +1 -1
  85. package/dist/{chunk-QVHVL7EX.mjs → chunk-EZ5DX7ED.mjs} +3 -3
  86. package/dist/{chunk-QVHVL7EX.mjs.map → chunk-EZ5DX7ED.mjs.map} +1 -1
  87. package/dist/{chunk-HAKD27AZ.js → chunk-F2ZFMPW4.js} +7 -7
  88. package/dist/{chunk-HAKD27AZ.js.map → chunk-F2ZFMPW4.js.map} +1 -1
  89. package/dist/{chunk-6HFFTGFP.mjs → chunk-FWFJZV52.mjs} +4 -4
  90. package/dist/{chunk-6HFFTGFP.mjs.map → chunk-FWFJZV52.mjs.map} +1 -1
  91. package/dist/{chunk-AOWJP25J.mjs → chunk-FX232N4P.mjs} +4 -4
  92. package/dist/{chunk-AOWJP25J.mjs.map → chunk-FX232N4P.mjs.map} +1 -1
  93. package/dist/{chunk-PRTXAIIC.js → chunk-GDH42JAS.js} +15 -15
  94. package/dist/{chunk-PRTXAIIC.js.map → chunk-GDH42JAS.js.map} +1 -1
  95. package/dist/{chunk-EIW6YEPY.js → chunk-GKVEWOYN.js} +8 -8
  96. package/dist/{chunk-EIW6YEPY.js.map → chunk-GKVEWOYN.js.map} +1 -1
  97. package/dist/{chunk-C3WU45JT.js → chunk-HQ2EPU5R.js} +5 -5
  98. package/dist/{chunk-C3WU45JT.js.map → chunk-HQ2EPU5R.js.map} +1 -1
  99. package/dist/chunk-I7AZC5ZQ.js +0 -1
  100. package/dist/chunk-JOYMIGR2.mjs +0 -1
  101. package/dist/{chunk-35ERUUH3.js → chunk-JR2FT6T5.js} +6 -6
  102. package/dist/{chunk-35ERUUH3.js.map → chunk-JR2FT6T5.js.map} +1 -1
  103. package/dist/chunk-JS75ORH7.js +0 -1
  104. package/dist/{chunk-GNDWTXLU.js → chunk-KPWK23G7.js} +3 -3
  105. package/dist/{chunk-GNDWTXLU.js.map → chunk-KPWK23G7.js.map} +1 -1
  106. package/dist/{chunk-2SCDUVFJ.js → chunk-LUF22UGR.js} +8 -8
  107. package/dist/{chunk-2SCDUVFJ.js.map → chunk-LUF22UGR.js.map} +1 -1
  108. package/dist/{chunk-VYL6IHJA.mjs → chunk-NHX6YJ7G.mjs} +8 -8
  109. package/dist/{chunk-VYL6IHJA.mjs.map → chunk-NHX6YJ7G.mjs.map} +1 -1
  110. package/dist/{chunk-O5ZSGBQD.mjs → chunk-NM567VXC.mjs} +4 -4
  111. package/dist/{chunk-O5ZSGBQD.mjs.map → chunk-NM567VXC.mjs.map} +1 -1
  112. package/dist/chunk-NN2YE5WT.js +0 -1
  113. package/dist/chunk-NNZDWY3L.mjs +0 -1
  114. package/dist/{chunk-2FQG2AHJ.js → chunk-OBNMSO66.js} +14 -14
  115. package/dist/{chunk-2FQG2AHJ.js.map → chunk-OBNMSO66.js.map} +1 -1
  116. package/dist/{chunk-HYVEIP2N.mjs → chunk-OX2GTNMB.mjs} +3 -3
  117. package/dist/{chunk-HYVEIP2N.mjs.map → chunk-OX2GTNMB.mjs.map} +1 -1
  118. package/dist/{chunk-YECDJDDD.js → chunk-PXK4WNSU.js} +10 -10
  119. package/dist/{chunk-YECDJDDD.js.map → chunk-PXK4WNSU.js.map} +1 -1
  120. package/dist/{chunk-2OQWLXDO.js → chunk-PXWYMOZY.js} +11 -11
  121. package/dist/{chunk-2OQWLXDO.js.map → chunk-PXWYMOZY.js.map} +1 -1
  122. package/dist/{chunk-3SLFT453.mjs → chunk-QK54SZPF.mjs} +4 -4
  123. package/dist/{chunk-3SLFT453.mjs.map → chunk-QK54SZPF.mjs.map} +1 -1
  124. package/dist/{chunk-JDTU2RWC.js → chunk-QWXTQC3N.js} +3 -3
  125. package/dist/{chunk-JDTU2RWC.js.map → chunk-QWXTQC3N.js.map} +1 -1
  126. package/dist/{chunk-VJ74275U.mjs → chunk-RA4DCRMR.mjs} +3 -3
  127. package/dist/{chunk-VJ74275U.mjs.map → chunk-RA4DCRMR.mjs.map} +1 -1
  128. package/dist/{chunk-N2NZBPQ5.mjs → chunk-RI25UGHE.mjs} +3 -3
  129. package/dist/{chunk-N2NZBPQ5.mjs.map → chunk-RI25UGHE.mjs.map} +1 -1
  130. package/dist/{chunk-3AUFD7KR.mjs → chunk-RQOKQC7J.mjs} +3 -3
  131. package/dist/{chunk-3AUFD7KR.mjs.map → chunk-RQOKQC7J.mjs.map} +1 -1
  132. package/dist/{chunk-PUAXHYBL.mjs → chunk-SCVSPTXJ.mjs} +3 -3
  133. package/dist/{chunk-PUAXHYBL.mjs.map → chunk-SCVSPTXJ.mjs.map} +1 -1
  134. package/dist/{chunk-5WGMXSCB.mjs → chunk-SJPI34DL.mjs} +3 -3
  135. package/dist/{chunk-5WGMXSCB.mjs.map → chunk-SJPI34DL.mjs.map} +1 -1
  136. package/dist/chunk-TAPCWMBV.mjs +6 -0
  137. package/dist/{chunk-HRMGITUZ.mjs.map → chunk-TAPCWMBV.mjs.map} +1 -1
  138. package/dist/{chunk-BFZNLTWK.mjs → chunk-TCVOGK6U.mjs} +3 -3
  139. package/dist/{chunk-BFZNLTWK.mjs.map → chunk-TCVOGK6U.mjs.map} +1 -1
  140. package/dist/chunk-TJVZEDE3.js +8 -0
  141. package/dist/{chunk-5O7JSWT6.js.map → chunk-TJVZEDE3.js.map} +1 -1
  142. package/dist/{chunk-4OS6M3V4.js → chunk-U5WMGUDV.js} +4 -4
  143. package/dist/{chunk-4OS6M3V4.js.map → chunk-U5WMGUDV.js.map} +1 -1
  144. package/dist/{chunk-HQOHB6QF.js → chunk-U6O5NG56.js} +15 -15
  145. package/dist/{chunk-HQOHB6QF.js.map → chunk-U6O5NG56.js.map} +1 -1
  146. package/dist/{chunk-O4YBWJHP.mjs → chunk-X6NPTILR.mjs} +3 -3
  147. package/dist/{chunk-O4YBWJHP.mjs.map → chunk-X6NPTILR.mjs.map} +1 -1
  148. package/dist/{chunk-ZEOC26LZ.js → chunk-YC2CKOX6.js} +51 -19
  149. package/dist/chunk-YC2CKOX6.js.map +1 -0
  150. package/dist/{chunk-PK2OTGW5.mjs → chunk-YVQNOB3Q.mjs} +3 -3
  151. package/dist/{chunk-PK2OTGW5.mjs.map → chunk-YVQNOB3Q.mjs.map} +1 -1
  152. package/dist/{chunk-3BVCF4ZF.js → chunk-ZDXY44FH.js} +4 -4
  153. package/dist/{chunk-3BVCF4ZF.js.map → chunk-ZDXY44FH.js.map} +1 -1
  154. package/dist/{chunk-MHX6TOAS.js → chunk-ZTY4YS7Q.js} +3 -3
  155. package/dist/{chunk-MHX6TOAS.js.map → chunk-ZTY4YS7Q.js.map} +1 -1
  156. package/dist/cli/index.js +3 -4
  157. package/dist/cli/index.mjs +1 -2
  158. package/dist/client/index.js +4 -4
  159. package/dist/client/index.mjs +3 -3
  160. package/dist/commerce/index.js +57 -57
  161. package/dist/commerce/index.mjs +5 -5
  162. package/dist/engage/index.js +10 -10
  163. package/dist/engage/index.mjs +7 -7
  164. package/dist/fleet/index.js +8 -8
  165. package/dist/fleet/index.mjs +4 -4
  166. package/dist/forms/form-values.d.ts +47 -0
  167. package/dist/forms/form-values.d.ts.map +1 -0
  168. package/dist/forms/index.js +16 -16
  169. package/dist/forms/index.mjs +9 -9
  170. package/dist/forms/server.js +10 -10
  171. package/dist/forms/server.mjs +8 -8
  172. package/dist/forms/static.js +7 -7
  173. package/dist/forms/static.mjs +6 -6
  174. package/dist/forms/useForm.d.ts.map +1 -1
  175. package/dist/images/index.js +11 -11
  176. package/dist/images/index.mjs +4 -4
  177. package/dist/index.js +63 -63
  178. package/dist/index.mjs +9 -9
  179. package/dist/layout/client.js +8 -8
  180. package/dist/layout/client.mjs +7 -7
  181. package/dist/layout/index.js +10 -10
  182. package/dist/layout/index.mjs +8 -8
  183. package/dist/lib-6HOOMENJ.js +0 -1
  184. package/dist/lib-BGAWCSUH.js +0 -1
  185. package/dist/lib-R7IQ4ZHE.mjs +0 -1
  186. package/dist/lib-RSDMEKDQ.mjs +0 -1
  187. package/dist/maps/index.js +5 -5
  188. package/dist/maps/index.mjs +3 -3
  189. package/dist/search/index.js +4 -4
  190. package/dist/search/index.mjs +3 -3
  191. package/dist/seo/client.js +5 -5
  192. package/dist/seo/client.mjs +4 -4
  193. package/dist/seo/index.js +5 -5
  194. package/dist/seo/index.mjs +4 -4
  195. package/dist/seo/register-sitemap-cli.js +0 -1
  196. package/dist/seo/register-sitemap-cli.mjs +0 -1
  197. package/dist/server/index.js +3 -3
  198. package/dist/server/index.mjs +2 -2
  199. package/dist/shared/version.d.ts +1 -1
  200. package/dist/signal/index.js +11 -11
  201. package/dist/signal/index.mjs +2 -2
  202. package/dist/sync/index.js +17 -17
  203. package/dist/sync/index.mjs +4 -4
  204. package/dist/writeLLMsTxt-CQ7A4AAL.js +0 -1
  205. package/dist/writeLLMsTxt-NX5MSPYX.mjs +0 -1
  206. package/package.json +21 -19
  207. package/dist/ChatWidget-3OW5LY37.js +0 -24
  208. package/dist/ChatWidget-54GVS27I.mjs +0 -15
  209. package/dist/EngageWidget-7EUP76WE.mjs +0 -12
  210. package/dist/EngageWidget-DDP5UFA4.js +0 -21
  211. package/dist/ManagedForm-I3QVRQ53.mjs +0 -16
  212. package/dist/ManagedForm-TSYKQFLJ.js +0 -25
  213. package/dist/SitemapSync-HSHCOKCL.mjs +0 -9
  214. package/dist/SitemapSync-LH6UVP4P.js +0 -18
  215. package/dist/analytics/send-gate.test.d.ts +0 -20
  216. package/dist/analytics/send-gate.test.d.ts.map +0 -1
  217. package/dist/api-D745LGGU.mjs.map +0 -1
  218. package/dist/api-XR5APCH3.js.map +0 -1
  219. package/dist/blog/artwork-components.test.d.ts +0 -2
  220. package/dist/blog/artwork-components.test.d.ts.map +0 -1
  221. package/dist/blog/artwork.test.d.ts +0 -2
  222. package/dist/blog/artwork.test.d.ts.map +0 -1
  223. package/dist/blog/author-social.test.d.ts +0 -2
  224. package/dist/blog/author-social.test.d.ts.map +0 -1
  225. package/dist/blog/blog-tables.test.d.ts +0 -2
  226. package/dist/blog/blog-tables.test.d.ts.map +0 -1
  227. package/dist/blog/blog-view-tracker.test.d.ts +0 -2
  228. package/dist/blog/blog-view-tracker.test.d.ts.map +0 -1
  229. package/dist/blog/category-metadata.test.d.ts +0 -2
  230. package/dist/blog/category-metadata.test.d.ts.map +0 -1
  231. package/dist/blog/metadata-images.test.d.ts +0 -2
  232. package/dist/blog/metadata-images.test.d.ts.map +0 -1
  233. package/dist/blog/newsletter-widget.test.d.ts +0 -2
  234. package/dist/blog/newsletter-widget.test.d.ts.map +0 -1
  235. package/dist/blog/not-found.test.d.ts +0 -2
  236. package/dist/blog/not-found.test.d.ts.map +0 -1
  237. package/dist/blog/publication-render.test.d.ts +0 -2
  238. package/dist/blog/publication-render.test.d.ts.map +0 -1
  239. package/dist/blog/publication-routes.test.d.ts +0 -2
  240. package/dist/blog/publication-routes.test.d.ts.map +0 -1
  241. package/dist/blog/reading-time.test.d.ts +0 -2
  242. package/dist/blog/reading-time.test.d.ts.map +0 -1
  243. package/dist/blog/sanitize-excerpt.test.d.ts +0 -2
  244. package/dist/blog/sanitize-excerpt.test.d.ts.map +0 -1
  245. package/dist/blog/server-core-contract.test.d.ts +0 -2
  246. package/dist/blog/server-core-contract.test.d.ts.map +0 -1
  247. package/dist/blog/site-scope.test.d.ts +0 -2
  248. package/dist/blog/site-scope.test.d.ts.map +0 -1
  249. package/dist/blog/static-params.test.d.ts +0 -2
  250. package/dist/blog/static-params.test.d.ts.map +0 -1
  251. package/dist/blog/tag-links.test.d.ts +0 -2
  252. package/dist/blog/tag-links.test.d.ts.map +0 -1
  253. package/dist/blog/types-wire-shape.test.d.ts +0 -2
  254. package/dist/blog/types-wire-shape.test.d.ts.map +0 -1
  255. package/dist/brand/extract-brand-profile.test.d.ts +0 -2
  256. package/dist/brand/extract-brand-profile.test.d.ts.map +0 -1
  257. package/dist/brand/status-contrast.test.d.ts +0 -2
  258. package/dist/brand/status-contrast.test.d.ts.map +0 -1
  259. package/dist/chunk-5O7JSWT6.js +0 -8
  260. package/dist/chunk-5YA6SI4Z.mjs.map +0 -1
  261. package/dist/chunk-HEOQT5SM.mjs.map +0 -1
  262. package/dist/chunk-HRMGITUZ.mjs +0 -6
  263. package/dist/chunk-I7AZC5ZQ.js.map +0 -1
  264. package/dist/chunk-JOYMIGR2.mjs.map +0 -1
  265. package/dist/chunk-JS75ORH7.js.map +0 -1
  266. package/dist/chunk-NN2YE5WT.js.map +0 -1
  267. package/dist/chunk-NNZDWY3L.mjs.map +0 -1
  268. package/dist/chunk-ZEOC26LZ.js.map +0 -1
  269. package/dist/cli/agent/envelope.test.d.ts +0 -2
  270. package/dist/cli/agent/envelope.test.d.ts.map +0 -1
  271. package/dist/cli/agent/sitemap-trailing-slash.test.d.ts +0 -2
  272. package/dist/cli/agent/sitemap-trailing-slash.test.d.ts.map +0 -1
  273. package/dist/cli/agent/ssr-bailout.test.d.ts +0 -2
  274. package/dist/cli/agent/ssr-bailout.test.d.ts.map +0 -1
  275. package/dist/cli/codemod/diff.test.d.ts +0 -2
  276. package/dist/cli/codemod/diff.test.d.ts.map +0 -1
  277. package/dist/cli/codemod/transforms.test.d.ts +0 -2
  278. package/dist/cli/codemod/transforms.test.d.ts.map +0 -1
  279. package/dist/cli/commands/config-regression.test.d.ts +0 -2
  280. package/dist/cli/commands/config-regression.test.d.ts.map +0 -1
  281. package/dist/cli/commands/geo.test.d.ts +0 -2
  282. package/dist/cli/commands/geo.test.d.ts.map +0 -1
  283. package/dist/cli/commands/og.test.d.ts +0 -2
  284. package/dist/cli/commands/og.test.d.ts.map +0 -1
  285. package/dist/cli/config.test.d.ts +0 -2
  286. package/dist/cli/config.test.d.ts.map +0 -1
  287. package/dist/cli/generators/index.test.d.ts +0 -2
  288. package/dist/cli/generators/index.test.d.ts.map +0 -1
  289. package/dist/cli/index.js.map +0 -1
  290. package/dist/cli/index.mjs.map +0 -1
  291. package/dist/cli/state.test.d.ts +0 -2
  292. package/dist/cli/state.test.d.ts.map +0 -1
  293. package/dist/commerce/discount-checkout.test.d.ts +0 -2
  294. package/dist/commerce/discount-checkout.test.d.ts.map +0 -1
  295. package/dist/commerce/events-extras.test.d.ts +0 -2
  296. package/dist/commerce/events-extras.test.d.ts.map +0 -1
  297. package/dist/commerce/server-result.test.d.ts +0 -2
  298. package/dist/commerce/server-result.test.d.ts.map +0 -1
  299. package/dist/engage/chat-launcher.test.d.ts +0 -2
  300. package/dist/engage/chat-launcher.test.d.ts.map +0 -1
  301. package/dist/engage/dependency-contract.test.d.ts +0 -2
  302. package/dist/engage/dependency-contract.test.d.ts.map +0 -1
  303. package/dist/engage/launcher-placement.test.d.ts +0 -2
  304. package/dist/engage/launcher-placement.test.d.ts.map +0 -1
  305. package/dist/fleet/contract.test.d.ts +0 -2
  306. package/dist/fleet/contract.test.d.ts.map +0 -1
  307. package/dist/fleet/heartbeat.test.d.ts +0 -2
  308. package/dist/fleet/heartbeat.test.d.ts.map +0 -1
  309. package/dist/forms/contract.test.d.ts +0 -2
  310. package/dist/forms/contract.test.d.ts.map +0 -1
  311. package/dist/forms/field-interactions.test.d.ts +0 -8
  312. package/dist/forms/field-interactions.test.d.ts.map +0 -1
  313. package/dist/forms/field-rules.test.d.ts +0 -8
  314. package/dist/forms/field-rules.test.d.ts.map +0 -1
  315. package/dist/forms/form-field-focus.test.d.ts +0 -8
  316. package/dist/forms/form-field-focus.test.d.ts.map +0 -1
  317. package/dist/forms/ga4-identity.test.d.ts +0 -2
  318. package/dist/forms/ga4-identity.test.d.ts.map +0 -1
  319. package/dist/forms/native-fallback.test.d.ts +0 -2
  320. package/dist/forms/native-fallback.test.d.ts.map +0 -1
  321. package/dist/forms/stage.test.d.ts +0 -2
  322. package/dist/forms/stage.test.d.ts.map +0 -1
  323. package/dist/forms/static-form.test.d.ts +0 -2
  324. package/dist/forms/static-form.test.d.ts.map +0 -1
  325. package/dist/forms/tracking-session.test.d.ts +0 -22
  326. package/dist/forms/tracking-session.test.d.ts.map +0 -1
  327. package/dist/landing/contract.test.d.ts +0 -2
  328. package/dist/landing/contract.test.d.ts.map +0 -1
  329. package/dist/landing/server-entry.test.d.ts +0 -2
  330. package/dist/landing/server-entry.test.d.ts.map +0 -1
  331. package/dist/lib-6HOOMENJ.js.map +0 -1
  332. package/dist/lib-BGAWCSUH.js.map +0 -1
  333. package/dist/lib-R7IQ4ZHE.mjs.map +0 -1
  334. package/dist/lib-RSDMEKDQ.mjs.map +0 -1
  335. package/dist/llms/aiRobots.test.d.ts +0 -2
  336. package/dist/llms/aiRobots.test.d.ts.map +0 -1
  337. package/dist/llms/contract.test.d.ts +0 -2
  338. package/dist/llms/contract.test.d.ts.map +0 -1
  339. package/dist/llms/discovery-headers.test.d.ts +0 -2
  340. package/dist/llms/discovery-headers.test.d.ts.map +0 -1
  341. package/dist/llms/generateLLMsTxt.test.d.ts +0 -2
  342. package/dist/llms/generateLLMsTxt.test.d.ts.map +0 -1
  343. package/dist/llms/handlers.test.d.ts +0 -2
  344. package/dist/llms/handlers.test.d.ts.map +0 -1
  345. package/dist/llms/humanize-industry.test.d.ts +0 -2
  346. package/dist/llms/humanize-industry.test.d.ts.map +0 -1
  347. package/dist/llms/links.test.d.ts +0 -2
  348. package/dist/llms/links.test.d.ts.map +0 -1
  349. package/dist/llms/sourcedFacts.test.d.ts +0 -2
  350. package/dist/llms/sourcedFacts.test.d.ts.map +0 -1
  351. package/dist/llms/wiring.test.d.ts +0 -2
  352. package/dist/llms/wiring.test.d.ts.map +0 -1
  353. package/dist/llms/writeLLMsTxt.test.d.ts +0 -2
  354. package/dist/llms/writeLLMsTxt.test.d.ts.map +0 -1
  355. package/dist/mcp/protocol.test.d.ts +0 -2
  356. package/dist/mcp/protocol.test.d.ts.map +0 -1
  357. package/dist/motion/gsap.test.d.ts +0 -2
  358. package/dist/motion/gsap.test.d.ts.map +0 -1
  359. package/dist/motion/motion.test.d.ts +0 -16
  360. package/dist/motion/motion.test.d.ts.map +0 -1
  361. package/dist/og/pages.test.d.ts +0 -2
  362. package/dist/og/pages.test.d.ts.map +0 -1
  363. package/dist/og/route.test.d.ts +0 -2
  364. package/dist/og/route.test.d.ts.map +0 -1
  365. package/dist/og/template.test.d.ts +0 -2
  366. package/dist/og/template.test.d.ts.map +0 -1
  367. package/dist/og/wiring.test.d.ts +0 -2
  368. package/dist/og/wiring.test.d.ts.map +0 -1
  369. package/dist/portfolio/contract.test.d.ts +0 -2
  370. package/dist/portfolio/contract.test.d.ts.map +0 -1
  371. package/dist/proxy/llms-discovery.test.d.ts +0 -2
  372. package/dist/proxy/llms-discovery.test.d.ts.map +0 -1
  373. package/dist/proxy/securityHeaders.test.d.ts +0 -2
  374. package/dist/proxy/securityHeaders.test.d.ts.map +0 -1
  375. package/dist/proxy/segment.test.d.ts +0 -2
  376. package/dist/proxy/segment.test.d.ts.map +0 -1
  377. package/dist/redirects/index.test.d.ts +0 -2
  378. package/dist/redirects/index.test.d.ts.map +0 -1
  379. package/dist/robots/index.test.d.ts +0 -2
  380. package/dist/robots/index.test.d.ts.map +0 -1
  381. package/dist/seo/getManagedMetadata.test.d.ts +0 -2
  382. package/dist/seo/getManagedMetadata.test.d.ts.map +0 -1
  383. package/dist/seo/managed-schema-filter.test.d.ts +0 -2
  384. package/dist/seo/managed-schema-filter.test.d.ts.map +0 -1
  385. package/dist/seo/register-sitemap-cli-impl.test.d.ts +0 -2
  386. package/dist/seo/register-sitemap-cli-impl.test.d.ts.map +0 -1
  387. package/dist/seo/register-sitemap-cli.js.map +0 -1
  388. package/dist/seo/register-sitemap-cli.mjs.map +0 -1
  389. package/dist/seo/register-sitemap-request.test.d.ts +0 -2
  390. package/dist/seo/register-sitemap-request.test.d.ts.map +0 -1
  391. package/dist/seo/schema-filter.test.d.ts +0 -2
  392. package/dist/seo/schema-filter.test.d.ts.map +0 -1
  393. package/dist/seo/site-scope.test.d.ts +0 -2
  394. package/dist/seo/site-scope.test.d.ts.map +0 -1
  395. package/dist/seo-meta/contract.test.d.ts +0 -2
  396. package/dist/seo-meta/contract.test.d.ts.map +0 -1
  397. package/dist/seo-pages/contract.test.d.ts +0 -2
  398. package/dist/seo-pages/contract.test.d.ts.map +0 -1
  399. package/dist/server/mint-site-token.test.d.ts +0 -2
  400. package/dist/server/mint-site-token.test.d.ts.map +0 -1
  401. package/dist/server/server-fetch.test.d.ts +0 -2
  402. package/dist/server/server-fetch.test.d.ts.map +0 -1
  403. package/dist/shared/client-entry-boundary.test.d.ts +0 -2
  404. package/dist/shared/client-entry-boundary.test.d.ts.map +0 -1
  405. package/dist/shared/fresh-fetch.test.d.ts +0 -2
  406. package/dist/shared/fresh-fetch.test.d.ts.map +0 -1
  407. package/dist/shared/next-files.test.d.ts +0 -2
  408. package/dist/shared/next-files.test.d.ts.map +0 -1
  409. package/dist/shared/no-cjs-require.test.d.ts +0 -2
  410. package/dist/shared/no-cjs-require.test.d.ts.map +0 -1
  411. package/dist/shared/page-leave.test.d.ts +0 -2
  412. package/dist/shared/page-leave.test.d.ts.map +0 -1
  413. package/dist/shared/publishCredential.test.d.ts +0 -2
  414. package/dist/shared/publishCredential.test.d.ts.map +0 -1
  415. package/dist/shared/raw-browser-api-guard.test.d.ts +0 -15
  416. package/dist/shared/raw-browser-api-guard.test.d.ts.map +0 -1
  417. package/dist/shared/siteToken.test.d.ts +0 -2
  418. package/dist/shared/siteToken.test.d.ts.map +0 -1
  419. package/dist/shared/sonorFetch.test.d.ts +0 -2
  420. package/dist/shared/sonorFetch.test.d.ts.map +0 -1
  421. package/dist/shared/source-graph.test.d.ts +0 -2
  422. package/dist/shared/source-graph.test.d.ts.map +0 -1
  423. package/dist/shared/uuid.test.d.ts +0 -2
  424. package/dist/shared/uuid.test.d.ts.map +0 -1
  425. package/dist/shared/version.test.d.ts +0 -2
  426. package/dist/shared/version.test.d.ts.map +0 -1
  427. package/dist/shared/visual-viewport-gap.test.d.ts +0 -2
  428. package/dist/shared/visual-viewport-gap.test.d.ts.map +0 -1
  429. package/dist/sitemap/discover.test.d.ts +0 -2
  430. package/dist/sitemap/discover.test.d.ts.map +0 -1
  431. package/dist/sitemap/shared.test.d.ts +0 -2
  432. package/dist/sitemap/shared.test.d.ts.map +0 -1
  433. package/dist/sitemap/site-scope.test.d.ts +0 -2
  434. package/dist/sitemap/site-scope.test.d.ts.map +0 -1
  435. package/dist/sitemap/trailing-slash.test.d.ts +0 -2
  436. package/dist/sitemap/trailing-slash.test.d.ts.map +0 -1
  437. package/dist/sites/contract.test.d.ts +0 -2
  438. package/dist/sites/contract.test.d.ts.map +0 -1
  439. package/dist/slots/ManagedSlot.test.d.ts +0 -2
  440. package/dist/slots/ManagedSlot.test.d.ts.map +0 -1
  441. package/dist/slots/contract.test.d.ts +0 -2
  442. package/dist/slots/contract.test.d.ts.map +0 -1
  443. package/dist/slots/revalidate.test.d.ts +0 -2
  444. package/dist/slots/revalidate.test.d.ts.map +0 -1
  445. package/dist/slots/server-api.test.d.ts +0 -2
  446. package/dist/slots/server-api.test.d.ts.map +0 -1
  447. package/dist/sync/add-to-calendar.test.d.ts +0 -2
  448. package/dist/sync/add-to-calendar.test.d.ts.map +0 -1
  449. package/dist/sync/api-errors.test.d.ts +0 -2
  450. package/dist/sync/api-errors.test.d.ts.map +0 -1
  451. package/dist/sync/booking-flow.test.d.ts +0 -2
  452. package/dist/sync/booking-flow.test.d.ts.map +0 -1
  453. package/dist/writeLLMsTxt-CQ7A4AAL.js.map +0 -1
  454. package/dist/writeLLMsTxt-NX5MSPYX.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js","../node_modules/.pnpm/obug@2.1.4/node_modules/obug/dist/core.js","../node_modules/.pnpm/obug@2.1.4/node_modules/obug/dist/node.js","../node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/src/common.ts","../node_modules/.pnpm/js-tokens@10.0.0/node_modules/js-tokens/index.js","../node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/src/identifier-regex.ts","../node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/src/identifier.ts","../node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/src/keyword.ts","../node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/src/defs.ts","../node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/src/highlight.ts","../node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/src/index.ts","../node_modules/.pnpm/@babel+helper-string-parser@8.0.0/node_modules/@babel/helper-string-parser/src/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/utils/shallowEqual.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/utils/deprecationWarning.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/generated/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/matchesPattern.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/buildMatchMemberExpression.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/react/isReactComponent.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/react/isCompatTag.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isType.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isPlaceholderType.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/is.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isValidIdentifier.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/constants/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/utils.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/core.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/flow.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/jsx.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/placeholders.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/misc.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/experimental.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/typescript.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/deprecated-aliases.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/definitions/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/validate.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/generated/lowercase.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/generated/uppercase.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/utils/react/cleanJSXElementLiteralChild.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/react/buildChildren.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isNode.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/asserts/assertNode.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/asserts/generated/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/flow/createTypeAnnotationBasedOnTypeof.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/flow/removeTypeDuplicates.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/flow/createFlowUnionType.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/typescript/removeTypeDuplicates.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/typescript/createTSUnionType.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/builders/productions.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/clone/cloneNode.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/clone/clone.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/clone/cloneDeep.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/clone/cloneDeepWithoutLoc.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/clone/cloneWithoutLoc.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/addComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/addComment.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/utils/inherit.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/inheritInnerComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/inheritLeadingComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/inheritTrailingComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/inheritsComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/comments/removeComments.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/constants/generated/index.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toBlock.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/ensureBlock.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toIdentifier.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toBindingIdentifierName.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toComputedKey.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toExpression.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/traverse/traverseFast.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/removeProperties.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/removePropertiesDeep.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toKeyAlias.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/toStatement.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/converters/valueToNode.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/appendToMemberExpression.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/inherits.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/modifications/prependToMemberExpression.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/retrievers/getAssignmentIdentifiers.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/retrievers/getBindingIdentifiers.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/retrievers/getOuterBindingIdentifiers.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/retrievers/getFunctionName.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/traverse/traverse.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isBinding.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isLet.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isBlockScoped.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isImmutable.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isNodesEquivalent.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isReferenced.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isScope.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isSpecifierDefault.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isValidES3Identifier.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/validators/isVar.ts","../node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/src/index.ts","../node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-lower.json","../node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-upper.json","../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts","../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/strings.ts","../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts","../node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/src/resolve-uri.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/resolve.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/sort.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/binary-search.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/types.ts","../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts","../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/set-array.ts","../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts","../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/source-map.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/buffer.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/node/parentheses.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/template-literals.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/expressions.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/statements.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/methods.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/typescript.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/modules.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/types.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/flow.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/classes.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/base.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/generators/jsx.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/nodes.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/node/index.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/token-map.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/printer.ts","../node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/src/index.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/formatters.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/options.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/parse.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/populate.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/string.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/literal.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/builder.ts","../node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/src/index.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/lib/virtual-types.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/context.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/traverse-node.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/lib/virtual-types-validator.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/visitors.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/scope/lib/renamer.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/scope/traverseForScope.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/scope/binding.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/cache.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/scope/index.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/ancestry.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/inference/util.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/inference/inferer-reference.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/inference/inferers.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/inference/index.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/lib/removal-hooks.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/removal.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/modification.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/replacement.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/evaluation.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/conversion.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/introspection.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/family.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/comments.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/index.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/path/context.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/hub.ts","../node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/src/index.ts"],"names":["object","index","hexadecimal","isFunction","jsesc","result","hex","colors","debug","namespace","namespaces","skip","useColors","createDebug","defs","highlight","isExpression","NEWLINE","firstChar","ch","keys","node","NODE_FIELDS","validate","defineType","inherits","alias","identifier","expression","validator","isDeclareClass","unaryExpression","program","typeAnnotation","variance","typeParameter","Identifier","StringLiteral","NumericLiteral","JSXIdentifier","JSXText","getQualifiedName","removeTypeDuplicates","cache","b","url","sortComparator","parse","file","names","resolve","cast","COLUMN","SOURCES_INDEX","SOURCE_LINE","SOURCE_COLUMN","NAMES_INDEX","Buffer","last","isMemberExpression","isOptionalMemberExpression","isYieldExpression","isStatement","NullableTypeAnnotation","FunctionTypeAnnotation","UpdateExpression","ObjectExpression","DoExpression","UnionTypeAnnotation","OptionalIndexedAccessType","TSAsExpression","TSConditionalType","TSUnionType","TSIntersectionType","TSTypeOperator","TSInferType","TSInstantiationExpression","TSFunctionType","BinaryExpression","LogicalExpression","SequenceExpression","YieldExpression","ClassExpression","FunctionExpression","ConditionalExpression","OptionalMemberExpression","AssignmentExpression","TaggedTemplateExpression","TemplateElement","TemplateLiteral","isCallExpression","isLiteral","isNewExpression","isPattern","UnaryExpression","ParenthesizedExpression","token","NewExpression","ThisExpression","Super","Decorator","OptionalCallExpression","CallExpression","Import","AwaitExpression","EmptyStatement","ExpressionStatement","AssignmentPattern","BindExpression","MemberExpression","MetaProperty","PrivateName","V8IntrinsicIdentifier","ModuleExpression","isFor","isIfStatement","isVoidPattern","WithStatement","IfStatement","statement","ForStatement","WhileStatement","ForInStatement","ForOfStatement","DoWhileStatement","BreakStatement","ContinueStatement","ReturnStatement","ThrowStatement","LabeledStatement","TryStatement","CatchClause","SwitchStatement","SwitchCase","DebuggerStatement","VariableDeclaration","VariableDeclarator","isIdentifier","ArrowFunctionExpression","TSTypeAnnotation","TSTypeParameterInstantiation","TSTypeParameter","TSParameterProperty","TSDeclareFunction","TSDeclareMethod","TSQualifiedName","TSCallSignatureDeclaration","TSConstructSignatureDeclaration","TSPropertySignature","TSMethodSignature","TSIndexSignature","isStatic","TSAnyKeyword","TSBigIntKeyword","TSUnknownKeyword","TSNumberKeyword","TSObjectKeyword","TSBooleanKeyword","TSStringKeyword","TSSymbolKeyword","TSVoidKeyword","TSUndefinedKeyword","TSNullKeyword","TSNeverKeyword","TSIntrinsicKeyword","TSThisType","TSConstructorType","TSTypeReference","TSTypePredicate","TSTypeQuery","TSTypeLiteral","TSArrayType","TSTupleType","TSOptionalType","TSRestType","TSNamedTupleMember","TSParenthesizedType","TSIndexedAccessType","TSMappedType","TSTemplateLiteralType","TSLiteralType","TSClassImplements","TSInterfaceDeclaration","TSInterfaceBody","TSTypeAliasDeclaration","TSSatisfiesExpression","TSTypeAssertion","TSEnumDeclaration","TSEnumBody","TSEnumMember","TSModuleDeclaration","TSModuleBlock","TSImportType","TSImportEqualsDeclaration","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","isClassDeclaration","isExportDefaultSpecifier","isExportNamespaceSpecifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","ImportSpecifier","ImportDefaultSpecifier","ExportDefaultSpecifier","ExportSpecifier","ExportNamespaceSpecifier","ExportAllDeclaration","ExportNamedDeclaration","ExportDefaultDeclaration","ImportDeclaration","ImportAttribute","ImportNamespaceSpecifier","ImportExpression","isAssignmentPattern","ArgumentPlaceholder","RestElement","ObjectMethod","ObjectProperty","ArrayExpression","RegExpLiteral","BooleanLiteral","NullLiteral","BigIntLiteral","TopicReference","VoidPattern","isDeclareExportDeclaration","AnyTypeAnnotation","ArrayTypeAnnotation","BooleanTypeAnnotation","BooleanLiteralTypeAnnotation","NullLiteralTypeAnnotation","DeclareClass","DeclareFunction","InferredPredicate","DeclaredPredicate","DeclareInterface","InterfaceDeclaration","DeclareModule","DeclareModuleExports","DeclareTypeAlias","TypeAlias","DeclareOpaqueType","OpaqueType","DeclareVariable","DeclareExportDeclaration","DeclareExportAllDeclaration","EnumDeclaration","EnumBooleanBody","EnumNumberBody","EnumStringBody","EnumSymbolBody","EnumDefaultedMember","EnumBooleanMember","EnumNumberMember","EnumStringMember","ExistsTypeAnnotation","FunctionTypeParam","InterfaceExtends","InterfaceTypeAnnotation","IntersectionTypeAnnotation","MixedTypeAnnotation","EmptyTypeAnnotation","NumberTypeAnnotation","StringTypeAnnotation","ThisTypeAnnotation","TupleTypeAnnotation","TypeofTypeAnnotation","TypeAnnotation","TypeParameterInstantiation","TypeParameter","ObjectTypeAnnotation","ObjectTypeInternalSlot","ObjectTypeCallProperty","ObjectTypeIndexer","ObjectTypeProperty","ObjectTypeSpreadProperty","QualifiedTypeIdentifier","SymbolTypeAnnotation","TypeCastExpression","Variance","VoidTypeAnnotation","IndexedAccessType","isExportDefaultDeclaration","isExportNamedDeclaration","ClassDeclaration","ClassBody","ClassProperty","ClassAccessorProperty","ClassPrivateProperty","ClassMethod","ClassPrivateMethod","StaticBlock","File","Program","BlockStatement","Directive","DirectiveLiteral","InterpreterDirective","Placeholder","JSXAttribute","JSXNamespacedName","JSXMemberExpression","JSXSpreadAttribute","JSXExpressionContainer","JSXSpreadChild","JSXElement","JSXOpeningElement","JSXClosingElement","JSXEmptyExpression","JSXFragment","JSXOpeningFragment","JSXClosingFragment","VISITOR_KEYS","traverseFast","isClassBody","isTSInterfaceBody","isTSEnumMember","str","assertExpressionStatement","smart","statements","isExpressionStatement","isJSXIdentifier","isPlaceholder","isStringLiteral","removePropertiesDeep","traverse","key","blockStatement","cloneNode","emptyStatement","expressionStatement","stringLiteral","placeholder","parent","arg","formatters.smart","formatters.statement","formatters.statements","formatters.expression","formatters.program","Scope","RestProperty","SpreadProperty","stop","scope","NodePath","isBinding","isExportDeclaration","isForStatement","isForXStatement","isImportDeclaration","isImportSpecifier","isJSXMemberExpression","isVariableDeclaration","react","isForOfStatement","isCompatTag","isScope","isReferenced","isBlockScoped","isVar","isFlow","isRestProperty","isSpreadProperty","DEPRECATED_KEYS","DEPRECATED_ALIASES","FLIPPED_ALIAS_KEYS","TYPES","deprecationWarning","visitors","merge","virtualTypesValidators","getAssignmentIdentifiers","explode","path","assignmentExpression","getBindingIdentifiers","isArrayExpression","isBinary","isClass","isExportAllDeclaration","isFunctionDeclaration","isMethod","isModuleSpecifier","isNullLiteral","isObjectExpression","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","matchesPattern","toIdentifier","variableDeclaration","variableDeclarator","isObjectProperty","isTopicReference","isMetaProperty","isPrivateName","sequenceExpression","scopeCache","uid","name","createFlowUnionType","createTSUnionType","isFlowType","isTSType","BOOLEAN_NUMBER_BINARY_OPERATORS","createTypeAnnotationBasedOnTypeof","numberTypeAnnotation","voidTypeAnnotation","ifStatement","BOOLEAN_BINARY_OPERATORS","BOOLEAN_UNARY_OPERATORS","NUMBER_BINARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","anyTypeAnnotation","arrayTypeAnnotation","booleanTypeAnnotation","buildMatchMemberExpression","genericTypeAnnotation","nullLiteralTypeAnnotation","stringTypeAnnotation","tupleTypeAnnotation","unionTypeAnnotation","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isEmptyTypeAnnotation","isFlowBaseAnnotation","isGenericTypeAnnotation","isMixedTypeAnnotation","isNumberTypeAnnotation","isStringTypeAnnotation","isTSArrayType","isTSTypeAnnotation","isTSTypeReference","isTupleTypeAnnotation","isTypeAnnotation","isUnionTypeAnnotation","isVoidTypeAnnotation","arrowFunctionExpression","assertExpression","callExpression","isAssignmentExpression","isSequenceExpression","thisExpression","FUNCTION_TYPES","awaitExpression","buildUndefinedNode","conditionalExpression","inheritLeadingComments","inheritTrailingComments","inheritsComments","isBlockStatement","isEmptyStatement","isProgram","removeComments","returnStatement","yieldExpression","binaryExpression","jsxIdentifier","logicalExpression","LOGICAL_OPERATORS","memberExpression","metaProperty","numericLiteral","objectExpression","restElement","spreadElement","_super","toExpression","toBindingIdentifierName","isRestElement","getFunctionName","exportNamedDeclaration","exportSpecifier","ensureBlock","STATEMENT_OR_BLOCK_KEYS","isType","toComputedKey","directive","i","get","getOuterBindingIdentifiers","addComment","addComments","cache.getOrCreateCachedPaths","Error","NodePath_conversion.ensureBlock","NodePath_introspection.matchesPattern","NodePath_introspection.resolve","NodePath_family.get","NodePath_family.getAssignmentIdentifiers","NodePath_family.getBindingIdentifiers","NodePath_family.getOuterBindingIdentifiers","NodePath_comments.addComment","NodePath_comments.addComments","t","decorator","removeProperties","visitors.explode","visitors.verify"],"mappings":"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CA,eAAA,GACI;AACE,IAAA,IAAA;AACA,IAAA;MAEF,MACN,CAAA;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","file":"chunk-JOYMIGR2.mjs","sourcesContent":["'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst forOwn = (object, callback) => {\n\tfor (const key in object) {\n\t\tif (hasOwnProperty.call(object, key)) {\n\t\t\tcallback(key, object[key]);\n\t\t}\n\t}\n};\n\nconst extend = (destination, source) => {\n\tif (!source) {\n\t\treturn destination;\n\t}\n\tforOwn(source, (key, value) => {\n\t\tdestination[key] = value;\n\t});\n\treturn destination;\n};\n\nconst forEach = (array, callback) => {\n\tconst length = array.length;\n\tlet index = -1;\n\twhile (++index < length) {\n\t\tcallback(array[index]);\n\t}\n};\n\nconst fourHexEscape = (hex) => {\n\treturn '\\\\u' + ('0000' + hex).slice(-4);\n}\n\nconst hexadecimal = (code, lowercase) => {\n\tlet hexadecimal = code.toString(16);\n\tif (lowercase) return hexadecimal;\n\treturn hexadecimal.toUpperCase();\n};\n\nconst toString = object.toString;\nconst isArray = Array.isArray;\nconst isBuffer = (value) => {\n\treturn typeof Buffer === 'function' && Buffer.isBuffer(value);\n};\nconst isObject = (value) => {\n\t// This is a very simple check, but it’s good enough for what we need.\n\treturn toString.call(value) == '[object Object]';\n};\nconst isString = (value) => {\n\treturn typeof value == 'string' ||\n\t\ttoString.call(value) == '[object String]';\n};\nconst isNumber = (value) => {\n\treturn typeof value == 'number' ||\n\t\ttoString.call(value) == '[object Number]';\n};\nconst isBigInt = (value) => {\n return typeof value == 'bigint';\n};\nconst isFunction = (value) => {\n\treturn typeof value == 'function';\n};\nconst isMap = (value) => {\n\treturn toString.call(value) == '[object Map]';\n};\nconst isSet = (value) => {\n\treturn toString.call(value) == '[object Set]';\n};\n\n/*--------------------------------------------------------------------------*/\n\n// https://mathiasbynens.be/notes/javascript-escapes#single\nconst singleEscapes = {\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t'\n\t// `\\v` is omitted intentionally, because in IE < 9, '\\v' == 'v'.\n\t// '\\v': '\\\\x0B'\n};\nconst regexSingleEscape = /[\\\\\\b\\f\\n\\r\\t]/;\n\nconst regexDigit = /[0-9]/;\nconst regexWhitespace = /[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nconst escapeEverythingRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^]/g;\nconst escapeNonAsciiRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^ !#-&\\(-\\[\\]-_a-~]/g;\n\nconst jsesc = (argument, options) => {\n\tconst increaseIndentation = () => {\n\t\toldIndent = indent;\n\t\t++options.indentLevel;\n\t\tindent = options.indent.repeat(options.indentLevel)\n\t};\n\t// Handle options\n\tconst defaults = {\n\t\t'escapeEverything': false,\n\t\t'minimal': false,\n\t\t'isScriptContext': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false,\n\t\t'es6': false,\n\t\t'json': false,\n\t\t'compact': true,\n\t\t'lowercaseHex': false,\n\t\t'numbers': 'decimal',\n\t\t'indent': '\\t',\n\t\t'indentLevel': 0,\n\t\t'__inline1__': false,\n\t\t'__inline2__': false\n\t};\n\tconst json = options && options.json;\n\tif (json) {\n\t\tdefaults.quotes = 'double';\n\t\tdefaults.wrap = true;\n\t}\n\toptions = extend(defaults, options);\n\tif (\n\t\toptions.quotes != 'single' &&\n\t\toptions.quotes != 'double' &&\n\t\toptions.quotes != 'backtick'\n\t) {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ?\n\t\t'\"' :\n\t\t(options.quotes == 'backtick' ?\n\t\t\t'`' :\n\t\t\t'\\''\n\t\t);\n\tconst compact = options.compact;\n\tconst lowercaseHex = options.lowercaseHex;\n\tlet indent = options.indent.repeat(options.indentLevel);\n\tlet oldIndent = '';\n\tconst inline1 = options.__inline1__;\n\tconst inline2 = options.__inline2__;\n\tconst newLine = compact ? '' : '\\n';\n\tlet result;\n\tlet isEmpty = true;\n\tconst useBinNumbers = options.numbers == 'binary';\n\tconst useOctNumbers = options.numbers == 'octal';\n\tconst useDecNumbers = options.numbers == 'decimal';\n\tconst useHexNumbers = options.numbers == 'hexadecimal';\n\n\tif (json && argument && isFunction(argument.toJSON)) {\n\t\targument = argument.toJSON();\n\t}\n\n\tif (!isString(argument)) {\n\t\tif (isMap(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Map()';\n\t\t\t}\n\t\t\tif (!compact) {\n\t\t\t\toptions.__inline1__ = true;\n\t\t\t\toptions.__inline2__ = false;\n\t\t\t}\n\t\t\treturn 'new Map(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isSet(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Set()';\n\t\t\t}\n\t\t\treturn 'new Set(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isBuffer(argument)) {\n\t\t\tif (argument.length == 0) {\n\t\t\t\treturn 'Buffer.from([])';\n\t\t\t}\n\t\t\treturn 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isArray(argument)) {\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tif (inline1) {\n\t\t\t\toptions.__inline1__ = false;\n\t\t\t\toptions.__inline2__ = true;\n\t\t\t}\n\t\t\tif (!inline2) {\n\t\t\t\tincreaseIndentation();\n\t\t\t}\n\t\t\tforEach(argument, (value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tif (inline2) {\n\t\t\t\t\toptions.__inline2__ = false;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact || inline2 ? '' : indent) +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\tif (inline2) {\n\t\t\t\treturn '[' + result.join(', ') + ']';\n\t\t\t}\n\t\t\treturn '[' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + ']';\n\t\t} else if (isNumber(argument) || isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// Some number values (e.g. `Infinity`) cannot be represented in JSON.\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` cannot be represented in JSON so they will become\n // `-Infinity` or `Infinity`, respectively, and then become `null` when\n // stringified.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n\n let result;\n\t\t\tif (useDecNumbers) {\n\t\t\t\tresult = String(argument);\n\t\t\t} else if (useHexNumbers) {\n\t\t\t\tlet hexadecimal = argument.toString(16);\n\t\t\t\tif (!lowercaseHex) {\n\t\t\t\t\thexadecimal = hexadecimal.toUpperCase();\n\t\t\t\t}\n\t\t\t\tresult = '0x' + hexadecimal;\n\t\t\t} else if (useBinNumbers) {\n\t\t\t\tresult = '0b' + argument.toString(2);\n\t\t\t} else if (useOctNumbers) {\n\t\t\t\tresult = '0o' + argument.toString(8);\n\t\t\t}\n\n if (isBigInt(argument)) {\n return result + 'n';\n }\n return result;\n\t\t} else if (isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`,\n // respectively, and cannot be represented in JSON.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n return argument + 'n';\n } else if (!isObject(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// For some values (e.g. `undefined`, `function` objects),\n\t\t\t\t// `JSON.stringify(value)` returns `undefined` (which isn’t valid\n\t\t\t\t// JSON) instead of `'null'`.\n\t\t\t\treturn JSON.stringify(argument) || 'null';\n\t\t\t}\n\t\t\treturn String(argument);\n\t\t} else { // it’s an object\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tincreaseIndentation();\n\t\t\tforOwn(argument, (key, value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact ? '' : indent) +\n\t\t\t\t\tjsesc(key, options) + ':' +\n\t\t\t\t\t(compact ? '' : ' ') +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\t\t\treturn '{' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + '}';\n\t\t}\n\t}\n\n\tconst regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;\n\tresult = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => {\n\t\tif (pair) {\n\t\t\tif (options.minimal) return pair;\n\t\t\tconst first = pair.charCodeAt(0);\n\t\t\tconst second = pair.charCodeAt(1);\n\t\t\tif (options.es6) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tconst codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\tconst hex = hexadecimal(codePoint, lowercaseHex);\n\t\t\t\treturn '\\\\u{' + hex + '}';\n\t\t\t}\n\t\t\treturn fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));\n\t\t}\n\n\t\tif (lone) {\n\t\t\treturn fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));\n\t\t}\n\n\t\tif (\n\t\t\tchar == '\\0' &&\n\t\t\t!json &&\n\t\t\t!regexDigit.test(string.charAt(index + 1))\n\t\t) {\n\t\t\treturn '\\\\0';\n\t\t}\n\n\t\tif (quoteChar) {\n\t\t\tif (quoteChar == quote || options.escapeEverything) {\n\t\t\t\treturn '\\\\' + quoteChar;\n\t\t\t}\n\t\t\treturn quoteChar;\n\t\t}\n\n\t\tif (regexSingleEscape.test(char)) {\n\t\t\t// no need for a `hasOwnProperty` check here\n\t\t\treturn singleEscapes[char];\n\t\t}\n\n\t\tif (options.minimal && !regexWhitespace.test(char)) {\n\t\t\treturn char;\n\t\t}\n\n\t\tconst hex = hexadecimal(char.charCodeAt(0), lowercaseHex);\n\t\tif (json || hex.length > 2) {\n\t\t\treturn fourHexEscape(hex);\n\t\t}\n\n\t\treturn '\\\\x' + ('00' + hex).slice(-2);\n\t});\n\n\tif (quote == '`') {\n\t\tresult = result.replace(/\\$\\{/g, '\\\\${');\n\t}\n\tif (options.isScriptContext) {\n\t\t// https://mathiasbynens.be/notes/etago\n\t\tresult = result\n\t\t\t.replace(/<\\/(script|style)/gi, '<\\\\/$1')\n\t\t\t.replace(/<!--/g, json ? '\\\\u003C!--' : '\\\\x3C!--');\n\t}\n\tif (options.wrap) {\n\t\tresult = quote + result + quote;\n\t}\n\treturn result;\n};\n\njsesc.version = '3.0.2';\n\nmodule.exports = jsesc;\n","//#region src/utils.ts\n/**\n* Coerce `value`.\n*/\nfunction coerce(value) {\n\tif (value instanceof Error) return value.stack || value.message;\n\treturn value;\n}\n/**\n* Selects a color for a debug namespace\n* @return An ANSI color code for the given namespace\n*/\nfunction selectColor(colors, namespace) {\n\tlet hash = 0;\n\tfor (let i = 0; i < namespace.length; i++) {\n\t\thash = (hash << 5) - hash + namespace.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\treturn colors[Math.abs(hash) % colors.length];\n}\n/**\n* Checks if the given string matches a namespace template, honoring\n* asterisks as wildcards.\n*/\nfunction matchesTemplate(search, template) {\n\tlet searchIndex = 0;\n\tlet templateIndex = 0;\n\tlet starIndex = -1;\n\tlet matchIndex = 0;\n\twhile (searchIndex < search.length) if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === \"*\")) if (template[templateIndex] === \"*\") {\n\t\tstarIndex = templateIndex;\n\t\tmatchIndex = searchIndex;\n\t\ttemplateIndex++;\n\t} else {\n\t\tsearchIndex++;\n\t\ttemplateIndex++;\n\t}\n\telse if (starIndex !== -1) {\n\t\ttemplateIndex = starIndex + 1;\n\t\tmatchIndex++;\n\t\tsearchIndex = matchIndex;\n\t} else return false;\n\twhile (templateIndex < template.length && template[templateIndex] === \"*\") templateIndex++;\n\treturn templateIndex === template.length;\n}\nfunction humanize(value) {\n\tif (value >= 1e3) return `${(value / 1e3).toFixed(1)}s`;\n\treturn `${value}ms`;\n}\n//#endregion\n//#region src/core.ts\nlet globalNamespaces = \"\";\n/**\n* Returns a string of the currently enabled debug namespaces.\n*/\nfunction namespaces() {\n\treturn globalNamespaces;\n}\nfunction createDebug(namespace, options) {\n\tlet prevTime;\n\tlet enableOverride;\n\tlet namespacesCache;\n\tlet enabledCache;\n\tconst debug = (...args) => {\n\t\tif (!debug.enabled) return;\n\t\tconst curr = Date.now();\n\t\tconst diff = curr - (prevTime || curr);\n\t\tprevTime = curr;\n\t\targs[0] = coerce(args[0]);\n\t\tif (typeof args[0] !== \"string\") args.unshift(\"%O\");\n\t\tlet index = 0;\n\t\targs[0] = args[0].replace(/%([a-z%])/gi, (match, format) => {\n\t\t\tif (match === \"%%\") return \"%\";\n\t\t\tindex++;\n\t\t\tconst formatter = options.formatters[format];\n\t\t\tif (typeof formatter === \"function\") {\n\t\t\t\tconst value = args[index];\n\t\t\t\tmatch = formatter.call(debug, value);\n\t\t\t\targs.splice(index, 1);\n\t\t\t\tindex--;\n\t\t\t}\n\t\t\treturn match;\n\t\t});\n\t\toptions.formatArgs.call(debug, diff, args);\n\t\tdebug.log(...args);\n\t};\n\tdebug.extend = function(namespace, delimiter = \":\") {\n\t\treturn createDebug(this.namespace + delimiter + namespace, {\n\t\t\tuseColors: this.useColors,\n\t\t\tcolor: this.color,\n\t\t\tformatArgs: this.formatArgs,\n\t\t\tformatters: this.formatters,\n\t\t\tinspectOpts: this.inspectOpts,\n\t\t\tlog: this.log,\n\t\t\thumanize: this.humanize\n\t\t});\n\t};\n\tObject.assign(debug, options);\n\tdebug.namespace = namespace;\n\tObject.defineProperty(debug, \"enabled\", {\n\t\tenumerable: true,\n\t\tconfigurable: false,\n\t\tget: () => {\n\t\t\tif (enableOverride != null) return enableOverride;\n\t\t\tif (namespacesCache !== globalNamespaces) {\n\t\t\t\tnamespacesCache = globalNamespaces;\n\t\t\t\tenabledCache = enabled(namespace);\n\t\t\t}\n\t\t\treturn enabledCache;\n\t\t},\n\t\tset: (v) => {\n\t\t\tenableOverride = v;\n\t\t}\n\t});\n\treturn debug;\n}\nlet names = [];\nlet skips = [];\nfunction enable(namespaces) {\n\tglobalNamespaces = namespaces;\n\tnames = [];\n\tskips = [];\n\tconst split = globalNamespaces.trim().replace(/\\s+/g, \",\").split(\",\").filter(Boolean);\n\tfor (const ns of split) if (ns[0] === \"-\") skips.push(ns.slice(1));\n\telse names.push(ns);\n}\n/**\n* Disable debug output.\n*/\nfunction disable() {\n\tconst namespaces = [...names, ...skips.map((namespace) => `-${namespace}`)].join(\",\");\n\tenable(\"\");\n\treturn namespaces;\n}\n/**\n* Returns true if the given mode name is enabled, false otherwise.\n*/\nfunction enabled(name) {\n\tfor (const skip of skips) if (matchesTemplate(name, skip)) return false;\n\tfor (const ns of names) if (matchesTemplate(name, ns)) return true;\n\treturn false;\n}\n//#endregion\nexport { namespaces as a, enabled as i, disable as n, humanize as o, enable as r, selectColor as s, createDebug as t };\n","import { a as namespaces, i as enabled, n as disable, o as humanize, r as enable$1, s as selectColor, t as createDebug$1 } from \"./core.js\";\nimport { isatty } from \"node:tty\";\nimport { formatWithOptions, inspect } from \"node:util\";\n//#region src/node.ts\nlet env = {};\ntry {\n\tprocess.env.DEBUG;\n\tenv = process.env;\n} catch (_unused) {}\nconst colors = process.stderr.getColorDepth && process.stderr.getColorDepth(env) > 2 ? [\n\t20,\n\t21,\n\t26,\n\t27,\n\t32,\n\t33,\n\t38,\n\t39,\n\t40,\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t56,\n\t57,\n\t62,\n\t63,\n\t68,\n\t69,\n\t74,\n\t75,\n\t76,\n\t77,\n\t78,\n\t79,\n\t80,\n\t81,\n\t92,\n\t93,\n\t98,\n\t99,\n\t112,\n\t113,\n\t128,\n\t129,\n\t134,\n\t135,\n\t148,\n\t149,\n\t160,\n\t161,\n\t162,\n\t163,\n\t164,\n\t165,\n\t166,\n\t167,\n\t168,\n\t169,\n\t170,\n\t171,\n\t172,\n\t173,\n\t178,\n\t179,\n\t184,\n\t185,\n\t196,\n\t197,\n\t198,\n\t199,\n\t200,\n\t201,\n\t202,\n\t203,\n\t204,\n\t205,\n\t206,\n\t207,\n\t208,\n\t209,\n\t214,\n\t215,\n\t220,\n\t221\n] : [\n\t6,\n\t2,\n\t3,\n\t4,\n\t5,\n\t1\n];\nconst inspectOpts = Object.keys(env).filter((key) => /^debug_/i.test(key)).reduce((obj, key) => {\n\tconst prop = key.slice(6).toLowerCase().replace(/_([a-z])/g, (_, k) => k.toUpperCase());\n\tlet value = env[key];\n\tconst lowerCase = typeof value === \"string\" && value.toLowerCase();\n\tif (value === \"null\") value = null;\n\telse if (lowerCase === \"yes\" || lowerCase === \"on\" || lowerCase === \"true\" || lowerCase === \"enabled\") value = true;\n\telse if (lowerCase === \"no\" || lowerCase === \"off\" || lowerCase === \"false\" || lowerCase === \"disabled\") value = false;\n\telse value = Number(value);\n\tobj[prop] = value;\n\treturn obj;\n}, Object.create(null));\n/**\n* Is stdout a TTY? Colored output is enabled when `true`.\n*/\nfunction useColors() {\n\treturn \"colors\" in inspectOpts ? Boolean(inspectOpts.colors) : isatty(process.stderr.fd);\n}\nfunction getDate() {\n\tif (inspectOpts.hideDate) return \"\";\n\treturn `${(/* @__PURE__ */ new Date()).toISOString()} `;\n}\n/**\n* Adds ANSI color escape codes if enabled.\n*/\nfunction formatArgs(diff, args) {\n\tconst { namespace: name, useColors } = this;\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = `\\u001B[3${c < 8 ? c : `8;5;${c}`}`;\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\t\targs[0] = prefix + args[0].split(\"\\n\").join(`\\n${prefix}`);\n\t\targs.push(`${colorCode}m+${this.humanize(diff)}\\u001B[0m`);\n\t} else args[0] = `${getDate()}${name} ${args[0]}`;\n}\nfunction log(...args) {\n\tprocess.stderr.write(`${formatWithOptions(this.inspectOpts, ...args)}\\n`);\n}\nconst defaultOptions = {\n\tuseColors: useColors(),\n\tformatArgs,\n\tformatters: {\n\t\t/**\n\t\t* Map %o to `util.inspect()`, all on a single line.\n\t\t*/\n\t\to(v) {\n\t\t\tthis.inspectOpts.colors = this.useColors;\n\t\t\treturn inspect(v, this.inspectOpts).split(\"\\n\").map((str) => str.trim()).join(\" \");\n\t\t},\n\t\t/**\n\t\t* Map %O to `util.inspect()`, allowing multiple lines if needed.\n\t\t*/\n\t\tO(v) {\n\t\t\tthis.inspectOpts.colors = this.useColors;\n\t\t\treturn inspect(v, this.inspectOpts);\n\t\t}\n\t},\n\tinspectOpts,\n\tlog,\n\thumanize\n};\nfunction createDebug(namespace, options) {\n\tvar _ref;\n\tconst color = (_ref = options && options.color) !== null && _ref !== void 0 ? _ref : selectColor(colors, namespace);\n\treturn createDebug$1(namespace, Object.assign(defaultOptions, { color }, options));\n}\nfunction save(namespaces) {\n\tif (namespaces) env.DEBUG = namespaces;\n\telse delete env.DEBUG;\n}\n/**\n* Enables a debug mode by namespaces. This can include modes\n* separated by a colon and wildcards.\n*/\nfunction enable(namespaces) {\n\tsave(namespaces);\n\tenable$1(namespaces);\n}\nenable$1(env.DEBUG || \"\");\n//#endregion\nexport { createDebug, disable, enable, enabled, namespaces };\n","import type { Defs } from \"./defs\";\n\ntype Location = {\n column: number;\n line: number;\n};\n\nexport type NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n\n startLine?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nexport const NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nexport function getMarkerLines(\n loc: NodeLocation,\n source: string[],\n opts: Options,\n startLineBaseZero: number,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n // @ts-expect-error default value\n column: null,\n // @ts-expect-error default value\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (startColumn == null) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn != null) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n // Defensive: if either column is missing, normalize to avoid NaN.\n const safeStart = startColumn ?? 0;\n const safeEnd = endColumn ?? safeStart;\n markerLines[startLine] = [safeStart, safeEnd - safeStart];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function _codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n colorOpts?: {\n defs: Pick<Defs, \"gutter\" | \"marker\" | \"message\" | \"reset\">;\n highlight: (code: string) => string;\n },\n): string {\n const { defs, highlight } = colorOpts || {\n defs: {\n gutter: String,\n marker: String,\n message: String,\n reset: String,\n },\n highlight: String,\n };\n\n const startLineBaseZero = (opts.startLine || 1) - 1;\n\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(\n loc,\n lines,\n opts,\n startLineBaseZero,\n );\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end + startLineBaseZero).length;\n\n const highlightedLines = highlight(rawLines);\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(\n -numberMaxWidth,\n );\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, hasMarker[0])\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n defs.gutter(gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n defs.marker(\"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [\n defs.marker(\">\"),\n defs.gutter(gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n return defs.reset(frame);\n}\n","// Copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Simon Lydell\n// License: MIT.\nvar HashbangComment, Identifier, JSXIdentifier, JSXPunctuator, JSXString, JSXText, KeywordsWithExpressionAfter, KeywordsWithNoLineTerminatorAfter, LineTerminatorSequence, MultiLineComment, Newline, NumericLiteral, Punctuator, RegularExpressionLiteral, SingleLineComment, StringLiteral, Template, TokensNotPrecedingObjectLiteral, TokensPrecedingExpression, WhiteSpace, jsTokens;\nRegularExpressionLiteral = /\\/(?![*\\/])(?:\\[(?:[^\\]\\\\\\n\\r\\u2028\\u2029]+|\\\\.)*\\]?|[^\\/[\\\\\\n\\r\\u2028\\u2029]+|\\\\.)*(\\/[$_\\u200C\\u200D\\p{ID_Continue}]*|\\\\)?/yu;\nPunctuator = /--|\\+\\+|=>|\\.{3}|\\??\\.(?!\\d)|(?:&&|\\|\\||\\?\\?|[+\\-%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\\/(?![\\/*]))=?|[?~,:;[\\](){}]/y;\nIdentifier = /(\\x23?)(?=[$_\\p{ID_Start}\\\\])(?:[$_\\u200C\\u200D\\p{ID_Continue}]+|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+/yu;\nStringLiteral = /(['\"])(?:[^'\"\\\\\\n\\r]+|(?!\\1)['\"]|\\\\(?:\\r\\n|[^]))*(\\1)?/y;\nNumericLiteral = /(?:0[xX][\\da-fA-F](?:_?[\\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\\d)*n|(?:(?:0(?!\\d)|0\\d*[89]\\d*|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?|\\.\\d(?:_?\\d)*)(?:[eE][+-]?\\d(?:_?\\d)*)?|0[0-7]+/y;\nTemplate = /[`}](?:[^`\\\\$]+|\\\\[^]|\\$(?!\\{))*(`|\\$\\{)?/y;\nWhiteSpace = /[\\t\\v\\f\\ufeff\\p{Zs}]+/yu;\nLineTerminatorSequence = /\\r?\\n|[\\r\\u2028\\u2029]/y;\nMultiLineComment = /\\/\\*(?:[^*]+|\\*(?!\\/))*(\\*\\/)?/y;\nSingleLineComment = /\\/\\/.*/y;\nHashbangComment = /^#!.*/;\nJSXPunctuator = /[<>.:={}]|\\/(?![\\/*])/y;\nJSXIdentifier = /[$_\\p{ID_Start}][$_\\u200C\\u200D\\p{ID_Continue}-]*/yu;\nJSXString = /(['\"])(?:[^'\"]+|(?!\\1)['\"])*(\\1)?/y;\nJSXText = /[^<>{}]+/y;\nTokensPrecedingExpression = /^(?:[\\/+-]|\\.{3}|\\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/;\nTokensNotPrecedingObjectLiteral = /^(?:=>|[;\\]){}]|else|\\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/;\nKeywordsWithExpressionAfter = /^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/;\nKeywordsWithNoLineTerminatorAfter = /^(?:return|throw|yield)$/;\nNewline = RegExp(LineTerminatorSequence.source);\njsTokens = function*(input, {jsx = false} = {}) {\n\tvar braces, firstCodePoint, isExpression, lastIndex, lastSignificantToken, length, match, mode, nextLastIndex, nextLastSignificantToken, parenNesting, postfixIncDec, punctuator, stack;\n\t({length} = input);\n\tlastIndex = 0;\n\tlastSignificantToken = \"\";\n\tstack = [\n\t\t{tag: \"JS\"}\n\t];\n\tbraces = [];\n\tparenNesting = 0;\n\tpostfixIncDec = false;\n\tif (match = HashbangComment.exec(input)) {\n\t\tyield ({\n\t\t\ttype: \"HashbangComment\",\n\t\t\tvalue: match[0]\n\t\t});\n\t\tlastIndex = match[0].length;\n\t}\n\twhile (lastIndex < length) {\n\t\tmode = stack[stack.length - 1];\n\t\tswitch (mode.tag) {\n\t\t\tcase \"JS\":\n\t\t\tcase \"JSNonExpressionParen\":\n\t\t\tcase \"InterpolationInTemplate\":\n\t\t\tcase \"InterpolationInJSX\":\n\t\t\t\tif (input[lastIndex] === \"/\" && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) {\n\t\t\t\t\tRegularExpressionLiteral.lastIndex = lastIndex;\n\t\t\t\t\tif (match = RegularExpressionLiteral.exec(input)) {\n\t\t\t\t\t\tlastIndex = RegularExpressionLiteral.lastIndex;\n\t\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"RegularExpressionLiteral\",\n\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\tclosed: match[1] !== void 0 && match[1] !== \"\\\\\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tPunctuator.lastIndex = lastIndex;\n\t\t\t\tif (match = Punctuator.exec(input)) {\n\t\t\t\t\tpunctuator = match[0];\n\t\t\t\t\tnextLastIndex = Punctuator.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = punctuator;\n\t\t\t\t\tswitch (punctuator) {\n\t\t\t\t\t\tcase \"(\":\n\t\t\t\t\t\t\tif (lastSignificantToken === \"?NonExpressionParenKeyword\") {\n\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\ttag: \"JSNonExpressionParen\",\n\t\t\t\t\t\t\t\t\tnesting: parenNesting\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparenNesting++;\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \")\":\n\t\t\t\t\t\t\tparenNesting--;\n\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\tif (mode.tag === \"JSNonExpressionParen\" && parenNesting === mode.nesting) {\n\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?NonExpressionParenEnd\";\n\t\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\t\tPunctuator.lastIndex = 0;\n\t\t\t\t\t\t\tisExpression = !TokensNotPrecedingObjectLiteral.test(lastSignificantToken) && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken));\n\t\t\t\t\t\t\tbraces.push(isExpression);\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"}\":\n\t\t\t\t\t\t\tswitch (mode.tag) {\n\t\t\t\t\t\t\t\tcase \"InterpolationInTemplate\":\n\t\t\t\t\t\t\t\t\tif (braces.length === mode.nesting) {\n\t\t\t\t\t\t\t\t\t\tTemplate.lastIndex = lastIndex;\n\t\t\t\t\t\t\t\t\t\tmatch = Template.exec(input);\n\t\t\t\t\t\t\t\t\t\tlastIndex = Template.lastIndex;\n\t\t\t\t\t\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\t\t\t\t\t\tif (match[1] === \"${\") {\n\t\t\t\t\t\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInTemplate\";\n\t\t\t\t\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"TemplateMiddle\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"TemplateTail\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\t\t\t\t\t\tclosed: match[1] === \"`\"\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"InterpolationInJSX\":\n\t\t\t\t\t\t\t\t\tif (braces.length === mode.nesting) {\n\t\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t\t\tlastIndex += 1;\n\t\t\t\t\t\t\t\t\t\tlastSignificantToken = \"}\";\n\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"}\"\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpostfixIncDec = braces.pop();\n\t\t\t\t\t\t\tnextLastSignificantToken = postfixIncDec ? \"?ExpressionBraceEnd\" : \"}\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"]\":\n\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"++\":\n\t\t\t\t\t\tcase \"--\":\n\t\t\t\t\t\t\tnextLastSignificantToken = postfixIncDec ? \"?PostfixIncDec\" : \"?UnaryIncDec\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\t\tif (jsx && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) {\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\t\t\tlastIndex += 1;\n\t\t\t\t\t\t\t\tlastSignificantToken = \"<\";\n\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\t\t\tvalue: punctuator\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t}\n\t\t\t\t\tlastIndex = nextLastIndex;\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"Punctuator\",\n\t\t\t\t\t\tvalue: punctuator\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tIdentifier.lastIndex = lastIndex;\n\t\t\t\tif (match = Identifier.exec(input)) {\n\t\t\t\t\tlastIndex = Identifier.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = match[0];\n\t\t\t\t\tswitch (match[0]) {\n\t\t\t\t\t\tcase \"for\":\n\t\t\t\t\t\tcase \"if\":\n\t\t\t\t\t\tcase \"while\":\n\t\t\t\t\t\tcase \"with\":\n\t\t\t\t\t\t\tif (lastSignificantToken !== \".\" && lastSignificantToken !== \"?.\") {\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?NonExpressionParenKeyword\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tpostfixIncDec = !KeywordsWithExpressionAfter.test(match[0]);\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: match[1] === \"#\" ? \"PrivateIdentifier\" : \"IdentifierName\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tStringLiteral.lastIndex = lastIndex;\n\t\t\t\tif (match = StringLiteral.exec(input)) {\n\t\t\t\t\tlastIndex = StringLiteral.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"StringLiteral\",\n\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\tclosed: match[2] !== void 0\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tNumericLiteral.lastIndex = lastIndex;\n\t\t\t\tif (match = NumericLiteral.exec(input)) {\n\t\t\t\t\tlastIndex = NumericLiteral.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"NumericLiteral\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tTemplate.lastIndex = lastIndex;\n\t\t\t\tif (match = Template.exec(input)) {\n\t\t\t\t\tlastIndex = Template.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tif (match[1] === \"${\") {\n\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInTemplate\";\n\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\ttag: \"InterpolationInTemplate\",\n\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"TemplateHead\",\n\t\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"NoSubstitutionTemplate\",\n\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\tclosed: match[1] === \"`\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"JSXTag\":\n\t\t\tcase \"JSXTagEnd\":\n\t\t\t\tJSXPunctuator.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXPunctuator.exec(input)) {\n\t\t\t\t\tlastIndex = JSXPunctuator.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = match[0];\n\t\t\t\t\tswitch (match[0]) {\n\t\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \">\":\n\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\tif (lastSignificantToken === \"/\" || mode.tag === \"JSXTagEnd\") {\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?JSX\";\n\t\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXChildren\"});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\ttag: \"InterpolationInJSX\",\n\t\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tnextLastSignificantToken = \"?InterpolationInJSX\";\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"/\":\n\t\t\t\t\t\t\tif (lastSignificantToken === \"<\") {\n\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\tif (stack[stack.length - 1].tag === \"JSXChildren\") {\n\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXTagEnd\"});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJSXIdentifier.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXIdentifier.exec(input)) {\n\t\t\t\t\tlastIndex = JSXIdentifier.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXIdentifier\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJSXString.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXString.exec(input)) {\n\t\t\t\t\tlastIndex = JSXString.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXString\",\n\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\tclosed: match[2] !== void 0\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"JSXChildren\":\n\t\t\t\tJSXText.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXText.exec(input)) {\n\t\t\t\t\tlastIndex = JSXText.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXText\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tswitch (input[lastIndex]) {\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\tlastIndex++;\n\t\t\t\t\t\tlastSignificantToken = \"<\";\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\tvalue: \"<\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\ttag: \"InterpolationInJSX\",\n\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlastIndex++;\n\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInJSX\";\n\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\tvalue: \"{\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t}\n\t\tWhiteSpace.lastIndex = lastIndex;\n\t\tif (match = WhiteSpace.exec(input)) {\n\t\t\tlastIndex = WhiteSpace.lastIndex;\n\t\t\tyield ({\n\t\t\t\ttype: \"WhiteSpace\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tLineTerminatorSequence.lastIndex = lastIndex;\n\t\tif (match = LineTerminatorSequence.exec(input)) {\n\t\t\tlastIndex = LineTerminatorSequence.lastIndex;\n\t\t\tpostfixIncDec = false;\n\t\t\tif (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {\n\t\t\t\tlastSignificantToken = \"?NoLineTerminatorHere\";\n\t\t\t}\n\t\t\tyield ({\n\t\t\t\ttype: \"LineTerminatorSequence\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tMultiLineComment.lastIndex = lastIndex;\n\t\tif (match = MultiLineComment.exec(input)) {\n\t\t\tlastIndex = MultiLineComment.lastIndex;\n\t\t\tif (Newline.test(match[0])) {\n\t\t\t\tpostfixIncDec = false;\n\t\t\t\tif (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {\n\t\t\t\t\tlastSignificantToken = \"?NoLineTerminatorHere\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tyield ({\n\t\t\t\ttype: \"MultiLineComment\",\n\t\t\t\tvalue: match[0],\n\t\t\t\tclosed: match[1] !== void 0\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tSingleLineComment.lastIndex = lastIndex;\n\t\tif (match = SingleLineComment.exec(input)) {\n\t\t\tlastIndex = SingleLineComment.lastIndex;\n\t\t\tpostfixIncDec = false;\n\t\t\tyield ({\n\t\t\t\ttype: \"SingleLineComment\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfirstCodePoint = String.fromCodePoint(input.codePointAt(lastIndex));\n\t\tlastIndex += firstCodePoint.length;\n\t\tlastSignificantToken = firstCodePoint;\n\t\tpostfixIncDec = false;\n\t\tyield ({\n\t\t\ttype: mode.tag.startsWith(\"JSX\") ? \"JSXInvalid\" : \"Invalid\",\n\t\t\tvalue: firstCodePoint\n\t\t});\n\t}\n\treturn void 0;\n};\nexport default jsTokens;\nexport { jsTokens as \"module.exports\" };","// Do not edit this file manually. It is generated by `scripts/generate-identifier-regex.ts`.\n/*\nReason to disable eslint rules:\n - no-misleading-character-class: This rule is disabled because it will check if a combining mark (\\p{M}) is following a base character. It is possible that an identifier char is not following a base character.\n - regexp/no-misleading-unicode-character: The regexp plugin uses Intl.Segmenter to check whether a grapheme cluster can be represented by multiple code points and then report if there is such case. It is possible that two consecutive identifier chars may form a GC, but the intention here is to explicitly form a character set from the given character sets\n - regexp/no-obscure-range: The regexps in this file are soup of \"obscure\" Unicode characters.\n - regexp/use-ignore-case: This rule is disabled because if we used ignoreCase, the regex will depend on the runtime's Unicode support, which may cause different behavior in different environments.\n*/\n\n/* eslint no-misleading-character-class: off, regexp/no-obscure-range: off, regexp/no-misleading-unicode-character: off, regexp/use-ignore-case: off */\n\n// ## Character categories\n// Big ugly regular expressions that match characters in the ID_Start / ID_Continue\n// binary properties. These are only applied when a character is found\n// to actually have a code point larger than 0x80.\n// Generated by `scripts/generate-identifier-regex.ts`.\n/* prettier-ignore */\nexport const bmpIdentifierStart = /[\\p{ID_Start}\\u088f\\u0c5c\\u0cdc\\ua7ce\\ua7cf\\ua7d2\\ua7d4\\ua7f1]/u;\n/* prettier-ignore */\nexport const bmpIdentifier = /[\\p{ID_Continue}\\u088f\\u0c5c\\u0cdc\\ua7ce\\ua7cf\\ua7d2\\ua7d4\\ua7f1\\u1acf-\\u1add\\u1ae0-\\u1aeb]/u;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.ts`.\n/* prettier-ignore */\nexport const supplementaryIdentifierStartCodes = [2368,25,1388,2,3817,43,20677,24,3,24,287,4,6146,7,1290,21,98,114,22734,30,2,2,2,1,2,6,3,4,10,1,53307,5,5987,11,21763,4297];\n/* prettier-ignore */\nexport const supplementaryIdentifierCodes = [3834,1,3173,7,633,9,51450,0,3,0,8,1,6,0];\n","import * as charCodes from \"charcodes\";\nimport {\n bmpIdentifier,\n bmpIdentifierStart,\n supplementaryIdentifierCodes,\n supplementaryIdentifierStartCodes,\n} from \"./identifier-regex.ts\";\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up supplementary identifier characters is\n// rare.\nfunction isInSupplementarySet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifierStart.test(String.fromCharCode(code));\n }\n return (\n !isNaN(code) &&\n code <= 0x10ffff &&\n (bmpIdentifierStart.test(String.fromCodePoint(code)) ||\n isInSupplementarySet(code, supplementaryIdentifierStartCodes))\n );\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifier.test(String.fromCharCode(code));\n }\n return (\n !isNaN(code) &&\n code <= 0x10ffff &&\n (bmpIdentifier.test(String.fromCodePoint(code)) ||\n isInSupplementarySet(code, supplementaryIdentifierStartCodes) ||\n isInSupplementarySet(code, supplementaryIdentifierCodes))\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","import { styleText } from \"node:util\";\n\nexport function isColorSupported() {\n return styleText(\"red\", \"-\") !== \"-\";\n}\n\nexport type InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype UITokens = \"gutter\" | \"marker\" | \"message\";\ntype Formatter = (input: string) => string;\n\nexport type Defs = Record<InternalTokenType | UITokens | \"reset\", Formatter>;\n\nfunction createFormatter(format: Parameters<typeof styleText>[0]): Formatter {\n return (input: string) =>\n styleText(format, String(input ?? \"\"), { validateStream: false });\n}\n\n/**\n * Styles for token types.\n */\nexport const defs = {\n keyword: createFormatter(\"cyan\"),\n capitalized: createFormatter(\"yellow\"),\n jsxIdentifier: createFormatter(\"yellow\"),\n punctuator: createFormatter(\"yellow\"),\n number: createFormatter(\"magenta\"),\n string: createFormatter(\"green\"),\n regex: createFormatter(\"magenta\"),\n comment: createFormatter(\"gray\"),\n invalid: createFormatter([\"white\", \"bgRed\", \"bold\"]),\n\n gutter: createFormatter(\"gray\"),\n marker: createFormatter([\"red\", \"bold\"]),\n message: createFormatter([\"red\", \"bold\"]),\n\n reset: createFormatter(\"reset\"),\n};\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\nimport * as charCodes from \"charcodes\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport { defs, type InternalTokenType } from \"./defs.ts\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\n/**\n * Get the type of token, specifying punctuator type.\n */\nconst getTokenType = function (\n token: JSToken | JSXToken,\n): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n const tokenValue = token.value;\n if (\n isKeyword(tokenValue) ||\n isStrictReservedWord(tokenValue, true) ||\n sometimesKeywords.has(tokenValue)\n ) {\n return \"keyword\";\n }\n\n const firstChar = tokenValue.charCodeAt(0);\n if (firstChar < 128) {\n // ASCII characters\n if (\n firstChar >= charCodes.uppercaseA &&\n firstChar <= charCodes.uppercaseZ\n ) {\n return \"capitalized\";\n }\n } else {\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0)!);\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n};\n\n/**\n * Turn a string of JS into an array of objects.\n */\nfunction* tokenize(text: string): Generator<Token> {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n}\n\nexport function highlight(text: string) {\n if (text === \"\") return \"\";\n\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n if (type in defs) {\n highlighted += value\n .split(NEWLINE)\n .map(str => defs[type as InternalTokenType](str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n","import {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\nimport { defs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nexport type { Options };\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const shouldHighlight =\n opts.forceColor || (isColorSupported() && opts.highlightCode);\n\n return _codeFrameColumns(\n rawLines,\n loc,\n opts,\n shouldHighlight\n ? {\n defs,\n highlight,\n }\n : undefined,\n );\n}\n","import * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return { pos, str: out, firstInvalidLoc, lineStart, curLine };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2))!;\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","export default function shallowEqual<T extends object>(\n actual: object,\n expected: T,\n): actual is T {\n const keys = Object.keys(expected) as (keyof T)[];\n\n for (const key of keys) {\n if (\n // @ts-expect-error maybe we should check whether key exists first\n actual[key] !== expected[key]\n ) {\n return false;\n }\n }\n\n return true;\n}\n","const warnings = new Set();\n\nexport default function deprecationWarning(\n oldName: string,\n newName: string,\n prefix: string = \"\",\n cacheKey: string = oldName,\n) {\n if (warnings.has(cacheKey)) return;\n warnings.add(cacheKey);\n\n const { internal, trace } = captureShortStackTrace(1, 2);\n if (internal) {\n // If usage comes from an internal package, there is no point in warning because\n // 1. The new version of the package will already use the new API\n // 2. When the deprecation will become an error (in a future major version), users\n // will have to update every package anyway.\n return;\n }\n console.warn(\n `${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`,\n );\n}\n\nfunction captureShortStackTrace(skip: number, length: number) {\n const { stackTraceLimit, prepareStackTrace } = Error;\n let stackTrace: NodeJS.CallSite[];\n // We add 1 to also take into account this function.\n Error.stackTraceLimit = 1 + skip + length;\n Error.prepareStackTrace = function (err, stack) {\n stackTrace = stack;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n new Error().stack;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = prepareStackTrace;\n\n if (!stackTrace!) return { internal: false, trace: \"\" };\n\n const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n return {\n internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()!),\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n trace: shortStackTrace.map(frame => ` at ${frame}`).join(\"\\n\"),\n };\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\ntype Options<Obj> = Partial<{\n [Prop in Exclude<keyof Obj, \"type\">]: Obj[Prop] extends t.Node\n ? t.Node\n : Obj[Prop] extends t.Node[]\n ? t.Node[]\n : Obj[Prop];\n}>;\n\nexport function isArrayExpression(\n node: t.Node | null | undefined,\n): node is t.ArrayExpression;\nexport function isArrayExpression<Opts extends Options<t.ArrayExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayExpression & Opts;\nexport function isArrayExpression<Opts extends Options<t.ArrayExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n node: t.Node | null | undefined,\n): node is t.AssignmentExpression;\nexport function isAssignmentExpression<\n Opts extends Options<t.AssignmentExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AssignmentExpression & Opts;\nexport function isAssignmentExpression<\n Opts extends Options<t.AssignmentExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"AssignmentExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n node: t.Node | null | undefined,\n): node is t.BinaryExpression;\nexport function isBinaryExpression<Opts extends Options<t.BinaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BinaryExpression & Opts;\nexport function isBinaryExpression<Opts extends Options<t.BinaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BinaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n node: t.Node | null | undefined,\n): node is t.InterpreterDirective;\nexport function isInterpreterDirective<\n Opts extends Options<t.InterpreterDirective>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterpreterDirective & Opts;\nexport function isInterpreterDirective<\n Opts extends Options<t.InterpreterDirective>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterpreterDirective\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n node: t.Node | null | undefined,\n): node is t.Directive;\nexport function isDirective<Opts extends Options<t.Directive>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Directive & Opts;\nexport function isDirective<Opts extends Options<t.Directive>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Directive\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n node: t.Node | null | undefined,\n): node is t.DirectiveLiteral;\nexport function isDirectiveLiteral<Opts extends Options<t.DirectiveLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DirectiveLiteral & Opts;\nexport function isDirectiveLiteral<Opts extends Options<t.DirectiveLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DirectiveLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n node: t.Node | null | undefined,\n): node is t.BlockStatement;\nexport function isBlockStatement<Opts extends Options<t.BlockStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BlockStatement & Opts;\nexport function isBlockStatement<Opts extends Options<t.BlockStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BlockStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n node: t.Node | null | undefined,\n): node is t.BreakStatement;\nexport function isBreakStatement<Opts extends Options<t.BreakStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BreakStatement & Opts;\nexport function isBreakStatement<Opts extends Options<t.BreakStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BreakStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n node: t.Node | null | undefined,\n): node is t.CallExpression;\nexport function isCallExpression<Opts extends Options<t.CallExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CallExpression & Opts;\nexport function isCallExpression<Opts extends Options<t.CallExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"CallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n node: t.Node | null | undefined,\n): node is t.CatchClause;\nexport function isCatchClause<Opts extends Options<t.CatchClause>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CatchClause & Opts;\nexport function isCatchClause<Opts extends Options<t.CatchClause>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"CatchClause\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n node: t.Node | null | undefined,\n): node is t.ConditionalExpression;\nexport function isConditionalExpression<\n Opts extends Options<t.ConditionalExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ConditionalExpression & Opts;\nexport function isConditionalExpression<\n Opts extends Options<t.ConditionalExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ConditionalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n node: t.Node | null | undefined,\n): node is t.ContinueStatement;\nexport function isContinueStatement<Opts extends Options<t.ContinueStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ContinueStatement & Opts;\nexport function isContinueStatement<Opts extends Options<t.ContinueStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ContinueStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n node: t.Node | null | undefined,\n): node is t.DebuggerStatement;\nexport function isDebuggerStatement<Opts extends Options<t.DebuggerStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DebuggerStatement & Opts;\nexport function isDebuggerStatement<Opts extends Options<t.DebuggerStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DebuggerStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n node: t.Node | null | undefined,\n): node is t.DoWhileStatement;\nexport function isDoWhileStatement<Opts extends Options<t.DoWhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DoWhileStatement & Opts;\nexport function isDoWhileStatement<Opts extends Options<t.DoWhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DoWhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n node: t.Node | null | undefined,\n): node is t.EmptyStatement;\nexport function isEmptyStatement<Opts extends Options<t.EmptyStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EmptyStatement & Opts;\nexport function isEmptyStatement<Opts extends Options<t.EmptyStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EmptyStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n node: t.Node | null | undefined,\n): node is t.ExpressionStatement;\nexport function isExpressionStatement<\n Opts extends Options<t.ExpressionStatement>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExpressionStatement & Opts;\nexport function isExpressionStatement<\n Opts extends Options<t.ExpressionStatement>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExpressionStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(node: t.Node | null | undefined): node is t.File;\nexport function isFile<Opts extends Options<t.File>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.File & Opts;\nexport function isFile<Opts extends Options<t.File>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"File\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n node: t.Node | null | undefined,\n): node is t.ForInStatement;\nexport function isForInStatement<Opts extends Options<t.ForInStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForInStatement & Opts;\nexport function isForInStatement<Opts extends Options<t.ForInStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForInStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n node: t.Node | null | undefined,\n): node is t.ForStatement;\nexport function isForStatement<Opts extends Options<t.ForStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForStatement & Opts;\nexport function isForStatement<Opts extends Options<t.ForStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n node: t.Node | null | undefined,\n): node is t.FunctionDeclaration;\nexport function isFunctionDeclaration<\n Opts extends Options<t.FunctionDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionDeclaration & Opts;\nexport function isFunctionDeclaration<\n Opts extends Options<t.FunctionDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n node: t.Node | null | undefined,\n): node is t.FunctionExpression;\nexport function isFunctionExpression<\n Opts extends Options<t.FunctionExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionExpression & Opts;\nexport function isFunctionExpression<\n Opts extends Options<t.FunctionExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n node: t.Node | null | undefined,\n): node is t.Identifier;\nexport function isIdentifier<Opts extends Options<t.Identifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Identifier & Opts;\nexport function isIdentifier<Opts extends Options<t.Identifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Identifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n node: t.Node | null | undefined,\n): node is t.IfStatement;\nexport function isIfStatement<Opts extends Options<t.IfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IfStatement & Opts;\nexport function isIfStatement<Opts extends Options<t.IfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"IfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n node: t.Node | null | undefined,\n): node is t.LabeledStatement;\nexport function isLabeledStatement<Opts extends Options<t.LabeledStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LabeledStatement & Opts;\nexport function isLabeledStatement<Opts extends Options<t.LabeledStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"LabeledStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n node: t.Node | null | undefined,\n): node is t.StringLiteral;\nexport function isStringLiteral<Opts extends Options<t.StringLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringLiteral & Opts;\nexport function isStringLiteral<Opts extends Options<t.StringLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n node: t.Node | null | undefined,\n): node is t.NumericLiteral;\nexport function isNumericLiteral<Opts extends Options<t.NumericLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumericLiteral & Opts;\nexport function isNumericLiteral<Opts extends Options<t.NumericLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumericLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n node: t.Node | null | undefined,\n): node is t.NullLiteral;\nexport function isNullLiteral<Opts extends Options<t.NullLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullLiteral & Opts;\nexport function isNullLiteral<Opts extends Options<t.NullLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n node: t.Node | null | undefined,\n): node is t.BooleanLiteral;\nexport function isBooleanLiteral<Opts extends Options<t.BooleanLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanLiteral & Opts;\nexport function isBooleanLiteral<Opts extends Options<t.BooleanLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n node: t.Node | null | undefined,\n): node is t.RegExpLiteral;\nexport function isRegExpLiteral<Opts extends Options<t.RegExpLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.RegExpLiteral & Opts;\nexport function isRegExpLiteral<Opts extends Options<t.RegExpLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"RegExpLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n node: t.Node | null | undefined,\n): node is t.LogicalExpression;\nexport function isLogicalExpression<Opts extends Options<t.LogicalExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LogicalExpression & Opts;\nexport function isLogicalExpression<Opts extends Options<t.LogicalExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"LogicalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n node: t.Node | null | undefined,\n): node is t.MemberExpression;\nexport function isMemberExpression<Opts extends Options<t.MemberExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MemberExpression & Opts;\nexport function isMemberExpression<Opts extends Options<t.MemberExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"MemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n node: t.Node | null | undefined,\n): node is t.NewExpression;\nexport function isNewExpression<Opts extends Options<t.NewExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NewExpression & Opts;\nexport function isNewExpression<Opts extends Options<t.NewExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NewExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(node: t.Node | null | undefined): node is t.Program;\nexport function isProgram<Opts extends Options<t.Program>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Program & Opts;\nexport function isProgram<Opts extends Options<t.Program>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Program\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n node: t.Node | null | undefined,\n): node is t.ObjectExpression;\nexport function isObjectExpression<Opts extends Options<t.ObjectExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectExpression & Opts;\nexport function isObjectExpression<Opts extends Options<t.ObjectExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n node: t.Node | null | undefined,\n): node is t.ObjectMethod;\nexport function isObjectMethod<Opts extends Options<t.ObjectMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectMethod & Opts;\nexport function isObjectMethod<Opts extends Options<t.ObjectMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectProperty;\nexport function isObjectProperty<Opts extends Options<t.ObjectProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectProperty & Opts;\nexport function isObjectProperty<Opts extends Options<t.ObjectProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n node: t.Node | null | undefined,\n): node is t.RestElement;\nexport function isRestElement<Opts extends Options<t.RestElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.RestElement & Opts;\nexport function isRestElement<Opts extends Options<t.RestElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"RestElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n node: t.Node | null | undefined,\n): node is t.ReturnStatement;\nexport function isReturnStatement<Opts extends Options<t.ReturnStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ReturnStatement & Opts;\nexport function isReturnStatement<Opts extends Options<t.ReturnStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ReturnStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n node: t.Node | null | undefined,\n): node is t.SequenceExpression;\nexport function isSequenceExpression<\n Opts extends Options<t.SequenceExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SequenceExpression & Opts;\nexport function isSequenceExpression<\n Opts extends Options<t.SequenceExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"SequenceExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n node: t.Node | null | undefined,\n): node is t.ParenthesizedExpression;\nexport function isParenthesizedExpression<\n Opts extends Options<t.ParenthesizedExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ParenthesizedExpression & Opts;\nexport function isParenthesizedExpression<\n Opts extends Options<t.ParenthesizedExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ParenthesizedExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n node: t.Node | null | undefined,\n): node is t.SwitchCase;\nexport function isSwitchCase<Opts extends Options<t.SwitchCase>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SwitchCase & Opts;\nexport function isSwitchCase<Opts extends Options<t.SwitchCase>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SwitchCase\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n node: t.Node | null | undefined,\n): node is t.SwitchStatement;\nexport function isSwitchStatement<Opts extends Options<t.SwitchStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SwitchStatement & Opts;\nexport function isSwitchStatement<Opts extends Options<t.SwitchStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SwitchStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n node: t.Node | null | undefined,\n): node is t.ThisExpression;\nexport function isThisExpression<Opts extends Options<t.ThisExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThisExpression & Opts;\nexport function isThisExpression<Opts extends Options<t.ThisExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThisExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n node: t.Node | null | undefined,\n): node is t.ThrowStatement;\nexport function isThrowStatement<Opts extends Options<t.ThrowStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThrowStatement & Opts;\nexport function isThrowStatement<Opts extends Options<t.ThrowStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThrowStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n node: t.Node | null | undefined,\n): node is t.TryStatement;\nexport function isTryStatement<Opts extends Options<t.TryStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TryStatement & Opts;\nexport function isTryStatement<Opts extends Options<t.TryStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TryStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n node: t.Node | null | undefined,\n): node is t.UnaryExpression;\nexport function isUnaryExpression<Opts extends Options<t.UnaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnaryExpression & Opts;\nexport function isUnaryExpression<Opts extends Options<t.UnaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"UnaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n node: t.Node | null | undefined,\n): node is t.UpdateExpression;\nexport function isUpdateExpression<Opts extends Options<t.UpdateExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UpdateExpression & Opts;\nexport function isUpdateExpression<Opts extends Options<t.UpdateExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"UpdateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n node: t.Node | null | undefined,\n): node is t.VariableDeclaration;\nexport function isVariableDeclaration<\n Opts extends Options<t.VariableDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VariableDeclaration & Opts;\nexport function isVariableDeclaration<\n Opts extends Options<t.VariableDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n node: t.Node | null | undefined,\n): node is t.VariableDeclarator;\nexport function isVariableDeclarator<\n Opts extends Options<t.VariableDeclarator>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VariableDeclarator & Opts;\nexport function isVariableDeclarator<\n Opts extends Options<t.VariableDeclarator>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclarator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n node: t.Node | null | undefined,\n): node is t.WhileStatement;\nexport function isWhileStatement<Opts extends Options<t.WhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.WhileStatement & Opts;\nexport function isWhileStatement<Opts extends Options<t.WhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"WhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n node: t.Node | null | undefined,\n): node is t.WithStatement;\nexport function isWithStatement<Opts extends Options<t.WithStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.WithStatement & Opts;\nexport function isWithStatement<Opts extends Options<t.WithStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"WithStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n node: t.Node | null | undefined,\n): node is t.AssignmentPattern;\nexport function isAssignmentPattern<Opts extends Options<t.AssignmentPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AssignmentPattern & Opts;\nexport function isAssignmentPattern<Opts extends Options<t.AssignmentPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AssignmentPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n node: t.Node | null | undefined,\n): node is t.ArrayPattern;\nexport function isArrayPattern<Opts extends Options<t.ArrayPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayPattern & Opts;\nexport function isArrayPattern<Opts extends Options<t.ArrayPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n node: t.Node | null | undefined,\n): node is t.ArrowFunctionExpression;\nexport function isArrowFunctionExpression<\n Opts extends Options<t.ArrowFunctionExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrowFunctionExpression & Opts;\nexport function isArrowFunctionExpression<\n Opts extends Options<t.ArrowFunctionExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrowFunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n node: t.Node | null | undefined,\n): node is t.ClassBody;\nexport function isClassBody<Opts extends Options<t.ClassBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassBody & Opts;\nexport function isClassBody<Opts extends Options<t.ClassBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n node: t.Node | null | undefined,\n): node is t.ClassExpression;\nexport function isClassExpression<Opts extends Options<t.ClassExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassExpression & Opts;\nexport function isClassExpression<Opts extends Options<t.ClassExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n node: t.Node | null | undefined,\n): node is t.ClassDeclaration;\nexport function isClassDeclaration<Opts extends Options<t.ClassDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassDeclaration & Opts;\nexport function isClassDeclaration<Opts extends Options<t.ClassDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportAllDeclaration;\nexport function isExportAllDeclaration<\n Opts extends Options<t.ExportAllDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportAllDeclaration & Opts;\nexport function isExportAllDeclaration<\n Opts extends Options<t.ExportAllDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportDefaultDeclaration;\nexport function isExportDefaultDeclaration<\n Opts extends Options<t.ExportDefaultDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDefaultDeclaration & Opts;\nexport function isExportDefaultDeclaration<\n Opts extends Options<t.ExportDefaultDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportNamedDeclaration;\nexport function isExportNamedDeclaration<\n Opts extends Options<t.ExportNamedDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportNamedDeclaration & Opts;\nexport function isExportNamedDeclaration<\n Opts extends Options<t.ExportNamedDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportNamedDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportSpecifier;\nexport function isExportSpecifier<Opts extends Options<t.ExportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportSpecifier & Opts;\nexport function isExportSpecifier<Opts extends Options<t.ExportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n node: t.Node | null | undefined,\n): node is t.ForOfStatement;\nexport function isForOfStatement<Opts extends Options<t.ForOfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForOfStatement & Opts;\nexport function isForOfStatement<Opts extends Options<t.ForOfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForOfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ImportDeclaration;\nexport function isImportDeclaration<Opts extends Options<t.ImportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportDeclaration & Opts;\nexport function isImportDeclaration<Opts extends Options<t.ImportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportDefaultSpecifier;\nexport function isImportDefaultSpecifier<\n Opts extends Options<t.ImportDefaultSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportDefaultSpecifier & Opts;\nexport function isImportDefaultSpecifier<\n Opts extends Options<t.ImportDefaultSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportNamespaceSpecifier;\nexport function isImportNamespaceSpecifier<\n Opts extends Options<t.ImportNamespaceSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportNamespaceSpecifier & Opts;\nexport function isImportNamespaceSpecifier<\n Opts extends Options<t.ImportNamespaceSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportSpecifier;\nexport function isImportSpecifier<Opts extends Options<t.ImportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportSpecifier & Opts;\nexport function isImportSpecifier<Opts extends Options<t.ImportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n node: t.Node | null | undefined,\n): node is t.MetaProperty;\nexport function isMetaProperty<Opts extends Options<t.MetaProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MetaProperty & Opts;\nexport function isMetaProperty<Opts extends Options<t.MetaProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"MetaProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n node: t.Node | null | undefined,\n): node is t.ClassMethod;\nexport function isClassMethod<Opts extends Options<t.ClassMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassMethod & Opts;\nexport function isClassMethod<Opts extends Options<t.ClassMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n node: t.Node | null | undefined,\n): node is t.ObjectPattern;\nexport function isObjectPattern<Opts extends Options<t.ObjectPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectPattern & Opts;\nexport function isObjectPattern<Opts extends Options<t.ObjectPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n node: t.Node | null | undefined,\n): node is t.SpreadElement;\nexport function isSpreadElement<Opts extends Options<t.SpreadElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SpreadElement & Opts;\nexport function isSpreadElement<Opts extends Options<t.SpreadElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SpreadElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(node: t.Node | null | undefined): node is t.Super;\nexport function isSuper<Opts extends Options<t.Super>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Super & Opts;\nexport function isSuper<Opts extends Options<t.Super>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Super\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n node: t.Node | null | undefined,\n): node is t.TaggedTemplateExpression;\nexport function isTaggedTemplateExpression<\n Opts extends Options<t.TaggedTemplateExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TaggedTemplateExpression & Opts;\nexport function isTaggedTemplateExpression<\n Opts extends Options<t.TaggedTemplateExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TaggedTemplateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n node: t.Node | null | undefined,\n): node is t.TemplateElement;\nexport function isTemplateElement<Opts extends Options<t.TemplateElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TemplateElement & Opts;\nexport function isTemplateElement<Opts extends Options<t.TemplateElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TemplateElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n node: t.Node | null | undefined,\n): node is t.TemplateLiteral;\nexport function isTemplateLiteral<Opts extends Options<t.TemplateLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TemplateLiteral & Opts;\nexport function isTemplateLiteral<Opts extends Options<t.TemplateLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TemplateLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n node: t.Node | null | undefined,\n): node is t.YieldExpression;\nexport function isYieldExpression<Opts extends Options<t.YieldExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.YieldExpression & Opts;\nexport function isYieldExpression<Opts extends Options<t.YieldExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"YieldExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n node: t.Node | null | undefined,\n): node is t.AwaitExpression;\nexport function isAwaitExpression<Opts extends Options<t.AwaitExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AwaitExpression & Opts;\nexport function isAwaitExpression<Opts extends Options<t.AwaitExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AwaitExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n node: t.Node | null | undefined,\n): node is t.ImportExpression;\nexport function isImportExpression<Opts extends Options<t.ImportExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportExpression & Opts;\nexport function isImportExpression<Opts extends Options<t.ImportExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(node: t.Node | null | undefined): node is t.Import;\nexport function isImport<Opts extends Options<t.Import>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Import & Opts;\nexport function isImport<Opts extends Options<t.Import>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Import\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n node: t.Node | null | undefined,\n): node is t.BigIntLiteral;\nexport function isBigIntLiteral<Opts extends Options<t.BigIntLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BigIntLiteral & Opts;\nexport function isBigIntLiteral<Opts extends Options<t.BigIntLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BigIntLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportNamespaceSpecifier;\nexport function isExportNamespaceSpecifier<\n Opts extends Options<t.ExportNamespaceSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportNamespaceSpecifier & Opts;\nexport function isExportNamespaceSpecifier<\n Opts extends Options<t.ExportNamespaceSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n node: t.Node | null | undefined,\n): node is t.OptionalMemberExpression;\nexport function isOptionalMemberExpression<\n Opts extends Options<t.OptionalMemberExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalMemberExpression & Opts;\nexport function isOptionalMemberExpression<\n Opts extends Options<t.OptionalMemberExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n node: t.Node | null | undefined,\n): node is t.OptionalCallExpression;\nexport function isOptionalCallExpression<\n Opts extends Options<t.OptionalCallExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalCallExpression & Opts;\nexport function isOptionalCallExpression<\n Opts extends Options<t.OptionalCallExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalCallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n node: t.Node | null | undefined,\n): node is t.ClassProperty;\nexport function isClassProperty<Opts extends Options<t.ClassProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassProperty & Opts;\nexport function isClassProperty<Opts extends Options<t.ClassProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n node: t.Node | null | undefined,\n): node is t.ClassPrivateProperty;\nexport function isClassPrivateProperty<\n Opts extends Options<t.ClassPrivateProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassPrivateProperty & Opts;\nexport function isClassPrivateProperty<\n Opts extends Options<t.ClassPrivateProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n node: t.Node | null | undefined,\n): node is t.ClassPrivateMethod;\nexport function isClassPrivateMethod<\n Opts extends Options<t.ClassPrivateMethod>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassPrivateMethod & Opts;\nexport function isClassPrivateMethod<\n Opts extends Options<t.ClassPrivateMethod>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n node: t.Node | null | undefined,\n): node is t.PrivateName;\nexport function isPrivateName<Opts extends Options<t.PrivateName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PrivateName & Opts;\nexport function isPrivateName<Opts extends Options<t.PrivateName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"PrivateName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n node: t.Node | null | undefined,\n): node is t.StaticBlock;\nexport function isStaticBlock<Opts extends Options<t.StaticBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StaticBlock & Opts;\nexport function isStaticBlock<Opts extends Options<t.StaticBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"StaticBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n node: t.Node | null | undefined,\n): node is t.ImportAttribute;\nexport function isImportAttribute<Opts extends Options<t.ImportAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportAttribute & Opts;\nexport function isImportAttribute<Opts extends Options<t.ImportAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.AnyTypeAnnotation;\nexport function isAnyTypeAnnotation<Opts extends Options<t.AnyTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AnyTypeAnnotation & Opts;\nexport function isAnyTypeAnnotation<Opts extends Options<t.AnyTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AnyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ArrayTypeAnnotation;\nexport function isArrayTypeAnnotation<\n Opts extends Options<t.ArrayTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayTypeAnnotation & Opts;\nexport function isArrayTypeAnnotation<\n Opts extends Options<t.ArrayTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.BooleanTypeAnnotation;\nexport function isBooleanTypeAnnotation<\n Opts extends Options<t.BooleanTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanTypeAnnotation & Opts;\nexport function isBooleanTypeAnnotation<\n Opts extends Options<t.BooleanTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.BooleanLiteralTypeAnnotation;\nexport function isBooleanLiteralTypeAnnotation<\n Opts extends Options<t.BooleanLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanLiteralTypeAnnotation & Opts;\nexport function isBooleanLiteralTypeAnnotation<\n Opts extends Options<t.BooleanLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NullLiteralTypeAnnotation;\nexport function isNullLiteralTypeAnnotation<\n Opts extends Options<t.NullLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullLiteralTypeAnnotation & Opts;\nexport function isNullLiteralTypeAnnotation<\n Opts extends Options<t.NullLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n node: t.Node | null | undefined,\n): node is t.ClassImplements;\nexport function isClassImplements<Opts extends Options<t.ClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassImplements & Opts;\nexport function isClassImplements<Opts extends Options<t.ClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassImplements\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n node: t.Node | null | undefined,\n): node is t.DeclareClass;\nexport function isDeclareClass<Opts extends Options<t.DeclareClass>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareClass & Opts;\nexport function isDeclareClass<Opts extends Options<t.DeclareClass>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareClass\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n node: t.Node | null | undefined,\n): node is t.DeclareFunction;\nexport function isDeclareFunction<Opts extends Options<t.DeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareFunction & Opts;\nexport function isDeclareFunction<Opts extends Options<t.DeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n node: t.Node | null | undefined,\n): node is t.DeclareInterface;\nexport function isDeclareInterface<Opts extends Options<t.DeclareInterface>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareInterface & Opts;\nexport function isDeclareInterface<Opts extends Options<t.DeclareInterface>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareInterface\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n node: t.Node | null | undefined,\n): node is t.DeclareModule;\nexport function isDeclareModule<Opts extends Options<t.DeclareModule>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareModule & Opts;\nexport function isDeclareModule<Opts extends Options<t.DeclareModule>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareModule\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n node: t.Node | null | undefined,\n): node is t.DeclareModuleExports;\nexport function isDeclareModuleExports<\n Opts extends Options<t.DeclareModuleExports>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareModuleExports & Opts;\nexport function isDeclareModuleExports<\n Opts extends Options<t.DeclareModuleExports>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareModuleExports\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n node: t.Node | null | undefined,\n): node is t.DeclareTypeAlias;\nexport function isDeclareTypeAlias<Opts extends Options<t.DeclareTypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareTypeAlias & Opts;\nexport function isDeclareTypeAlias<Opts extends Options<t.DeclareTypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareTypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n node: t.Node | null | undefined,\n): node is t.DeclareOpaqueType;\nexport function isDeclareOpaqueType<Opts extends Options<t.DeclareOpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareOpaqueType & Opts;\nexport function isDeclareOpaqueType<Opts extends Options<t.DeclareOpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareOpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n node: t.Node | null | undefined,\n): node is t.DeclareVariable;\nexport function isDeclareVariable<Opts extends Options<t.DeclareVariable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareVariable & Opts;\nexport function isDeclareVariable<Opts extends Options<t.DeclareVariable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareVariable\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.DeclareExportDeclaration;\nexport function isDeclareExportDeclaration<\n Opts extends Options<t.DeclareExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareExportDeclaration & Opts;\nexport function isDeclareExportDeclaration<\n Opts extends Options<t.DeclareExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n node: t.Node | null | undefined,\n): node is t.DeclareExportAllDeclaration;\nexport function isDeclareExportAllDeclaration<\n Opts extends Options<t.DeclareExportAllDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareExportAllDeclaration & Opts;\nexport function isDeclareExportAllDeclaration<\n Opts extends Options<t.DeclareExportAllDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n node: t.Node | null | undefined,\n): node is t.DeclaredPredicate;\nexport function isDeclaredPredicate<Opts extends Options<t.DeclaredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclaredPredicate & Opts;\nexport function isDeclaredPredicate<Opts extends Options<t.DeclaredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclaredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ExistsTypeAnnotation;\nexport function isExistsTypeAnnotation<\n Opts extends Options<t.ExistsTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExistsTypeAnnotation & Opts;\nexport function isExistsTypeAnnotation<\n Opts extends Options<t.ExistsTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.FunctionTypeAnnotation;\nexport function isFunctionTypeAnnotation<\n Opts extends Options<t.FunctionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionTypeAnnotation & Opts;\nexport function isFunctionTypeAnnotation<\n Opts extends Options<t.FunctionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n node: t.Node | null | undefined,\n): node is t.FunctionTypeParam;\nexport function isFunctionTypeParam<Opts extends Options<t.FunctionTypeParam>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionTypeParam & Opts;\nexport function isFunctionTypeParam<Opts extends Options<t.FunctionTypeParam>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeParam\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.GenericTypeAnnotation;\nexport function isGenericTypeAnnotation<\n Opts extends Options<t.GenericTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.GenericTypeAnnotation & Opts;\nexport function isGenericTypeAnnotation<\n Opts extends Options<t.GenericTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"GenericTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n node: t.Node | null | undefined,\n): node is t.InferredPredicate;\nexport function isInferredPredicate<Opts extends Options<t.InferredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InferredPredicate & Opts;\nexport function isInferredPredicate<Opts extends Options<t.InferredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"InferredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n node: t.Node | null | undefined,\n): node is t.InterfaceExtends;\nexport function isInterfaceExtends<Opts extends Options<t.InterfaceExtends>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceExtends & Opts;\nexport function isInterfaceExtends<Opts extends Options<t.InterfaceExtends>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceExtends\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n node: t.Node | null | undefined,\n): node is t.InterfaceDeclaration;\nexport function isInterfaceDeclaration<\n Opts extends Options<t.InterfaceDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceDeclaration & Opts;\nexport function isInterfaceDeclaration<\n Opts extends Options<t.InterfaceDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.InterfaceTypeAnnotation;\nexport function isInterfaceTypeAnnotation<\n Opts extends Options<t.InterfaceTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceTypeAnnotation & Opts;\nexport function isInterfaceTypeAnnotation<\n Opts extends Options<t.InterfaceTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.IntersectionTypeAnnotation;\nexport function isIntersectionTypeAnnotation<\n Opts extends Options<t.IntersectionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IntersectionTypeAnnotation & Opts;\nexport function isIntersectionTypeAnnotation<\n Opts extends Options<t.IntersectionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.MixedTypeAnnotation;\nexport function isMixedTypeAnnotation<\n Opts extends Options<t.MixedTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MixedTypeAnnotation & Opts;\nexport function isMixedTypeAnnotation<\n Opts extends Options<t.MixedTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"MixedTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.EmptyTypeAnnotation;\nexport function isEmptyTypeAnnotation<\n Opts extends Options<t.EmptyTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EmptyTypeAnnotation & Opts;\nexport function isEmptyTypeAnnotation<\n Opts extends Options<t.EmptyTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NullableTypeAnnotation;\nexport function isNullableTypeAnnotation<\n Opts extends Options<t.NullableTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullableTypeAnnotation & Opts;\nexport function isNullableTypeAnnotation<\n Opts extends Options<t.NullableTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullableTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NumberLiteralTypeAnnotation;\nexport function isNumberLiteralTypeAnnotation<\n Opts extends Options<t.NumberLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumberLiteralTypeAnnotation & Opts;\nexport function isNumberLiteralTypeAnnotation<\n Opts extends Options<t.NumberLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.BigIntLiteralTypeAnnotation;\nexport function isBigIntLiteralTypeAnnotation<\n Opts extends Options<t.BigIntLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BigIntLiteralTypeAnnotation & Opts;\nexport function isBigIntLiteralTypeAnnotation<\n Opts extends Options<t.BigIntLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"BigIntLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NumberTypeAnnotation;\nexport function isNumberTypeAnnotation<\n Opts extends Options<t.NumberTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumberTypeAnnotation & Opts;\nexport function isNumberTypeAnnotation<\n Opts extends Options<t.NumberTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumberTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeAnnotation;\nexport function isObjectTypeAnnotation<\n Opts extends Options<t.ObjectTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeAnnotation & Opts;\nexport function isObjectTypeAnnotation<\n Opts extends Options<t.ObjectTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeInternalSlot;\nexport function isObjectTypeInternalSlot<\n Opts extends Options<t.ObjectTypeInternalSlot>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeInternalSlot & Opts;\nexport function isObjectTypeInternalSlot<\n Opts extends Options<t.ObjectTypeInternalSlot>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeCallProperty;\nexport function isObjectTypeCallProperty<\n Opts extends Options<t.ObjectTypeCallProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeCallProperty & Opts;\nexport function isObjectTypeCallProperty<\n Opts extends Options<t.ObjectTypeCallProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeIndexer;\nexport function isObjectTypeIndexer<Opts extends Options<t.ObjectTypeIndexer>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeIndexer & Opts;\nexport function isObjectTypeIndexer<Opts extends Options<t.ObjectTypeIndexer>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeIndexer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeProperty;\nexport function isObjectTypeProperty<\n Opts extends Options<t.ObjectTypeProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeProperty & Opts;\nexport function isObjectTypeProperty<\n Opts extends Options<t.ObjectTypeProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeSpreadProperty;\nexport function isObjectTypeSpreadProperty<\n Opts extends Options<t.ObjectTypeSpreadProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeSpreadProperty & Opts;\nexport function isObjectTypeSpreadProperty<\n Opts extends Options<t.ObjectTypeSpreadProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n node: t.Node | null | undefined,\n): node is t.OpaqueType;\nexport function isOpaqueType<Opts extends Options<t.OpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OpaqueType & Opts;\nexport function isOpaqueType<Opts extends Options<t.OpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"OpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n node: t.Node | null | undefined,\n): node is t.QualifiedTypeIdentifier;\nexport function isQualifiedTypeIdentifier<\n Opts extends Options<t.QualifiedTypeIdentifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.QualifiedTypeIdentifier & Opts;\nexport function isQualifiedTypeIdentifier<\n Opts extends Options<t.QualifiedTypeIdentifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.StringLiteralTypeAnnotation;\nexport function isStringLiteralTypeAnnotation<\n Opts extends Options<t.StringLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringLiteralTypeAnnotation & Opts;\nexport function isStringLiteralTypeAnnotation<\n Opts extends Options<t.StringLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.StringTypeAnnotation;\nexport function isStringTypeAnnotation<\n Opts extends Options<t.StringTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringTypeAnnotation & Opts;\nexport function isStringTypeAnnotation<\n Opts extends Options<t.StringTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.SymbolTypeAnnotation;\nexport function isSymbolTypeAnnotation<\n Opts extends Options<t.SymbolTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SymbolTypeAnnotation & Opts;\nexport function isSymbolTypeAnnotation<\n Opts extends Options<t.SymbolTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ThisTypeAnnotation;\nexport function isThisTypeAnnotation<\n Opts extends Options<t.ThisTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThisTypeAnnotation & Opts;\nexport function isThisTypeAnnotation<\n Opts extends Options<t.ThisTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThisTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TupleTypeAnnotation;\nexport function isTupleTypeAnnotation<\n Opts extends Options<t.TupleTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TupleTypeAnnotation & Opts;\nexport function isTupleTypeAnnotation<\n Opts extends Options<t.TupleTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TupleTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TypeofTypeAnnotation;\nexport function isTypeofTypeAnnotation<\n Opts extends Options<t.TypeofTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeofTypeAnnotation & Opts;\nexport function isTypeofTypeAnnotation<\n Opts extends Options<t.TypeofTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n node: t.Node | null | undefined,\n): node is t.TypeAlias;\nexport function isTypeAlias<Opts extends Options<t.TypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeAlias & Opts;\nexport function isTypeAlias<Opts extends Options<t.TypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TypeAnnotation;\nexport function isTypeAnnotation<Opts extends Options<t.TypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeAnnotation & Opts;\nexport function isTypeAnnotation<Opts extends Options<t.TypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n node: t.Node | null | undefined,\n): node is t.TypeCastExpression;\nexport function isTypeCastExpression<\n Opts extends Options<t.TypeCastExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeCastExpression & Opts;\nexport function isTypeCastExpression<\n Opts extends Options<t.TypeCastExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeCastExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n node: t.Node | null | undefined,\n): node is t.TypeParameter;\nexport function isTypeParameter<Opts extends Options<t.TypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameter & Opts;\nexport function isTypeParameter<Opts extends Options<t.TypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n node: t.Node | null | undefined,\n): node is t.TypeParameterDeclaration;\nexport function isTypeParameterDeclaration<\n Opts extends Options<t.TypeParameterDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameterDeclaration & Opts;\nexport function isTypeParameterDeclaration<\n Opts extends Options<t.TypeParameterDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n node: t.Node | null | undefined,\n): node is t.TypeParameterInstantiation;\nexport function isTypeParameterInstantiation<\n Opts extends Options<t.TypeParameterInstantiation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameterInstantiation & Opts;\nexport function isTypeParameterInstantiation<\n Opts extends Options<t.TypeParameterInstantiation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.UnionTypeAnnotation;\nexport function isUnionTypeAnnotation<\n Opts extends Options<t.UnionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnionTypeAnnotation & Opts;\nexport function isUnionTypeAnnotation<\n Opts extends Options<t.UnionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"UnionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(node: t.Node | null | undefined): node is t.Variance;\nexport function isVariance<Opts extends Options<t.Variance>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Variance & Opts;\nexport function isVariance<Opts extends Options<t.Variance>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Variance\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.VoidTypeAnnotation;\nexport function isVoidTypeAnnotation<\n Opts extends Options<t.VoidTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VoidTypeAnnotation & Opts;\nexport function isVoidTypeAnnotation<\n Opts extends Options<t.VoidTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VoidTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n node: t.Node | null | undefined,\n): node is t.EnumDeclaration;\nexport function isEnumDeclaration<Opts extends Options<t.EnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumDeclaration & Opts;\nexport function isEnumDeclaration<Opts extends Options<t.EnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n node: t.Node | null | undefined,\n): node is t.EnumBooleanBody;\nexport function isEnumBooleanBody<Opts extends Options<t.EnumBooleanBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBooleanBody & Opts;\nexport function isEnumBooleanBody<Opts extends Options<t.EnumBooleanBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n node: t.Node | null | undefined,\n): node is t.EnumNumberBody;\nexport function isEnumNumberBody<Opts extends Options<t.EnumNumberBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumNumberBody & Opts;\nexport function isEnumNumberBody<Opts extends Options<t.EnumNumberBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n node: t.Node | null | undefined,\n): node is t.EnumStringBody;\nexport function isEnumStringBody<Opts extends Options<t.EnumStringBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumStringBody & Opts;\nexport function isEnumStringBody<Opts extends Options<t.EnumStringBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumStringBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n node: t.Node | null | undefined,\n): node is t.EnumSymbolBody;\nexport function isEnumSymbolBody<Opts extends Options<t.EnumSymbolBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumSymbolBody & Opts;\nexport function isEnumSymbolBody<Opts extends Options<t.EnumSymbolBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumSymbolBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n node: t.Node | null | undefined,\n): node is t.EnumBooleanMember;\nexport function isEnumBooleanMember<Opts extends Options<t.EnumBooleanMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBooleanMember & Opts;\nexport function isEnumBooleanMember<Opts extends Options<t.EnumBooleanMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n node: t.Node | null | undefined,\n): node is t.EnumNumberMember;\nexport function isEnumNumberMember<Opts extends Options<t.EnumNumberMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumNumberMember & Opts;\nexport function isEnumNumberMember<Opts extends Options<t.EnumNumberMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n node: t.Node | null | undefined,\n): node is t.EnumStringMember;\nexport function isEnumStringMember<Opts extends Options<t.EnumStringMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumStringMember & Opts;\nexport function isEnumStringMember<Opts extends Options<t.EnumStringMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumStringMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n node: t.Node | null | undefined,\n): node is t.EnumDefaultedMember;\nexport function isEnumDefaultedMember<\n Opts extends Options<t.EnumDefaultedMember>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumDefaultedMember & Opts;\nexport function isEnumDefaultedMember<\n Opts extends Options<t.EnumDefaultedMember>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumDefaultedMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.IndexedAccessType;\nexport function isIndexedAccessType<Opts extends Options<t.IndexedAccessType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IndexedAccessType & Opts;\nexport function isIndexedAccessType<Opts extends Options<t.IndexedAccessType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"IndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.OptionalIndexedAccessType;\nexport function isOptionalIndexedAccessType<\n Opts extends Options<t.OptionalIndexedAccessType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalIndexedAccessType & Opts;\nexport function isOptionalIndexedAccessType<\n Opts extends Options<t.OptionalIndexedAccessType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n node: t.Node | null | undefined,\n): node is t.JSXAttribute;\nexport function isJSXAttribute<Opts extends Options<t.JSXAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXAttribute & Opts;\nexport function isJSXAttribute<Opts extends Options<t.JSXAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n node: t.Node | null | undefined,\n): node is t.JSXClosingElement;\nexport function isJSXClosingElement<Opts extends Options<t.JSXClosingElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXClosingElement & Opts;\nexport function isJSXClosingElement<Opts extends Options<t.JSXClosingElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n node: t.Node | null | undefined,\n): node is t.JSXElement;\nexport function isJSXElement<Opts extends Options<t.JSXElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXElement & Opts;\nexport function isJSXElement<Opts extends Options<t.JSXElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n node: t.Node | null | undefined,\n): node is t.JSXEmptyExpression;\nexport function isJSXEmptyExpression<\n Opts extends Options<t.JSXEmptyExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXEmptyExpression & Opts;\nexport function isJSXEmptyExpression<\n Opts extends Options<t.JSXEmptyExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXEmptyExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n node: t.Node | null | undefined,\n): node is t.JSXExpressionContainer;\nexport function isJSXExpressionContainer<\n Opts extends Options<t.JSXExpressionContainer>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXExpressionContainer & Opts;\nexport function isJSXExpressionContainer<\n Opts extends Options<t.JSXExpressionContainer>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXExpressionContainer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n node: t.Node | null | undefined,\n): node is t.JSXSpreadChild;\nexport function isJSXSpreadChild<Opts extends Options<t.JSXSpreadChild>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXSpreadChild & Opts;\nexport function isJSXSpreadChild<Opts extends Options<t.JSXSpreadChild>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadChild\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n node: t.Node | null | undefined,\n): node is t.JSXIdentifier;\nexport function isJSXIdentifier<Opts extends Options<t.JSXIdentifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXIdentifier & Opts;\nexport function isJSXIdentifier<Opts extends Options<t.JSXIdentifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n node: t.Node | null | undefined,\n): node is t.JSXMemberExpression;\nexport function isJSXMemberExpression<\n Opts extends Options<t.JSXMemberExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXMemberExpression & Opts;\nexport function isJSXMemberExpression<\n Opts extends Options<t.JSXMemberExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n node: t.Node | null | undefined,\n): node is t.JSXNamespacedName;\nexport function isJSXNamespacedName<Opts extends Options<t.JSXNamespacedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXNamespacedName & Opts;\nexport function isJSXNamespacedName<Opts extends Options<t.JSXNamespacedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXNamespacedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n node: t.Node | null | undefined,\n): node is t.JSXOpeningElement;\nexport function isJSXOpeningElement<Opts extends Options<t.JSXOpeningElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXOpeningElement & Opts;\nexport function isJSXOpeningElement<Opts extends Options<t.JSXOpeningElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n node: t.Node | null | undefined,\n): node is t.JSXSpreadAttribute;\nexport function isJSXSpreadAttribute<\n Opts extends Options<t.JSXSpreadAttribute>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXSpreadAttribute & Opts;\nexport function isJSXSpreadAttribute<\n Opts extends Options<t.JSXSpreadAttribute>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(node: t.Node | null | undefined): node is t.JSXText;\nexport function isJSXText<Opts extends Options<t.JSXText>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXText & Opts;\nexport function isJSXText<Opts extends Options<t.JSXText>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXText\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n node: t.Node | null | undefined,\n): node is t.JSXFragment;\nexport function isJSXFragment<Opts extends Options<t.JSXFragment>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXFragment & Opts;\nexport function isJSXFragment<Opts extends Options<t.JSXFragment>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n node: t.Node | null | undefined,\n): node is t.JSXOpeningFragment;\nexport function isJSXOpeningFragment<\n Opts extends Options<t.JSXOpeningFragment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXOpeningFragment & Opts;\nexport function isJSXOpeningFragment<\n Opts extends Options<t.JSXOpeningFragment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n node: t.Node | null | undefined,\n): node is t.JSXClosingFragment;\nexport function isJSXClosingFragment<\n Opts extends Options<t.JSXClosingFragment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXClosingFragment & Opts;\nexport function isJSXClosingFragment<\n Opts extends Options<t.JSXClosingFragment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n node: t.Node | null | undefined,\n): node is t.Placeholder;\nexport function isPlaceholder<Opts extends Options<t.Placeholder>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Placeholder & Opts;\nexport function isPlaceholder<Opts extends Options<t.Placeholder>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Placeholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n node: t.Node | null | undefined,\n): node is t.V8IntrinsicIdentifier;\nexport function isV8IntrinsicIdentifier<\n Opts extends Options<t.V8IntrinsicIdentifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.V8IntrinsicIdentifier & Opts;\nexport function isV8IntrinsicIdentifier<\n Opts extends Options<t.V8IntrinsicIdentifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n node: t.Node | null | undefined,\n): node is t.ArgumentPlaceholder;\nexport function isArgumentPlaceholder<\n Opts extends Options<t.ArgumentPlaceholder>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArgumentPlaceholder & Opts;\nexport function isArgumentPlaceholder<\n Opts extends Options<t.ArgumentPlaceholder>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArgumentPlaceholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n node: t.Node | null | undefined,\n): node is t.BindExpression;\nexport function isBindExpression<Opts extends Options<t.BindExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BindExpression & Opts;\nexport function isBindExpression<Opts extends Options<t.BindExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BindExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n node: t.Node | null | undefined,\n): node is t.ClassAccessorProperty;\nexport function isClassAccessorProperty<\n Opts extends Options<t.ClassAccessorProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassAccessorProperty & Opts;\nexport function isClassAccessorProperty<\n Opts extends Options<t.ClassAccessorProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassAccessorProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n node: t.Node | null | undefined,\n): node is t.Decorator;\nexport function isDecorator<Opts extends Options<t.Decorator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Decorator & Opts;\nexport function isDecorator<Opts extends Options<t.Decorator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Decorator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n node: t.Node | null | undefined,\n): node is t.DoExpression;\nexport function isDoExpression<Opts extends Options<t.DoExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DoExpression & Opts;\nexport function isDoExpression<Opts extends Options<t.DoExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DoExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportDefaultSpecifier;\nexport function isExportDefaultSpecifier<\n Opts extends Options<t.ExportDefaultSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDefaultSpecifier & Opts;\nexport function isExportDefaultSpecifier<\n Opts extends Options<t.ExportDefaultSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n node: t.Node | null | undefined,\n): node is t.ModuleExpression;\nexport function isModuleExpression<Opts extends Options<t.ModuleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ModuleExpression & Opts;\nexport function isModuleExpression<Opts extends Options<t.ModuleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ModuleExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n node: t.Node | null | undefined,\n): node is t.TopicReference;\nexport function isTopicReference<Opts extends Options<t.TopicReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TopicReference & Opts;\nexport function isTopicReference<Opts extends Options<t.TopicReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TopicReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidPattern(\n node: t.Node | null | undefined,\n): node is t.VoidPattern;\nexport function isVoidPattern<Opts extends Options<t.VoidPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VoidPattern & Opts;\nexport function isVoidPattern<Opts extends Options<t.VoidPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"VoidPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n node: t.Node | null | undefined,\n): node is t.TSParameterProperty;\nexport function isTSParameterProperty<\n Opts extends Options<t.TSParameterProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSParameterProperty & Opts;\nexport function isTSParameterProperty<\n Opts extends Options<t.TSParameterProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSParameterProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n node: t.Node | null | undefined,\n): node is t.TSDeclareFunction;\nexport function isTSDeclareFunction<Opts extends Options<t.TSDeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSDeclareFunction & Opts;\nexport function isTSDeclareFunction<Opts extends Options<t.TSDeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n node: t.Node | null | undefined,\n): node is t.TSDeclareMethod;\nexport function isTSDeclareMethod<Opts extends Options<t.TSDeclareMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSDeclareMethod & Opts;\nexport function isTSDeclareMethod<Opts extends Options<t.TSDeclareMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n node: t.Node | null | undefined,\n): node is t.TSQualifiedName;\nexport function isTSQualifiedName<Opts extends Options<t.TSQualifiedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSQualifiedName & Opts;\nexport function isTSQualifiedName<Opts extends Options<t.TSQualifiedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSQualifiedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSCallSignatureDeclaration;\nexport function isTSCallSignatureDeclaration<\n Opts extends Options<t.TSCallSignatureDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSCallSignatureDeclaration & Opts;\nexport function isTSCallSignatureDeclaration<\n Opts extends Options<t.TSCallSignatureDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSConstructSignatureDeclaration;\nexport function isTSConstructSignatureDeclaration<\n Opts extends Options<t.TSConstructSignatureDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConstructSignatureDeclaration & Opts;\nexport function isTSConstructSignatureDeclaration<\n Opts extends Options<t.TSConstructSignatureDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n node: t.Node | null | undefined,\n): node is t.TSPropertySignature;\nexport function isTSPropertySignature<\n Opts extends Options<t.TSPropertySignature>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSPropertySignature & Opts;\nexport function isTSPropertySignature<\n Opts extends Options<t.TSPropertySignature>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSPropertySignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n node: t.Node | null | undefined,\n): node is t.TSMethodSignature;\nexport function isTSMethodSignature<Opts extends Options<t.TSMethodSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSMethodSignature & Opts;\nexport function isTSMethodSignature<Opts extends Options<t.TSMethodSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSMethodSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n node: t.Node | null | undefined,\n): node is t.TSIndexSignature;\nexport function isTSIndexSignature<Opts extends Options<t.TSIndexSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIndexSignature & Opts;\nexport function isTSIndexSignature<Opts extends Options<t.TSIndexSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIndexSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n node: t.Node | null | undefined,\n): node is t.TSAnyKeyword;\nexport function isTSAnyKeyword<Opts extends Options<t.TSAnyKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSAnyKeyword & Opts;\nexport function isTSAnyKeyword<Opts extends Options<t.TSAnyKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSAnyKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n node: t.Node | null | undefined,\n): node is t.TSBooleanKeyword;\nexport function isTSBooleanKeyword<Opts extends Options<t.TSBooleanKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBooleanKeyword & Opts;\nexport function isTSBooleanKeyword<Opts extends Options<t.TSBooleanKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSBooleanKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n node: t.Node | null | undefined,\n): node is t.TSBigIntKeyword;\nexport function isTSBigIntKeyword<Opts extends Options<t.TSBigIntKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBigIntKeyword & Opts;\nexport function isTSBigIntKeyword<Opts extends Options<t.TSBigIntKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSBigIntKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n node: t.Node | null | undefined,\n): node is t.TSIntrinsicKeyword;\nexport function isTSIntrinsicKeyword<\n Opts extends Options<t.TSIntrinsicKeyword>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIntrinsicKeyword & Opts;\nexport function isTSIntrinsicKeyword<\n Opts extends Options<t.TSIntrinsicKeyword>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNeverKeyword;\nexport function isTSNeverKeyword<Opts extends Options<t.TSNeverKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNeverKeyword & Opts;\nexport function isTSNeverKeyword<Opts extends Options<t.TSNeverKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNeverKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNullKeyword;\nexport function isTSNullKeyword<Opts extends Options<t.TSNullKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNullKeyword & Opts;\nexport function isTSNullKeyword<Opts extends Options<t.TSNullKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNullKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNumberKeyword;\nexport function isTSNumberKeyword<Opts extends Options<t.TSNumberKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNumberKeyword & Opts;\nexport function isTSNumberKeyword<Opts extends Options<t.TSNumberKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNumberKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n node: t.Node | null | undefined,\n): node is t.TSObjectKeyword;\nexport function isTSObjectKeyword<Opts extends Options<t.TSObjectKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSObjectKeyword & Opts;\nexport function isTSObjectKeyword<Opts extends Options<t.TSObjectKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSObjectKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n node: t.Node | null | undefined,\n): node is t.TSStringKeyword;\nexport function isTSStringKeyword<Opts extends Options<t.TSStringKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSStringKeyword & Opts;\nexport function isTSStringKeyword<Opts extends Options<t.TSStringKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSStringKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n node: t.Node | null | undefined,\n): node is t.TSSymbolKeyword;\nexport function isTSSymbolKeyword<Opts extends Options<t.TSSymbolKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSSymbolKeyword & Opts;\nexport function isTSSymbolKeyword<Opts extends Options<t.TSSymbolKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSSymbolKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n node: t.Node | null | undefined,\n): node is t.TSUndefinedKeyword;\nexport function isTSUndefinedKeyword<\n Opts extends Options<t.TSUndefinedKeyword>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUndefinedKeyword & Opts;\nexport function isTSUndefinedKeyword<\n Opts extends Options<t.TSUndefinedKeyword>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUndefinedKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n node: t.Node | null | undefined,\n): node is t.TSUnknownKeyword;\nexport function isTSUnknownKeyword<Opts extends Options<t.TSUnknownKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUnknownKeyword & Opts;\nexport function isTSUnknownKeyword<Opts extends Options<t.TSUnknownKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUnknownKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n node: t.Node | null | undefined,\n): node is t.TSVoidKeyword;\nexport function isTSVoidKeyword<Opts extends Options<t.TSVoidKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSVoidKeyword & Opts;\nexport function isTSVoidKeyword<Opts extends Options<t.TSVoidKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSVoidKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n node: t.Node | null | undefined,\n): node is t.TSThisType;\nexport function isTSThisType<Opts extends Options<t.TSThisType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSThisType & Opts;\nexport function isTSThisType<Opts extends Options<t.TSThisType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSThisType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n node: t.Node | null | undefined,\n): node is t.TSFunctionType;\nexport function isTSFunctionType<Opts extends Options<t.TSFunctionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSFunctionType & Opts;\nexport function isTSFunctionType<Opts extends Options<t.TSFunctionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSFunctionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n node: t.Node | null | undefined,\n): node is t.TSConstructorType;\nexport function isTSConstructorType<Opts extends Options<t.TSConstructorType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConstructorType & Opts;\nexport function isTSConstructorType<Opts extends Options<t.TSConstructorType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConstructorType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n node: t.Node | null | undefined,\n): node is t.TSTypeReference;\nexport function isTSTypeReference<Opts extends Options<t.TSTypeReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeReference & Opts;\nexport function isTSTypeReference<Opts extends Options<t.TSTypeReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n node: t.Node | null | undefined,\n): node is t.TSTypePredicate;\nexport function isTSTypePredicate<Opts extends Options<t.TSTypePredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypePredicate & Opts;\nexport function isTSTypePredicate<Opts extends Options<t.TSTypePredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypePredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n node: t.Node | null | undefined,\n): node is t.TSTypeQuery;\nexport function isTSTypeQuery<Opts extends Options<t.TSTypeQuery>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeQuery & Opts;\nexport function isTSTypeQuery<Opts extends Options<t.TSTypeQuery>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeQuery\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n node: t.Node | null | undefined,\n): node is t.TSTypeLiteral;\nexport function isTSTypeLiteral<Opts extends Options<t.TSTypeLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeLiteral & Opts;\nexport function isTSTypeLiteral<Opts extends Options<t.TSTypeLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n node: t.Node | null | undefined,\n): node is t.TSArrayType;\nexport function isTSArrayType<Opts extends Options<t.TSArrayType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSArrayType & Opts;\nexport function isTSArrayType<Opts extends Options<t.TSArrayType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSArrayType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n node: t.Node | null | undefined,\n): node is t.TSTupleType;\nexport function isTSTupleType<Opts extends Options<t.TSTupleType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTupleType & Opts;\nexport function isTSTupleType<Opts extends Options<t.TSTupleType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTupleType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n node: t.Node | null | undefined,\n): node is t.TSOptionalType;\nexport function isTSOptionalType<Opts extends Options<t.TSOptionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSOptionalType & Opts;\nexport function isTSOptionalType<Opts extends Options<t.TSOptionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSOptionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n node: t.Node | null | undefined,\n): node is t.TSRestType;\nexport function isTSRestType<Opts extends Options<t.TSRestType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSRestType & Opts;\nexport function isTSRestType<Opts extends Options<t.TSRestType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSRestType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n node: t.Node | null | undefined,\n): node is t.TSNamedTupleMember;\nexport function isTSNamedTupleMember<\n Opts extends Options<t.TSNamedTupleMember>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNamedTupleMember & Opts;\nexport function isTSNamedTupleMember<\n Opts extends Options<t.TSNamedTupleMember>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNamedTupleMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n node: t.Node | null | undefined,\n): node is t.TSUnionType;\nexport function isTSUnionType<Opts extends Options<t.TSUnionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUnionType & Opts;\nexport function isTSUnionType<Opts extends Options<t.TSUnionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUnionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n node: t.Node | null | undefined,\n): node is t.TSIntersectionType;\nexport function isTSIntersectionType<\n Opts extends Options<t.TSIntersectionType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIntersectionType & Opts;\nexport function isTSIntersectionType<\n Opts extends Options<t.TSIntersectionType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIntersectionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n node: t.Node | null | undefined,\n): node is t.TSConditionalType;\nexport function isTSConditionalType<Opts extends Options<t.TSConditionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConditionalType & Opts;\nexport function isTSConditionalType<Opts extends Options<t.TSConditionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConditionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n node: t.Node | null | undefined,\n): node is t.TSInferType;\nexport function isTSInferType<Opts extends Options<t.TSInferType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInferType & Opts;\nexport function isTSInferType<Opts extends Options<t.TSInferType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInferType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n node: t.Node | null | undefined,\n): node is t.TSParenthesizedType;\nexport function isTSParenthesizedType<\n Opts extends Options<t.TSParenthesizedType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSParenthesizedType & Opts;\nexport function isTSParenthesizedType<\n Opts extends Options<t.TSParenthesizedType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSParenthesizedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n node: t.Node | null | undefined,\n): node is t.TSTypeOperator;\nexport function isTSTypeOperator<Opts extends Options<t.TSTypeOperator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeOperator & Opts;\nexport function isTSTypeOperator<Opts extends Options<t.TSTypeOperator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeOperator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.TSIndexedAccessType;\nexport function isTSIndexedAccessType<\n Opts extends Options<t.TSIndexedAccessType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIndexedAccessType & Opts;\nexport function isTSIndexedAccessType<\n Opts extends Options<t.TSIndexedAccessType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n node: t.Node | null | undefined,\n): node is t.TSMappedType;\nexport function isTSMappedType<Opts extends Options<t.TSMappedType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSMappedType & Opts;\nexport function isTSMappedType<Opts extends Options<t.TSMappedType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSMappedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTemplateLiteralType(\n node: t.Node | null | undefined,\n): node is t.TSTemplateLiteralType;\nexport function isTSTemplateLiteralType<\n Opts extends Options<t.TSTemplateLiteralType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTemplateLiteralType & Opts;\nexport function isTSTemplateLiteralType<\n Opts extends Options<t.TSTemplateLiteralType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTemplateLiteralType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n node: t.Node | null | undefined,\n): node is t.TSLiteralType;\nexport function isTSLiteralType<Opts extends Options<t.TSLiteralType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSLiteralType & Opts;\nexport function isTSLiteralType<Opts extends Options<t.TSLiteralType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSLiteralType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSClassImplements(\n node: t.Node | null | undefined,\n): node is t.TSClassImplements;\nexport function isTSClassImplements<Opts extends Options<t.TSClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSClassImplements & Opts;\nexport function isTSClassImplements<Opts extends Options<t.TSClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSClassImplements\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceHeritage(\n node: t.Node | null | undefined,\n): node is t.TSInterfaceHeritage;\nexport function isTSInterfaceHeritage<\n Opts extends Options<t.TSInterfaceHeritage>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInterfaceHeritage & Opts;\nexport function isTSInterfaceHeritage<\n Opts extends Options<t.TSInterfaceHeritage>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceHeritage\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSInterfaceDeclaration;\nexport function isTSInterfaceDeclaration<\n Opts extends Options<t.TSInterfaceDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInterfaceDeclaration & Opts;\nexport function isTSInterfaceDeclaration<\n Opts extends Options<t.TSInterfaceDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n node: t.Node | null | undefined,\n): node is t.TSInterfaceBody;\nexport function isTSInterfaceBody<Opts extends Options<t.TSInterfaceBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInterfaceBody & Opts;\nexport function isTSInterfaceBody<Opts extends Options<t.TSInterfaceBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSTypeAliasDeclaration;\nexport function isTSTypeAliasDeclaration<\n Opts extends Options<t.TSTypeAliasDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAliasDeclaration & Opts;\nexport function isTSTypeAliasDeclaration<\n Opts extends Options<t.TSTypeAliasDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n node: t.Node | null | undefined,\n): node is t.TSInstantiationExpression;\nexport function isTSInstantiationExpression<\n Opts extends Options<t.TSInstantiationExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInstantiationExpression & Opts;\nexport function isTSInstantiationExpression<\n Opts extends Options<t.TSInstantiationExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInstantiationExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n node: t.Node | null | undefined,\n): node is t.TSAsExpression;\nexport function isTSAsExpression<Opts extends Options<t.TSAsExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSAsExpression & Opts;\nexport function isTSAsExpression<Opts extends Options<t.TSAsExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSAsExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n node: t.Node | null | undefined,\n): node is t.TSSatisfiesExpression;\nexport function isTSSatisfiesExpression<\n Opts extends Options<t.TSSatisfiesExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSSatisfiesExpression & Opts;\nexport function isTSSatisfiesExpression<\n Opts extends Options<t.TSSatisfiesExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSSatisfiesExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n node: t.Node | null | undefined,\n): node is t.TSTypeAssertion;\nexport function isTSTypeAssertion<Opts extends Options<t.TSTypeAssertion>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAssertion & Opts;\nexport function isTSTypeAssertion<Opts extends Options<t.TSTypeAssertion>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAssertion\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumBody(\n node: t.Node | null | undefined,\n): node is t.TSEnumBody;\nexport function isTSEnumBody<Opts extends Options<t.TSEnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumBody & Opts;\nexport function isTSEnumBody<Opts extends Options<t.TSEnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSEnumDeclaration;\nexport function isTSEnumDeclaration<Opts extends Options<t.TSEnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumDeclaration & Opts;\nexport function isTSEnumDeclaration<Opts extends Options<t.TSEnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n node: t.Node | null | undefined,\n): node is t.TSEnumMember;\nexport function isTSEnumMember<Opts extends Options<t.TSEnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumMember & Opts;\nexport function isTSEnumMember<Opts extends Options<t.TSEnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSModuleDeclaration;\nexport function isTSModuleDeclaration<\n Opts extends Options<t.TSModuleDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSModuleDeclaration & Opts;\nexport function isTSModuleDeclaration<\n Opts extends Options<t.TSModuleDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSModuleDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n node: t.Node | null | undefined,\n): node is t.TSModuleBlock;\nexport function isTSModuleBlock<Opts extends Options<t.TSModuleBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSModuleBlock & Opts;\nexport function isTSModuleBlock<Opts extends Options<t.TSModuleBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSModuleBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n node: t.Node | null | undefined,\n): node is t.TSImportType;\nexport function isTSImportType<Opts extends Options<t.TSImportType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSImportType & Opts;\nexport function isTSImportType<Opts extends Options<t.TSImportType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSImportType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSImportEqualsDeclaration;\nexport function isTSImportEqualsDeclaration<\n Opts extends Options<t.TSImportEqualsDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSImportEqualsDeclaration & Opts;\nexport function isTSImportEqualsDeclaration<\n Opts extends Options<t.TSImportEqualsDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n node: t.Node | null | undefined,\n): node is t.TSExternalModuleReference;\nexport function isTSExternalModuleReference<\n Opts extends Options<t.TSExternalModuleReference>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSExternalModuleReference & Opts;\nexport function isTSExternalModuleReference<\n Opts extends Options<t.TSExternalModuleReference>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSExternalModuleReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n node: t.Node | null | undefined,\n): node is t.TSNonNullExpression;\nexport function isTSNonNullExpression<\n Opts extends Options<t.TSNonNullExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNonNullExpression & Opts;\nexport function isTSNonNullExpression<\n Opts extends Options<t.TSNonNullExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNonNullExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n node: t.Node | null | undefined,\n): node is t.TSExportAssignment;\nexport function isTSExportAssignment<\n Opts extends Options<t.TSExportAssignment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSExportAssignment & Opts;\nexport function isTSExportAssignment<\n Opts extends Options<t.TSExportAssignment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSExportAssignment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSNamespaceExportDeclaration;\nexport function isTSNamespaceExportDeclaration<\n Opts extends Options<t.TSNamespaceExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNamespaceExportDeclaration & Opts;\nexport function isTSNamespaceExportDeclaration<\n Opts extends Options<t.TSNamespaceExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TSTypeAnnotation;\nexport function isTSTypeAnnotation<Opts extends Options<t.TSTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAnnotation & Opts;\nexport function isTSTypeAnnotation<Opts extends Options<t.TSTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameterInstantiation;\nexport function isTSTypeParameterInstantiation<\n Opts extends Options<t.TSTypeParameterInstantiation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameterInstantiation & Opts;\nexport function isTSTypeParameterInstantiation<\n Opts extends Options<t.TSTypeParameterInstantiation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameterDeclaration;\nexport function isTSTypeParameterDeclaration<\n Opts extends Options<t.TSTypeParameterDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameterDeclaration & Opts;\nexport function isTSTypeParameterDeclaration<\n Opts extends Options<t.TSTypeParameterDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameter;\nexport function isTSTypeParameter<Opts extends Options<t.TSTypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameter & Opts;\nexport function isTSTypeParameter<Opts extends Options<t.TSTypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n node: t.Node | null | undefined,\n): node is t.Standardized;\nexport function isStandardized<Opts extends Options<t.Standardized>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Standardized & Opts;\nexport function isStandardized<Opts extends Options<t.Standardized>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"InterpreterDirective\":\n case \"Directive\":\n case \"DirectiveLiteral\":\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"CallExpression\":\n case \"CatchClause\":\n case \"ConditionalExpression\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"File\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"Program\":\n case \"ObjectExpression\":\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"RestElement\":\n case \"ReturnStatement\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"ThisExpression\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"VariableDeclaration\":\n case \"VariableDeclarator\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ArrowFunctionExpression\":\n case \"ClassBody\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ExportSpecifier\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"MetaProperty\":\n case \"ClassMethod\":\n case \"ObjectPattern\":\n case \"SpreadElement\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateElement\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"ImportExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"ExportNamespaceSpecifier\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n case \"StaticBlock\":\n case \"ImportAttribute\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Identifier\":\n case \"StringLiteral\":\n case \"BlockStatement\":\n case \"ClassBody\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n node: t.Node | null | undefined,\n): node is t.Expression;\nexport function isExpression<Opts extends Options<t.Expression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Expression & Opts;\nexport function isExpression<Opts extends Options<t.Expression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"CallExpression\":\n case \"ConditionalExpression\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ObjectExpression\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"ThisExpression\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"MetaProperty\":\n case \"TaggedTemplateExpression\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"ImportExpression\":\n case \"BigIntLiteral\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"TypeCastExpression\":\n case \"JSXElement\":\n case \"JSXFragment\":\n case \"BindExpression\":\n case \"DoExpression\":\n case \"ModuleExpression\":\n case \"TopicReference\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Expression\":\n case \"Identifier\":\n case \"StringLiteral\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(node: t.Node | null | undefined): node is t.Binary;\nexport function isBinary<Opts extends Options<t.Binary>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Binary & Opts;\nexport function isBinary<Opts extends Options<t.Binary>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(node: t.Node | null | undefined): node is t.Scopable;\nexport function isScopable<Opts extends Options<t.Scopable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Scopable & Opts;\nexport function isScopable<Opts extends Options<t.Scopable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n node: t.Node | null | undefined,\n): node is t.BlockParent;\nexport function isBlockParent<Opts extends Options<t.BlockParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BlockParent & Opts;\nexport function isBlockParent<Opts extends Options<t.BlockParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(node: t.Node | null | undefined): node is t.Block;\nexport function isBlock<Opts extends Options<t.Block>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Block & Opts;\nexport function isBlock<Opts extends Options<t.Block>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"Program\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n node: t.Node | null | undefined,\n): node is t.Statement;\nexport function isStatement<Opts extends Options<t.Statement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Statement & Opts;\nexport function isStatement<Opts extends Options<t.Statement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"ReturnStatement\":\n case \"SwitchStatement\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"VariableDeclaration\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Statement\":\n case \"Declaration\":\n case \"BlockStatement\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n node: t.Node | null | undefined,\n): node is t.Terminatorless;\nexport function isTerminatorless<Opts extends Options<t.Terminatorless>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Terminatorless & Opts;\nexport function isTerminatorless<Opts extends Options<t.Terminatorless>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n node: t.Node | null | undefined,\n): node is t.CompletionStatement;\nexport function isCompletionStatement<\n Opts extends Options<t.CompletionStatement>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CompletionStatement & Opts;\nexport function isCompletionStatement<\n Opts extends Options<t.CompletionStatement>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n node: t.Node | null | undefined,\n): node is t.Conditional;\nexport function isConditional<Opts extends Options<t.Conditional>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Conditional & Opts;\nexport function isConditional<Opts extends Options<t.Conditional>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ConditionalExpression\":\n case \"IfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(node: t.Node | null | undefined): node is t.Loop;\nexport function isLoop<Opts extends Options<t.Loop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Loop & Opts;\nexport function isLoop<Opts extends Options<t.Loop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"WhileStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(node: t.Node | null | undefined): node is t.While;\nexport function isWhile<Opts extends Options<t.While>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.While & Opts;\nexport function isWhile<Opts extends Options<t.While>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"WhileStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n node: t.Node | null | undefined,\n): node is t.ExpressionWrapper;\nexport function isExpressionWrapper<Opts extends Options<t.ExpressionWrapper>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExpressionWrapper & Opts;\nexport function isExpressionWrapper<Opts extends Options<t.ExpressionWrapper>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExpressionStatement\":\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(node: t.Node | null | undefined): node is t.For;\nexport function isFor<Opts extends Options<t.For>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.For & Opts;\nexport function isFor<Opts extends Options<t.For>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n node: t.Node | null | undefined,\n): node is t.ForXStatement;\nexport function isForXStatement<Opts extends Options<t.ForXStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForXStatement & Opts;\nexport function isForXStatement<Opts extends Options<t.ForXStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(node: t.Node | null | undefined): node is t.Function;\nexport function isFunction<Opts extends Options<t.Function>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Function & Opts;\nexport function isFunction<Opts extends Options<t.Function>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n node: t.Node | null | undefined,\n): node is t.FunctionParent;\nexport function isFunctionParent<Opts extends Options<t.FunctionParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionParent & Opts;\nexport function isFunctionParent<Opts extends Options<t.FunctionParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(node: t.Node | null | undefined): node is t.Pureish;\nexport function isPureish<Opts extends Options<t.Pureish>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Pureish & Opts;\nexport function isPureish<Opts extends Options<t.Pureish>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"ArrowFunctionExpression\":\n case \"BigIntLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n node: t.Node | null | undefined,\n): node is t.Declaration;\nexport function isDeclaration<Opts extends Options<t.Declaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Declaration & Opts;\nexport function isDeclaration<Opts extends Options<t.Declaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"VariableDeclaration\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Declaration\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParameter(\n node: t.Node | null | undefined,\n): node is t.FunctionParameter;\nexport function isFunctionParameter<Opts extends Options<t.FunctionParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionParameter & Opts;\nexport function isFunctionParameter<Opts extends Options<t.FunctionParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n node: t.Node | null | undefined,\n): node is t.PatternLike;\nexport function isPatternLike<Opts extends Options<t.PatternLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PatternLike & Opts;\nexport function isPatternLike<Opts extends Options<t.PatternLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(node: t.Node | null | undefined): node is t.LVal;\nexport function isLVal<Opts extends Options<t.LVal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LVal & Opts;\nexport function isLVal<Opts extends Options<t.LVal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n node: t.Node | null | undefined,\n): node is t.TSEntityName;\nexport function isTSEntityName<Opts extends Options<t.TSEntityName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEntityName & Opts;\nexport function isTSEntityName<Opts extends Options<t.TSEntityName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"ThisExpression\":\n case \"TSQualifiedName\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(node: t.Node | null | undefined): node is t.Literal;\nexport function isLiteral<Opts extends Options<t.Literal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Literal & Opts;\nexport function isLiteral<Opts extends Options<t.Literal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"TemplateLiteral\":\n case \"BigIntLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n node: t.Node | null | undefined,\n): node is t.Immutable;\nexport function isImmutable<Opts extends Options<t.Immutable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Immutable & Opts;\nexport function isImmutable<Opts extends Options<t.Immutable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"BigIntLiteral\":\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXOpeningElement\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n node: t.Node | null | undefined,\n): node is t.UserWhitespacable;\nexport function isUserWhitespacable<Opts extends Options<t.UserWhitespacable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UserWhitespacable & Opts;\nexport function isUserWhitespacable<Opts extends Options<t.UserWhitespacable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(node: t.Node | null | undefined): node is t.Method;\nexport function isMethod<Opts extends Options<t.Method>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Method & Opts;\nexport function isMethod<Opts extends Options<t.Method>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n node: t.Node | null | undefined,\n): node is t.ObjectMember;\nexport function isObjectMember<Opts extends Options<t.ObjectMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectMember & Opts;\nexport function isObjectMember<Opts extends Options<t.ObjectMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(node: t.Node | null | undefined): node is t.Property;\nexport function isProperty<Opts extends Options<t.Property>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Property & Opts;\nexport function isProperty<Opts extends Options<t.Property>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectProperty\":\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n node: t.Node | null | undefined,\n): node is t.UnaryLike;\nexport function isUnaryLike<Opts extends Options<t.UnaryLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnaryLike & Opts;\nexport function isUnaryLike<Opts extends Options<t.UnaryLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(node: t.Node | null | undefined): node is t.Pattern;\nexport function isPattern<Opts extends Options<t.Pattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Pattern & Opts;\nexport function isPattern<Opts extends Options<t.Pattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Pattern\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(node: t.Node | null | undefined): node is t.Class;\nexport function isClass<Opts extends Options<t.Class>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Class & Opts;\nexport function isClass<Opts extends Options<t.Class>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ImportOrExportDeclaration;\nexport function isImportOrExportDeclaration<\n Opts extends Options<t.ImportOrExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportOrExportDeclaration & Opts;\nexport function isImportOrExportDeclaration<\n Opts extends Options<t.ImportOrExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportDeclaration;\nexport function isExportDeclaration<Opts extends Options<t.ExportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDeclaration & Opts;\nexport function isExportDeclaration<Opts extends Options<t.ExportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n node: t.Node | null | undefined,\n): node is t.ModuleSpecifier;\nexport function isModuleSpecifier<Opts extends Options<t.ModuleSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ModuleSpecifier & Opts;\nexport function isModuleSpecifier<Opts extends Options<t.ModuleSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportSpecifier\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(node: t.Node | null | undefined): node is t.Private;\nexport function isPrivate<Opts extends Options<t.Private>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Private & Opts;\nexport function isPrivate<Opts extends Options<t.Private>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(node: t.Node | null | undefined): node is t.Flow;\nexport function isFlow<Opts extends Options<t.Flow>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Flow & Opts;\nexport function isFlow<Opts extends Options<t.Flow>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ClassImplements\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"DeclaredPredicate\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"FunctionTypeParam\":\n case \"GenericTypeAnnotation\":\n case \"InferredPredicate\":\n case \"InterfaceExtends\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"BigIntLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n case \"OpaqueType\":\n case \"QualifiedTypeIdentifier\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"TypeAlias\":\n case \"TypeAnnotation\":\n case \"TypeCastExpression\":\n case \"TypeParameter\":\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n case \"UnionTypeAnnotation\":\n case \"Variance\":\n case \"VoidTypeAnnotation\":\n case \"EnumDeclaration\":\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(node: t.Node | null | undefined): node is t.FlowType;\nexport function isFlowType<Opts extends Options<t.FlowType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowType & Opts;\nexport function isFlowType<Opts extends Options<t.FlowType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"GenericTypeAnnotation\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"BigIntLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n node: t.Node | null | undefined,\n): node is t.FlowBaseAnnotation;\nexport function isFlowBaseAnnotation<\n Opts extends Options<t.FlowBaseAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowBaseAnnotation & Opts;\nexport function isFlowBaseAnnotation<\n Opts extends Options<t.FlowBaseAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n node: t.Node | null | undefined,\n): node is t.FlowDeclaration;\nexport function isFlowDeclaration<Opts extends Options<t.FlowDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowDeclaration & Opts;\nexport function isFlowDeclaration<Opts extends Options<t.FlowDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n node: t.Node | null | undefined,\n): node is t.FlowPredicate;\nexport function isFlowPredicate<Opts extends Options<t.FlowPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowPredicate & Opts;\nexport function isFlowPredicate<Opts extends Options<t.FlowPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclaredPredicate\":\n case \"InferredPredicate\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(node: t.Node | null | undefined): node is t.EnumBody;\nexport function isEnumBody<Opts extends Options<t.EnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBody & Opts;\nexport function isEnumBody<Opts extends Options<t.EnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n node: t.Node | null | undefined,\n): node is t.EnumMember;\nexport function isEnumMember<Opts extends Options<t.EnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumMember & Opts;\nexport function isEnumMember<Opts extends Options<t.EnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(node: t.Node | null | undefined): node is t.JSX;\nexport function isJSX<Opts extends Options<t.JSX>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSX & Opts;\nexport function isJSX<Opts extends Options<t.JSX>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXEmptyExpression\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXIdentifier\":\n case \"JSXMemberExpression\":\n case \"JSXNamespacedName\":\n case \"JSXOpeningElement\":\n case \"JSXSpreadAttribute\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n node: t.Node | null | undefined,\n): node is t.Miscellaneous;\nexport function isMiscellaneous<Opts extends Options<t.Miscellaneous>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Miscellaneous & Opts;\nexport function isMiscellaneous<Opts extends Options<t.Miscellaneous>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Placeholder\":\n case \"V8IntrinsicIdentifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(node: t.Node | null | undefined): node is t.Accessor;\nexport function isAccessor<Opts extends Options<t.Accessor>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Accessor & Opts;\nexport function isAccessor<Opts extends Options<t.Accessor>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n node: t.Node | null | undefined,\n): node is t.TypeScript;\nexport function isTypeScript<Opts extends Options<t.TypeScript>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeScript & Opts;\nexport function isTypeScript<Opts extends Options<t.TypeScript>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSParameterProperty\":\n case \"TSDeclareFunction\":\n case \"TSDeclareMethod\":\n case \"TSQualifiedName\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSNamedTupleMember\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSInterfaceDeclaration\":\n case \"TSInterfaceBody\":\n case \"TSTypeAliasDeclaration\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSEnumBody\":\n case \"TSEnumDeclaration\":\n case \"TSEnumMember\":\n case \"TSModuleDeclaration\":\n case \"TSModuleBlock\":\n case \"TSImportType\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExternalModuleReference\":\n case \"TSNonNullExpression\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n case \"TSTypeAnnotation\":\n case \"TSTypeParameterInstantiation\":\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameter\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n node: t.Node | null | undefined,\n): node is t.TSTypeElement;\nexport function isTSTypeElement<Opts extends Options<t.TSTypeElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeElement & Opts;\nexport function isTSTypeElement<Opts extends Options<t.TSTypeElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(node: t.Node | null | undefined): node is t.TSType;\nexport function isTSType<Opts extends Options<t.TSType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSType & Opts;\nexport function isTSType<Opts extends Options<t.TSType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSImportType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n node: t.Node | null | undefined,\n): node is t.TSBaseType;\nexport function isTSBaseType<Opts extends Options<t.TSBaseType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBaseType & Opts;\nexport function isTSBaseType<Opts extends Options<t.TSBaseType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(node: t.Node | null | undefined): boolean;\nexport function isNumberLiteral<Opts extends Options<t.NumberLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isNumberLiteral<Opts extends Options<t.NumberLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n if (!node) return false;\n\n if (node.type !== \"NumberLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(node: t.Node | null | undefined): boolean;\nexport function isRegexLiteral<Opts extends Options<t.RegexLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isRegexLiteral<Opts extends Options<t.RegexLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n if (!node) return false;\n\n if (node.type !== \"RegexLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(node: t.Node | null | undefined): boolean;\nexport function isRestProperty<Opts extends Options<t.RestProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isRestProperty<Opts extends Options<t.RestProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isRestProperty\", \"isRestElement\");\n if (!node) return false;\n\n if (node.type !== \"RestProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(node: t.Node | null | undefined): boolean;\nexport function isSpreadProperty<Opts extends Options<t.SpreadProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isSpreadProperty<Opts extends Options<t.SpreadProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n if (!node) return false;\n\n if (node.type !== \"SpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration<Opts extends Options<t.ModuleDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportOrExportDeclaration & Opts {\n deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n return isImportOrExportDeclaration(node, opts);\n}\n","import {\n isIdentifier,\n isMetaProperty,\n isMemberExpression,\n isPrivateName,\n isStringLiteral,\n isSuper,\n isThisExpression,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nfunction isMemberExpressionLike(\n node: t.Node | undefined | null,\n): node is t.MemberExpression | t.MetaProperty {\n return isMemberExpression(node) || isMetaProperty(node);\n}\n\n/**\n * Determines whether or not the input node `member` matches the\n * input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function matchesPattern(\n member: t.Node | null | undefined,\n match: string | string[],\n allowPartial?: boolean,\n): boolean {\n // not a member expression\n if (!isMemberExpressionLike(member)) return false;\n\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n\n let node;\n for (\n node = member;\n isMemberExpressionLike(node);\n node = (node as t.MemberExpression).object ?? (node as t.MetaProperty).meta\n ) {\n nodes.push(node.property);\n }\n nodes.push(node);\n\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if (isIdentifier(node)) {\n value = node.name;\n } else if (isStringLiteral(node)) {\n value = node.value;\n } else if (isThisExpression(node)) {\n value = \"this\";\n } else if (isSuper(node)) {\n value = \"super\";\n } else if (isPrivateName(node)) {\n value = \"#\" + node.id.name;\n } else {\n return false;\n }\n\n if (parts[i] !== value) return false;\n }\n\n return true;\n}\n","import matchesPattern from \"./matchesPattern.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Build a function that when called will return whether or not the\n * input `node` `MemberExpression` matches the input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function buildMatchMemberExpression(\n match: string,\n allowPartial?: boolean,\n) {\n const parts = match.split(\".\");\n\n return (member: t.Node) => matchesPattern(member, parts, allowPartial);\n}\n","import buildMatchMemberExpression from \"../buildMatchMemberExpression.ts\";\n\nconst isReactComponent = buildMatchMemberExpression(\"React.Component\");\n\nexport default isReactComponent;\n","export default function isCompatTag(tagName?: string | null): boolean {\n // Must start with a lowercase ASCII letter\n return !!tagName && /^[a-z]/.test(tagName);\n}\n","import { FLIPPED_ALIAS_KEYS, ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isType<T extends t.Node[\"type\"]>(\n nodeType: string,\n targetType: T,\n): nodeType is T;\n\nexport default function isType(\n nodeType: string | null | undefined,\n targetType: string,\n): boolean;\n\n/**\n * Test if a `nodeType` is a `targetType` or if `targetType` is an alias of `nodeType`.\n */\nexport default function isType(\n nodeType: string | null | undefined,\n targetType: string,\n): boolean {\n if (nodeType === targetType) return true;\n\n // If nodeType is nullish, it can't be an alias of targetType.\n if (nodeType == null) return false;\n\n // This is a fast-path. If the test above failed, but an alias key is found, then the\n // targetType was a primary node type, so there's no need to check the aliases.\n // @ts-expect-error targetType may not index ALIAS_KEYS\n if (ALIAS_KEYS[targetType]) return false;\n\n const aliases: string[] | undefined = FLIPPED_ALIAS_KEYS[targetType];\n if (aliases?.includes(nodeType)) return true;\n\n return false;\n}\n","import { PLACEHOLDERS_ALIAS } from \"../definitions/index.ts\";\n\n/**\n * Test if a `placeholderType` is a `targetType` or if `targetType` is an alias of `placeholderType`.\n */\nexport default function isPlaceholderType(\n placeholderType: string,\n targetType: string,\n): boolean {\n if (placeholderType === targetType) return true;\n\n const aliases: string[] | undefined = PLACEHOLDERS_ALIAS[placeholderType];\n if (aliases?.includes(targetType)) return true;\n\n return false;\n}\n","import shallowEqual from \"../utils/shallowEqual.ts\";\nimport isType from \"./isType.ts\";\nimport isPlaceholderType from \"./isPlaceholderType.ts\";\nimport { FLIPPED_ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function is<T extends t.Node[\"type\"]>(\n type: T,\n node: t.Node | null | undefined,\n opts?: undefined,\n): node is Extract<t.Node, { type: T }>;\n\nexport default function is<\n T extends t.Node[\"type\"],\n P extends Extract<t.Node, { type: T }>,\n>(type: T, n: t.Node | null | undefined, required: Partial<P>): n is P;\n\nexport default function is<P extends t.Node>(\n type: string,\n node: t.Node | null | undefined,\n opts: Partial<P>,\n): node is P;\n\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node;\n/**\n * Returns whether `node` is of given `type`.\n *\n * For better performance, use this instead of `is[Type]` when `type` is unknown.\n */\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node {\n if (!node) return false;\n\n const matches = isType(node.type, type);\n if (!matches) {\n if (!opts && node.type === \"Placeholder\" && type in FLIPPED_ALIAS_KEYS) {\n // We can only return true if the placeholder doesn't replace a real node,\n // but it replaces a category of nodes (an alias).\n //\n // t.is(\"Identifier\", node) gives some guarantees about node's shape, so we\n // can't say that Placeholder(expectedNode: \"Identifier\") is an identifier\n // because it doesn't have the same properties.\n // On the other hand, t.is(\"Expression\", node) doesn't say anything about\n // the shape of node because Expression can be many different nodes: we can,\n // and should, safely report expression placeholders as Expressions.\n return isPlaceholderType(node.expectedNode, type);\n }\n return false;\n }\n\n if (opts === undefined) {\n return true;\n } else {\n return shallowEqual(node, opts);\n }\n}\n","import {\n isIdentifierName,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\n/**\n * Check if the input `name` is a valid identifier name\n * and isn't a reserved word.\n */\nexport default function isValidIdentifier(\n name: string,\n reserved: boolean = true,\n): boolean {\n if (typeof name !== \"string\") return false;\n\n if (reserved) {\n // \"await\" is invalid in module, valid in script; better be safe (see #4952)\n if (isKeyword(name) || isStrictReservedWord(name, true)) {\n return false;\n }\n }\n\n return isIdentifierName(name);\n}\n","export const STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nexport const FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nexport const FOR_INIT_KEYS = [\"left\", \"init\"];\nexport const COMMENT_KEYS = [\n \"leadingComments\",\n \"trailingComments\",\n \"innerComments\",\n] as const;\n\nexport const LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nexport const UPDATE_OPERATORS = [\"++\", \"--\"];\n\nexport const BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nexport const EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nexport const COMPARISON_BINARY_OPERATORS = [\n ...EQUALITY_BINARY_OPERATORS,\n \"in\",\n \"instanceof\",\n];\nexport const BOOLEAN_BINARY_OPERATORS = [\n ...COMPARISON_BINARY_OPERATORS,\n ...BOOLEAN_NUMBER_BINARY_OPERATORS,\n];\nexport const NUMBER_BINARY_OPERATORS = [\n \"-\",\n \"/\",\n \"%\",\n \"*\",\n \"**\",\n \"&\",\n \"|\",\n \">>\",\n \">>>\",\n \"<<\",\n \"^\",\n];\nexport const BINARY_OPERATORS = [\n \"+\",\n ...NUMBER_BINARY_OPERATORS,\n ...BOOLEAN_BINARY_OPERATORS,\n \"|>\",\n];\n\nexport const ASSIGNMENT_OPERATORS = [\n \"=\",\n \"+=\",\n ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"),\n ...LOGICAL_OPERATORS.map(op => op + \"=\"),\n];\n\nexport const BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nexport const NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nexport const STRING_UNARY_OPERATORS = [\"typeof\"];\nexport const UNARY_OPERATORS = [\n \"void\",\n \"throw\",\n ...BOOLEAN_UNARY_OPERATORS,\n ...NUMBER_UNARY_OPERATORS,\n ...STRING_UNARY_OPERATORS,\n];\n\nexport const INHERIT_KEYS = {\n optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n force: [\"start\", \"loc\", \"end\"],\n} as const;\n","import is from \"../validators/is.ts\";\nimport { validateField, validateChild } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions<any>> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator<any>> = {};\nexport const NODE_UNION_SHAPES__PRIVATE: Record<string, UnionShape<any>> = {};\n\nfunction getType(val: any) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions<T extends t.Node> = Record<string, FieldOptions<T>>;\n\ntype UnionShape<T extends t.Node> = {\n discriminator: string;\n shapes: {\n name: string;\n value: any[];\n properties: Record<string, FieldOptions<T>>;\n }[];\n};\n\ntype DefineTypeOpts<T extends t.Node> = {\n fields?: FieldDefinitions<NoInfer<T>>;\n visitor?: string[];\n aliases?: string[];\n builder?: string[];\n inherits?: NodeTypes;\n deprecatedAlias?: string;\n validate?: Validator<NoInfer<T>>;\n unionShape?: UnionShape<NoInfer<T>>;\n};\n\nexport type ValidatorImpl<T extends t.Node> = (\n node: T,\n key: string | { toString(): string },\n val: any,\n) => void;\n\nexport type ValidatorType<T extends t.Node> = {\n type: PrimitiveTypes;\n} & ValidatorImpl<T>;\nexport type ValidatorEach<T extends t.Node> = {\n each: Validator<T>;\n} & ValidatorImpl<T>;\nexport type ValidatorChainOf<T extends t.Node> = {\n chainOf: readonly Validator<T>[];\n} & ValidatorImpl<T>;\nexport type ValidatorOneOf<T extends t.Node> = {\n oneOf: readonly any[];\n} & ValidatorImpl<T>;\nexport type ValidatorOneOfNodeTypes<T extends t.Node> = {\n oneOfNodeTypes: readonly NodeTypes[];\n} & ValidatorImpl<T>;\nexport type ValidatorOneOfNodeOrValueTypes<T extends t.Node> = {\n oneOfNodeOrValueTypes: readonly (NodeTypes | PrimitiveTypes)[];\n} & ValidatorImpl<T>;\nexport type ValidatorShapeOf<T extends t.Node> = {\n shapeOf: Record<string, FieldOptions<T>>;\n} & ValidatorImpl<T>;\n\nexport type Validator<T extends t.Node> =\n | ValidatorType<T>\n | ValidatorEach<T>\n | ValidatorChainOf<T>\n | ValidatorOneOf<T>\n | ValidatorOneOfNodeTypes<T>\n | ValidatorOneOfNodeOrValueTypes<T>\n | ValidatorShapeOf<T>\n | ValidatorImpl<T>;\n\nexport type FieldOptions<T extends t.Node> = {\n default?: string | number | boolean | [] | null;\n optional?: boolean;\n deprecated?: boolean;\n validate?: Validator<T>;\n};\n\nexport function combine<T extends t.Node>(\n fn: ValidatorImpl<T>,\n ...validators: (\n | {\n type: PrimitiveTypes;\n }\n | { each: Validator<T> }\n | { chainOf: readonly Validator<T>[] }\n | { oneOf: readonly any[] }\n | { oneOfNodeTypes: readonly NodeTypes[] }\n | { oneOfNodeOrValueTypes: readonly (NodeTypes | PrimitiveTypes)[] }\n | { shapeOf: Record<string, FieldOptions<T>> }\n )[]\n): Validator<T> {\n return Object.assign(fn, ...validators);\n}\n\nexport function validate<T extends t.Node>(\n validate: Validator<T>,\n): FieldOptions<T> {\n return { validate };\n}\n\nexport function validateType(...typeNames: NodeTypes[]) {\n return validate(assertNodeType(...typeNames));\n}\n\nexport function validateOptional<T extends t.Node>(\n validate: Validator<T>,\n): FieldOptions<T> {\n return { validate, optional: true };\n}\n\nexport function validateDefault<T extends t.Node>(\n validate: Validator<T>,\n defaultValue: any,\n): FieldOptions<T> {\n return { validate, default: defaultValue, optional: false };\n}\n\nexport function validateOptionalType(\n ...typeNames: NodeTypes[]\n): FieldOptions<t.Node> {\n return { validate: assertNodeType(...typeNames), optional: true };\n}\n\nexport function arrayOf<T extends t.Node>(\n elementType: Validator<T>,\n): Validator<T> {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(...typeNames: NodeTypes[]) {\n return arrayOf(assertNodeType(...typeNames));\n}\n\nexport function validateArrayOfType(...typeNames: NodeTypes[]) {\n return validate(arrayOfType(...typeNames));\n}\n\nexport function assertEach<T extends t.Node>(\n callback: Validator<T>,\n): Validator<T> {\n const childValidator = validateChild;\n function validator(node: T, key: string | { toString(): string }, val: any) {\n if (!Array.isArray(val)) return;\n\n let i = 0;\n // We lazily concatenate strings here for performance reasons.\n // Concatenating the strings is expensive because we are actually concatenating a string and a number,\n // so V8 cannot just create a \"rope string\" but has to allocate memory for the string resulting from the number\n // This string is very rarely used, only in error paths, so we can skip the concatenation cost in most cases\n const subKey = {\n toString() {\n return `${key}[${i}]`;\n },\n };\n\n for (; i < val.length; i++) {\n const v = val[i];\n callback(node, subKey, v);\n childValidator(node, subKey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\n\nexport function assertOneOf<T extends t.Node>(...values: any[]): Validator<T> {\n function validate(node: T, key: string | { toString(): string }, val: any) {\n if (!values.includes(val)) {\n throw new TypeError(\n `Property ${key} expected value to be one of ${JSON.stringify(\n values,\n )} but got ${JSON.stringify(val)}`,\n );\n }\n }\n\n validate.oneOf = values;\n\n return validate;\n}\n\nexport const allExpandedTypes: {\n types: NodeTypes[];\n set: Set<string>;\n}[] = [];\n\nexport function assertNodeType<T extends t.Node>(\n ...types: NodeTypes[]\n): Validator<T> {\n const expandedTypes = new Set<string>();\n\n allExpandedTypes.push({ types, set: expandedTypes });\n\n function validate(node: T, key: string | { toString(): string }, val: any) {\n const valType = val?.type;\n if (valType != null) {\n if (expandedTypes.has(valType)) {\n validateChild(node, key, val);\n return;\n }\n if (valType === \"Placeholder\") {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(valType)}`,\n );\n }\n\n validate.oneOfNodeTypes = types;\n\n return validate;\n}\n\nexport function assertNodeOrValueType<T extends t.Node>(\n ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator<T> {\n function validate(node: T, key: string | { toString(): string }, val: any) {\n const primitiveType = getType(val);\n for (const type of types) {\n if (primitiveType === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeOrValueTypes = types;\n\n return validate;\n}\n\nexport function assertValueType<T extends t.Node>(\n type: PrimitiveTypes,\n): Validator<T> {\n function validate(node: T, key: string | { toString(): string }, val: any) {\n if (getType(val) === type) {\n return;\n }\n\n throw new TypeError(\n `Property ${key} expected type of ${type} but got ${getType(val)}`,\n );\n }\n\n validate.type = type;\n\n return validate;\n}\n\nexport function assertShape<T extends t.Node>(\n shape: Record<string, FieldOptions<T>>,\n): Validator<T> {\n const keys = Object.keys(shape);\n function validate(node: T, key: string | { toString(): string }, val: any) {\n const errors = [];\n for (const property of keys) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected to have the following:\\n${errors.join(\"\\n\")}`,\n );\n }\n }\n\n validate.shapeOf = shape;\n\n return validate;\n}\n\nexport function assertOptionalChainStart<T extends t.Node>(): Validator<T> {\n function validate(node: t.Node) {\n let current = node;\n while (node) {\n const { type } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n\n break;\n }\n\n throw new TypeError(\n `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n );\n }\n\n return validate;\n}\n\nexport function chain<T extends t.Node>(...fns: Validator<T>[]): Validator<T> {\n function validate(...args: Parameters<Validator<T>>) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n\n if (\n fns.length >= 2 &&\n \"type\" in fns[0] &&\n fns[0].type === \"array\" &&\n !(\"each\" in fns[1])\n ) {\n throw new Error(\n `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n );\n }\n\n return validate;\n}\n\nconst validTypeOpts = new Set([\n \"aliases\",\n \"builder\",\n \"deprecatedAlias\",\n \"fields\",\n \"inherits\",\n \"visitor\",\n \"validate\",\n \"unionShape\",\n]);\nconst validFieldKeys = new Set([\n \"default\",\n \"optional\",\n \"deprecated\",\n \"validate\",\n]);\n\nconst store: Record<string, DefineTypeOpts<any>> = {};\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n return <T extends t.Node[\"type\"]>(\n type: T,\n opts: DefineTypeOpts<Extract<t.Node, { type: T }>> = {},\n ) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n defineType(type, opts);\n };\n}\n\nexport default function defineType<T extends t.Node[\"type\"]>(\n type: T,\n opts: DefineTypeOpts<Extract<t.Node, { type: T }>> = {},\n) {\n const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n const visitor: string[] = opts.visitor || inherits.visitor || [];\n const aliases: string[] = opts.aliases || inherits.aliases || [];\n const builder: string[] =\n opts.builder || inherits.builder || opts.visitor || [];\n\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (\n Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n ) {\n throw new Error(\n \"field defaults can only be primitives or empty arrays currently\",\n );\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n deprecated: field.deprecated,\n validate: field.validate,\n };\n }\n }\n }\n\n for (const k of Object.keys(opts)) {\n if (!validTypeOpts.has(k)) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type;\n }\n\n // ensure all field keys are represented in `fields`\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n\n if (field.default === null) {\n field.optional ??= true;\n }\n if (field.default === undefined) {\n field.default = null;\n field.optional ??= false;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n\n for (const k of Object.keys(field)) {\n if (!validFieldKeys.has(k)) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type);\n });\n\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n if (opts.unionShape) {\n NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;\n }\n\n store[type] = opts;\n}\n","import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n BINARY_OPERATORS,\n LOGICAL_OPERATORS,\n ASSIGNMENT_OPERATORS,\n UNARY_OPERATORS,\n UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n defineAliasedType,\n assertShape,\n assertOptionalChainStart,\n assertValueType,\n assertNodeType,\n assertNodeOrValueType,\n assertEach,\n chain,\n assertOneOf,\n validateOptional,\n arrayOf,\n arrayOfType,\n validateArrayOfType,\n validateType,\n combine,\n} from \"./utils.ts\";\n\nexport const classMethodOrPropertyUnionShapeCommon = (\n allowPrivateName = false,\n) => ({\n unionShape: {\n discriminator: \"computed\",\n shapes: [\n {\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: allowPrivateName\n ? assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n )\n : assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n ),\n },\n },\n },\n ],\n },\n});\n\nexport const memberExpressionUnionShapeCommon = {\n unionShape: {\n discriminator: \"computed\",\n shapes: [\n {\n name: \"computed\",\n value: [true],\n properties: {\n property: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n {\n name: \"nonComputed\",\n value: [false],\n properties: {\n property: {\n validate: assertNodeType(\"Identifier\", \"PrivateName\"),\n },\n },\n },\n ],\n },\n};\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n fields: {\n elements: {\n validate: arrayOf(\n assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n ),\n default: undefined,\n },\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n fields: {\n operator: {\n validate: combine(\n (function () {\n const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n const pattern = assertOneOf(\"=\");\n\n return function (node, key, val) {\n const validator = is(\"Pattern\", node.left) ? pattern : identifier;\n validator(node, key, val);\n };\n })(),\n { oneOf: ASSIGNMENT_OPERATORS },\n ),\n },\n left: {\n validate: assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"OptionalMemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n fields: {\n operator: {\n validate: assertOneOf(...BINARY_OPERATORS),\n },\n left: {\n validate: (function () {\n const expression = assertNodeType(\"Expression\");\n const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n const validator = combine(\n function (node: t.BinaryExpression, key, val) {\n const validator = node.operator === \"in\" ? inOp : expression;\n validator(node, key, val);\n },\n { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n );\n return validator;\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n unionShape: {\n discriminator: \"operator\",\n shapes: [\n {\n name: \"in\",\n value: [\"in\"],\n properties: {\n left: {\n validate: assertNodeType(\"Expression\", \"PrivateName\"),\n },\n },\n },\n {\n name: \"notIn\",\n value: BINARY_OPERATORS.filter(op => op !== \"in\"),\n properties: {\n left: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n ],\n },\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"Directive\", {\n visitor: [\"value\"],\n fields: {\n value: {\n validate: assertNodeType(\"DirectiveLiteral\"),\n },\n },\n});\n\ndefineType(\"DirectiveLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"BlockStatement\", {\n builder: [\"body\", \"directives\"],\n visitor: [\"directives\", \"body\"],\n fields: {\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: [],\n },\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n visitor: [\"callee\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\n \"Expression\",\n \"Super\",\n \"Import\",\n \"V8IntrinsicIdentifier\",\n ),\n },\n arguments: validateArrayOfType(\n \"Expression\",\n \"SpreadElement\",\n \"ArgumentPlaceholder\",\n ),\n typeArguments: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"CatchClause\", {\n visitor: [\"param\", \"body\"],\n fields: {\n param: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Expression\"),\n },\n alternate: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n builder: [\"test\", \"body\"],\n visitor: [\"body\", \"test\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n builder: [\"program\", \"comments\", \"tokens\"],\n visitor: [\"program\"],\n fields: {\n program: {\n validate: assertNodeType(\"Program\"),\n },\n comments: {\n validate: assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n optional: true,\n },\n tokens: {\n // todo(ts): add Token type\n validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForInStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate: assertNodeType(\n \"VariableDeclaration\",\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"ForStatement\", {\n visitor: [\"init\", \"test\", \"update\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n fields: {\n init: {\n validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n optional: true,\n },\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n update: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\nexport const functionCommon = () => ({\n params: validateArrayOfType(\"FunctionParameter\"),\n generator: {\n default: false,\n },\n async: {\n default: false,\n },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n returnType: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n ),\n\n optional: true,\n },\n});\n\nexport const functionDeclarationCommon = () => ({\n ...functionCommon(),\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true, // May be null for `export default function`\n },\n});\n\ndefineType(\"FunctionDeclaration\", {\n builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n visitor: [\n \"id\",\n \"typeParameters\",\n \"params\",\n \"predicate\",\n \"returnType\",\n \"body\",\n ],\n fields: {\n ...functionDeclarationCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true,\n },\n },\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Statement\",\n \"Pureish\",\n \"Declaration\",\n ],\n validate: (function () {\n const identifier = assertNodeType(\"Identifier\");\n\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\ndefineType(\"FunctionExpression\", {\n inherits: \"FunctionDeclaration\",\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true,\n },\n },\n});\n\nexport const patternLikeCommon = () => ({\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n\n optional: true,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n});\n\ndefineType(\"Identifier\", {\n builder: [\"name\"],\n visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n aliases: [\n \"Expression\",\n \"FunctionParameter\",\n \"PatternLike\",\n \"LVal\",\n \"TSEntityName\",\n ],\n fields: {\n ...patternLikeCommon(),\n name: {\n validate: chain(\n assertValueType(\"string\"),\n combine(\n function (node, key, val) {\n if (!isValidIdentifier(val, false)) {\n throw new TypeError(`\"${val}\" is not a valid identifier name`);\n }\n },\n { type: \"string\" },\n ),\n ),\n },\n },\n validate: function (parent, key, node) {\n const match = /\\.(\\w+)$/.exec(key.toString());\n if (!match) return;\n\n const [, parentKey] = match;\n const nonComp = { computed: false };\n\n // We can't check if `parent.property === node`, because nodes are validated\n // before replacing them in the AST.\n if (parentKey === \"property\") {\n if (is(\"MemberExpression\", parent, nonComp)) return;\n if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n } else if (parentKey === \"key\") {\n if (is(\"Property\", parent, nonComp)) return;\n if (is(\"Method\", parent, nonComp)) return;\n } else if (parentKey === \"exported\") {\n if (is(\"ExportSpecifier\", parent)) return;\n } else if (parentKey === \"imported\") {\n if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n } else if (parentKey === \"meta\") {\n if (is(\"MetaProperty\", parent, { meta: node })) return;\n }\n\n if (\n // Ideally we should call isStrictReservedWord if this node is a descendant\n // of a block in strict mode. Also, we should pass the inModule option so\n // we can disable \"await\" in module.\n (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n // Even if \"this\" is a keyword, we are using the Identifier\n // node to represent it.\n node.name !== \"this\"\n ) {\n throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n }\n },\n});\n\ndefineType(\"IfStatement\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n aliases: [\"Statement\", \"Conditional\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Statement\"),\n },\n alternate: {\n optional: true,\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"LabeledStatement\", {\n visitor: [\"label\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"StringLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n builder: [\"value\"],\n deprecatedAlias: \"NumberLiteral\",\n fields: {\n value: {\n validate: chain(\n assertValueType(\"number\"),\n combine(\n function (node, key, val) {\n if (1 / val < 0 || !Number.isFinite(val)) {\n const error = new Error(\n \"NumericLiterals must be non-negative finite numbers. \" +\n `You can use t.valueToNode(${val}) instead.`,\n );\n\n // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n // numbers here.\n if (!IS_STANDALONE) {\n if (!new Error().stack!.includes(\"regenerator\")) {\n throw error;\n }\n }\n }\n },\n { type: \"number\" },\n ),\n ),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"boolean\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n builder: [\"pattern\", \"flags\"],\n deprecatedAlias: \"RegexLiteral\",\n aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n fields: {\n pattern: {\n validate: assertValueType(\"string\"),\n },\n flags: {\n validate: chain(\n assertValueType(\"string\"),\n combine(\n function (node, key, val) {\n const invalid = /[^dgimsuvy]/.exec(val);\n if (invalid) {\n throw new TypeError(`\"${invalid[0]}\" is not a valid RegExp flag`);\n }\n },\n { type: \"string\" },\n ),\n ),\n default: \"\",\n },\n },\n});\n\ndefineType(\"LogicalExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n fields: {\n operator: {\n validate: assertOneOf(...LOGICAL_OPERATORS),\n },\n left: {\n validate: assertNodeType(\"Expression\"),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"MemberExpression\", {\n builder: [\"object\", \"property\", \"computed\"],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n ...memberExpressionUnionShapeCommon,\n fields: {\n object: {\n validate: assertNodeType(\"Expression\", \"Super\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n\n const validator = combine(\n function (node: t.MemberExpression, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n },\n {\n oneOfNodeTypes: [\"Expression\", \"Identifier\", \"PrivateName\"],\n },\n );\n return validator;\n })(),\n },\n computed: {\n default: false,\n },\n },\n});\n\ndefineType(\"NewExpression\", {\n inherits: \"CallExpression\",\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n arguments: validateArrayOfType(\n \"Expression\",\n \"SpreadElement\",\n \"ArgumentPlaceholder\",\n ),\n typeArguments: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"Program\", {\n // Note: We explicitly leave 'interpreter' out here because it is\n // conceptually comment-like, and Babel does not traverse comments either.\n visitor: [\"directives\", \"body\"],\n builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n fields: {\n sourceType: {\n validate: assertOneOf(\"script\", \"module\"),\n default: \"script\",\n },\n interpreter: {\n validate: assertNodeType(\"InterpreterDirective\"),\n default: null,\n optional: true,\n },\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: [],\n },\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: validateArrayOfType(\n \"ObjectMethod\",\n \"ObjectProperty\",\n \"SpreadElement\",\n ),\n },\n});\n\ndefineType(\"ObjectMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n },\n\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n const validator = combine(\n function (node: t.ObjectMethod, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n },\n {\n oneOfNodeTypes: [\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n ],\n },\n );\n return validator;\n })(),\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n aliases: [\n \"UserWhitespacable\",\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"ObjectMember\",\n ],\n});\n\ndefineType(\"ObjectProperty\", {\n builder: [\"key\", \"value\", \"computed\", \"shorthand\"],\n ...classMethodOrPropertyUnionShapeCommon(true),\n fields: {\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n );\n\n const computed = assertNodeType(\"Expression\");\n\n const validator = combine(\n function (node: t.ObjectProperty, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n },\n {\n oneOfNodeTypes: [\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n ],\n },\n );\n return validator;\n })(),\n },\n value: {\n // Value may be PatternLike if this is an AssignmentProperty\n // https://github.com/babel/babylon/issues/434\n validate: assertNodeType(\"Expression\", \"PatternLike\"),\n },\n shorthand: {\n validate: chain(\n assertValueType(\"boolean\"),\n combine(\n function (node: t.ObjectProperty, key, shorthand) {\n if (!shorthand) return;\n\n if (node.computed) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n );\n }\n\n if (!is(\"Identifier\", node.key)) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n );\n }\n },\n { type: \"boolean\" },\n ),\n ),\n default: false,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n visitor: [\"decorators\", \"key\", \"value\"],\n aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n validate: (function () {\n const pattern = assertNodeType(\n \"Identifier\",\n \"Pattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSNonNullExpression\",\n \"TSTypeAssertion\",\n );\n const expression = assertNodeType(\"Expression\");\n\n return function (parent, key, node) {\n const validator = is(\"ObjectPattern\", parent) ? pattern : expression;\n validator(node, \"value\", node.value);\n };\n })(),\n});\n\ndefineType(\"RestElement\", {\n visitor: [\"argument\", \"typeAnnotation\"],\n builder: [\"argument\"],\n aliases: [\"FunctionParameter\", \"PatternLike\"],\n deprecatedAlias: \"RestProperty\",\n fields: {\n ...patternLikeCommon(),\n argument: {\n validate: assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n },\n validate: function (parent, key) {\n const match = /(\\w+)\\[(\\d+)\\]/.exec(key.toString());\n if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n const [, listKey, index] = match as unknown as [\n string,\n keyof typeof parent,\n string,\n ];\n if ((parent[listKey] as t.Node[]).length > +index + 1) {\n throw new TypeError(`RestElement must be last element of ${listKey}`);\n }\n },\n});\n\ndefineType(\"ReturnStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"SequenceExpression\", {\n visitor: [\"expressions\"],\n fields: {\n expressions: validateArrayOfType(\"Expression\"),\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n visitor: [\"expression\"],\n aliases: [\"Expression\", \"ExpressionWrapper\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"SwitchCase\", {\n visitor: [\"test\", \"consequent\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n consequent: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"SwitchStatement\", {\n visitor: [\"discriminant\", \"cases\"],\n aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n fields: {\n discriminant: {\n validate: assertNodeType(\"Expression\"),\n },\n cases: validateArrayOfType(\"SwitchCase\"),\n },\n});\n\ndefineType(\"ThisExpression\", {\n aliases: [\"Expression\", \"TSEntityName\"],\n});\n\ndefineType(\"ThrowStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"TryStatement\", {\n visitor: [\"block\", \"handler\", \"finalizer\"],\n aliases: [\"Statement\"],\n fields: {\n block: {\n validate: chain(\n assertNodeType(\"BlockStatement\"),\n combine(\n function (node: t.TryStatement) {\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (!node.handler && !node.finalizer) {\n throw new TypeError(\n \"TryStatement expects either a handler or finalizer, or both\",\n );\n }\n },\n { oneOfNodeTypes: [\"BlockStatement\"] },\n ),\n ),\n },\n handler: {\n optional: true,\n validate: assertNodeType(\"CatchClause\"),\n },\n finalizer: {\n optional: true,\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"UnaryExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: true,\n },\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n operator: {\n validate: assertOneOf(...UNARY_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: false,\n },\n argument: {\n validate: assertNodeType(\"Identifier\", \"MemberExpression\"),\n },\n operator: {\n validate: assertOneOf(...UPDATE_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n builder: [\"kind\", \"declarations\"],\n visitor: [\"declarations\"],\n aliases: [\"Statement\", \"Declaration\"],\n fields: {\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n kind: {\n validate: assertOneOf(\n \"var\",\n \"let\",\n \"const\",\n // https://github.com/tc39/proposal-explicit-resource-management\n \"using\",\n // https://github.com/tc39/proposal-async-explicit-resource-management\n \"await using\",\n ),\n },\n declarations: validateArrayOfType(\"VariableDeclarator\"),\n },\n validate: (() => {\n const withoutInit = assertNodeType(\"Identifier\", \"Placeholder\");\n const constOrLetOrVar = assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"Placeholder\",\n );\n const usingOrAwaitUsing = assertNodeType(\n \"Identifier\",\n \"VoidPattern\",\n \"Placeholder\",\n );\n\n return function (parent, key, node: t.VariableDeclaration) {\n const { kind, declarations } = node;\n const parentIsForX = is(\"ForXStatement\", parent, { left: node });\n if (parentIsForX) {\n if (declarations.length !== 1) {\n throw new TypeError(\n `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n );\n }\n }\n for (const decl of declarations) {\n if (kind === \"const\" || kind === \"let\" || kind === \"var\") {\n if (!parentIsForX && !decl.init) {\n withoutInit(decl, \"id\", decl.id);\n } else {\n constOrLetOrVar(decl, \"id\", decl.id);\n }\n } else {\n usingOrAwaitUsing(decl, \"id\", decl.id);\n }\n }\n };\n })(),\n});\n\ndefineType(\"VariableDeclarator\", {\n visitor: [\"id\", \"init\"],\n fields: {\n id: {\n validate: assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"VoidPattern\",\n ),\n },\n definite: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n init: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"WhileStatement\", {\n visitor: [\"test\", \"body\"],\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"WithStatement\", {\n visitor: [\"object\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n builder: [\"left\", \"right\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\"],\n fields: {\n ...patternLikeCommon(),\n left: {\n validate: assertNodeType(\n \"Identifier\",\n \"ObjectPattern\",\n \"ArrayPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n // For TypeScript\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ArrayPattern\", {\n visitor: [\"elements\", \"typeAnnotation\"],\n builder: [\"elements\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n elements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeOrValueType(\"null\", \"PatternLike\")),\n ),\n },\n },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n builder: [\"params\", \"body\", \"async\"],\n visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n generator: {\n // NOTE: This is not actually supported by arrow function, but since it\n // comes from functionCommon() also supporting it as a field here in the\n // type definitions makes usage of t.Function simpler.\n // Make it optional at least, defaulting to `null`.\n default: null,\n optional: true,\n validate: combine(\n (node, key, val) => {\n if (val) {\n throw new TypeError(\n \"ArrowFunctionExpression cannot be a generator\",\n );\n }\n },\n { type: \"boolean\" },\n ),\n },\n ...functionTypeAnnotationCommon(),\n expression: {\n // https://github.com/babel/babylon/issues/505\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\n \"ClassMethod\",\n \"ClassPrivateMethod\",\n \"ClassProperty\",\n \"ClassPrivateProperty\",\n \"ClassAccessorProperty\",\n \"TSDeclareMethod\",\n \"TSIndexSignature\",\n \"StaticBlock\",\n ),\n },\n});\n\ndefineType(\"ClassExpression\", {\n builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n visitor: [\n \"decorators\",\n \"id\",\n \"typeParameters\",\n \"superClass\",\n \"superTypeArguments\",\n \"mixins\",\n \"implements\",\n \"body\",\n ],\n aliases: [\"Scopable\", \"Class\", \"Expression\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n ),\n\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n [\"superTypeArguments\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: arrayOfType(\"TSClassImplements\", \"ClassImplements\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassDeclaration\", {\n inherits: \"ClassExpression\",\n aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n // The id may be omitted if this is the child of an\n // ExportDefaultDeclaration.\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n ),\n\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n [\"superTypeArguments\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: arrayOfType(\"TSClassImplements\", \"ClassImplements\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n },\n validate: (function () {\n const identifier = assertNodeType(\"Identifier\");\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\nexport const importAttributes = {\n attributes: {\n optional: true,\n validate: arrayOfType(\"ImportAttribute\"),\n },\n};\n\ndefineType(\"ExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n visitor: [\"declaration\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: validateType(\n \"FunctionDeclaration\",\n \"ClassDeclaration\",\n \"Expression\",\n \"TSDeclareFunction\",\n \"TSInterfaceDeclaration\",\n \"EnumDeclaration\",\n ),\n exportKind: validateOptional(assertOneOf(\"value\")),\n },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n builder: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: {\n optional: true,\n validate: chain(\n assertNodeType(\"Declaration\"),\n combine(\n function (node: t.ExportNamedDeclaration, key, val) {\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.specifiers.length) {\n throw new TypeError(\n \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n );\n }\n\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.source) {\n throw new TypeError(\"Cannot export a declaration from a source\");\n }\n },\n {\n oneOfNodeTypes: [\n \"VariableDeclaration\",\n \"FunctionDeclaration\",\n \"ClassDeclaration\",\n \"TSDeclareFunction\",\n \"TSEnumDeclaration\",\n \"TSImportEqualsDeclaration\",\n \"TSInterfaceDeclaration\",\n \"TSModuleDeclaration\",\n \"TSTypeAliasDeclaration\",\n \"EnumDeclaration\",\n \"InterfaceDeclaration\",\n \"OpaqueType\",\n \"TypeAlias\",\n ],\n },\n ),\n ),\n },\n ...importAttributes,\n specifiers: {\n default: [],\n validate: arrayOf(\n (function () {\n const sourced = assertNodeType(\n \"ExportSpecifier\",\n \"ExportDefaultSpecifier\",\n \"ExportNamespaceSpecifier\",\n );\n const sourceless = assertNodeType(\"ExportSpecifier\");\n\n return combine(\n function (node: t.ExportNamedDeclaration, key, val) {\n const validator = node.source ? sourced : sourceless;\n validator(node, key, val);\n },\n {\n oneOfNodeTypes: [\n \"ExportSpecifier\",\n \"ExportDefaultSpecifier\",\n \"ExportNamespaceSpecifier\",\n ],\n },\n );\n })(),\n ),\n },\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n optional: true,\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n },\n});\n\ndefineType(\"ExportSpecifier\", {\n visitor: [\"local\", \"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n exportKind: {\n // And TypeScript's \"export { type foo } from\"\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForOfStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n builder: [\"left\", \"right\", \"body\", \"await\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate: (function () {\n const declaration = assertNodeType(\"VariableDeclaration\");\n const lval = assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n );\n\n return combine(\n function (node, key, val) {\n if (is(\"VariableDeclaration\", val)) {\n declaration(node, key, val);\n } else {\n lval(node, key, val);\n }\n },\n {\n oneOfNodeTypes: [\n \"VariableDeclaration\",\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ],\n },\n );\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n await: {\n default: false,\n },\n },\n});\n\ndefineType(\"ImportDeclaration\", {\n builder: [\"specifiers\", \"source\", \"attributes\"],\n visitor: [\"specifiers\", \"source\", \"attributes\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n fields: {\n ...importAttributes,\n module: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n specifiers: validateArrayOfType(\n \"ImportSpecifier\",\n \"ImportDefaultSpecifier\",\n \"ImportNamespaceSpecifier\",\n ),\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n importKind: {\n // Handle TypeScript/Flowtype's extension \"import type foo from\"\n // TypeScript doesn't support typeof\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportSpecifier\", {\n visitor: [\"imported\", \"local\"],\n builder: [\"local\", \"imported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n imported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n importKind: {\n // Handle Flowtype's extension \"import {typeof foo} from\"\n // And TypeScript's \"import { type foo } from\"\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"MetaProperty\", {\n visitor: [\"meta\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n meta: {\n validate: chain(\n assertNodeType(\"Identifier\"),\n combine(\n function (node: t.MetaProperty, key, val) {\n let property;\n switch (val.name) {\n case \"function\":\n property = \"sent\";\n break;\n case \"new\":\n property = \"target\";\n break;\n case \"import\":\n property = \"meta\";\n break;\n }\n if (!is(\"Identifier\", node.property, { name: property })) {\n throw new TypeError(\"Unrecognised MetaProperty\");\n }\n },\n { oneOfNodeTypes: [\"Identifier\"] },\n ),\n ),\n },\n property: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n abstract: {\n validate: assertValueType(\"boolean\"),\n default: false,\n optional: true,\n },\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n static: {\n default: false,\n },\n override: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n computed: {\n default: false,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (\n node: Extract<t.Node, { computed: boolean }>,\n key,\n val,\n ) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n ),\n ),\n },\n});\n\nexport const classMethodOrDeclareMethodCommon = (allowDecorators = true) => ({\n ...functionCommon(),\n ...classMethodOrPropertyCommon(),\n params: validateArrayOfType(\"FunctionParameter\", \"TSParameterProperty\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n default: \"method\",\n },\n access: {\n validate: chain(\n assertValueType(\"string\"),\n assertOneOf(\"public\", \"private\", \"protected\"),\n ),\n optional: true,\n },\n ...(allowDecorators\n ? {\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n }\n : {}),\n});\n\ndefineType(\"ClassMethod\", {\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n builder: [\n \"kind\",\n \"key\",\n \"params\",\n \"body\",\n \"computed\",\n \"static\",\n \"generator\",\n \"async\",\n ],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"ObjectPattern\", {\n visitor: [\n \"decorators\" /* for legacy param decorators */,\n \"properties\",\n \"typeAnnotation\",\n ],\n builder: [\"properties\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\"),\n },\n});\n\ndefineType(\"SpreadElement\", {\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\"],\n deprecatedAlias: \"SpreadProperty\",\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"Super\");\n\ndefineType(\"TaggedTemplateExpression\", {\n visitor: [\"tag\", \"typeArguments\", \"quasi\"],\n builder: [\"tag\", \"quasi\"],\n aliases: [\"Expression\"],\n fields: {\n tag: {\n validate: assertNodeType(\"Expression\"),\n },\n quasi: {\n validate: assertNodeType(\"TemplateLiteral\"),\n },\n [\"typeArguments\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TemplateElement\", {\n builder: [\"value\", \"tail\"],\n fields: {\n value: {\n validate: chain(\n assertShape({\n raw: {\n validate: assertValueType(\"string\"),\n },\n cooked: {\n validate: assertValueType(\"string\"),\n optional: true,\n },\n }),\n function templateElementCookedValidator(node: t.TemplateElement) {\n const raw = node.value.raw;\n\n let unterminatedCalled = false;\n\n const error = () => {\n // unreachable\n throw new Error(\"Internal @babel/types error.\");\n };\n const { str, firstInvalidLoc } = readStringContents(\n \"template\",\n raw,\n 0,\n 0,\n 0,\n {\n unterminated() {\n unterminatedCalled = true;\n },\n strictNumericEscape: error,\n invalidEscapeSequence: error,\n numericSeparatorInEscapeSequence: error,\n unexpectedNumericSeparator: error,\n invalidDigit: error,\n invalidCodePoint: error,\n },\n );\n if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n node.value.cooked = firstInvalidLoc ? null : str;\n },\n ),\n },\n tail: {\n default: false,\n },\n },\n});\n\ndefineType(\"TemplateLiteral\", {\n visitor: [\"quasis\", \"expressions\"],\n aliases: [\"Expression\", \"Literal\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n expressions: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Expression\",\n // For TypeScript template literal types\n \"TSType\",\n ),\n ),\n function (node: t.TemplateLiteral, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(\n `Number of ${\n node.type\n } quasis should be exactly one more than the number of expressions.\\nExpected ${\n val.length + 1\n } quasis but got ${node.quasis.length}`,\n );\n }\n },\n ),\n },\n },\n});\n\ndefineType(\"YieldExpression\", {\n builder: [\"argument\", \"delegate\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n delegate: {\n validate: chain(\n assertValueType(\"boolean\"),\n combine(\n function (node: t.YieldExpression, key, val) {\n if (val && !node.argument) {\n throw new TypeError(\n \"Property delegate of YieldExpression cannot be true if there is no argument\",\n );\n }\n },\n { type: \"boolean\" },\n ),\n ),\n default: false,\n },\n argument: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n builder: [\"argument\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2019 ---\ndefineType(\"ImportExpression\", {\n visitor: [\"source\", \"options\"],\n aliases: [\"Expression\"],\n fields: {\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n source: {\n validate: assertNodeType(\"Expression\"),\n },\n options: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\n/**\n * @deprecated Use `ImportExpression` instead.\n */\ndefineType(\"Import\");\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"bigint\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", \"optional\"],\n visitor: [\"object\", \"property\"],\n // todo: Add OptionalMemberExpression to LVal when optional-chaining-assign reaches stage 4\n aliases: [\"Expression\"],\n ...memberExpressionUnionShapeCommon,\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n\n return combine(\n function (node: t.OptionalMemberExpression, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n },\n { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n );\n })(),\n },\n computed: {\n default: false,\n },\n optional: {\n validate: chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n },\n});\n\ndefineType(\"OptionalCallExpression\", {\n visitor: [\"callee\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\", \"optional\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n arguments: validateArrayOfType(\n \"Expression\",\n \"SpreadElement\",\n \"ArgumentPlaceholder\",\n ),\n optional: {\n validate: chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n typeArguments: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrPropertyCommon(),\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"decorators\", \"static\"],\n aliases: [\"Property\", \"Private\"],\n fields: {\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n static: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n aliases: [\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"Private\",\n ],\n // `computed` is not included in the `builder`\n // ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\"),\n default: \"method\",\n },\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"PrivateName\", {\n visitor: [\"id\"],\n aliases: [\"Private\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"StaticBlock\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n\n// --- ES2025 ---\ndefineType(\"ImportAttribute\", {\n visitor: [\"key\", \"value\"],\n fields: {\n key: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n value: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n },\n});\n","import { importAttributes } from \"./core.ts\";\nimport {\n defineAliasedType,\n arrayOfType,\n assertOneOf,\n assertValueType,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n validateDefault,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n const isDeclareClass = name === \"DeclareClass\";\n\n defineType(name, {\n builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n visitor: [\n \"id\",\n \"typeParameters\",\n \"extends\",\n ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n \"body\",\n ],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n ...(isDeclareClass\n ? {\n mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n implements: validateOptional(arrayOfType(\"ClassImplements\")),\n }\n : {}),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n visitor: [\"elementType\"],\n aliases: [\"FlowType\"],\n fields: {\n elementType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n builder: [\"id\"],\n visitor: [\"id\", \"predicate\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n predicate: validateOptionalType(\"FlowPredicate\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n builder: [\"id\", \"body\", \"kind\"],\n visitor: [\"id\", \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n body: validateType(\"BlockStatement\"),\n kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n },\n});\n\ndefineType(\"DeclareModuleExports\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateOptionalType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareVariable\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n declaration: validateOptionalType(\"Flow\"),\n specifiers: validateOptional(\n arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\"),\n ),\n source: validateOptionalType(\"StringLiteral\"),\n default: validateOptional(assertValueType(\"boolean\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"DeclaredPredicate\", {\n visitor: [\"value\"],\n aliases: [\"FlowPredicate\"],\n fields: {\n value: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n aliases: [\"FlowType\"],\n fields: {\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n params: validateArrayOfType(\"FunctionTypeParam\"),\n rest: validateOptionalType(\"FunctionTypeParam\"),\n this: validateOptionalType(\"FunctionTypeParam\"),\n returnType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"FunctionTypeParam\", {\n visitor: [\"name\", \"typeAnnotation\"],\n fields: {\n name: validateOptionalType(\"Identifier\"),\n typeAnnotation: validateType(\"FlowType\"),\n optional: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n visitor: [\"id\", \"typeParameters\"],\n aliases: [\"FlowType\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"InferredPredicate\", {\n aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n visitor: [\"extends\", \"body\"],\n aliases: [\"FlowType\"],\n fields: {\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowType\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"number\")),\n },\n});\n\ndefineType(\"BigIntLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"bigint\")),\n },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n aliases: [\"FlowType\"],\n builder: [\n \"properties\",\n \"indexers\",\n \"callProperties\",\n \"internalSlots\",\n \"exact\",\n ],\n fields: {\n properties: validate(\n arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"),\n ),\n indexers: {\n validate: arrayOfType(\"ObjectTypeIndexer\"),\n optional: false,\n default: [],\n },\n callProperties: {\n validate: arrayOfType(\"ObjectTypeCallProperty\"),\n optional: false,\n default: [],\n },\n internalSlots: {\n validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n optional: false,\n default: [],\n },\n exact: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n // If the inexact flag is present then this is an object type, and not a\n // declare class, declare interface, or interface. If it is true, the\n // object uses ... to express that it is inexact.\n inexact: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n visitor: [\"id\", \"value\"],\n builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateType(\"Identifier\"),\n value: validateType(\"FlowType\"),\n optional: validate(assertValueType(\"boolean\")),\n static: validate(assertValueType(\"boolean\")),\n method: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n visitor: [\"value\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n value: validateType(\"FlowType\"),\n static: validateDefault(assertValueType(\"boolean\"), false),\n },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n visitor: [\"variance\", \"id\", \"key\", \"value\"],\n builder: [\"id\", \"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateOptionalType(\"Identifier\"),\n key: validateType(\"FlowType\"),\n value: validateType(\"FlowType\"),\n static: validateDefault(assertValueType(\"boolean\"), false),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n visitor: [\"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n key: validateType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\"),\n value: validateType(\"FlowType\"),\n kind: {\n validate: assertOneOf(\"init\", \"get\", \"set\"),\n default: \"init\",\n optional: false,\n },\n static: validateDefault(assertValueType(\"boolean\"), false),\n proto: validateDefault(assertValueType(\"boolean\"), false),\n optional: validateDefault(assertValueType(\"boolean\"), false),\n variance: validateOptionalType(\"Variance\"),\n method: validateDefault(assertValueType(\"boolean\"), false),\n },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n visitor: [\"argument\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n visitor: [\"qualification\", \"id\"],\n builder: [\"id\", \"qualification\"],\n fields: {\n id: validateType(\"Identifier\"),\n qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"string\")),\n },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n visitor: [\"argument\"],\n aliases: [\"FlowType\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeCastExpression\", {\n visitor: [\"expression\", \"typeAnnotation\"],\n aliases: [\"ExpressionWrapper\", \"Expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"TypeParameter\", {\n builder: [\"name\", \"bound\", \"default\", \"variance\"],\n visitor: [\"bound\", \"default\", \"variance\"],\n fields: {\n name: validate(assertValueType(\"string\")),\n bound: validateOptionalType(\"TypeAnnotation\"),\n default: validateOptionalType(\"FlowType\"),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"TypeParameter\")),\n },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"Variance\", {\n builder: [\"kind\"],\n fields: {\n kind: validate(assertOneOf(\"minus\", \"plus\")),\n },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n id: validateType(\"Identifier\"),\n body: validateType(\n \"EnumBooleanBody\",\n \"EnumNumberBody\",\n \"EnumStringBody\",\n \"EnumSymbolBody\",\n ),\n },\n});\n\nconst enumBodyBase = {\n explicitType: validateDefault(assertValueType(\"boolean\"), false),\n hasUnknownMembers: validateDefault(assertValueType(\"boolean\"), false),\n};\n\ndefineType(\"EnumBooleanBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumBooleanMember\"),\n },\n});\n\ndefineType(\"EnumNumberBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumNumberMember\"),\n },\n});\n\ndefineType(\"EnumStringBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\"),\n },\n});\n\ndefineType(\"EnumSymbolBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"EnumDefaultedMember\"),\n hasUnknownMembers: validateDefault(assertValueType(\"boolean\"), false),\n },\n});\n\ndefineType(\"EnumBooleanMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"BooleanLiteral\"),\n },\n});\n\ndefineType(\"EnumNumberMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"NumericLiteral\"),\n },\n});\n\ndefineType(\"EnumStringMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"IndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n optional: validateDefault(assertValueType(\"boolean\"), false),\n },\n});\n","import {\n defineAliasedType,\n assertNodeType,\n assertValueType,\n validateArrayOfType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n visitor: [\"name\", \"value\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n },\n value: {\n optional: true,\n validate: assertNodeType(\n \"JSXElement\",\n \"JSXFragment\",\n \"StringLiteral\",\n \"JSXExpressionContainer\",\n ),\n },\n },\n});\n\ndefineType(\"JSXClosingElement\", {\n visitor: [\"name\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n },\n});\n\ndefineType(\"JSXElement\", {\n builder: [\"openingElement\", \"closingElement\", \"children\"],\n visitor: [\"openingElement\", \"children\", \"closingElement\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingElement: {\n validate: assertNodeType(\"JSXOpeningElement\"),\n },\n closingElement: {\n optional: true,\n validate: assertNodeType(\"JSXClosingElement\"),\n },\n children: validateArrayOfType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n },\n },\n});\n\ndefineType(\"JSXSpreadChild\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXMemberExpression\", {\n visitor: [\"object\", \"property\"],\n fields: {\n object: {\n validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n },\n property: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXNamespacedName\", {\n visitor: [\"namespace\", \"name\"],\n fields: {\n namespace: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n name: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXOpeningElement\", {\n builder: [\"name\", \"attributes\", \"selfClosing\"],\n visitor: [\"name\", \"typeArguments\", \"attributes\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n selfClosing: {\n default: false,\n },\n attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n typeArguments: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n visitor: [\"argument\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXText\", {\n aliases: [\"Immutable\"],\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXFragment\", {\n builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingFragment: {\n validate: assertNodeType(\"JSXOpeningFragment\"),\n },\n closingFragment: {\n validate: assertNodeType(\"JSXClosingFragment\"),\n },\n children: validateArrayOfType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n aliases: [\"Immutable\"],\n});\n","import { ALIAS_KEYS } from \"./utils.ts\";\n\nexport const PLACEHOLDERS = [\n \"Identifier\",\n \"StringLiteral\",\n \"Expression\",\n \"Statement\",\n \"Declaration\",\n \"BlockStatement\",\n \"ClassBody\",\n \"Pattern\",\n] as const;\n\nexport const PLACEHOLDERS_ALIAS: Record<string, string[]> = {\n Declaration: [\"Statement\"],\n Pattern: [\"PatternLike\", \"LVal\"],\n};\n\nfor (const type of PLACEHOLDERS) {\n const alias = ALIAS_KEYS[type];\n if (alias?.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\n\nexport const PLACEHOLDERS_FLIPPED_ALIAS: Record<string, string[]> = {};\n\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n PLACEHOLDERS_ALIAS[type].forEach(alias => {\n if (!Object.hasOwn(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n }\n PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n });\n});\n","import {\n defineAliasedType,\n assertNodeType,\n assertOneOf,\n assertValueType,\n} from \"./utils.ts\";\nimport { PLACEHOLDERS } from \"./placeholders.ts\";\nimport { patternLikeCommon } from \"./core.ts\";\n\nconst defineType = defineAliasedType(\"Miscellaneous\");\n\ndefineType(\"Placeholder\", {\n visitor: [],\n builder: [\"expectedNode\", \"name\"],\n // aliases: [], defined in placeholders.js\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\"),\n },\n expectedNode: {\n validate: assertOneOf(...PLACEHOLDERS),\n },\n ...patternLikeCommon(),\n },\n});\n\ndefineType(\"V8IntrinsicIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n","import {\n classMethodOrPropertyUnionShapeCommon,\n classMethodOrPropertyCommon,\n} from \"./core.ts\";\nimport type * as t from \"../index.ts\";\nimport defineType, {\n arrayOfType,\n assertNodeType,\n assertNodeOrValueType,\n assertValueType,\n chain,\n} from \"./utils.ts\";\n\n// https://github.com/tc39/proposal-partial-application\ndefineType(\"ArgumentPlaceholder\", {});\n\n// https://github.com/tc39/proposal-bind-operator\ndefineType(\"BindExpression\", {\n visitor: [\"object\", \"callee\"],\n aliases: [\"Expression\"],\n fields: {\n object: {\n validate: assertNodeOrValueType(\"null\", \"Expression\"),\n },\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// https://github.com/tc39/proposal-decorators\ndefineType(\"ClassAccessorProperty\", {\n visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\", \"Accessor\"],\n ...classMethodOrPropertyUnionShapeCommon(true),\n fields: {\n ...classMethodOrPropertyCommon(),\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (node: t.ClassAccessorProperty, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n \"PrivateName\",\n ),\n ),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"Decorator\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// https://github.com/tc39/proposal-do-expressions\ndefineType(\"DoExpression\", {\n visitor: [\"body\"],\n builder: [\"body\", \"async\"],\n aliases: [\"Expression\"],\n fields: {\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n async: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n },\n});\n\n// https://github.com/tc39/proposal-export-default-from\ndefineType(\"ExportDefaultSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\n// https://github.com/tc39/proposal-js-module-blocks\ndefineType(\"ModuleExpression\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: assertNodeType(\"Program\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\ndefineType(\"TopicReference\", {\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-discard-binding\ndefineType(\"VoidPattern\", {\n aliases: [\"Pattern\", \"PatternLike\", \"FunctionParameter\"],\n});\n","import type * as t from \"../index.ts\";\nimport {\n defineAliasedType,\n arrayOfType,\n assertEach,\n assertNodeType,\n assertOneOf,\n assertValueType,\n chain,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n combine,\n} from \"./utils.ts\";\nimport {\n functionDeclarationCommon,\n classMethodOrDeclareMethodCommon,\n classMethodOrPropertyUnionShapeCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: assertNodeType(\"TSTypeAnnotation\"),\n\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterDeclaration\"),\n\n optional: true,\n },\n});\n\ndefineType(\"TSParameterProperty\", {\n aliases: [],\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"key\", \"typeParameters\", \"params\", \"returnType\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(false),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\"),\n },\n});\n\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [\"params\"]: validateArrayOfType(\n \"ArrayPattern\",\n \"Identifier\",\n \"ObjectPattern\",\n \"RestElement\",\n ),\n [\"returnType\"]: validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\"typeParameters\", \"params\", \"returnType\"],\n fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n \"TSConstructSignatureDeclaration\",\n callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: { default: false },\n optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n kind: {\n optional: true,\n validate: assertOneOf(\"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n default: \"method\",\n },\n },\n});\n\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n },\n});\n\nconst tsKeywordTypes = [\n \"TSAnyKeyword\",\n \"TSBooleanKeyword\",\n \"TSBigIntKeyword\",\n \"TSIntrinsicKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n });\n}\n\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n});\n\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\"typeParameters\", \"params\", \"returnType\"],\n};\n\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeArguments\"],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType(\"Identifier\", \"TSThisType\"),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeArguments\"],\n fields: {\n exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\"),\n },\n});\n\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false,\n },\n elementType: validateType(\"TSType\"),\n },\n});\n\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\"),\n },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n builder: [\"typeAnnotation\", \"operator\"],\n fields: {\n operator: {\n validate: assertOneOf(\"keyof\", \"readonly\", \"unique\"),\n default: undefined,\n },\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"],\n builder: [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"],\n fields: {\n key: validateType(\"Identifier\"),\n constraint: validateType(\"TSType\"),\n\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTemplateLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"quasis\", \"types\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n types: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSType\")),\n function (node: t.TSTemplateLiteralType, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(\n `Number of ${\n node.type\n } quasis should be exactly one more than the number of types.\\nExpected ${\n val.length + 1\n } quasis but got ${node.quasis.length}`,\n );\n }\n },\n ),\n },\n },\n});\n\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: (function () {\n const unaryExpression = assertNodeType(\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const unaryOperator = assertOneOf(\"-\");\n\n const literal = assertNodeType(\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n );\n const validator = combine(\n function validator(parent, key, node: t.Node) {\n // type A = -1 | 1;\n if (is(\"UnaryExpression\", node)) {\n // check operator first\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n // type A = 'foo' | 'bar' | false | 1;\n literal(parent, key, node);\n }\n },\n {\n oneOfNodeTypes: [\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n \"UnaryExpression\",\n ],\n },\n );\n return validator;\n })(),\n },\n },\n});\n\ndefineType(\"TSClassImplements\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\ndefineType(\"TSInterfaceHeritage\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSInterfaceDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"TSInterfaceHeritage\")),\n body: validateType(\"TSInterfaceBody\"),\n },\n});\n\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumBody\", {\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSEnumMember\"),\n },\n});\n\ndefineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n\n body: validateType(\"TSEnumBody\"),\n },\n});\n\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n kind: {\n validate: assertOneOf(\"global\", \"namespace\", \"module\"),\n default: \"namespace\",\n },\n declare: validateOptional(bool),\n id: {\n validate: chain(\n assertNodeType(\"TSEntityName\", \"StringLiteral\"),\n combine(\n function (\n node: t.TSModuleDeclaration,\n key,\n val: t.TSEntityName | t.StringLiteral,\n ) {\n if (node.kind === \"namespace\" && is(\"StringLiteral\", val)) {\n throw new TypeError(\n `TSModuleDeclaration of kind 'namespace' cannot have a StringLiteral id.`,\n );\n }\n },\n { oneOfNodeTypes: [\"TSEntityName\", \"StringLiteral\"] },\n ),\n ),\n },\n body: validateType(\"TSModuleBlock\"),\n },\n});\n\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n builder: [\"source\", \"qualifier\", \"typeArguments\"],\n visitor: [\"source\", \"options\", \"qualifier\", \"typeArguments\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n qualifier: validateOptionalType(\"TSEntityName\"),\n\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n\n options: {\n validate: assertNodeType(\"ObjectExpression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n id: validateType(\"Identifier\"),\n moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\"),\n },\n },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"name\", \"constraint\", \"default\"],\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\"),\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n const: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n },\n});\n","export const DEPRECATED_ALIASES = {\n ModuleDeclaration: \"ImportOrExportDeclaration\",\n};\n","import \"./core.ts\";\nimport \"./flow.ts\";\nimport \"./jsx.ts\";\nimport \"./misc.ts\";\nimport \"./experimental.ts\";\nimport \"./typescript.ts\";\nimport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n NODE_UNION_SHAPES__PRIVATE,\n allExpandedTypes,\n} from \"./utils.ts\";\nimport {\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n} from \"./placeholders.ts\";\nimport { DEPRECATED_ALIASES } from \"./deprecated-aliases.ts\";\n\n(\n Object.keys(DEPRECATED_ALIASES) as (keyof typeof DEPRECATED_ALIASES)[]\n).forEach(deprecatedAlias => {\n FLIPPED_ALIAS_KEYS[deprecatedAlias] =\n FLIPPED_ALIAS_KEYS[DEPRECATED_ALIASES[deprecatedAlias]];\n});\n\nfor (const { types, set } of allExpandedTypes) {\n for (const type of types) {\n const aliases = FLIPPED_ALIAS_KEYS[type];\n if (aliases) {\n aliases.forEach(set.add, set);\n } else {\n set.add(type);\n }\n }\n}\n\nconst TYPES: string[] = ([] as string[]).concat(\n Object.keys(VISITOR_KEYS),\n Object.keys(FLIPPED_ALIAS_KEYS),\n Object.keys(DEPRECATED_KEYS),\n);\n\n/**\n * @internal\n */\nexport { NODE_UNION_SHAPES__PRIVATE };\n\nexport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_ALIASES,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n TYPES,\n};\n\nexport type { FieldOptions } from \"./utils.ts\";\n","import {\n NODE_FIELDS,\n NODE_PARENT_VALIDATIONS,\n type FieldOptions,\n} from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function validate(\n node: t.Node | undefined | null,\n key: string,\n val: unknown,\n): void {\n if (!node) return;\n\n const fields = NODE_FIELDS[node.type];\n if (!fields) return;\n\n const field = fields[key];\n validateField(node, key, val, field);\n validateChild(node, key, val);\n}\n\nexport function validateInternal<T extends t.Node>(\n field: FieldOptions<T>,\n node: T,\n key: string,\n val: unknown,\n maybeNode?: 1,\n): void {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n\n field.validate(node, key, val);\n\n if (maybeNode) {\n const type = (val as t.Node).type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n }\n}\n\nexport function validateField<T extends t.Node>(\n node: T,\n key: string,\n val: unknown,\n field: FieldOptions<T> | undefined | null,\n): void {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n\n field.validate(node, key, val);\n}\n\nexport function validateChild(\n node: t.Node,\n key: string | { toString(): string },\n val?: unknown,\n) {\n const type = (val as t.Node)?.type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport * as _validate from \"../../validators/validate.ts\";\nimport type * as t from \"../../ast-types/generated/index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nimport * as utils from \"../../definitions/utils.ts\";\n\nconst { validateInternal: validate } = _validate;\nconst { NODE_FIELDS } = utils;\n\nexport function arrayExpression(\n elements: (null | t.Expression | t.SpreadElement)[],\n): t.ArrayExpression {\n const node: t.ArrayExpression = {\n type: \"ArrayExpression\",\n elements,\n };\n const defs = NODE_FIELDS.ArrayExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nexport function assignmentExpression(\n operator:\n | \"=\"\n | \"+=\"\n | \"-=\"\n | \"/=\"\n | \"%=\"\n | \"*=\"\n | \"**=\"\n | \"&=\"\n | \"|=\"\n | \">>=\"\n | \">>>=\"\n | \"<<=\"\n | \"^=\"\n | \"||=\"\n | \"&&=\"\n | \"??=\",\n left:\n | t.Identifier\n | t.MemberExpression\n | t.OptionalMemberExpression\n | t.ArrayPattern\n | t.ObjectPattern\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n): t.AssignmentExpression {\n const node: t.AssignmentExpression = {\n type: \"AssignmentExpression\",\n operator,\n left,\n right,\n };\n const defs = NODE_FIELDS.AssignmentExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function binaryExpression(\n operator: \"in\",\n left: t.Expression | t.PrivateName,\n right: t.Expression,\n): Extract<t.BinaryExpression, { operator: \"in\" }>;\nexport function binaryExpression(\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\",\n left: t.Expression,\n right: t.Expression,\n): Extract<\n t.BinaryExpression,\n {\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\";\n }\n>;\nexport function binaryExpression(\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"in\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\",\n left: t.Expression | t.PrivateName,\n right: t.Expression,\n): t.BinaryExpression;\nexport function binaryExpression(\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"in\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\",\n left: t.Expression | t.PrivateName,\n right: t.Expression,\n): t.BinaryExpression {\n const node = {\n type: \"BinaryExpression\",\n operator,\n left,\n right,\n } as t.BinaryExpression;\n const defs = NODE_FIELDS.BinaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n const node: t.InterpreterDirective = {\n type: \"InterpreterDirective\",\n value,\n };\n const defs = NODE_FIELDS.InterpreterDirective;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n const node: t.Directive = {\n type: \"Directive\",\n value,\n };\n const defs = NODE_FIELDS.Directive;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n const node: t.DirectiveLiteral = {\n type: \"DirectiveLiteral\",\n value,\n };\n const defs = NODE_FIELDS.DirectiveLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function blockStatement(\n body: t.Statement[],\n directives: t.Directive[] = [],\n): t.BlockStatement {\n const node: t.BlockStatement = {\n type: \"BlockStatement\",\n body,\n directives,\n };\n const defs = NODE_FIELDS.BlockStatement;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n return node;\n}\nexport function breakStatement(\n label: t.Identifier | null = null,\n): t.BreakStatement {\n const node: t.BreakStatement = {\n type: \"BreakStatement\",\n label,\n };\n const defs = NODE_FIELDS.BreakStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nexport function callExpression(\n callee: t.Expression | t.Super | t.Import | t.V8IntrinsicIdentifier,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n): t.CallExpression {\n const node: t.CallExpression = {\n type: \"CallExpression\",\n callee,\n arguments: _arguments,\n };\n const defs = NODE_FIELDS.CallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nexport function catchClause(\n param:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | null\n | undefined = null,\n body: t.BlockStatement,\n): t.CatchClause {\n const node: t.CatchClause = {\n type: \"CatchClause\",\n param,\n body,\n };\n const defs = NODE_FIELDS.CatchClause;\n validate(defs.param, node, \"param\", param, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function conditionalExpression(\n test: t.Expression,\n consequent: t.Expression,\n alternate: t.Expression,\n): t.ConditionalExpression {\n const node: t.ConditionalExpression = {\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate,\n };\n const defs = NODE_FIELDS.ConditionalExpression;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nexport function continueStatement(\n label: t.Identifier | null = null,\n): t.ContinueStatement {\n const node: t.ContinueStatement = {\n type: \"ContinueStatement\",\n label,\n };\n const defs = NODE_FIELDS.ContinueStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n return {\n type: \"DebuggerStatement\",\n };\n}\nexport function doWhileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.DoWhileStatement {\n const node: t.DoWhileStatement = {\n type: \"DoWhileStatement\",\n test,\n body,\n };\n const defs = NODE_FIELDS.DoWhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function emptyStatement(): t.EmptyStatement {\n return {\n type: \"EmptyStatement\",\n };\n}\nexport function expressionStatement(\n expression: t.Expression,\n): t.ExpressionStatement {\n const node: t.ExpressionStatement = {\n type: \"ExpressionStatement\",\n expression,\n };\n const defs = NODE_FIELDS.ExpressionStatement;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function file(\n program: t.Program,\n comments: (t.CommentBlock | t.CommentLine)[] | null = null,\n tokens: any[] | null = null,\n): t.File {\n const node: t.File = {\n type: \"File\",\n program,\n comments,\n tokens,\n };\n const defs = NODE_FIELDS.File;\n validate(defs.program, node, \"program\", program, 1);\n validate(defs.comments, node, \"comments\", comments, 1);\n validate(defs.tokens, node, \"tokens\", tokens);\n return node;\n}\nexport function forInStatement(\n left:\n | t.VariableDeclaration\n | t.Identifier\n | t.MemberExpression\n | t.ArrayPattern\n | t.ObjectPattern\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n body: t.Statement,\n): t.ForInStatement {\n const node: t.ForInStatement = {\n type: \"ForInStatement\",\n left,\n right,\n body,\n };\n const defs = NODE_FIELDS.ForInStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function forStatement(\n init: t.VariableDeclaration | t.Expression | null | undefined = null,\n test: t.Expression | null | undefined = null,\n update: t.Expression | null | undefined = null,\n body: t.Statement,\n): t.ForStatement {\n const node: t.ForStatement = {\n type: \"ForStatement\",\n init,\n test,\n update,\n body,\n };\n const defs = NODE_FIELDS.ForStatement;\n validate(defs.init, node, \"init\", init, 1);\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.update, node, \"update\", update, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function functionDeclaration(\n id: t.Identifier | null | undefined = null,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionDeclaration {\n const node: t.FunctionDeclaration = {\n type: \"FunctionDeclaration\",\n id,\n params,\n body,\n generator,\n async,\n };\n const defs = NODE_FIELDS.FunctionDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function functionExpression(\n id: t.Identifier | null | undefined = null,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionExpression {\n const node: t.FunctionExpression = {\n type: \"FunctionExpression\",\n id,\n params,\n body,\n generator,\n async,\n };\n const defs = NODE_FIELDS.FunctionExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function identifier(name: string): t.Identifier {\n const node: t.Identifier = {\n type: \"Identifier\",\n name,\n };\n const defs = NODE_FIELDS.Identifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport function ifStatement(\n test: t.Expression,\n consequent: t.Statement,\n alternate: t.Statement | null = null,\n): t.IfStatement {\n const node: t.IfStatement = {\n type: \"IfStatement\",\n test,\n consequent,\n alternate,\n };\n const defs = NODE_FIELDS.IfStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nexport function labeledStatement(\n label: t.Identifier,\n body: t.Statement,\n): t.LabeledStatement {\n const node: t.LabeledStatement = {\n type: \"LabeledStatement\",\n label,\n body,\n };\n const defs = NODE_FIELDS.LabeledStatement;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n const node: t.StringLiteral = {\n type: \"StringLiteral\",\n value,\n };\n const defs = NODE_FIELDS.StringLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n const node: t.NumericLiteral = {\n type: \"NumericLiteral\",\n value,\n };\n const defs = NODE_FIELDS.NumericLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function nullLiteral(): t.NullLiteral {\n return {\n type: \"NullLiteral\",\n };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n const node: t.BooleanLiteral = {\n type: \"BooleanLiteral\",\n value,\n };\n const defs = NODE_FIELDS.BooleanLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function regExpLiteral(\n pattern: string,\n flags: string = \"\",\n): t.RegExpLiteral {\n const node: t.RegExpLiteral = {\n type: \"RegExpLiteral\",\n pattern,\n flags,\n };\n const defs = NODE_FIELDS.RegExpLiteral;\n validate(defs.pattern, node, \"pattern\", pattern);\n validate(defs.flags, node, \"flags\", flags);\n return node;\n}\nexport function logicalExpression(\n operator: \"||\" | \"&&\" | \"??\",\n left: t.Expression,\n right: t.Expression,\n): t.LogicalExpression {\n const node: t.LogicalExpression = {\n type: \"LogicalExpression\",\n operator,\n left,\n right,\n };\n const defs = NODE_FIELDS.LogicalExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Expression,\n computed?: true,\n): Extract<t.MemberExpression, { computed: true }>;\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Identifier | t.PrivateName,\n computed?: false,\n): Extract<t.MemberExpression, { computed: false }>;\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Expression | t.Identifier | t.PrivateName,\n computed?: boolean,\n): t.MemberExpression;\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Expression | t.Identifier | t.PrivateName,\n computed: boolean = false,\n): t.MemberExpression {\n const node = {\n type: \"MemberExpression\",\n object,\n property,\n computed,\n } as t.MemberExpression;\n const defs = NODE_FIELDS.MemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n return node;\n}\nexport function newExpression(\n callee: t.Expression,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n): t.NewExpression {\n const node: t.NewExpression = {\n type: \"NewExpression\",\n callee,\n arguments: _arguments,\n };\n const defs = NODE_FIELDS.NewExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nexport function program(\n body: t.Statement[],\n directives: t.Directive[] = [],\n sourceType: \"script\" | \"module\" = \"script\",\n interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n const node: t.Program = {\n type: \"Program\",\n body,\n directives,\n sourceType,\n interpreter,\n };\n const defs = NODE_FIELDS.Program;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n validate(defs.sourceType, node, \"sourceType\", sourceType);\n validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n return node;\n}\nexport function objectExpression(\n properties: (t.ObjectMethod | t.ObjectProperty | t.SpreadElement)[],\n): t.ObjectExpression {\n const node: t.ObjectExpression = {\n type: \"ObjectExpression\",\n properties,\n };\n const defs = NODE_FIELDS.ObjectExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\",\n key: t.Expression,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n computed?: true,\n generator?: boolean,\n async?: boolean,\n): Extract<t.ObjectMethod, { computed: true }>;\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\",\n key: t.Identifier | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n computed?: false,\n generator?: boolean,\n async?: boolean,\n): Extract<t.ObjectMethod, { computed: false }>;\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\",\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n computed?: boolean,\n generator?: boolean,\n async?: boolean,\n): t.ObjectMethod;\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\",\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n computed: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ObjectMethod {\n const node = {\n type: \"ObjectMethod\",\n kind,\n key,\n params,\n body,\n computed,\n generator,\n async,\n } as t.ObjectMethod;\n const defs = NODE_FIELDS.ObjectMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function objectProperty(\n key: t.Expression,\n value: t.Expression | t.PatternLike,\n computed?: true,\n shorthand?: boolean,\n): Extract<t.ObjectProperty, { computed: true }>;\nexport function objectProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.PrivateName,\n value: t.Expression | t.PatternLike,\n computed?: false,\n shorthand?: boolean,\n): Extract<t.ObjectProperty, { computed: false }>;\nexport function objectProperty(\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.PrivateName,\n value: t.Expression | t.PatternLike,\n computed?: boolean,\n shorthand?: boolean,\n): t.ObjectProperty;\nexport function objectProperty(\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.PrivateName,\n value: t.Expression | t.PatternLike,\n computed: boolean = false,\n shorthand: boolean = false,\n): t.ObjectProperty {\n const node = {\n type: \"ObjectProperty\",\n key,\n value,\n computed,\n shorthand,\n } as t.ObjectProperty;\n const defs = NODE_FIELDS.ObjectProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.shorthand, node, \"shorthand\", shorthand);\n return node;\n}\nexport function restElement(\n argument:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n): t.RestElement {\n const node: t.RestElement = {\n type: \"RestElement\",\n argument,\n };\n const defs = NODE_FIELDS.RestElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function returnStatement(\n argument: t.Expression | null = null,\n): t.ReturnStatement {\n const node: t.ReturnStatement = {\n type: \"ReturnStatement\",\n argument,\n };\n const defs = NODE_FIELDS.ReturnStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function sequenceExpression(\n expressions: t.Expression[],\n): t.SequenceExpression {\n const node: t.SequenceExpression = {\n type: \"SequenceExpression\",\n expressions,\n };\n const defs = NODE_FIELDS.SequenceExpression;\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nexport function parenthesizedExpression(\n expression: t.Expression,\n): t.ParenthesizedExpression {\n const node: t.ParenthesizedExpression = {\n type: \"ParenthesizedExpression\",\n expression,\n };\n const defs = NODE_FIELDS.ParenthesizedExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function switchCase(\n test: t.Expression | null | undefined = null,\n consequent: t.Statement[],\n): t.SwitchCase {\n const node: t.SwitchCase = {\n type: \"SwitchCase\",\n test,\n consequent,\n };\n const defs = NODE_FIELDS.SwitchCase;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n return node;\n}\nexport function switchStatement(\n discriminant: t.Expression,\n cases: t.SwitchCase[],\n): t.SwitchStatement {\n const node: t.SwitchStatement = {\n type: \"SwitchStatement\",\n discriminant,\n cases,\n };\n const defs = NODE_FIELDS.SwitchStatement;\n validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n validate(defs.cases, node, \"cases\", cases, 1);\n return node;\n}\nexport function thisExpression(): t.ThisExpression {\n return {\n type: \"ThisExpression\",\n };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n const node: t.ThrowStatement = {\n type: \"ThrowStatement\",\n argument,\n };\n const defs = NODE_FIELDS.ThrowStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function tryStatement(\n block: t.BlockStatement,\n handler: t.CatchClause | null = null,\n finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n const node: t.TryStatement = {\n type: \"TryStatement\",\n block,\n handler,\n finalizer,\n };\n const defs = NODE_FIELDS.TryStatement;\n validate(defs.block, node, \"block\", block, 1);\n validate(defs.handler, node, \"handler\", handler, 1);\n validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n return node;\n}\nexport function unaryExpression(\n operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n argument: t.Expression,\n prefix: boolean = true,\n): t.UnaryExpression {\n const node: t.UnaryExpression = {\n type: \"UnaryExpression\",\n operator,\n argument,\n prefix,\n };\n const defs = NODE_FIELDS.UnaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nexport function updateExpression(\n operator: \"++\" | \"--\",\n argument: t.Identifier | t.MemberExpression,\n prefix: boolean = false,\n): t.UpdateExpression {\n const node: t.UpdateExpression = {\n type: \"UpdateExpression\",\n operator,\n argument,\n prefix,\n };\n const defs = NODE_FIELDS.UpdateExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nexport function variableDeclaration(\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n declarations: t.VariableDeclarator[],\n): t.VariableDeclaration {\n const node: t.VariableDeclaration = {\n type: \"VariableDeclaration\",\n kind,\n declarations,\n };\n const defs = NODE_FIELDS.VariableDeclaration;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.declarations, node, \"declarations\", declarations, 1);\n return node;\n}\nexport function variableDeclarator(\n id: t.Identifier | t.ArrayPattern | t.ObjectPattern | t.VoidPattern,\n init: t.Expression | null = null,\n): t.VariableDeclarator {\n const node: t.VariableDeclarator = {\n type: \"VariableDeclarator\",\n id,\n init,\n };\n const defs = NODE_FIELDS.VariableDeclarator;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function whileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.WhileStatement {\n const node: t.WhileStatement = {\n type: \"WhileStatement\",\n test,\n body,\n };\n const defs = NODE_FIELDS.WhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function withStatement(\n object: t.Expression,\n body: t.Statement,\n): t.WithStatement {\n const node: t.WithStatement = {\n type: \"WithStatement\",\n object,\n body,\n };\n const defs = NODE_FIELDS.WithStatement;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function assignmentPattern(\n left:\n | t.Identifier\n | t.ObjectPattern\n | t.ArrayPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n): t.AssignmentPattern {\n const node: t.AssignmentPattern = {\n type: \"AssignmentPattern\",\n left,\n right,\n };\n const defs = NODE_FIELDS.AssignmentPattern;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function arrayPattern(\n elements: (null | t.PatternLike)[],\n): t.ArrayPattern {\n const node: t.ArrayPattern = {\n type: \"ArrayPattern\",\n elements,\n };\n const defs = NODE_FIELDS.ArrayPattern;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nexport function arrowFunctionExpression(\n params: t.FunctionParameter[],\n body: t.BlockStatement | t.Expression,\n async: boolean = false,\n): t.ArrowFunctionExpression {\n const node: t.ArrowFunctionExpression = {\n type: \"ArrowFunctionExpression\",\n params,\n body,\n async,\n };\n const defs = NODE_FIELDS.ArrowFunctionExpression;\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function classBody(\n body: (\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock\n )[],\n): t.ClassBody {\n const node: t.ClassBody = {\n type: \"ClassBody\",\n body,\n };\n const defs = NODE_FIELDS.ClassBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function classExpression(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: t.Decorator[] | null = null,\n): t.ClassExpression {\n const node: t.ClassExpression = {\n type: \"ClassExpression\",\n id,\n superClass,\n body,\n decorators,\n };\n const defs = NODE_FIELDS.ClassExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nexport function classDeclaration(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: t.Decorator[] | null = null,\n): t.ClassDeclaration {\n const node: t.ClassDeclaration = {\n type: \"ClassDeclaration\",\n id,\n superClass,\n body,\n decorators,\n };\n const defs = NODE_FIELDS.ClassDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nexport function exportAllDeclaration(\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.ExportAllDeclaration {\n const node: t.ExportAllDeclaration = {\n type: \"ExportAllDeclaration\",\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function exportDefaultDeclaration(\n declaration:\n | t.FunctionDeclaration\n | t.ClassDeclaration\n | t.Expression\n | t.TSDeclareFunction\n | t.TSInterfaceDeclaration\n | t.EnumDeclaration,\n): t.ExportDefaultDeclaration {\n const node: t.ExportDefaultDeclaration = {\n type: \"ExportDefaultDeclaration\",\n declaration,\n };\n const defs = NODE_FIELDS.ExportDefaultDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n return node;\n}\nexport function exportNamedDeclaration(\n declaration:\n | t.VariableDeclaration\n | t.FunctionDeclaration\n | t.ClassDeclaration\n | t.TSDeclareFunction\n | t.TSEnumDeclaration\n | t.TSImportEqualsDeclaration\n | t.TSInterfaceDeclaration\n | t.TSModuleDeclaration\n | t.TSTypeAliasDeclaration\n | t.EnumDeclaration\n | t.InterfaceDeclaration\n | t.OpaqueType\n | t.TypeAlias\n | null = null,\n specifiers: (\n | t.ExportSpecifier\n | t.ExportDefaultSpecifier\n | t.ExportNamespaceSpecifier\n )[] = [],\n source: t.StringLiteral | null = null,\n attributes: t.ImportAttribute[] | null = null,\n): t.ExportNamedDeclaration {\n const node: t.ExportNamedDeclaration = {\n type: \"ExportNamedDeclaration\",\n declaration,\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ExportNamedDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function exportSpecifier(\n local: t.Identifier,\n exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n const node: t.ExportSpecifier = {\n type: \"ExportSpecifier\",\n local,\n exported,\n };\n const defs = NODE_FIELDS.ExportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function forOfStatement(\n left:\n | t.VariableDeclaration\n | t.Identifier\n | t.MemberExpression\n | t.ArrayPattern\n | t.ObjectPattern\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n body: t.Statement,\n _await: boolean = false,\n): t.ForOfStatement {\n const node: t.ForOfStatement = {\n type: \"ForOfStatement\",\n left,\n right,\n body,\n await: _await,\n };\n const defs = NODE_FIELDS.ForOfStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.await, node, \"await\", _await);\n return node;\n}\nexport function importDeclaration(\n specifiers: (\n | t.ImportSpecifier\n | t.ImportDefaultSpecifier\n | t.ImportNamespaceSpecifier\n )[],\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.ImportDeclaration {\n const node: t.ImportDeclaration = {\n type: \"ImportDeclaration\",\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ImportDeclaration;\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function importDefaultSpecifier(\n local: t.Identifier,\n): t.ImportDefaultSpecifier {\n const node: t.ImportDefaultSpecifier = {\n type: \"ImportDefaultSpecifier\",\n local,\n };\n const defs = NODE_FIELDS.ImportDefaultSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nexport function importNamespaceSpecifier(\n local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n const node: t.ImportNamespaceSpecifier = {\n type: \"ImportNamespaceSpecifier\",\n local,\n };\n const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nexport function importSpecifier(\n local: t.Identifier,\n imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n const node: t.ImportSpecifier = {\n type: \"ImportSpecifier\",\n local,\n imported,\n };\n const defs = NODE_FIELDS.ImportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.imported, node, \"imported\", imported, 1);\n return node;\n}\nexport function metaProperty(\n meta: t.Identifier,\n property: t.Identifier,\n): t.MetaProperty {\n const node: t.MetaProperty = {\n type: \"MetaProperty\",\n meta,\n property,\n };\n const defs = NODE_FIELDS.MetaProperty;\n validate(defs.meta, node, \"meta\", meta, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined,\n key: t.Expression,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n computed?: true,\n _static?: boolean,\n generator?: boolean,\n async?: boolean,\n): Extract<t.ClassMethod, { computed: true }>;\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined,\n key: t.Identifier | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n computed?: false,\n _static?: boolean,\n generator?: boolean,\n async?: boolean,\n): Extract<t.ClassMethod, { computed: false }>;\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined,\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n computed?: boolean,\n _static?: boolean,\n generator?: boolean,\n async?: boolean,\n): t.ClassMethod;\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n computed: boolean = false,\n _static: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ClassMethod {\n const node = {\n type: \"ClassMethod\",\n kind,\n key,\n params,\n body,\n computed,\n static: _static,\n generator,\n async,\n } as t.ClassMethod;\n const defs = NODE_FIELDS.ClassMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function objectPattern(\n properties: (t.RestElement | t.ObjectProperty)[],\n): t.ObjectPattern {\n const node: t.ObjectPattern = {\n type: \"ObjectPattern\",\n properties,\n };\n const defs = NODE_FIELDS.ObjectPattern;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n const node: t.SpreadElement = {\n type: \"SpreadElement\",\n argument,\n };\n const defs = NODE_FIELDS.SpreadElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _super(): t.Super {\n return {\n type: \"Super\",\n };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n tag: t.Expression,\n quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n const node: t.TaggedTemplateExpression = {\n type: \"TaggedTemplateExpression\",\n tag,\n quasi,\n };\n const defs = NODE_FIELDS.TaggedTemplateExpression;\n validate(defs.tag, node, \"tag\", tag, 1);\n validate(defs.quasi, node, \"quasi\", quasi, 1);\n return node;\n}\nexport function templateElement(\n value: { raw: string; cooked?: string | null },\n tail: boolean = false,\n): t.TemplateElement {\n const node: t.TemplateElement = {\n type: \"TemplateElement\",\n value,\n tail,\n };\n const defs = NODE_FIELDS.TemplateElement;\n validate(defs.value, node, \"value\", value);\n validate(defs.tail, node, \"tail\", tail);\n return node;\n}\nexport function templateLiteral(\n quasis: t.TemplateElement[],\n expressions: (t.Expression | t.TSType)[],\n): t.TemplateLiteral {\n const node: t.TemplateLiteral = {\n type: \"TemplateLiteral\",\n quasis,\n expressions,\n };\n const defs = NODE_FIELDS.TemplateLiteral;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nexport function yieldExpression(\n argument: t.Expression | null = null,\n delegate: boolean = false,\n): t.YieldExpression {\n const node: t.YieldExpression = {\n type: \"YieldExpression\",\n argument,\n delegate,\n };\n const defs = NODE_FIELDS.YieldExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.delegate, node, \"delegate\", delegate);\n return node;\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n const node: t.AwaitExpression = {\n type: \"AwaitExpression\",\n argument,\n };\n const defs = NODE_FIELDS.AwaitExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function importExpression(\n source: t.Expression,\n options: t.Expression | null = null,\n): t.ImportExpression {\n const node: t.ImportExpression = {\n type: \"ImportExpression\",\n source,\n options,\n };\n const defs = NODE_FIELDS.ImportExpression;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.options, node, \"options\", options, 1);\n return node;\n}\nfunction _import(): t.Import {\n return {\n type: \"Import\",\n };\n}\nexport { _import as import };\nexport function bigIntLiteral(value: bigint): t.BigIntLiteral {\n const node: t.BigIntLiteral = {\n type: \"BigIntLiteral\",\n value,\n };\n const defs = NODE_FIELDS.BigIntLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function exportNamespaceSpecifier(\n exported: t.Identifier | t.StringLiteral,\n): t.ExportNamespaceSpecifier {\n const node: t.ExportNamespaceSpecifier = {\n type: \"ExportNamespaceSpecifier\",\n exported,\n };\n const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Expression,\n computed: true | undefined,\n optional: boolean,\n): Extract<t.OptionalMemberExpression, { computed: true }>;\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Identifier | t.PrivateName,\n computed: false | undefined,\n optional: boolean,\n): Extract<t.OptionalMemberExpression, { computed: false }>;\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Expression | t.PrivateName,\n computed: boolean | undefined,\n optional: boolean,\n): t.OptionalMemberExpression;\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Expression | t.PrivateName,\n computed: boolean | undefined = false,\n optional: boolean,\n): t.OptionalMemberExpression {\n const node = {\n type: \"OptionalMemberExpression\",\n object,\n property,\n computed,\n optional,\n } as t.OptionalMemberExpression;\n const defs = NODE_FIELDS.OptionalMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function optionalCallExpression(\n callee: t.Expression,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n optional: boolean,\n): t.OptionalCallExpression {\n const node: t.OptionalCallExpression = {\n type: \"OptionalCallExpression\",\n callee,\n arguments: _arguments,\n optional,\n };\n const defs = NODE_FIELDS.OptionalCallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function classProperty(\n key: t.Expression,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: true,\n _static?: boolean,\n): Extract<t.ClassProperty, { computed: true }>;\nexport function classProperty(\n key: t.Identifier | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: false,\n _static?: boolean,\n): Extract<t.ClassProperty, { computed: false }>;\nexport function classProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: boolean,\n _static?: boolean,\n): t.ClassProperty;\nexport function classProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | null = null,\n decorators: t.Decorator[] | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassProperty {\n const node = {\n type: \"ClassProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n } as t.ClassProperty;\n const defs = NODE_FIELDS.ClassProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function classPrivateProperty(\n key: t.PrivateName,\n value: t.Expression | null = null,\n decorators: t.Decorator[] | null = null,\n _static: boolean = false,\n): t.ClassPrivateProperty {\n const node: t.ClassPrivateProperty = {\n type: \"ClassPrivateProperty\",\n key,\n value,\n decorators,\n static: _static,\n };\n const defs = NODE_FIELDS.ClassPrivateProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function classPrivateMethod(\n kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n key: t.PrivateName,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n _static: boolean = false,\n): t.ClassPrivateMethod {\n const node: t.ClassPrivateMethod = {\n type: \"ClassPrivateMethod\",\n kind,\n key,\n params,\n body,\n static: _static,\n async: false,\n computed: false,\n generator: false,\n };\n const defs = NODE_FIELDS.ClassPrivateMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n const node: t.PrivateName = {\n type: \"PrivateName\",\n id,\n };\n const defs = NODE_FIELDS.PrivateName;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function staticBlock(body: t.Statement[]): t.StaticBlock {\n const node: t.StaticBlock = {\n type: \"StaticBlock\",\n body,\n };\n const defs = NODE_FIELDS.StaticBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function importAttribute(\n key: t.Identifier | t.StringLiteral,\n value: t.StringLiteral,\n): t.ImportAttribute {\n const node: t.ImportAttribute = {\n type: \"ImportAttribute\",\n key,\n value,\n };\n const defs = NODE_FIELDS.ImportAttribute;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n return {\n type: \"AnyTypeAnnotation\",\n };\n}\nexport function arrayTypeAnnotation(\n elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n const node: t.ArrayTypeAnnotation = {\n type: \"ArrayTypeAnnotation\",\n elementType,\n };\n const defs = NODE_FIELDS.ArrayTypeAnnotation;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n return {\n type: \"BooleanTypeAnnotation\",\n };\n}\nexport function booleanLiteralTypeAnnotation(\n value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n const node: t.BooleanLiteralTypeAnnotation = {\n type: \"BooleanLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n return {\n type: \"NullLiteralTypeAnnotation\",\n };\n}\nexport function classImplements(\n id: t.Identifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n const node: t.ClassImplements = {\n type: \"ClassImplements\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.ClassImplements;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function declareClass(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n const node: t.DeclareClass = {\n type: \"DeclareClass\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.DeclareClass;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n const node: t.DeclareFunction = {\n type: \"DeclareFunction\",\n id,\n };\n const defs = NODE_FIELDS.DeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function declareInterface(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n const node: t.DeclareInterface = {\n type: \"DeclareInterface\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.DeclareInterface;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function declareModule(\n id: t.Identifier | t.StringLiteral,\n body: t.BlockStatement,\n kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n const node: t.DeclareModule = {\n type: \"DeclareModule\",\n id,\n body,\n kind,\n };\n const defs = NODE_FIELDS.DeclareModule;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nexport function declareModuleExports(\n typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n const node: t.DeclareModuleExports = {\n type: \"DeclareModuleExports\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.DeclareModuleExports;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function declareTypeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.DeclareTypeAlias {\n const node: t.DeclareTypeAlias = {\n type: \"DeclareTypeAlias\",\n id,\n typeParameters,\n right,\n };\n const defs = NODE_FIELDS.DeclareTypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function declareOpaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null = null,\n supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n const node: t.DeclareOpaqueType = {\n type: \"DeclareOpaqueType\",\n id,\n typeParameters,\n supertype,\n };\n const defs = NODE_FIELDS.DeclareOpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n return node;\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n const node: t.DeclareVariable = {\n type: \"DeclareVariable\",\n id,\n };\n const defs = NODE_FIELDS.DeclareVariable;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function declareExportDeclaration(\n declaration: t.Flow | null = null,\n specifiers: (t.ExportSpecifier | t.ExportNamespaceSpecifier)[] | null = null,\n source: t.StringLiteral | null = null,\n attributes: t.ImportAttribute[] | null = null,\n): t.DeclareExportDeclaration {\n const node: t.DeclareExportDeclaration = {\n type: \"DeclareExportDeclaration\",\n declaration,\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.DeclareExportDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function declareExportAllDeclaration(\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.DeclareExportAllDeclaration {\n const node: t.DeclareExportAllDeclaration = {\n type: \"DeclareExportAllDeclaration\",\n source,\n attributes,\n };\n const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function declaredPredicate(value: t.Expression): t.DeclaredPredicate {\n const node: t.DeclaredPredicate = {\n type: \"DeclaredPredicate\",\n value,\n };\n const defs = NODE_FIELDS.DeclaredPredicate;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n return {\n type: \"ExistsTypeAnnotation\",\n };\n}\nexport function functionTypeAnnotation(\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n params: t.FunctionTypeParam[],\n rest: t.FunctionTypeParam | null | undefined = null,\n returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n const node: t.FunctionTypeAnnotation = {\n type: \"FunctionTypeAnnotation\",\n typeParameters,\n params,\n rest,\n returnType,\n };\n const defs = NODE_FIELDS.FunctionTypeAnnotation;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.rest, node, \"rest\", rest, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function functionTypeParam(\n name: t.Identifier | null | undefined = null,\n typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n const node: t.FunctionTypeParam = {\n type: \"FunctionTypeParam\",\n name,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.FunctionTypeParam;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function genericTypeAnnotation(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n const node: t.GenericTypeAnnotation = {\n type: \"GenericTypeAnnotation\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.GenericTypeAnnotation;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function inferredPredicate(): t.InferredPredicate {\n return {\n type: \"InferredPredicate\",\n };\n}\nexport function interfaceExtends(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n const node: t.InterfaceExtends = {\n type: \"InterfaceExtends\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.InterfaceExtends;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function interfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n const node: t.InterfaceDeclaration = {\n type: \"InterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.InterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function interfaceTypeAnnotation(\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n const node: t.InterfaceTypeAnnotation = {\n type: \"InterfaceTypeAnnotation\",\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function intersectionTypeAnnotation(\n types: t.FlowType[],\n): t.IntersectionTypeAnnotation {\n const node: t.IntersectionTypeAnnotation = {\n type: \"IntersectionTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n return {\n type: \"MixedTypeAnnotation\",\n };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n return {\n type: \"EmptyTypeAnnotation\",\n };\n}\nexport function nullableTypeAnnotation(\n typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n const node: t.NullableTypeAnnotation = {\n type: \"NullableTypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.NullableTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function numberLiteralTypeAnnotation(\n value: number,\n): t.NumberLiteralTypeAnnotation {\n const node: t.NumberLiteralTypeAnnotation = {\n type: \"NumberLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function bigIntLiteralTypeAnnotation(\n value: bigint,\n): t.BigIntLiteralTypeAnnotation {\n const node: t.BigIntLiteralTypeAnnotation = {\n type: \"BigIntLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.BigIntLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n return {\n type: \"NumberTypeAnnotation\",\n };\n}\nexport function objectTypeAnnotation(\n properties: (t.ObjectTypeProperty | t.ObjectTypeSpreadProperty)[],\n indexers: t.ObjectTypeIndexer[] = [],\n callProperties: t.ObjectTypeCallProperty[] = [],\n internalSlots: t.ObjectTypeInternalSlot[] = [],\n exact: boolean = false,\n): t.ObjectTypeAnnotation {\n const node: t.ObjectTypeAnnotation = {\n type: \"ObjectTypeAnnotation\",\n properties,\n indexers,\n callProperties,\n internalSlots,\n exact,\n };\n const defs = NODE_FIELDS.ObjectTypeAnnotation;\n validate(defs.properties, node, \"properties\", properties, 1);\n validate(defs.indexers, node, \"indexers\", indexers, 1);\n validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n validate(defs.exact, node, \"exact\", exact);\n return node;\n}\nexport function objectTypeInternalSlot(\n id: t.Identifier,\n value: t.FlowType,\n optional: boolean,\n _static: boolean,\n method: boolean,\n): t.ObjectTypeInternalSlot {\n const node: t.ObjectTypeInternalSlot = {\n type: \"ObjectTypeInternalSlot\",\n id,\n value,\n optional,\n static: _static,\n method,\n };\n const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.optional, node, \"optional\", optional);\n validate(defs.static, node, \"static\", _static);\n validate(defs.method, node, \"method\", method);\n return node;\n}\nexport function objectTypeCallProperty(\n value: t.FlowType,\n): t.ObjectTypeCallProperty {\n const node: t.ObjectTypeCallProperty = {\n type: \"ObjectTypeCallProperty\",\n value,\n static: false,\n };\n const defs = NODE_FIELDS.ObjectTypeCallProperty;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function objectTypeIndexer(\n id: t.Identifier | null | undefined = null,\n key: t.FlowType,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n const node: t.ObjectTypeIndexer = {\n type: \"ObjectTypeIndexer\",\n id,\n key,\n value,\n variance,\n static: false,\n };\n const defs = NODE_FIELDS.ObjectTypeIndexer;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function objectTypeProperty(\n key: t.Identifier | t.StringLiteral | t.NumericLiteral,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n const node: t.ObjectTypeProperty = {\n type: \"ObjectTypeProperty\",\n key,\n value,\n variance,\n kind: \"init\",\n method: false,\n optional: false,\n proto: false,\n static: false,\n };\n const defs = NODE_FIELDS.ObjectTypeProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function objectTypeSpreadProperty(\n argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n const node: t.ObjectTypeSpreadProperty = {\n type: \"ObjectTypeSpreadProperty\",\n argument,\n };\n const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function opaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n supertype: t.FlowType | null | undefined = null,\n impltype: t.FlowType,\n): t.OpaqueType {\n const node: t.OpaqueType = {\n type: \"OpaqueType\",\n id,\n typeParameters,\n supertype,\n impltype,\n };\n const defs = NODE_FIELDS.OpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n validate(defs.impltype, node, \"impltype\", impltype, 1);\n return node;\n}\nexport function qualifiedTypeIdentifier(\n id: t.Identifier,\n qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n const node: t.QualifiedTypeIdentifier = {\n type: \"QualifiedTypeIdentifier\",\n id,\n qualification,\n };\n const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.qualification, node, \"qualification\", qualification, 1);\n return node;\n}\nexport function stringLiteralTypeAnnotation(\n value: string,\n): t.StringLiteralTypeAnnotation {\n const node: t.StringLiteralTypeAnnotation = {\n type: \"StringLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n return {\n type: \"StringTypeAnnotation\",\n };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n return {\n type: \"SymbolTypeAnnotation\",\n };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n return {\n type: \"ThisTypeAnnotation\",\n };\n}\nexport function tupleTypeAnnotation(\n types: t.FlowType[],\n): t.TupleTypeAnnotation {\n const node: t.TupleTypeAnnotation = {\n type: \"TupleTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.TupleTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function typeofTypeAnnotation(\n argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n const node: t.TypeofTypeAnnotation = {\n type: \"TypeofTypeAnnotation\",\n argument,\n };\n const defs = NODE_FIELDS.TypeofTypeAnnotation;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function typeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.TypeAlias {\n const node: t.TypeAlias = {\n type: \"TypeAlias\",\n id,\n typeParameters,\n right,\n };\n const defs = NODE_FIELDS.TypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n const node: t.TypeAnnotation = {\n type: \"TypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function typeCastExpression(\n expression: t.Expression,\n typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n const node: t.TypeCastExpression = {\n type: \"TypeCastExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TypeCastExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function typeParameter(\n name: string,\n bound: t.TypeAnnotation | null = null,\n _default: t.FlowType | null = null,\n variance: t.Variance | null = null,\n): t.TypeParameter {\n const node: t.TypeParameter = {\n type: \"TypeParameter\",\n name,\n bound,\n default: _default,\n variance,\n };\n const defs = NODE_FIELDS.TypeParameter;\n validate(defs.name, node, \"name\", name);\n validate(defs.bound, node, \"bound\", bound, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function typeParameterDeclaration(\n params: t.TypeParameter[],\n): t.TypeParameterDeclaration {\n const node: t.TypeParameterDeclaration = {\n type: \"TypeParameterDeclaration\",\n params,\n };\n const defs = NODE_FIELDS.TypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function typeParameterInstantiation(\n params: t.FlowType[],\n): t.TypeParameterInstantiation {\n const node: t.TypeParameterInstantiation = {\n type: \"TypeParameterInstantiation\",\n params,\n };\n const defs = NODE_FIELDS.TypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function unionTypeAnnotation(\n types: t.FlowType[],\n): t.UnionTypeAnnotation {\n const node: t.UnionTypeAnnotation = {\n type: \"UnionTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.UnionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n const node: t.Variance = {\n type: \"Variance\",\n kind,\n };\n const defs = NODE_FIELDS.Variance;\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n return {\n type: \"VoidTypeAnnotation\",\n };\n}\nexport function enumDeclaration(\n id: t.Identifier,\n body:\n | t.EnumBooleanBody\n | t.EnumNumberBody\n | t.EnumStringBody\n | t.EnumSymbolBody,\n): t.EnumDeclaration {\n const node: t.EnumDeclaration = {\n type: \"EnumDeclaration\",\n id,\n body,\n };\n const defs = NODE_FIELDS.EnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function enumBooleanBody(\n members: t.EnumBooleanMember[],\n): t.EnumBooleanBody {\n const node: t.EnumBooleanBody = {\n type: \"EnumBooleanBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false,\n };\n const defs = NODE_FIELDS.EnumBooleanBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumNumberBody(\n members: t.EnumNumberMember[],\n): t.EnumNumberBody {\n const node: t.EnumNumberBody = {\n type: \"EnumNumberBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false,\n };\n const defs = NODE_FIELDS.EnumNumberBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumStringBody(\n members: (t.EnumStringMember | t.EnumDefaultedMember)[],\n): t.EnumStringBody {\n const node: t.EnumStringBody = {\n type: \"EnumStringBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false,\n };\n const defs = NODE_FIELDS.EnumStringBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumSymbolBody(\n members: t.EnumDefaultedMember[],\n): t.EnumSymbolBody {\n const node: t.EnumSymbolBody = {\n type: \"EnumSymbolBody\",\n members,\n hasUnknownMembers: false,\n };\n const defs = NODE_FIELDS.EnumSymbolBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumBooleanMember(\n id: t.Identifier,\n init: t.BooleanLiteral,\n): t.EnumBooleanMember {\n const node: t.EnumBooleanMember = {\n type: \"EnumBooleanMember\",\n id,\n init,\n };\n const defs = NODE_FIELDS.EnumBooleanMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function enumNumberMember(\n id: t.Identifier,\n init: t.NumericLiteral,\n): t.EnumNumberMember {\n const node: t.EnumNumberMember = {\n type: \"EnumNumberMember\",\n id,\n init,\n };\n const defs = NODE_FIELDS.EnumNumberMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function enumStringMember(\n id: t.Identifier,\n init: t.StringLiteral,\n): t.EnumStringMember {\n const node: t.EnumStringMember = {\n type: \"EnumStringMember\",\n id,\n init,\n };\n const defs = NODE_FIELDS.EnumStringMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n const node: t.EnumDefaultedMember = {\n type: \"EnumDefaultedMember\",\n id,\n };\n const defs = NODE_FIELDS.EnumDefaultedMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function indexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.IndexedAccessType {\n const node: t.IndexedAccessType = {\n type: \"IndexedAccessType\",\n objectType,\n indexType,\n };\n const defs = NODE_FIELDS.IndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport function optionalIndexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n const node: t.OptionalIndexedAccessType = {\n type: \"OptionalIndexedAccessType\",\n objectType,\n indexType,\n optional: false,\n };\n const defs = NODE_FIELDS.OptionalIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport function jsxAttribute(\n name: t.JSXIdentifier | t.JSXNamespacedName,\n value:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | null = null,\n): t.JSXAttribute {\n const node: t.JSXAttribute = {\n type: \"JSXAttribute\",\n name,\n value,\n };\n const defs = NODE_FIELDS.JSXAttribute;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function jsxClosingElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n const node: t.JSXClosingElement = {\n type: \"JSXClosingElement\",\n name,\n };\n const defs = NODE_FIELDS.JSXClosingElement;\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport function jsxElement(\n openingElement: t.JSXOpeningElement,\n closingElement: t.JSXClosingElement | null | undefined = null,\n children: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[],\n): t.JSXElement {\n const node: t.JSXElement = {\n type: \"JSXElement\",\n openingElement,\n closingElement,\n children,\n };\n const defs = NODE_FIELDS.JSXElement;\n validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n return {\n type: \"JSXEmptyExpression\",\n };\n}\nexport function jsxExpressionContainer(\n expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n const node: t.JSXExpressionContainer = {\n type: \"JSXExpressionContainer\",\n expression,\n };\n const defs = NODE_FIELDS.JSXExpressionContainer;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n const node: t.JSXSpreadChild = {\n type: \"JSXSpreadChild\",\n expression,\n };\n const defs = NODE_FIELDS.JSXSpreadChild;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n const node: t.JSXIdentifier = {\n type: \"JSXIdentifier\",\n name,\n };\n const defs = NODE_FIELDS.JSXIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport function jsxMemberExpression(\n object: t.JSXMemberExpression | t.JSXIdentifier,\n property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n const node: t.JSXMemberExpression = {\n type: \"JSXMemberExpression\",\n object,\n property,\n };\n const defs = NODE_FIELDS.JSXMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nexport function jsxNamespacedName(\n namespace: t.JSXIdentifier,\n name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n const node: t.JSXNamespacedName = {\n type: \"JSXNamespacedName\",\n namespace,\n name,\n };\n const defs = NODE_FIELDS.JSXNamespacedName;\n validate(defs.namespace, node, \"namespace\", namespace, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport function jsxOpeningElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[],\n selfClosing: boolean = false,\n): t.JSXOpeningElement {\n const node: t.JSXOpeningElement = {\n type: \"JSXOpeningElement\",\n name,\n attributes,\n selfClosing,\n };\n const defs = NODE_FIELDS.JSXOpeningElement;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nexport function jsxSpreadAttribute(\n argument: t.Expression,\n): t.JSXSpreadAttribute {\n const node: t.JSXSpreadAttribute = {\n type: \"JSXSpreadAttribute\",\n argument,\n };\n const defs = NODE_FIELDS.JSXSpreadAttribute;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function jsxText(value: string): t.JSXText {\n const node: t.JSXText = {\n type: \"JSXText\",\n value,\n };\n const defs = NODE_FIELDS.JSXText;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function jsxFragment(\n openingFragment: t.JSXOpeningFragment,\n closingFragment: t.JSXClosingFragment,\n children: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[],\n): t.JSXFragment {\n const node: t.JSXFragment = {\n type: \"JSXFragment\",\n openingFragment,\n closingFragment,\n children,\n };\n const defs = NODE_FIELDS.JSXFragment;\n validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n return {\n type: \"JSXOpeningFragment\",\n };\n}\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n return {\n type: \"JSXClosingFragment\",\n };\n}\nexport function placeholder(\n expectedNode:\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\",\n name: t.Identifier,\n): t.Placeholder {\n const node: t.Placeholder = {\n type: \"Placeholder\",\n expectedNode,\n name,\n };\n const defs = NODE_FIELDS.Placeholder;\n validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n const node: t.V8IntrinsicIdentifier = {\n type: \"V8IntrinsicIdentifier\",\n name,\n };\n const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n return {\n type: \"ArgumentPlaceholder\",\n };\n}\nexport function bindExpression(\n object: null | t.Expression,\n callee: t.Expression,\n): t.BindExpression {\n const node: t.BindExpression = {\n type: \"BindExpression\",\n object,\n callee,\n };\n const defs = NODE_FIELDS.BindExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nexport function classAccessorProperty(\n key: t.Expression,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: true,\n _static?: boolean,\n): Extract<t.ClassAccessorProperty, { computed: true }>;\nexport function classAccessorProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.PrivateName,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: false,\n _static?: boolean,\n): Extract<t.ClassAccessorProperty, { computed: false }>;\nexport function classAccessorProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression\n | t.PrivateName,\n value?: t.Expression | null,\n typeAnnotation?: t.TypeAnnotation | t.TSTypeAnnotation | null,\n decorators?: t.Decorator[] | null,\n computed?: boolean,\n _static?: boolean,\n): t.ClassAccessorProperty;\nexport function classAccessorProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression\n | t.PrivateName,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | null = null,\n decorators: t.Decorator[] | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassAccessorProperty {\n const node = {\n type: \"ClassAccessorProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n } as t.ClassAccessorProperty;\n const defs = NODE_FIELDS.ClassAccessorProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n const node: t.Decorator = {\n type: \"Decorator\",\n expression,\n };\n const defs = NODE_FIELDS.Decorator;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function doExpression(\n body: t.BlockStatement,\n async: boolean = false,\n): t.DoExpression {\n const node: t.DoExpression = {\n type: \"DoExpression\",\n body,\n async,\n };\n const defs = NODE_FIELDS.DoExpression;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function exportDefaultSpecifier(\n exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n const node: t.ExportDefaultSpecifier = {\n type: \"ExportDefaultSpecifier\",\n exported,\n };\n const defs = NODE_FIELDS.ExportDefaultSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n const node: t.ModuleExpression = {\n type: \"ModuleExpression\",\n body,\n };\n const defs = NODE_FIELDS.ModuleExpression;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function topicReference(): t.TopicReference {\n return {\n type: \"TopicReference\",\n };\n}\nexport function voidPattern(): t.VoidPattern {\n return {\n type: \"VoidPattern\",\n };\n}\nexport function tsParameterProperty(\n parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n const node: t.TSParameterProperty = {\n type: \"TSParameterProperty\",\n parameter,\n };\n const defs = NODE_FIELDS.TSParameterProperty;\n validate(defs.parameter, node, \"parameter\", parameter, 1);\n return node;\n}\nexport function tsDeclareFunction(\n id: t.Identifier | null | undefined = null,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: t.FunctionParameter[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSDeclareFunction {\n const node: t.TSDeclareFunction = {\n type: \"TSDeclareFunction\",\n id,\n typeParameters,\n params,\n returnType,\n async: false,\n generator: false,\n };\n const defs = NODE_FIELDS.TSDeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsDeclareMethod(\n key: t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n returnType?: t.TSTypeAnnotation | null,\n): Extract<t.TSDeclareMethod, { computed: true }>;\nexport function tsDeclareMethod(\n key: t.Identifier | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n returnType?: t.TSTypeAnnotation | null,\n): Extract<t.TSDeclareMethod, { computed: false }>;\nexport function tsDeclareMethod(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n returnType?: t.TSTypeAnnotation | null,\n): t.TSDeclareMethod;\nexport function tsDeclareMethod(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSDeclareMethod {\n const node = {\n type: \"TSDeclareMethod\",\n key,\n typeParameters,\n params,\n returnType,\n async: false,\n computed: false,\n generator: false,\n kind: \"method\",\n static: false,\n } as t.TSDeclareMethod;\n const defs = NODE_FIELDS.TSDeclareMethod;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsQualifiedName(\n left: t.TSEntityName,\n right: t.Identifier,\n): t.TSQualifiedName {\n const node: t.TSQualifiedName = {\n type: \"TSQualifiedName\",\n left,\n right,\n };\n const defs = NODE_FIELDS.TSQualifiedName;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function tsCallSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n const node: t.TSCallSignatureDeclaration = {\n type: \"TSCallSignatureDeclaration\",\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsConstructSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n const node: t.TSConstructSignatureDeclaration = {\n type: \"TSConstructSignatureDeclaration\",\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsPropertySignature(\n key: t.Expression,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n const node: t.TSPropertySignature = {\n type: \"TSPropertySignature\",\n key,\n typeAnnotation,\n computed: false,\n };\n const defs = NODE_FIELDS.TSPropertySignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsMethodSignature(\n key: t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n const node: t.TSMethodSignature = {\n type: \"TSMethodSignature\",\n key,\n typeParameters,\n params,\n returnType,\n computed: false,\n kind: \"method\",\n };\n const defs = NODE_FIELDS.TSMethodSignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsIndexSignature(\n parameters: t.Identifier[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n const node: t.TSIndexSignature = {\n type: \"TSIndexSignature\",\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSIndexSignature;\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n return {\n type: \"TSAnyKeyword\",\n };\n}\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n return {\n type: \"TSBooleanKeyword\",\n };\n}\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n return {\n type: \"TSBigIntKeyword\",\n };\n}\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n return {\n type: \"TSIntrinsicKeyword\",\n };\n}\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n return {\n type: \"TSNeverKeyword\",\n };\n}\nexport function tsNullKeyword(): t.TSNullKeyword {\n return {\n type: \"TSNullKeyword\",\n };\n}\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n return {\n type: \"TSNumberKeyword\",\n };\n}\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n return {\n type: \"TSObjectKeyword\",\n };\n}\nexport function tsStringKeyword(): t.TSStringKeyword {\n return {\n type: \"TSStringKeyword\",\n };\n}\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n return {\n type: \"TSSymbolKeyword\",\n };\n}\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n return {\n type: \"TSUndefinedKeyword\",\n };\n}\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n return {\n type: \"TSUnknownKeyword\",\n };\n}\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n return {\n type: \"TSVoidKeyword\",\n };\n}\nexport function tsThisType(): t.TSThisType {\n return {\n type: \"TSThisType\",\n };\n}\nexport function tsFunctionType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n const node: t.TSFunctionType = {\n type: \"TSFunctionType\",\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSFunctionType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsConstructorType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n params: (t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement)[],\n returnType: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n const node: t.TSConstructorType = {\n type: \"TSConstructorType\",\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSConstructorType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function tsTypeReference(\n typeName: t.TSEntityName,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n const node: t.TSTypeReference = {\n type: \"TSTypeReference\",\n typeName,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSTypeReference;\n validate(defs.typeName, node, \"typeName\", typeName, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsTypePredicate(\n parameterName: t.Identifier | t.TSThisType,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n asserts: boolean | null = null,\n): t.TSTypePredicate {\n const node: t.TSTypePredicate = {\n type: \"TSTypePredicate\",\n parameterName,\n typeAnnotation,\n asserts,\n };\n const defs = NODE_FIELDS.TSTypePredicate;\n validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.asserts, node, \"asserts\", asserts);\n return node;\n}\nexport function tsTypeQuery(\n exprName: t.TSEntityName | t.TSImportType,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n const node: t.TSTypeQuery = {\n type: \"TSTypeQuery\",\n exprName,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSTypeQuery;\n validate(defs.exprName, node, \"exprName\", exprName, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsTypeLiteral(members: t.TSTypeElement[]): t.TSTypeLiteral {\n const node: t.TSTypeLiteral = {\n type: \"TSTypeLiteral\",\n members,\n };\n const defs = NODE_FIELDS.TSTypeLiteral;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n const node: t.TSArrayType = {\n type: \"TSArrayType\",\n elementType,\n };\n const defs = NODE_FIELDS.TSArrayType;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nexport function tsTupleType(\n elementTypes: (t.TSType | t.TSNamedTupleMember)[],\n): t.TSTupleType {\n const node: t.TSTupleType = {\n type: \"TSTupleType\",\n elementTypes,\n };\n const defs = NODE_FIELDS.TSTupleType;\n validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n return node;\n}\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n const node: t.TSOptionalType = {\n type: \"TSOptionalType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSOptionalType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n const node: t.TSRestType = {\n type: \"TSRestType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSRestType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsNamedTupleMember(\n label: t.Identifier,\n elementType: t.TSType,\n optional: boolean = false,\n): t.TSNamedTupleMember {\n const node: t.TSNamedTupleMember = {\n type: \"TSNamedTupleMember\",\n label,\n elementType,\n optional,\n };\n const defs = NODE_FIELDS.TSNamedTupleMember;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function tsUnionType(types: t.TSType[]): t.TSUnionType {\n const node: t.TSUnionType = {\n type: \"TSUnionType\",\n types,\n };\n const defs = NODE_FIELDS.TSUnionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function tsIntersectionType(types: t.TSType[]): t.TSIntersectionType {\n const node: t.TSIntersectionType = {\n type: \"TSIntersectionType\",\n types,\n };\n const defs = NODE_FIELDS.TSIntersectionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function tsConditionalType(\n checkType: t.TSType,\n extendsType: t.TSType,\n trueType: t.TSType,\n falseType: t.TSType,\n): t.TSConditionalType {\n const node: t.TSConditionalType = {\n type: \"TSConditionalType\",\n checkType,\n extendsType,\n trueType,\n falseType,\n };\n const defs = NODE_FIELDS.TSConditionalType;\n validate(defs.checkType, node, \"checkType\", checkType, 1);\n validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n validate(defs.trueType, node, \"trueType\", trueType, 1);\n validate(defs.falseType, node, \"falseType\", falseType, 1);\n return node;\n}\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n const node: t.TSInferType = {\n type: \"TSInferType\",\n typeParameter,\n };\n const defs = NODE_FIELDS.TSInferType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n return node;\n}\nexport function tsParenthesizedType(\n typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n const node: t.TSParenthesizedType = {\n type: \"TSParenthesizedType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSParenthesizedType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsTypeOperator(\n typeAnnotation: t.TSType,\n operator: \"keyof\" | \"readonly\" | \"unique\",\n): t.TSTypeOperator {\n const node: t.TSTypeOperator = {\n type: \"TSTypeOperator\",\n typeAnnotation,\n operator,\n };\n const defs = NODE_FIELDS.TSTypeOperator;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.operator, node, \"operator\", operator);\n return node;\n}\nexport function tsIndexedAccessType(\n objectType: t.TSType,\n indexType: t.TSType,\n): t.TSIndexedAccessType {\n const node: t.TSIndexedAccessType = {\n type: \"TSIndexedAccessType\",\n objectType,\n indexType,\n };\n const defs = NODE_FIELDS.TSIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport function tsMappedType(\n key: t.Identifier,\n constraint: t.TSType,\n nameType: t.TSType | null = null,\n typeAnnotation: t.TSType | null = null,\n): t.TSMappedType {\n const node: t.TSMappedType = {\n type: \"TSMappedType\",\n key,\n constraint,\n nameType,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSMappedType;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.nameType, node, \"nameType\", nameType, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsTemplateLiteralType(\n quasis: t.TemplateElement[],\n types: t.TSType[],\n): t.TSTemplateLiteralType {\n const node: t.TSTemplateLiteralType = {\n type: \"TSTemplateLiteralType\",\n quasis,\n types,\n };\n const defs = NODE_FIELDS.TSTemplateLiteralType;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function tsLiteralType(\n literal:\n | t.NumericLiteral\n | t.StringLiteral\n | t.BooleanLiteral\n | t.BigIntLiteral\n | t.TemplateLiteral\n | t.UnaryExpression,\n): t.TSLiteralType {\n const node: t.TSLiteralType = {\n type: \"TSLiteralType\",\n literal,\n };\n const defs = NODE_FIELDS.TSLiteralType;\n validate(defs.literal, node, \"literal\", literal, 1);\n return node;\n}\nexport function tsClassImplements(\n expression: t.Expression,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSClassImplements {\n const node: t.TSClassImplements = {\n type: \"TSClassImplements\",\n expression,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSClassImplements;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsInterfaceHeritage(\n expression: t.Expression,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSInterfaceHeritage {\n const node: t.TSInterfaceHeritage = {\n type: \"TSInterfaceHeritage\",\n expression,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSInterfaceHeritage;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsInterfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n _extends: t.TSInterfaceHeritage[] | null | undefined = null,\n body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n const node: t.TSInterfaceDeclaration = {\n type: \"TSInterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.TSInterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function tsInterfaceBody(body: t.TSTypeElement[]): t.TSInterfaceBody {\n const node: t.TSInterfaceBody = {\n type: \"TSInterfaceBody\",\n body,\n };\n const defs = NODE_FIELDS.TSInterfaceBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function tsTypeAliasDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n const node: t.TSTypeAliasDeclaration = {\n type: \"TSTypeAliasDeclaration\",\n id,\n typeParameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsInstantiationExpression(\n expression: t.Expression,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n const node: t.TSInstantiationExpression = {\n type: \"TSInstantiationExpression\",\n expression,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSInstantiationExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsAsExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSAsExpression {\n const node: t.TSAsExpression = {\n type: \"TSAsExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSAsExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsSatisfiesExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n const node: t.TSSatisfiesExpression = {\n type: \"TSSatisfiesExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSSatisfiesExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsTypeAssertion(\n typeAnnotation: t.TSType,\n expression: t.Expression,\n): t.TSTypeAssertion {\n const node: t.TSTypeAssertion = {\n type: \"TSTypeAssertion\",\n typeAnnotation,\n expression,\n };\n const defs = NODE_FIELDS.TSTypeAssertion;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function tsEnumBody(members: t.TSEnumMember[]): t.TSEnumBody {\n const node: t.TSEnumBody = {\n type: \"TSEnumBody\",\n members,\n };\n const defs = NODE_FIELDS.TSEnumBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function tsEnumDeclaration(\n id: t.Identifier,\n body: t.TSEnumBody,\n): t.TSEnumDeclaration {\n const node: t.TSEnumDeclaration = {\n type: \"TSEnumDeclaration\",\n id,\n body,\n };\n const defs = NODE_FIELDS.TSEnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function tsEnumMember(\n id: t.Identifier | t.StringLiteral,\n initializer: t.Expression | null = null,\n): t.TSEnumMember {\n const node: t.TSEnumMember = {\n type: \"TSEnumMember\",\n id,\n initializer,\n };\n const defs = NODE_FIELDS.TSEnumMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.initializer, node, \"initializer\", initializer, 1);\n return node;\n}\nexport function tsModuleDeclaration(\n id: t.TSEntityName | t.StringLiteral,\n body: t.TSModuleBlock,\n): t.TSModuleDeclaration {\n const node: t.TSModuleDeclaration = {\n type: \"TSModuleDeclaration\",\n id,\n body,\n kind: \"namespace\",\n };\n const defs = NODE_FIELDS.TSModuleDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function tsModuleBlock(body: t.Statement[]): t.TSModuleBlock {\n const node: t.TSModuleBlock = {\n type: \"TSModuleBlock\",\n body,\n };\n const defs = NODE_FIELDS.TSModuleBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function tsImportType(\n source: t.StringLiteral,\n qualifier: t.TSEntityName | null = null,\n typeArguments: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n const node: t.TSImportType = {\n type: \"TSImportType\",\n source,\n qualifier,\n typeArguments,\n };\n const defs = NODE_FIELDS.TSImportType;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nexport function tsImportEqualsDeclaration(\n id: t.Identifier,\n moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n const node: t.TSImportEqualsDeclaration = {\n type: \"TSImportEqualsDeclaration\",\n id,\n moduleReference,\n };\n const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n return node;\n}\nexport function tsExternalModuleReference(\n expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n const node: t.TSExternalModuleReference = {\n type: \"TSExternalModuleReference\",\n expression,\n };\n const defs = NODE_FIELDS.TSExternalModuleReference;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function tsNonNullExpression(\n expression: t.Expression,\n): t.TSNonNullExpression {\n const node: t.TSNonNullExpression = {\n type: \"TSNonNullExpression\",\n expression,\n };\n const defs = NODE_FIELDS.TSNonNullExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function tsExportAssignment(\n expression: t.Expression,\n): t.TSExportAssignment {\n const node: t.TSExportAssignment = {\n type: \"TSExportAssignment\",\n expression,\n };\n const defs = NODE_FIELDS.TSExportAssignment;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function tsNamespaceExportDeclaration(\n id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n const node: t.TSNamespaceExportDeclaration = {\n type: \"TSNamespaceExportDeclaration\",\n id,\n };\n const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n const node: t.TSTypeAnnotation = {\n type: \"TSTypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function tsTypeParameterInstantiation(\n params: t.TSType[],\n): t.TSTypeParameterInstantiation {\n const node: t.TSTypeParameterInstantiation = {\n type: \"TSTypeParameterInstantiation\",\n params,\n };\n const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function tsTypeParameterDeclaration(\n params: t.TSTypeParameter[],\n): t.TSTypeParameterDeclaration {\n const node: t.TSTypeParameterDeclaration = {\n type: \"TSTypeParameterDeclaration\",\n params,\n };\n const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function tsTypeParameter(\n constraint: t.TSType | null | undefined = null,\n _default: t.TSType | null | undefined = null,\n name: t.Identifier,\n): t.TSTypeParameter {\n const node: t.TSTypeParameter = {\n type: \"TSTypeParameter\",\n constraint,\n default: _default,\n name,\n };\n const defs = NODE_FIELDS.TSTypeParameter;\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(\n argument:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n) {\n deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\nimport * as b from \"./lowercase.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction alias<const N extends keyof typeof b>(lowercase: N): (typeof b)[N] {\n return function () {\n deprecationWarning(\n lowercase.replace(/^(?:ts|jsx|[a-z])/, x => x.toUpperCase()),\n lowercase,\n \"Usage of builders starting with an uppercase letter such as \",\n \"uppercase builders\",\n );\n return (b[lowercase] as any)(...arguments);\n } as any;\n}\n\nexport const ArrayExpression = alias(\"arrayExpression\"),\n AssignmentExpression = alias(\"assignmentExpression\"),\n BinaryExpression = alias(\"binaryExpression\"),\n InterpreterDirective = alias(\"interpreterDirective\"),\n Directive = alias(\"directive\"),\n DirectiveLiteral = alias(\"directiveLiteral\"),\n BlockStatement = alias(\"blockStatement\"),\n BreakStatement = alias(\"breakStatement\"),\n CallExpression = alias(\"callExpression\"),\n CatchClause = alias(\"catchClause\"),\n ConditionalExpression = alias(\"conditionalExpression\"),\n ContinueStatement = alias(\"continueStatement\"),\n DebuggerStatement = alias(\"debuggerStatement\"),\n DoWhileStatement = alias(\"doWhileStatement\"),\n EmptyStatement = alias(\"emptyStatement\"),\n ExpressionStatement = alias(\"expressionStatement\"),\n File = alias(\"file\"),\n ForInStatement = alias(\"forInStatement\"),\n ForStatement = alias(\"forStatement\"),\n FunctionDeclaration = alias(\"functionDeclaration\"),\n FunctionExpression = alias(\"functionExpression\"),\n Identifier = alias(\"identifier\"),\n IfStatement = alias(\"ifStatement\"),\n LabeledStatement = alias(\"labeledStatement\"),\n StringLiteral = alias(\"stringLiteral\"),\n NumericLiteral = alias(\"numericLiteral\"),\n NullLiteral = alias(\"nullLiteral\"),\n BooleanLiteral = alias(\"booleanLiteral\"),\n RegExpLiteral = alias(\"regExpLiteral\"),\n LogicalExpression = alias(\"logicalExpression\"),\n MemberExpression = alias(\"memberExpression\"),\n NewExpression = alias(\"newExpression\"),\n Program = alias(\"program\"),\n ObjectExpression = alias(\"objectExpression\"),\n ObjectMethod = alias(\"objectMethod\"),\n ObjectProperty = alias(\"objectProperty\"),\n RestElement = alias(\"restElement\"),\n ReturnStatement = alias(\"returnStatement\"),\n SequenceExpression = alias(\"sequenceExpression\"),\n ParenthesizedExpression = alias(\"parenthesizedExpression\"),\n SwitchCase = alias(\"switchCase\"),\n SwitchStatement = alias(\"switchStatement\"),\n ThisExpression = alias(\"thisExpression\"),\n ThrowStatement = alias(\"throwStatement\"),\n TryStatement = alias(\"tryStatement\"),\n UnaryExpression = alias(\"unaryExpression\"),\n UpdateExpression = alias(\"updateExpression\"),\n VariableDeclaration = alias(\"variableDeclaration\"),\n VariableDeclarator = alias(\"variableDeclarator\"),\n WhileStatement = alias(\"whileStatement\"),\n WithStatement = alias(\"withStatement\"),\n AssignmentPattern = alias(\"assignmentPattern\"),\n ArrayPattern = alias(\"arrayPattern\"),\n ArrowFunctionExpression = alias(\"arrowFunctionExpression\"),\n ClassBody = alias(\"classBody\"),\n ClassExpression = alias(\"classExpression\"),\n ClassDeclaration = alias(\"classDeclaration\"),\n ExportAllDeclaration = alias(\"exportAllDeclaration\"),\n ExportDefaultDeclaration = alias(\"exportDefaultDeclaration\"),\n ExportNamedDeclaration = alias(\"exportNamedDeclaration\"),\n ExportSpecifier = alias(\"exportSpecifier\"),\n ForOfStatement = alias(\"forOfStatement\"),\n ImportDeclaration = alias(\"importDeclaration\"),\n ImportDefaultSpecifier = alias(\"importDefaultSpecifier\"),\n ImportNamespaceSpecifier = alias(\"importNamespaceSpecifier\"),\n ImportSpecifier = alias(\"importSpecifier\"),\n MetaProperty = alias(\"metaProperty\"),\n ClassMethod = alias(\"classMethod\"),\n ObjectPattern = alias(\"objectPattern\"),\n SpreadElement = alias(\"spreadElement\"),\n Super = alias(\"super\"),\n TaggedTemplateExpression = alias(\"taggedTemplateExpression\"),\n TemplateElement = alias(\"templateElement\"),\n TemplateLiteral = alias(\"templateLiteral\"),\n YieldExpression = alias(\"yieldExpression\"),\n AwaitExpression = alias(\"awaitExpression\"),\n ImportExpression = alias(\"importExpression\"),\n Import = alias(\"import\"),\n BigIntLiteral = alias(\"bigIntLiteral\"),\n ExportNamespaceSpecifier = alias(\"exportNamespaceSpecifier\"),\n OptionalMemberExpression = alias(\"optionalMemberExpression\"),\n OptionalCallExpression = alias(\"optionalCallExpression\"),\n ClassProperty = alias(\"classProperty\"),\n ClassPrivateProperty = alias(\"classPrivateProperty\"),\n ClassPrivateMethod = alias(\"classPrivateMethod\"),\n PrivateName = alias(\"privateName\"),\n StaticBlock = alias(\"staticBlock\"),\n ImportAttribute = alias(\"importAttribute\"),\n AnyTypeAnnotation = alias(\"anyTypeAnnotation\"),\n ArrayTypeAnnotation = alias(\"arrayTypeAnnotation\"),\n BooleanTypeAnnotation = alias(\"booleanTypeAnnotation\"),\n BooleanLiteralTypeAnnotation = alias(\"booleanLiteralTypeAnnotation\"),\n NullLiteralTypeAnnotation = alias(\"nullLiteralTypeAnnotation\"),\n ClassImplements = alias(\"classImplements\"),\n DeclareClass = alias(\"declareClass\"),\n DeclareFunction = alias(\"declareFunction\"),\n DeclareInterface = alias(\"declareInterface\"),\n DeclareModule = alias(\"declareModule\"),\n DeclareModuleExports = alias(\"declareModuleExports\"),\n DeclareTypeAlias = alias(\"declareTypeAlias\"),\n DeclareOpaqueType = alias(\"declareOpaqueType\"),\n DeclareVariable = alias(\"declareVariable\"),\n DeclareExportDeclaration = alias(\"declareExportDeclaration\"),\n DeclareExportAllDeclaration = alias(\"declareExportAllDeclaration\"),\n DeclaredPredicate = alias(\"declaredPredicate\"),\n ExistsTypeAnnotation = alias(\"existsTypeAnnotation\"),\n FunctionTypeAnnotation = alias(\"functionTypeAnnotation\"),\n FunctionTypeParam = alias(\"functionTypeParam\"),\n GenericTypeAnnotation = alias(\"genericTypeAnnotation\"),\n InferredPredicate = alias(\"inferredPredicate\"),\n InterfaceExtends = alias(\"interfaceExtends\"),\n InterfaceDeclaration = alias(\"interfaceDeclaration\"),\n InterfaceTypeAnnotation = alias(\"interfaceTypeAnnotation\"),\n IntersectionTypeAnnotation = alias(\"intersectionTypeAnnotation\"),\n MixedTypeAnnotation = alias(\"mixedTypeAnnotation\"),\n EmptyTypeAnnotation = alias(\"emptyTypeAnnotation\"),\n NullableTypeAnnotation = alias(\"nullableTypeAnnotation\"),\n NumberLiteralTypeAnnotation = alias(\"numberLiteralTypeAnnotation\"),\n BigIntLiteralTypeAnnotation = alias(\"bigIntLiteralTypeAnnotation\"),\n NumberTypeAnnotation = alias(\"numberTypeAnnotation\"),\n ObjectTypeAnnotation = alias(\"objectTypeAnnotation\"),\n ObjectTypeInternalSlot = alias(\"objectTypeInternalSlot\"),\n ObjectTypeCallProperty = alias(\"objectTypeCallProperty\"),\n ObjectTypeIndexer = alias(\"objectTypeIndexer\"),\n ObjectTypeProperty = alias(\"objectTypeProperty\"),\n ObjectTypeSpreadProperty = alias(\"objectTypeSpreadProperty\"),\n OpaqueType = alias(\"opaqueType\"),\n QualifiedTypeIdentifier = alias(\"qualifiedTypeIdentifier\"),\n StringLiteralTypeAnnotation = alias(\"stringLiteralTypeAnnotation\"),\n StringTypeAnnotation = alias(\"stringTypeAnnotation\"),\n SymbolTypeAnnotation = alias(\"symbolTypeAnnotation\"),\n ThisTypeAnnotation = alias(\"thisTypeAnnotation\"),\n TupleTypeAnnotation = alias(\"tupleTypeAnnotation\"),\n TypeofTypeAnnotation = alias(\"typeofTypeAnnotation\"),\n TypeAlias = alias(\"typeAlias\"),\n TypeAnnotation = alias(\"typeAnnotation\"),\n TypeCastExpression = alias(\"typeCastExpression\"),\n TypeParameter = alias(\"typeParameter\"),\n TypeParameterDeclaration = alias(\"typeParameterDeclaration\"),\n TypeParameterInstantiation = alias(\"typeParameterInstantiation\"),\n UnionTypeAnnotation = alias(\"unionTypeAnnotation\"),\n Variance = alias(\"variance\"),\n VoidTypeAnnotation = alias(\"voidTypeAnnotation\"),\n EnumDeclaration = alias(\"enumDeclaration\"),\n EnumBooleanBody = alias(\"enumBooleanBody\"),\n EnumNumberBody = alias(\"enumNumberBody\"),\n EnumStringBody = alias(\"enumStringBody\"),\n EnumSymbolBody = alias(\"enumSymbolBody\"),\n EnumBooleanMember = alias(\"enumBooleanMember\"),\n EnumNumberMember = alias(\"enumNumberMember\"),\n EnumStringMember = alias(\"enumStringMember\"),\n EnumDefaultedMember = alias(\"enumDefaultedMember\"),\n IndexedAccessType = alias(\"indexedAccessType\"),\n OptionalIndexedAccessType = alias(\"optionalIndexedAccessType\"),\n JSXAttribute = alias(\"jsxAttribute\"),\n JSXClosingElement = alias(\"jsxClosingElement\"),\n JSXElement = alias(\"jsxElement\"),\n JSXEmptyExpression = alias(\"jsxEmptyExpression\"),\n JSXExpressionContainer = alias(\"jsxExpressionContainer\"),\n JSXSpreadChild = alias(\"jsxSpreadChild\"),\n JSXIdentifier = alias(\"jsxIdentifier\"),\n JSXMemberExpression = alias(\"jsxMemberExpression\"),\n JSXNamespacedName = alias(\"jsxNamespacedName\"),\n JSXOpeningElement = alias(\"jsxOpeningElement\"),\n JSXSpreadAttribute = alias(\"jsxSpreadAttribute\"),\n JSXText = alias(\"jsxText\"),\n JSXFragment = alias(\"jsxFragment\"),\n JSXOpeningFragment = alias(\"jsxOpeningFragment\"),\n JSXClosingFragment = alias(\"jsxClosingFragment\"),\n Placeholder = alias(\"placeholder\"),\n V8IntrinsicIdentifier = alias(\"v8IntrinsicIdentifier\"),\n ArgumentPlaceholder = alias(\"argumentPlaceholder\"),\n BindExpression = alias(\"bindExpression\"),\n ClassAccessorProperty = alias(\"classAccessorProperty\"),\n Decorator = alias(\"decorator\"),\n DoExpression = alias(\"doExpression\"),\n ExportDefaultSpecifier = alias(\"exportDefaultSpecifier\"),\n ModuleExpression = alias(\"moduleExpression\"),\n TopicReference = alias(\"topicReference\"),\n VoidPattern = alias(\"voidPattern\"),\n TSParameterProperty = alias(\"tsParameterProperty\"),\n TSDeclareFunction = alias(\"tsDeclareFunction\"),\n TSDeclareMethod = alias(\"tsDeclareMethod\"),\n TSQualifiedName = alias(\"tsQualifiedName\"),\n TSCallSignatureDeclaration = alias(\"tsCallSignatureDeclaration\"),\n TSConstructSignatureDeclaration = alias(\"tsConstructSignatureDeclaration\"),\n TSPropertySignature = alias(\"tsPropertySignature\"),\n TSMethodSignature = alias(\"tsMethodSignature\"),\n TSIndexSignature = alias(\"tsIndexSignature\"),\n TSAnyKeyword = alias(\"tsAnyKeyword\"),\n TSBooleanKeyword = alias(\"tsBooleanKeyword\"),\n TSBigIntKeyword = alias(\"tsBigIntKeyword\"),\n TSIntrinsicKeyword = alias(\"tsIntrinsicKeyword\"),\n TSNeverKeyword = alias(\"tsNeverKeyword\"),\n TSNullKeyword = alias(\"tsNullKeyword\"),\n TSNumberKeyword = alias(\"tsNumberKeyword\"),\n TSObjectKeyword = alias(\"tsObjectKeyword\"),\n TSStringKeyword = alias(\"tsStringKeyword\"),\n TSSymbolKeyword = alias(\"tsSymbolKeyword\"),\n TSUndefinedKeyword = alias(\"tsUndefinedKeyword\"),\n TSUnknownKeyword = alias(\"tsUnknownKeyword\"),\n TSVoidKeyword = alias(\"tsVoidKeyword\"),\n TSThisType = alias(\"tsThisType\"),\n TSFunctionType = alias(\"tsFunctionType\"),\n TSConstructorType = alias(\"tsConstructorType\"),\n TSTypeReference = alias(\"tsTypeReference\"),\n TSTypePredicate = alias(\"tsTypePredicate\"),\n TSTypeQuery = alias(\"tsTypeQuery\"),\n TSTypeLiteral = alias(\"tsTypeLiteral\"),\n TSArrayType = alias(\"tsArrayType\"),\n TSTupleType = alias(\"tsTupleType\"),\n TSOptionalType = alias(\"tsOptionalType\"),\n TSRestType = alias(\"tsRestType\"),\n TSNamedTupleMember = alias(\"tsNamedTupleMember\"),\n TSUnionType = alias(\"tsUnionType\"),\n TSIntersectionType = alias(\"tsIntersectionType\"),\n TSConditionalType = alias(\"tsConditionalType\"),\n TSInferType = alias(\"tsInferType\"),\n TSParenthesizedType = alias(\"tsParenthesizedType\"),\n TSTypeOperator = alias(\"tsTypeOperator\"),\n TSIndexedAccessType = alias(\"tsIndexedAccessType\"),\n TSMappedType = alias(\"tsMappedType\"),\n TSTemplateLiteralType = alias(\"tsTemplateLiteralType\"),\n TSLiteralType = alias(\"tsLiteralType\"),\n TSClassImplements = alias(\"tsClassImplements\"),\n TSInterfaceHeritage = alias(\"tsInterfaceHeritage\"),\n TSInterfaceDeclaration = alias(\"tsInterfaceDeclaration\"),\n TSInterfaceBody = alias(\"tsInterfaceBody\"),\n TSTypeAliasDeclaration = alias(\"tsTypeAliasDeclaration\"),\n TSInstantiationExpression = alias(\"tsInstantiationExpression\"),\n TSAsExpression = alias(\"tsAsExpression\"),\n TSSatisfiesExpression = alias(\"tsSatisfiesExpression\"),\n TSTypeAssertion = alias(\"tsTypeAssertion\"),\n TSEnumBody = alias(\"tsEnumBody\"),\n TSEnumDeclaration = alias(\"tsEnumDeclaration\"),\n TSEnumMember = alias(\"tsEnumMember\"),\n TSModuleDeclaration = alias(\"tsModuleDeclaration\"),\n TSModuleBlock = alias(\"tsModuleBlock\"),\n TSImportType = alias(\"tsImportType\"),\n TSImportEqualsDeclaration = alias(\"tsImportEqualsDeclaration\"),\n TSExternalModuleReference = alias(\"tsExternalModuleReference\"),\n TSNonNullExpression = alias(\"tsNonNullExpression\"),\n TSExportAssignment = alias(\"tsExportAssignment\"),\n TSNamespaceExportDeclaration = alias(\"tsNamespaceExportDeclaration\"),\n TSTypeAnnotation = alias(\"tsTypeAnnotation\"),\n TSTypeParameterInstantiation = alias(\"tsTypeParameterInstantiation\"),\n TSTypeParameterDeclaration = alias(\"tsTypeParameterDeclaration\"),\n TSTypeParameter = alias(\"tsTypeParameter\");\n","import { stringLiteral } from \"../../builders/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\nimport { inherits } from \"../../index.ts\";\n\nexport default function cleanJSXElementLiteralChild(\n child: t.JSXText,\n args: t.Node[],\n) {\n const lines = child.value.split(/\\r\\n|\\n|\\r/);\n\n let lastNonEmptyLine = 0;\n\n for (let i = 0; i < lines.length; i++) {\n if (/[^ \\t]/.exec(lines[i])) {\n lastNonEmptyLine = i;\n }\n }\n\n let str = \"\";\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n const isLastNonEmptyLine = i === lastNonEmptyLine;\n\n // replace rendered whitespace tabs with spaces\n let trimmedLine = line.replace(/\\t/g, \" \");\n\n // trim whitespace touching a newline\n if (!isFirstLine) {\n trimmedLine = trimmedLine.replace(/^ +/, \"\");\n }\n\n // trim whitespace touching an endline\n if (!isLastLine) {\n trimmedLine = trimmedLine.replace(/ +$/, \"\");\n }\n\n if (trimmedLine) {\n if (!isLastNonEmptyLine) {\n trimmedLine += \" \";\n }\n\n str += trimmedLine;\n }\n }\n\n if (str) args.push(inherits(stringLiteral(str), child));\n}\n","import {\n isJSXText,\n isJSXExpressionContainer,\n isJSXEmptyExpression,\n} from \"../../validators/generated/index.ts\";\nimport cleanJSXElementLiteralChild from \"../../utils/react/cleanJSXElementLiteralChild.ts\";\nimport type * as t from \"../../index.ts\";\n\ntype ReturnedChild =\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n | t.Expression;\n\nexport default function buildChildren(\n node: t.JSXElement | t.JSXFragment,\n): ReturnedChild[] {\n const elements = [];\n\n for (let i = 0; i < node.children.length; i++) {\n let child: any = node.children[i];\n\n if (isJSXText(child)) {\n cleanJSXElementLiteralChild(child, elements);\n continue;\n }\n\n if (isJSXExpressionContainer(child)) child = child.expression;\n if (isJSXEmptyExpression(child)) continue;\n\n elements.push(child);\n }\n\n return elements;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isNode(node: any): node is t.Node {\n return !!(node && VISITOR_KEYS[node.type]);\n}\n","import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n if (!is(type, node, opts)) {\n throw new Error(\n `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n `but instead got \"${node.type}\".`,\n );\n }\n}\n\nexport function assertArrayExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayExpression {\n assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentExpression {\n assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BinaryExpression {\n assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterpreterDirective {\n assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Directive {\n assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockStatement {\n assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BreakStatement {\n assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CallExpression {\n assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CatchClause {\n assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ConditionalExpression {\n assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ContinueStatement {\n assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DebuggerStatement {\n assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoWhileStatement {\n assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyStatement {\n assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionStatement {\n assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.File {\n assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForInStatement {\n assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForStatement {\n assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionExpression {\n assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Identifier {\n assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IfStatement {\n assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LabeledStatement {\n assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteral {\n assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumericLiteral {\n assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteral {\n assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteral {\n assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RegExpLiteral {\n assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LogicalExpression {\n assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MemberExpression {\n assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NewExpression {\n assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Program {\n assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectExpression {\n assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMethod {\n assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectProperty {\n assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RestElement {\n assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ReturnStatement {\n assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SequenceExpression {\n assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchCase {\n assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchStatement {\n assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisExpression {\n assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThrowStatement {\n assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TryStatement {\n assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryExpression {\n assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UpdateExpression {\n assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclaration {\n assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclarator {\n assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WhileStatement {\n assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WithStatement {\n assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentPattern {\n assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayPattern {\n assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassBody {\n assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassExpression {\n assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassDeclaration {\n assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportSpecifier {\n assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForOfStatement {\n assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDeclaration {\n assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportSpecifier {\n assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertMetaProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MetaProperty {\n assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassMethod {\n assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectPattern {\n assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SpreadElement {\n assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Super {\n assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateElement {\n assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateLiteral {\n assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.YieldExpression {\n assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AwaitExpression {\n assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImportExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportExpression {\n assert(\"ImportExpression\", node, opts);\n}\nexport function assertImport(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Import {\n assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BigIntLiteral {\n assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassProperty {\n assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PrivateName {\n assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StaticBlock {\n assert(\"StaticBlock\", node, opts);\n}\nexport function assertImportAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportAttribute {\n assert(\"ImportAttribute\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassImplements {\n assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareClass {\n assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareFunction {\n assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareInterface {\n assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModule {\n assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareVariable {\n assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InferredPredicate {\n assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceExtends {\n assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertBigIntLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BigIntLiteralTypeAnnotation {\n assert(\"BigIntLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OpaqueType {\n assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAlias {\n assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAnnotation {\n assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeCastExpression {\n assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameter {\n assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Variance {\n assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDeclaration {\n assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberBody {\n assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringBody {\n assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberMember {\n assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringMember {\n assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IndexedAccessType {\n assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXAttribute {\n assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingElement {\n assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXElement {\n assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXIdentifier {\n assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXText {\n assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXFragment {\n assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Placeholder {\n assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BindExpression {\n assert(\"BindExpression\", node, opts);\n}\nexport function assertClassAccessorProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertDecorator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Decorator {\n assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoExpression {\n assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertModuleExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleExpression {\n assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TopicReference {\n assert(\"TopicReference\", node, opts);\n}\nexport function assertVoidPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VoidPattern {\n assert(\"VoidPattern\", node, opts);\n}\nexport function assertTSParameterProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParameterProperty {\n assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSQualifiedName {\n assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSPropertySignature {\n assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMethodSignature {\n assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexSignature {\n assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNullKeyword {\n assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSStringKeyword {\n assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSThisType {\n assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSFunctionType {\n assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructorType {\n assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeReference {\n assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypePredicate {\n assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeQuery {\n assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSArrayType {\n assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTupleType {\n assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSOptionalType {\n assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSRestType {\n assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnionType {\n assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntersectionType {\n assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConditionalType {\n assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInferType {\n assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeOperator {\n assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMappedType {\n assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSTemplateLiteralType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTemplateLiteralType {\n assert(\"TSTemplateLiteralType\", node, opts);\n}\nexport function assertTSLiteralType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSLiteralType {\n assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSClassImplements(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSClassImplements {\n assert(\"TSClassImplements\", node, opts);\n}\nexport function assertTSInterfaceHeritage(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceHeritage {\n assert(\"TSInterfaceHeritage\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAsExpression {\n assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumBody {\n assert(\"TSEnumBody\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumMember {\n assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleBlock {\n assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportType {\n assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExportAssignment {\n assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameter {\n assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Standardized {\n assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Expression {\n assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Binary {\n assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Scopable {\n assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockParent {\n assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Block {\n assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Statement {\n assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Terminatorless {\n assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CompletionStatement {\n assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Conditional {\n assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Loop {\n assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.While {\n assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.For {\n assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForXStatement {\n assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Function {\n assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionParent {\n assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pureish {\n assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Declaration {\n assert(\"Declaration\", node, opts);\n}\nexport function assertFunctionParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionParameter {\n assert(\"FunctionParameter\", node, opts);\n}\nexport function assertPatternLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PatternLike {\n assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LVal {\n assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEntityName {\n assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Literal {\n assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Immutable {\n assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UserWhitespacable {\n assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Method {\n assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMember {\n assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Property {\n assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryLike {\n assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pattern {\n assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Class {\n assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDeclaration {\n assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertPrivate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Private {\n assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Flow {\n assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowType {\n assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowDeclaration {\n assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowPredicate {\n assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBody {\n assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumMember {\n assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSX {\n assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Miscellaneous {\n assert(\"Miscellaneous\", node, opts);\n}\nexport function assertAccessor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Accessor {\n assert(\"Accessor\", node, opts);\n}\nexport function assertTypeScript(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeScript {\n assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeElement {\n assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSType {\n assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBaseType {\n assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n deprecationWarning(\n \"assertModuleDeclaration\",\n \"assertImportOrExportDeclaration\",\n );\n assert(\"ModuleDeclaration\", node, opts);\n}\n","import {\n anyTypeAnnotation,\n stringTypeAnnotation,\n numberTypeAnnotation,\n voidTypeAnnotation,\n booleanTypeAnnotation,\n genericTypeAnnotation,\n identifier,\n} from \"../generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nexport default createTypeAnnotationBasedOnTypeof as {\n (type: \"string\"): t.StringTypeAnnotation;\n (type: \"number\"): t.NumberTypeAnnotation;\n (type: \"undefined\"): t.VoidTypeAnnotation;\n (type: \"boolean\"): t.BooleanTypeAnnotation;\n (type: \"function\"): t.GenericTypeAnnotation;\n (type: \"object\"): t.GenericTypeAnnotation;\n (type: \"symbol\"): t.GenericTypeAnnotation;\n (type: \"bigint\"): t.AnyTypeAnnotation;\n};\n\n/**\n * Create a type annotation based on typeof expression.\n */\nfunction createTypeAnnotationBasedOnTypeof(type: string): t.FlowType {\n switch (type) {\n case \"string\":\n return stringTypeAnnotation();\n case \"number\":\n return numberTypeAnnotation();\n case \"undefined\":\n return voidTypeAnnotation();\n case \"boolean\":\n return booleanTypeAnnotation();\n case \"function\":\n return genericTypeAnnotation(identifier(\"Function\"));\n case \"object\":\n return genericTypeAnnotation(identifier(\"Object\"));\n case \"symbol\":\n return genericTypeAnnotation(identifier(\"Symbol\"));\n case \"bigint\":\n // todo: use BigInt annotation when Flow supports BigInt\n // https://github.com/facebook/flow/issues/6639\n return anyTypeAnnotation();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n","import {\n isAnyTypeAnnotation,\n isGenericTypeAnnotation,\n isUnionTypeAnnotation,\n isFlowBaseAnnotation,\n isIdentifier,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.GenericTypeAnnotation[\"id\"]): string {\n return isIdentifier(node)\n ? node.name\n : `${node.id.name}.${getQualifiedName(node.qualification)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: readonly (t.FlowType | false | null | undefined)[],\n): t.FlowType[] {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.GenericTypeAnnotation>();\n const bases = new Map<t.FlowBaseAnnotation[\"type\"], t.FlowBaseAnnotation>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.FlowType[]>();\n\n const types: t.FlowType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.includes(node)) {\n continue;\n }\n\n // this type matches anything\n if (isAnyTypeAnnotation(node)) {\n return [node];\n }\n\n if (isFlowBaseAnnotation(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isUnionTypeAnnotation(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // find a matching generic type and merge and deduplicate the type parameters\n if (isGenericTypeAnnotation(node)) {\n const name = getQualifiedName(node.id);\n\n if (generics.has(name)) {\n const existingTypeParameters = generics.get(name)!.typeParameters;\n if (existingTypeParameters) {\n if (node.typeParameters) {\n existingTypeParameters.params.push(...node.typeParameters.params);\n existingTypeParameters.params = removeTypeDuplicates(\n existingTypeParameters.params,\n );\n }\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n","import { unionTypeAnnotation } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/flow/removeTypeDuplicates.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createFlowUnionType<T extends t.FlowType>(\n types: [T] | T[],\n): T | t.UnionTypeAnnotation {\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0] as T;\n } else {\n return unionTypeAnnotation(flattened);\n }\n}\n","import {\n isIdentifier,\n isThisExpression,\n isTSAnyKeyword,\n isTSTypeReference,\n isTSUnionType,\n isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n return isIdentifier(node)\n ? node.name\n : isThisExpression(node)\n ? \"this\"\n : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: readonly t.TSType[],\n): t.TSType[] {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.TSTypeReference>();\n const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.TSType[]>();\n\n const types: t.TSType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.includes(node)) {\n continue;\n }\n\n // this type matches anything\n if (isTSAnyKeyword(node)) {\n return [node];\n }\n\n // Analogue of FlowBaseAnnotation\n if (isTSBaseType(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isTSUnionType(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // todo: support merging tuples: number[]\n const typeArgumentsKey = \"typeArguments\";\n if (isTSTypeReference(node) && node[typeArgumentsKey]) {\n const typeArguments = node[typeArgumentsKey];\n const name = getQualifiedName(node.typeName);\n\n if (generics.has(name)) {\n const existingTypeArguments = generics.get(name)![typeArgumentsKey];\n if (existingTypeArguments) {\n existingTypeArguments.params.push(...typeArguments.params);\n existingTypeArguments.params = removeTypeDuplicates(\n existingTypeArguments.params,\n );\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n","import { tsUnionType } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/typescript/removeTypeDuplicates.ts\";\nimport { isTSTypeAnnotation } from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createTSUnionType(\n typeAnnotations: (t.TSTypeAnnotation | t.TSType)[],\n): t.TSType {\n const types = typeAnnotations.map(type => {\n return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n });\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return tsUnionType(flattened);\n }\n}\n","import { numericLiteral, unaryExpression } from \"./generated/index.ts\";\n\nexport function buildUndefinedNode() {\n return unaryExpression(\"void\", numericLiteral(0), true);\n}\n","import { NODE_FIELDS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\nimport { isFile, isIdentifier } from \"../validators/generated/index.ts\";\n\nconst { hasOwn } = Object;\ntype CommentCache = Map<t.Comment, t.Comment>;\n\n// This function will never be called for comments, only for real nodes.\nfunction cloneIfNode(\n obj: t.Node | undefined | null,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (obj && typeof obj.type === \"string\") {\n return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n }\n\n return obj;\n}\n\nfunction cloneIfNodeOrArray(\n obj: t.Node | undefined | null | (t.Node | undefined | null)[],\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (Array.isArray(obj)) {\n return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n }\n return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\n\n/**\n * Create a clone of a `node` including only properties belonging to the node.\n * If the second parameter is `false`, cloneNode performs a shallow clone.\n * If the third parameter is true, the cloned nodes exclude location properties.\n */\nexport default function cloneNode<T extends t.Node | undefined | null>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n): T {\n if (!node) return node;\n return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\n\nfunction cloneNodeInternal<T extends t.Node | undefined | null>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n commentsCache: CommentCache,\n): T {\n if (!node) return node;\n\n const { type } = node;\n const newNode: any = { type: node.type };\n\n // Special-case identifiers since they are the most cloned nodes.\n if (isIdentifier(node)) {\n newNode.name = node.name;\n\n if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n newNode.optional = node.optional;\n }\n\n if (hasOwn(node, \"typeAnnotation\")) {\n newNode.typeAnnotation = deep\n ? cloneIfNodeOrArray(\n node.typeAnnotation,\n true,\n withoutLoc,\n commentsCache,\n )\n : node.typeAnnotation;\n }\n\n if (hasOwn(node, \"decorators\")) {\n newNode.decorators = deep\n ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache)\n : node.decorators;\n }\n } else if (!hasOwn(NODE_FIELDS, type)) {\n throw new Error(`Unknown node type: \"${type}\"`);\n } else {\n for (const field of Object.keys(NODE_FIELDS[type])) {\n if (hasOwn(node, field)) {\n if (deep) {\n newNode[field] =\n isFile(node) && field === \"comments\"\n ? maybeCloneComments(\n node.comments,\n deep,\n withoutLoc,\n commentsCache,\n )\n : cloneIfNodeOrArray(\n // @ts-expect-error node[field] has been guarded by has check\n node[field],\n true,\n withoutLoc,\n commentsCache,\n );\n } else {\n newNode[field] =\n // @ts-expect-error node[field] has been guarded by has check\n node[field];\n }\n }\n }\n }\n\n if (hasOwn(node, \"loc\")) {\n if (withoutLoc) {\n newNode.loc = null;\n } else {\n newNode.loc = node.loc;\n }\n }\n if (hasOwn(node, \"leadingComments\")) {\n newNode.leadingComments = maybeCloneComments(\n node.leadingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"innerComments\")) {\n newNode.innerComments = maybeCloneComments(\n node.innerComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"trailingComments\")) {\n newNode.trailingComments = maybeCloneComments(\n node.trailingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"extra\")) {\n newNode.extra = {\n ...node.extra,\n };\n }\n\n return newNode;\n}\n\nfunction maybeCloneComments<T extends t.Comment>(\n comments: readonly T[] | null | undefined,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: Map<T, T>,\n): readonly T[] | null | undefined {\n if (!comments || !deep) {\n return comments;\n }\n return comments.map(comment => {\n const cache = commentsCache.get(comment);\n if (cache) return cache;\n\n const { type, value, loc } = comment;\n\n const ret = { type, value, loc } as T;\n if (withoutLoc) {\n ret.loc = undefined;\n }\n\n commentsCache.set(comment, ret);\n\n return ret;\n });\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node`, including only\n * properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function clone<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function cloneDeep<T extends t.Node>(node: T): T {\n return cloneNode(node);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * excluding `_private` and location properties.\n */\nexport default function cloneDeepWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ true, /* withoutLoc */ true);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node` excluding `_private` and location properties.\n */\nexport default function cloneWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false, /* withoutLoc */ true);\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Add comments of certain type to a node.\n */\nexport default function addComments<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n comments: t.Comment[],\n): T {\n if (!comments || !node) return node;\n\n const key = `${type}Comments` as const;\n\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n\n return node;\n}\n","import addComments from \"./addComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Add comment of certain type to a node.\n */\nexport default function addComment<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n): T {\n return addComments(node, type, [\n {\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content,\n },\n ]);\n}\n","import type * as t from \"../index.ts\";\n\ntype MaybeArray = unknown[] | null | undefined;\n\ntype ArrayKeys<C> = {\n [K in keyof C]: C[K] extends MaybeArray ? K : never;\n}[keyof C];\n\nexport default function inherit<C extends t.Node, P extends t.Node>(\n key: ArrayKeys<C> & ArrayKeys<P>,\n child: C,\n parent: P,\n): void {\n if (child && parent) {\n const parentVal = parent[key] as MaybeArray;\n if (!parentVal) return;\n\n const childVal = child[key] as MaybeArray;\n\n (child[key] as MaybeArray) = Array.from(\n childVal\n ? new Set([...childVal, ...parentVal].filter(Boolean))\n : parentVal,\n );\n }\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritInnerComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"innerComments\", child, parent);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritLeadingComments(\n child: t.Node | null,\n parent: t.Node | null,\n): void {\n inherit(\"leadingComments\", child!, parent!);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritTrailingComments(\n child: t.Node | null,\n parent: t.Node | null,\n): void {\n inherit(\"trailingComments\", child!, parent!);\n}\n","import inheritTrailingComments from \"./inheritTrailingComments.ts\";\nimport inheritLeadingComments from \"./inheritLeadingComments.ts\";\nimport inheritInnerComments from \"./inheritInnerComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all unique comments from `parent` node to `child` node.\n */\nexport default function inheritsComments<T extends t.Node>(\n child: T,\n parent: t.Node,\n): T {\n inheritTrailingComments(child, parent);\n inheritLeadingComments(child, parent);\n inheritInnerComments(child, parent);\n\n return child;\n}\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Remove comment properties from a node.\n */\nexport default function removeComments<T extends t.Node>(node: T): T {\n COMMENT_KEYS.forEach(key => {\n node[key] = null;\n });\n\n return node;\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport { FLIPPED_ALIAS_KEYS } from \"../../definitions/index.ts\";\n\nexport const STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS[\"Standardized\"];\nexport const EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS[\"Expression\"];\nexport const BINARY_TYPES = FLIPPED_ALIAS_KEYS[\"Binary\"];\nexport const SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Scopable\"];\nexport const BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nexport const BLOCK_TYPES = FLIPPED_ALIAS_KEYS[\"Block\"];\nexport const STATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"Statement\"];\nexport const TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nexport const COMPLETIONSTATEMENT_TYPES =\n FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nexport const CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS[\"Conditional\"];\nexport const LOOP_TYPES = FLIPPED_ALIAS_KEYS[\"Loop\"];\nexport const WHILE_TYPES = FLIPPED_ALIAS_KEYS[\"While\"];\nexport const EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nexport const FOR_TYPES = FLIPPED_ALIAS_KEYS[\"For\"];\nexport const FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nexport const FUNCTION_TYPES = FLIPPED_ALIAS_KEYS[\"Function\"];\nexport const FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nexport const PUREISH_TYPES = FLIPPED_ALIAS_KEYS[\"Pureish\"];\nexport const DECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"Declaration\"];\nexport const FUNCTIONPARAMETER_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParameter\"];\nexport const PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nexport const LVAL_TYPES = FLIPPED_ALIAS_KEYS[\"LVal\"];\nexport const TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nexport const LITERAL_TYPES = FLIPPED_ALIAS_KEYS[\"Literal\"];\nexport const IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Immutable\"];\nexport const USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nexport const METHOD_TYPES = FLIPPED_ALIAS_KEYS[\"Method\"];\nexport const OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nexport const PROPERTY_TYPES = FLIPPED_ALIAS_KEYS[\"Property\"];\nexport const UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nexport const PATTERN_TYPES = FLIPPED_ALIAS_KEYS[\"Pattern\"];\nexport const CLASS_TYPES = FLIPPED_ALIAS_KEYS[\"Class\"];\nexport const IMPORTOREXPORTDECLARATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nexport const EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nexport const MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nexport const PRIVATE_TYPES = FLIPPED_ALIAS_KEYS[\"Private\"];\nexport const FLOW_TYPES = FLIPPED_ALIAS_KEYS[\"Flow\"];\nexport const FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowType\"];\nexport const FLOWBASEANNOTATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nexport const FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nexport const FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nexport const ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nexport const ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nexport const JSX_TYPES = FLIPPED_ALIAS_KEYS[\"JSX\"];\nexport const MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nexport const ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS[\"Accessor\"];\nexport const TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nexport const TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nexport const TSTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSType\"];\nexport const TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\n/**\n * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.\n */\nexport const MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n","import {\n isBlockStatement,\n isFunction,\n isEmptyStatement,\n isStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n returnStatement,\n expressionStatement,\n blockStatement,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toBlock(\n node: t.Statement | t.Expression,\n parent?: t.Node,\n): t.BlockStatement {\n if (isBlockStatement(node)) {\n return node;\n }\n\n let blockNodes: t.Statement[];\n\n if (isEmptyStatement(node)) {\n blockNodes = [];\n } else {\n if (!isStatement(node)) {\n if (isFunction(parent)) {\n node = returnStatement(node);\n } else {\n node = expressionStatement(node);\n }\n }\n\n blockNodes = [node];\n }\n\n return blockStatement(blockNodes);\n}\n","import toBlock from \"./toBlock.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Ensure the `key` (defaults to \"body\") of a `node` is a block.\n * Casting it to a block if it is not.\n *\n * Returns the BlockStatement\n */\nexport default function ensureBlock(\n node: t.Node,\n key: string = \"body\",\n): t.BlockStatement {\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n const result = toBlock(node[key], node);\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n node[key] = result;\n return result;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isIdentifierChar } from \"@babel/helper-validator-identifier\";\n\nexport default function toIdentifier(input: string): string {\n input = input + \"\";\n\n // replace all non-valid identifiers with dashes\n let name = \"\";\n for (const c of input) {\n name += isIdentifierChar(c.codePointAt(0)!) ? c : \"-\";\n }\n\n // remove all dashes and numbers from start of name\n name = name.replace(/^[-0-9]+/, \"\");\n\n // camel case\n name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n return c ? c.toUpperCase() : \"\";\n });\n\n if (!isValidIdentifier(name)) {\n name = `_${name}`;\n }\n\n return name || \"_\";\n}\n","import toIdentifier from \"./toIdentifier.ts\";\n\nexport default function toBindingIdentifierName(name: string): string {\n name = toIdentifier(name);\n if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n\n return name;\n}\n","import { isIdentifier } from \"../validators/generated/index.ts\";\nimport { stringLiteral } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toComputedKey(\n node:\n | t.ObjectMember\n | t.ObjectProperty\n | t.ClassMethod\n | t.ClassProperty\n | t.ClassAccessorProperty\n | t.MemberExpression\n | t.OptionalMemberExpression,\n // @ts-expect-error todo(flow->ts): maybe check the type of node before accessing .key and .property\n key: t.Expression | t.PrivateName = node.key || node.property,\n) {\n if (!node.computed && isIdentifier(key)) key = stringLiteral(key.name);\n\n return key;\n}\n","import {\n isExpression,\n isFunction,\n isClass,\n isExpressionStatement,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toExpression as {\n (node: t.Function): t.FunctionExpression;\n (node: t.Class): t.ClassExpression;\n (\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n ): t.Expression;\n};\n\nfunction toExpression(\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n): t.Expression {\n if (isExpressionStatement(node)) {\n node = node.expression;\n }\n\n // return unmodified node\n // important for things like ArrowFunctions where\n // type change from ArrowFunction to FunctionExpression\n // produces bugs like -> `()=>a` to `function () a`\n // without generating a BlockStatement for it\n // ref: https://github.com/babel/babili/issues/130\n if (isExpression(node)) {\n return node;\n }\n\n // convert all classes and functions\n // ClassDeclaration -> ClassExpression\n // FunctionDeclaration, ObjectMethod, ClassMethod -> FunctionExpression\n if (isClass(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"ClassExpression\";\n // abstract modifiers are only allowed on class declarations\n node.abstract = false;\n } else if (isFunction(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"FunctionExpression\";\n }\n\n // if it's still not an expression\n if (!isExpression(node)) {\n throw new Error(`cannot turn ${node.type} to an expression`);\n }\n\n return node;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst _skip = Symbol();\nconst _stop = Symbol();\n\n/**\n * A prefix AST traversal implementation meant for simple searching and processing.\n * @param enter The callback can return `traverseFast.skip` to skip the subtree of the current node, or `traverseFast.stop` to stop the traversal.\n * @returns `true` if the traversal was stopped by callback, `false` otherwise.\n */\nexport default function traverseFast<Options = object>(\n node: t.Node | null | undefined,\n enter: (\n node: t.Node,\n opts?: Options,\n ) => void | typeof traverseFast.skip | typeof traverseFast.stop,\n opts?: Options | null,\n): boolean {\n if (!node) return false;\n\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return false;\n\n opts = opts || ({} as Options);\n const ret = enter(node, opts);\n if (ret !== undefined) {\n switch (ret) {\n case _skip:\n return false;\n case _stop:\n return true;\n }\n }\n\n for (const key of keys) {\n const subNode: t.Node | undefined | null =\n // @ts-expect-error key must present in node\n node[key];\n\n if (!subNode) continue;\n\n if (Array.isArray(subNode)) {\n for (const node of subNode) {\n if (traverseFast(node, enter, opts)) return true;\n }\n } else {\n if (traverseFast(subNode, enter, opts)) return true;\n }\n }\n return false;\n}\n\ntraverseFast.skip = _skip;\ntraverseFast.stop = _stop;\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst CLEAR_KEYS = [\n \"tokens\", // only exist in t.File\n \"start\",\n \"end\",\n \"loc\",\n // Fixme: should be extra.raw / extra.rawValue?\n \"raw\",\n \"rawValue\",\n] as const;\n\nconst CLEAR_KEYS_PLUS_COMMENTS = [\n ...COMMENT_KEYS,\n \"comments\",\n ...CLEAR_KEYS,\n] as const;\n\nexport type Options = { preserveComments?: boolean };\n/**\n * Remove all of the _* properties from a node along with the additional metadata\n * properties like location data and raw token data.\n */\nexport default function removeProperties(\n node: t.Node,\n opts: Options = {},\n): void {\n const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n for (const key of map) {\n // @ts-expect-error tokens only exist in t.File\n if (node[key] != null) node[key] = undefined;\n }\n\n for (const key of Object.keys(node)) {\n // @ts-expect-error string can not index node\n if (key.startsWith(\"_\") && node[key] != null) node[key] = undefined;\n }\n\n const symbols: symbol[] = Object.getOwnPropertySymbols(node);\n for (const sym of symbols) {\n // @ts-expect-error Fixme: document symbol properties\n node[sym] = null;\n }\n}\n","import traverseFast from \"../traverse/traverseFast.ts\";\nimport removeProperties from \"./removeProperties.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function removePropertiesDeep<T extends t.Node>(\n tree: T,\n opts?: { preserveComments: boolean } | null,\n): T {\n traverseFast(tree, removeProperties, opts);\n\n return tree;\n}\n","import {\n isIdentifier,\n isStringLiteral,\n} from \"../validators/generated/index.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport removePropertiesDeep from \"../modifications/removePropertiesDeep.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toKeyAlias(\n node: t.Method | t.Property,\n key: t.Node = node.key,\n): string {\n let alias;\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.kind`\n if (node.kind === \"method\") {\n return toKeyAlias.increment() + \"\";\n } else if (isIdentifier(key)) {\n alias = key.name;\n } else if (isStringLiteral(key)) {\n alias = JSON.stringify(key.value);\n } else {\n alias = JSON.stringify(removePropertiesDeep(cloneNode(key)));\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.computed`\n if (node.computed) {\n alias = `[${alias}]`;\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.static`\n if (node.static) {\n alias = `static:${alias}`;\n }\n\n return alias;\n}\n\ntoKeyAlias.uid = 0;\n\ntoKeyAlias.increment = function () {\n if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n return (toKeyAlias.uid = 0);\n } else {\n return toKeyAlias.uid++;\n }\n};\n","import {\n isStatement,\n isFunction,\n isClass,\n isAssignmentExpression,\n} from \"../validators/generated/index.ts\";\nimport { expressionStatement } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toStatement as {\n (node: t.AssignmentExpression, ignore?: boolean): t.ExpressionStatement;\n\n <T extends t.Statement>(node: T, ignore: false): T;\n <T extends t.Statement>(node: T, ignore?: boolean): T | false;\n\n (node: t.Class, ignore: false): t.ClassDeclaration;\n (node: t.Class, ignore?: boolean): t.ClassDeclaration | false;\n\n (node: t.Function, ignore: false): t.FunctionDeclaration;\n (node: t.Function, ignore?: boolean): t.FunctionDeclaration | false;\n\n (node: t.Node, ignore: false): t.Statement;\n (node: t.Node, ignore?: boolean): t.Statement | false;\n};\n\nfunction toStatement(node: t.Node, ignore?: boolean): t.Statement | false {\n if (isStatement(node)) {\n return node;\n }\n\n let mustHaveId = false;\n let newType;\n\n if (isClass(node)) {\n mustHaveId = true;\n newType = \"ClassDeclaration\" as const;\n } else if (isFunction(node)) {\n mustHaveId = true;\n newType = \"FunctionDeclaration\" as const;\n } else if (isAssignmentExpression(node)) {\n return expressionStatement(node);\n }\n\n // @ts-expect-error todo(flow->ts): node.id might be missing\n if (mustHaveId && !node.id) {\n newType = false;\n }\n\n if (!newType) {\n if (ignore) {\n return false;\n } else {\n throw new Error(`cannot turn ${node.type} to a statement`);\n }\n }\n\n // @ts-expect-error manipulating node.type\n node.type = newType;\n\n // @ts-expect-error todo(flow->ts) refactor to avoid type unsafe mutations like reassigning node type above\n return node;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport {\n identifier,\n booleanLiteral,\n nullLiteral,\n stringLiteral,\n numericLiteral,\n bigIntLiteral,\n regExpLiteral,\n arrayExpression,\n objectProperty,\n objectExpression,\n unaryExpression,\n binaryExpression,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default valueToNode as {\n (value: undefined): t.Identifier; // TODO: This should return \"void 0\"\n (value: boolean): t.BooleanLiteral;\n (value: null): t.NullLiteral;\n (value: string): t.StringLiteral;\n // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression\n (value: number): t.NumericLiteral | t.BinaryExpression | t.UnaryExpression;\n (value: bigint): t.BigIntLiteral;\n (value: RegExp): t.RegExpLiteral;\n (value: readonly unknown[]): t.ArrayExpression;\n\n // this throws with objects that are not plain objects,\n // or if there are non-valueToNode-able values\n (value: object): t.ObjectExpression;\n\n (value: unknown): t.Expression;\n};\n\n// @ts-expect-error: Object.prototype.toString must return a string\nconst objectToString: (value: unknown) => string = Function.call.bind(\n Object.prototype.toString,\n);\n\nfunction isRegExp(value: unknown): value is RegExp {\n return objectToString(value) === \"[object RegExp]\";\n}\n\nfunction isPlainObject(value: unknown): value is object {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Object.prototype.toString.call(value) !== \"[object Object]\"\n ) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n // Object.prototype's __proto__ is null. Every other class's __proto__.__proto__ is\n // not null by default. We cannot check if proto === Object.prototype because it\n // could come from another realm.\n return proto === null || Object.getPrototypeOf(proto) === null;\n}\n\nfunction valueToNode(value: unknown): t.Expression {\n // undefined\n if (value === undefined) {\n return identifier(\"undefined\");\n }\n\n // boolean\n if (value === true || value === false) {\n return booleanLiteral(value);\n }\n\n // null\n if (value === null) {\n return nullLiteral();\n }\n\n // strings\n if (typeof value === \"string\") {\n return stringLiteral(value);\n }\n\n // numbers\n if (typeof value === \"number\") {\n let result;\n if (Number.isFinite(value)) {\n result = numericLiteral(Math.abs(value));\n } else {\n let numerator;\n if (Number.isNaN(value)) {\n // NaN\n numerator = numericLiteral(0);\n } else {\n // Infinity / -Infinity\n numerator = numericLiteral(1);\n }\n\n result = binaryExpression(\"/\", numerator, numericLiteral(0));\n }\n\n if (value < 0 || Object.is(value, -0)) {\n result = unaryExpression(\"-\", result);\n }\n\n return result;\n }\n\n // bigints\n if (typeof value === \"bigint\") {\n if (value < 0) {\n return unaryExpression(\"-\", bigIntLiteral(-value));\n } else {\n return bigIntLiteral(value);\n }\n }\n\n // regexes\n if (isRegExp(value)) {\n const pattern = value.source;\n const flags = /\\/([a-z]*)$/.exec(value.toString())![1];\n return regExpLiteral(pattern, flags);\n }\n\n // array\n if (Array.isArray(value)) {\n return arrayExpression(value.map(valueToNode));\n }\n\n // object\n if (isPlainObject(value)) {\n const props = [];\n for (const key of Object.keys(value)) {\n let nodeKey,\n computed = false;\n if (isValidIdentifier(key)) {\n if (key === \"__proto__\") {\n computed = true;\n nodeKey = stringLiteral(key);\n } else {\n nodeKey = identifier(key);\n }\n } else {\n nodeKey = stringLiteral(key);\n }\n props.push(\n objectProperty(\n nodeKey,\n valueToNode(\n // @ts-expect-error key must present in value\n value[key],\n ),\n computed,\n ),\n );\n }\n return objectExpression(props);\n }\n\n throw new Error(\"don't know how to turn this value into a node\");\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Append a node to a member expression.\n */\nexport default function appendToMemberExpression(\n member: t.MemberExpression,\n append: t.MemberExpression[\"property\"],\n computed: boolean = false,\n): t.MemberExpression {\n member.object = memberExpression(\n member.object,\n member.property,\n member.computed,\n );\n member.property = append;\n member.computed = !!computed;\n\n return member;\n}\n","import { INHERIT_KEYS } from \"../constants/index.ts\";\nimport inheritsComments from \"../comments/inheritsComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all contextual properties from `parent` node to `child` node.\n */\nexport default function inherits<T extends t.Node | null | undefined>(\n child: T,\n parent: t.Node | null | undefined,\n): T {\n if (!child || !parent) return child;\n\n // optionally inherit specific properties if not null\n for (const key of INHERIT_KEYS.optional) {\n // @ts-expect-error Fixme: refine parent types\n if (child[key] == null) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit \"private\" properties\n for (const key of Object.keys(parent)) {\n if (key.startsWith(\"_\") && key !== \"__clone\") {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit select properties\n for (const key of INHERIT_KEYS.force) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n\n inheritsComments(child, parent);\n\n return child;\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport { isSuper } from \"../index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Prepend a node to a member expression.\n */\nexport default function prependToMemberExpression<\n T extends Pick<t.MemberExpression, \"object\" | \"property\">,\n>(member: T, prepend: t.MemberExpression[\"object\"]): T {\n if (isSuper(member.object)) {\n throw new Error(\n \"Cannot prepend node to super property access (`super.foo`).\",\n );\n }\n member.object = memberExpression(prepend, member.object);\n\n return member;\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * For the given node, generate a map from assignment id names to the identifier node.\n * Unlike getBindingIdentifiers, this function does not handle declarations and imports.\n * @param node the assignment expression or forXstatement\n * @returns an object map\n * @see getBindingIdentifiers\n */\nexport default function getAssignmentIdentifiers(\n node: t.Node | t.Node[],\n): Record<string, t.Identifier> {\n // null represents holes in an array pattern\n const search: (t.Node | null)[] = ([] as t.Node[]).concat(node);\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.pop();\n if (!id) continue;\n\n switch (id.type) {\n case \"ArrayPattern\":\n search.push(...id.elements);\n break;\n\n case \"AssignmentExpression\":\n case \"AssignmentPattern\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n search.push(id.left);\n break;\n\n case \"ObjectPattern\":\n search.push(...id.properties);\n break;\n\n case \"ObjectProperty\":\n search.push(id.value);\n break;\n\n case \"RestElement\":\n case \"UpdateExpression\":\n search.push(id.argument);\n break;\n\n case \"UnaryExpression\":\n if (id.operator === \"delete\") {\n search.push(id.argument);\n }\n break;\n\n case \"Identifier\":\n ids[id.name] = id;\n break;\n\n default:\n break;\n }\n }\n\n return ids;\n}\n","import {\n isExportDeclaration,\n isIdentifier,\n isClassExpression,\n isDeclaration,\n isFunctionDeclaration,\n isFunctionExpression,\n isExportAllDeclaration,\n isAssignmentExpression,\n isUnaryExpression,\n isUpdateExpression,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport { getBindingIdentifiers as default };\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates: true,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier[]>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: false,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]>;\n\n/**\n * Return a list of binding identifiers associated with the input `node`.\n */\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]> {\n // @ts-expect-error FIXME: disallow Node[]\n const search: t.Node[] = [].concat(node);\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n\n if (\n newBindingsOnly &&\n // These nodes do not introduce _new_ bindings, but they are included\n // in getBindingIdentifiers.keys for backwards compatibility.\n // TODO(@nicolo-ribaudo): Check if we can remove them from .keys in a\n // backward-compatible way, and if not what we need to do to remove them\n // in Babel 8.\n (isAssignmentExpression(id) ||\n isUnaryExpression(id) ||\n isUpdateExpression(id))\n ) {\n continue;\n }\n\n if (isIdentifier(id)) {\n if (duplicates) {\n const _ids = (ids[id.name] = ids[id.name] || []);\n _ids.push(id);\n } else {\n ids[id.name] = id;\n }\n continue;\n }\n\n if (isExportDeclaration(id) && !isExportAllDeclaration(id)) {\n if (isDeclaration(id.declaration)) {\n search.push(id.declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (isFunctionDeclaration(id)) {\n search.push(id.id!);\n continue;\n }\n\n if (isFunctionExpression(id) || isClassExpression(id)) {\n continue;\n }\n }\n\n const keys = getBindingIdentifiers.keys[id.type];\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const nodes =\n // @ts-expect-error key must present in id\n id[key] as t.Node[] | t.Node | undefined | null;\n if (nodes) {\n if (Array.isArray(nodes)) {\n search.push(...nodes);\n } else {\n search.push(nodes);\n }\n }\n }\n }\n }\n return ids;\n}\n\n/**\n * Mapping of types to their identifier keys.\n */\ntype KeysMap = {\n [N in t.Node as N[\"type\"]]?: (keyof N)[];\n};\n\nconst keys: KeysMap = {\n DeclareClass: [\"id\"],\n DeclareFunction: [\"id\"],\n DeclareModule: [\"id\"],\n DeclareVariable: [\"id\"],\n DeclareInterface: [\"id\"],\n DeclareTypeAlias: [\"id\"],\n DeclareOpaqueType: [\"id\"],\n InterfaceDeclaration: [\"id\"],\n TypeAlias: [\"id\"],\n OpaqueType: [\"id\"],\n\n CatchClause: [\"param\"],\n LabeledStatement: [\"label\"],\n UnaryExpression: [\"argument\"],\n AssignmentExpression: [\"left\"],\n\n ImportSpecifier: [\"local\"],\n ImportNamespaceSpecifier: [\"local\"],\n ImportDefaultSpecifier: [\"local\"],\n ImportDeclaration: [\"specifiers\"],\n TSImportEqualsDeclaration: [\"id\"],\n\n ExportSpecifier: [\"exported\"],\n ExportNamespaceSpecifier: [\"exported\"],\n ExportDefaultSpecifier: [\"exported\"],\n\n FunctionDeclaration: [\"id\", \"params\"],\n FunctionExpression: [\"id\", \"params\"],\n ArrowFunctionExpression: [\"params\"],\n ObjectMethod: [\"params\"],\n ClassMethod: [\"params\"],\n ClassPrivateMethod: [\"params\"],\n\n ForInStatement: [\"left\"],\n ForOfStatement: [\"left\"],\n\n ClassDeclaration: [\"id\"],\n ClassExpression: [\"id\"],\n\n RestElement: [\"argument\"],\n UpdateExpression: [\"argument\"],\n\n ObjectProperty: [\"value\"],\n\n AssignmentPattern: [\"left\"],\n ArrayPattern: [\"elements\"],\n ObjectPattern: [\"properties\"],\n\n VariableDeclaration: [\"declarations\"],\n VariableDeclarator: [\"id\"],\n};\n\ngetBindingIdentifiers.keys = keys;\n","import getBindingIdentifiers from \"./getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default getOuterBindingIdentifiers as {\n (node: t.Node, duplicates: true): Record<string, t.Identifier[]>;\n (node: t.Node, duplicates?: false): Record<string, t.Identifier>;\n (\n node: t.Node,\n duplicates?: boolean,\n ): Record<string, t.Identifier> | Record<string, t.Identifier[]>;\n};\n\nfunction getOuterBindingIdentifiers(\n node: t.Node,\n duplicates: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]> {\n return getBindingIdentifiers(node, duplicates, true);\n}\n","import type * as t from \"../index.ts\";\n\nimport {\n isAssignmentExpression,\n isClassMethod,\n isIdentifier,\n isLiteral,\n isNullLiteral,\n isObjectMethod,\n isObjectProperty,\n isPrivateName,\n isRegExpLiteral,\n isTemplateLiteral,\n isVariableDeclarator,\n} from \"../validators/generated/index.ts\";\n\nfunction getNameFromLiteralId(id: t.Literal): string | null {\n if (isNullLiteral(id)) {\n return \"null\";\n }\n\n if (isRegExpLiteral(id)) {\n return `/${id.pattern}/${id.flags}`;\n }\n\n if (isTemplateLiteral(id)) {\n return id.quasis.map(quasi => quasi.value.raw).join(\"\");\n }\n\n if (id.value !== undefined) {\n return String(id.value);\n }\n\n return null;\n}\n\nfunction getObjectMemberKey(\n node: t.ObjectProperty | t.ObjectMethod | t.ClassProperty | t.ClassMethod,\n): t.Expression | t.PrivateName | null {\n if (!node.computed || isLiteral(node.key)) {\n return node.key;\n }\n return null;\n}\n\ntype GetFunctionNameResult = {\n name: string;\n originalNode: t.Node;\n} | null;\n\nexport default function getFunctionName(\n node: t.ObjectMethod | t.ClassMethod,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n node: t.Function | t.Class,\n parent: t.Node,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n node: t.Function | t.Class,\n parent?: t.Node,\n): GetFunctionNameResult {\n if (\"id\" in node && node.id) {\n return {\n name: node.id.name,\n originalNode: node.id,\n };\n }\n\n let prefix = \"\";\n\n let id;\n if (isObjectProperty(parent, { value: node })) {\n // { foo: () => {} };\n id = getObjectMemberKey(parent);\n } else if (isObjectMethod(node) || isClassMethod(node)) {\n // { foo() {} };\n id = getObjectMemberKey(node);\n if (node.kind === \"get\") prefix = \"get \";\n else if (node.kind === \"set\") prefix = \"set \";\n } else if (isVariableDeclarator(parent) && parent.init === node) {\n // let foo = function () {};\n id = parent.id;\n } else if (isAssignmentExpression(parent, { operator: \"=\", right: node })) {\n // foo = function () {};\n id = parent.left;\n }\n\n if (!id) return null;\n\n const name = isLiteral(id)\n ? getNameFromLiteralId(id)\n : isIdentifier(id)\n ? id.name\n : isPrivateName(id)\n ? id.id.name\n : null;\n if (name == null) return null;\n\n return { name: prefix + name, originalNode: id };\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type TraversalAncestors = {\n node: t.Node;\n key: string;\n index?: number;\n}[];\n\nexport type TraversalHandler<T> = (\n this: undefined,\n node: t.Node,\n parent: TraversalAncestors,\n state: T,\n) => void;\n\nexport type TraversalHandlers<T> = {\n enter?: TraversalHandler<T>;\n exit?: TraversalHandler<T>;\n};\n\n/**\n * A general AST traversal with both prefix and postfix handlers, and a\n * state object. Exposes ancestry data to each handler so that more complex\n * AST data can be taken into account.\n */\nexport default function traverse<T>(\n node: t.Node,\n handlers: TraversalHandler<T> | TraversalHandlers<T>,\n state?: T,\n): void {\n if (typeof handlers === \"function\") {\n handlers = { enter: handlers };\n }\n\n const { enter, exit } = handlers;\n\n traverseSimpleImpl(node, enter, exit, state, []);\n}\n\nfunction traverseSimpleImpl<T>(\n node: any,\n enter: Function | undefined,\n exit: Function | undefined,\n state: T | undefined,\n ancestors: TraversalAncestors,\n) {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return;\n\n if (enter) enter(node, ancestors, state);\n\n for (const key of keys) {\n const subNode = node[key];\n\n if (Array.isArray(subNode)) {\n for (let i = 0; i < subNode.length; i++) {\n const child = subNode[i];\n if (!child) continue;\n\n ancestors.push({\n node,\n key,\n index: i,\n });\n\n traverseSimpleImpl(child, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n } else if (subNode) {\n ancestors.push({\n node,\n key,\n });\n\n traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n }\n\n if (exit) exit(node, ancestors, state);\n}\n","import getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Check if the input `node` is a binding identifier.\n */\nexport default function isBinding(\n node: t.Node,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n if (\n grandparent &&\n node.type === \"Identifier\" &&\n parent.type === \"ObjectProperty\" &&\n grandparent.type === \"ObjectExpression\"\n ) {\n // We need to special-case this, because getBindingIdentifiers\n // has an ObjectProperty->value entry for destructuring patterns.\n return false;\n }\n\n const keys = getBindingIdentifiers.keys[parent.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val =\n // @ts-expect-error key must present in parent\n parent[key];\n if (Array.isArray(val)) {\n if (val.includes(node)) return true;\n } else {\n if (val === node) return true;\n }\n }\n }\n\n return false;\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a `let` variable declaration.\n */\nexport default function isLet(node: t.Node | undefined | null): boolean {\n return isVariableDeclaration(node) && node.kind !== \"var\";\n}\n","import {\n isClassDeclaration,\n isFunctionDeclaration,\n} from \"./generated/index.ts\";\nimport isLet from \"./isLet.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is block scoped.\n */\nexport default function isBlockScoped(\n node: t.Node | null | undefined,\n): boolean {\n return isFunctionDeclaration(node) || isClassDeclaration(node) || isLet(node);\n}\n","import isType from \"./isType.ts\";\nimport { isIdentifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is definitely immutable.\n */\nexport default function isImmutable(node: t.Node): boolean {\n if (isType(node.type, \"Immutable\")) return true;\n\n if (isIdentifier(node)) {\n if (node.name === \"undefined\") {\n // immutable!\n return true;\n } else {\n // no idea...\n return false;\n }\n }\n\n return false;\n}\n","import { NODE_FIELDS, VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if two nodes are equivalent\n */\nexport default function isNodesEquivalent<T extends Partial<t.Node>>(\n a: T,\n b: any,\n): b is T {\n if (\n typeof a !== \"object\" ||\n typeof b !== \"object\" ||\n a == null ||\n b == null\n ) {\n return a === b;\n }\n\n if (a.type !== b.type) {\n return false;\n }\n\n const fields = Object.keys(NODE_FIELDS[a.type!] || a.type);\n const visitorKeys = VISITOR_KEYS[a.type!];\n\n for (const field of fields) {\n const val_a =\n // @ts-expect-error field must present in a\n a[field];\n const val_b = b[field];\n if (typeof val_a !== typeof val_b) {\n return false;\n }\n if (val_a == null && val_b == null) {\n continue;\n } else if (val_a == null || val_b == null) {\n return false;\n }\n\n if (Array.isArray(val_a)) {\n if (!Array.isArray(val_b)) {\n return false;\n }\n if (val_a.length !== val_b.length) {\n return false;\n }\n\n for (let i = 0; i < val_a.length; i++) {\n if (!isNodesEquivalent(val_a[i], val_b[i])) {\n return false;\n }\n }\n continue;\n }\n\n if (typeof val_a === \"object\" && !visitorKeys?.includes(field)) {\n for (const key of Object.keys(val_a)) {\n if (val_a[key] !== val_b[key]) {\n return false;\n }\n }\n continue;\n }\n\n if (!isNodesEquivalent(val_a, val_b)) {\n return false;\n }\n }\n\n return true;\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a reference to a bound variable.\n */\nexport default function isReferenced(\n node: t.Node | null | undefined,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n switch (parent.type) {\n // yes: PARENT[NODE]\n // yes: NODE.child\n // no: parent.NODE\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n if (parent.property === node) {\n return !!parent.computed;\n }\n return parent.object === node;\n\n case \"JSXMemberExpression\":\n return parent.object === node;\n // no: let NODE = init;\n // yes: let id = NODE;\n case \"VariableDeclarator\":\n return parent.init === node;\n\n // yes: () => NODE\n // no: (NODE) => {}\n case \"ArrowFunctionExpression\":\n return parent.body === node;\n\n // no: class { #NODE; }\n // no: class { get #NODE() {} }\n // no: class { #NODE() {} }\n // no: class { fn() { return this.#NODE; } }\n case \"PrivateName\":\n return false;\n\n // no: class { NODE() {} }\n // yes: class { [NODE]() {} }\n // no: class { foo(NODE) {} }\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"ObjectMethod\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return false;\n\n // yes: { [NODE]: \"\" }\n // no: { NODE: \"\" }\n // depends: { NODE }\n // depends: { key: NODE }\n case \"ObjectProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n // parent.value === node\n return grandparent?.type !== \"ObjectPattern\";\n // no: class { NODE = value; }\n // yes: class { [NODE] = value; }\n // yes: class { key = NODE; }\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n case \"ClassPrivateProperty\":\n return parent.key !== node;\n\n // no: class NODE {}\n // yes: class Foo extends NODE {}\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n return parent.superClass === node;\n\n // yes: left = NODE;\n // no: NODE = right;\n case \"AssignmentExpression\":\n return parent.right === node;\n\n // no: [NODE = foo] = [];\n // yes: [foo = NODE] = [];\n case \"AssignmentPattern\":\n return parent.right === node;\n\n // no: NODE: for (;;) {}\n case \"LabeledStatement\":\n return false;\n\n // no: try {} catch (NODE) {}\n case \"CatchClause\":\n return false;\n\n // no: function foo(...NODE) {}\n case \"RestElement\":\n return false;\n\n case \"BreakStatement\":\n case \"ContinueStatement\":\n return false;\n\n // no: function NODE() {}\n // no: function foo(NODE) {}\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n return false;\n\n // no: export NODE from \"foo\";\n // no: export * as NODE from \"foo\";\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return false;\n\n // no: export { foo as NODE };\n // yes: export { NODE as foo };\n // no: export { NODE as foo } from \"foo\";\n case \"ExportSpecifier\":\n // @ts-expect-error todo(flow->ts): Property 'source' does not exist on type 'AnyTypeAnnotation'.\n if (grandparent?.source) {\n return false;\n }\n return parent.local === node;\n\n // no: import NODE from \"foo\";\n // no: import * as NODE from \"foo\";\n // no: import { NODE as foo } from \"foo\";\n // no: import { foo as NODE } from \"foo\";\n // no: import NODE from \"bar\";\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n return false;\n\n // no: import \"foo\" assert { NODE: \"json\" }\n case \"ImportAttribute\":\n return false;\n\n // no: <div NODE=\"foo\" />\n case \"JSXAttribute\":\n return false;\n\n // no: [NODE] = [];\n // no: ({ NODE }) = [];\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n return false;\n\n // no: new.NODE\n // no: NODE.target\n case \"MetaProperty\":\n return false;\n\n // yes: type X = { someProperty: NODE }\n // no: type X = { NODE: OtherType }\n case \"ObjectTypeProperty\":\n return parent.key !== node;\n\n // yes: enum X { Foo = NODE }\n // no: enum X { NODE }\n case \"TSEnumMember\":\n return parent.id !== node;\n\n // yes: { [NODE]: value }\n // no: { NODE: value }\n case \"TSPropertySignature\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n\n return true;\n }\n\n return true;\n}\n","import {\n isFunction,\n isCatchClause,\n isBlockStatement,\n isScopable,\n isPattern,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a scope.\n */\nexport default function isScope(\n node: t.Node | null | undefined,\n parent: t.Node,\n): boolean {\n // If a BlockStatement is an immediate descendent of a Function/CatchClause, it must be in the body.\n // Hence we skipped the parentKey === \"params\" check\n if (isBlockStatement(node) && (isFunction(parent) || isCatchClause(parent))) {\n return false;\n }\n\n // If a Pattern is an immediate descendent of a Function/CatchClause, it must be in the params.\n // Hence we skipped the parentKey === \"params\" check\n if (isPattern(node) && (isFunction(parent) || isCatchClause(parent))) {\n return true;\n }\n\n return isScopable(node);\n}\n","import { isIdentifier, isImportDefaultSpecifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `specifier` is a `default` import or export.\n */\nexport default function isSpecifierDefault(\n specifier: t.ModuleSpecifier,\n): boolean {\n return (\n isImportDefaultSpecifier(specifier) ||\n // @ts-expect-error todo(flow->ts): stricter type for specifier\n isIdentifier(specifier.imported || specifier.exported, {\n name: \"default\",\n })\n );\n}\n","import isValidIdentifier from \"./isValidIdentifier.ts\";\n\nconst RESERVED_WORDS_ES3_ONLY = new Set<string>([\n \"abstract\",\n \"boolean\",\n \"byte\",\n \"char\",\n \"double\",\n \"enum\",\n \"final\",\n \"float\",\n \"goto\",\n \"implements\",\n \"int\",\n \"interface\",\n \"long\",\n \"native\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"short\",\n \"static\",\n \"synchronized\",\n \"throws\",\n \"transient\",\n \"volatile\",\n]);\n\n/**\n * Check if the input `name` is a valid identifier name according to the ES3 specification.\n *\n * Additional ES3 reserved words are\n */\nexport default function isValidES3Identifier(name: string): boolean {\n return isValidIdentifier(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a variable declaration.\n */\nexport default function isVar(node: t.Node | null | undefined): boolean {\n return isVariableDeclaration(node) && node.kind === \"var\";\n}\n","import isReactComponent from \"./validators/react/isReactComponent.ts\";\nimport isCompatTag from \"./validators/react/isCompatTag.ts\";\nimport buildChildren from \"./builders/react/buildChildren.ts\";\n\n// asserts\nexport { default as assertNode } from \"./asserts/assertNode.ts\";\nexport * from \"./asserts/generated/index.ts\";\n\n// builders\nexport { default as createTypeAnnotationBasedOnTypeof } from \"./builders/flow/createTypeAnnotationBasedOnTypeof.ts\";\n/** @deprecated use createFlowUnionType instead */\nexport { default as createUnionTypeAnnotation } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createFlowUnionType } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createTSUnionType } from \"./builders/typescript/createTSUnionType.ts\";\nexport * from \"./builders/productions.ts\";\nexport * from \"./builders/generated/index.ts\"; // includes AST types\n\n// clone\nexport { default as cloneNode } from \"./clone/cloneNode.ts\";\nexport { default as clone } from \"./clone/clone.ts\";\nexport { default as cloneDeep } from \"./clone/cloneDeep.ts\";\nexport { default as cloneDeepWithoutLoc } from \"./clone/cloneDeepWithoutLoc.ts\";\nexport { default as cloneWithoutLoc } from \"./clone/cloneWithoutLoc.ts\";\n\n// comments\nexport { default as addComment } from \"./comments/addComment.ts\";\nexport { default as addComments } from \"./comments/addComments.ts\";\nexport { default as inheritInnerComments } from \"./comments/inheritInnerComments.ts\";\nexport { default as inheritLeadingComments } from \"./comments/inheritLeadingComments.ts\";\nexport { default as inheritsComments } from \"./comments/inheritsComments.ts\";\nexport { default as inheritTrailingComments } from \"./comments/inheritTrailingComments.ts\";\nexport { default as removeComments } from \"./comments/removeComments.ts\";\n\n// constants\nexport * from \"./constants/generated/index.ts\";\nexport * from \"./constants/index.ts\";\n\n// converters\nexport { default as ensureBlock } from \"./converters/ensureBlock.ts\";\nexport { default as toBindingIdentifierName } from \"./converters/toBindingIdentifierName.ts\";\nexport { default as toBlock } from \"./converters/toBlock.ts\";\nexport { default as toComputedKey } from \"./converters/toComputedKey.ts\";\nexport { default as toExpression } from \"./converters/toExpression.ts\";\nexport { default as toIdentifier } from \"./converters/toIdentifier.ts\";\nexport { default as toKeyAlias } from \"./converters/toKeyAlias.ts\";\nexport { default as toStatement } from \"./converters/toStatement.ts\";\nexport { default as valueToNode } from \"./converters/valueToNode.ts\";\n\n// definitions\nexport * from \"./definitions/index.ts\";\n\n// modifications\nexport { default as appendToMemberExpression } from \"./modifications/appendToMemberExpression.ts\";\nexport { default as inherits } from \"./modifications/inherits.ts\";\nexport { default as prependToMemberExpression } from \"./modifications/prependToMemberExpression.ts\";\nexport {\n default as removeProperties,\n type Options as RemovePropertiesOptions,\n} from \"./modifications/removeProperties.ts\";\nexport { default as removePropertiesDeep } from \"./modifications/removePropertiesDeep.ts\";\nexport { default as removeTypeDuplicates } from \"./modifications/flow/removeTypeDuplicates.ts\";\n\n// retrievers\nexport { default as getAssignmentIdentifiers } from \"./retrievers/getAssignmentIdentifiers.ts\";\nexport { default as getBindingIdentifiers } from \"./retrievers/getBindingIdentifiers.ts\";\nexport { default as getOuterBindingIdentifiers } from \"./retrievers/getOuterBindingIdentifiers.ts\";\nexport { default as getFunctionName } from \"./retrievers/getFunctionName.ts\";\n\n// traverse\nexport { default as traverse } from \"./traverse/traverse.ts\";\nexport * from \"./traverse/traverse.ts\";\nexport { default as traverseFast } from \"./traverse/traverseFast.ts\";\n\n// utils\nexport { default as shallowEqual } from \"./utils/shallowEqual.ts\";\n\n// validators\nexport { default as is } from \"./validators/is.ts\";\nexport { default as isBinding } from \"./validators/isBinding.ts\";\nexport { default as isBlockScoped } from \"./validators/isBlockScoped.ts\";\nexport { default as isImmutable } from \"./validators/isImmutable.ts\";\nexport { default as isLet } from \"./validators/isLet.ts\";\nexport { default as isNode } from \"./validators/isNode.ts\";\nexport { default as isNodesEquivalent } from \"./validators/isNodesEquivalent.ts\";\nexport { default as isPlaceholderType } from \"./validators/isPlaceholderType.ts\";\nexport { default as isReferenced } from \"./validators/isReferenced.ts\";\nexport { default as isScope } from \"./validators/isScope.ts\";\nexport { default as isSpecifierDefault } from \"./validators/isSpecifierDefault.ts\";\nexport { default as isType } from \"./validators/isType.ts\";\nexport { default as isValidES3Identifier } from \"./validators/isValidES3Identifier.ts\";\nexport { default as isValidIdentifier } from \"./validators/isValidIdentifier.ts\";\nexport { default as isVar } from \"./validators/isVar.ts\";\nexport { default as matchesPattern } from \"./validators/matchesPattern.ts\";\nexport { default as validate } from \"./validators/validate.ts\";\nexport { default as buildMatchMemberExpression } from \"./validators/buildMatchMemberExpression.ts\";\nexport * from \"./validators/generated/index.ts\";\n\n// react\nexport const react = {\n isReactComponent,\n isCompatTag,\n buildChildren,\n};\n\n// this is used by @babel/traverse to warn about deprecated visitors\nexport { default as __internal__deprecationWarning } from \"./utils/deprecationWarning.ts\";\n","[\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"eval\",\n \"globalThis\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"undefined\",\n \"unescape\"\n]\n","[\n \"AggregateError\",\n \"Array\",\n \"ArrayBuffer\",\n \"Atomics\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"Error\",\n \"EvalError\",\n \"FinalizationRegistry\",\n \"Float16Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intl\",\n \"Iterator\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"Promise\",\n \"Proxy\",\n \"RangeError\",\n \"ReferenceError\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"SharedArrayBuffer\",\n \"String\",\n \"Symbol\",\n \"SyntaxError\",\n \"TypeError\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"URIError\",\n \"WeakMap\",\n \"WeakRef\",\n \"WeakSet\"\n]\n","import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n","const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n declare private buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n","import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n","// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nconst enum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n","/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nexport default function stripFilename(path: string | undefined | null): string {\n if (!path) return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n","import resolveUri from '@jridgewell/resolve-uri';\nimport stripFilename from './strip-filename';\n\ntype Resolve = (source: string | null) => string;\nexport default function resolver(\n mapUrl: string | null | undefined,\n sourceRoot: string | undefined,\n): Resolve {\n const from = stripFilename(mapUrl);\n // The sourceRoot is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n const prefix = sourceRoot ? sourceRoot + '/' : '';\n\n return (source) => resolveUri(prefix + (source || ''), from);\n}\n","type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\ntype GeneratedLine = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n\nexport const REV_GENERATED_LINE = 1;\nexport const REV_GENERATED_COLUMN = 2;\n","import { COLUMN } from './sourcemap-segment';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\n\nexport default function maybeSort(\n mappings: SourceMapSegment[][],\n owned: boolean,\n): SourceMapSegment[][] {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned) mappings = mappings.slice();\n\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\n\nfunction nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\n\nfunction isSorted(line: SourceMapSegment[]): boolean {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\n\nexport function sortComparator<T extends SourceMapSegment | ReverseSegment>(a: T, b: T): number {\n return a[COLUMN] - b[COLUMN];\n}\n","import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport { COLUMN } from './sourcemap-segment';\n\nexport type MemoState = {\n lastKey: number;\n lastNeedle: number;\n lastIndex: number;\n};\n\nexport let found = false;\n\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nexport function binarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n low: number,\n high: number,\n): number {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n\n if (cmp === 0) {\n found = true;\n return mid;\n }\n\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n found = false;\n return low - 1;\n}\n\nexport function upperBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function lowerBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function memoizedState(): MemoState {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nexport function memoizedBinarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n state: MemoState,\n key: number,\n): number {\n const { lastKey, lastNeedle, lastIndex } = state;\n\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n","import type { SourceMapSegment } from './sourcemap-segment';\nimport type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping';\n\nexport interface SourceMapV3 {\n file?: string | null;\n names: string[];\n sourceRoot?: string;\n sources: (string | null)[];\n sourcesContent?: (string | null)[];\n version: 3;\n ignoreList?: number[];\n}\n\nexport interface EncodedSourceMap extends SourceMapV3 {\n mappings: string;\n}\n\nexport interface DecodedSourceMap extends SourceMapV3 {\n mappings: SourceMapSegment[][];\n}\n\nexport interface Section {\n offset: { line: number; column: number };\n map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap;\n}\n\nexport interface SectionedSourceMap {\n file?: string | null;\n sections: Section[];\n version: 3;\n}\n\nexport type OriginalMapping = {\n source: string | null;\n line: number;\n column: number;\n name: string | null;\n};\n\nexport type InvalidOriginalMapping = {\n source: null;\n line: null;\n column: null;\n name: null;\n};\n\nexport type GeneratedMapping = {\n line: number;\n column: number;\n};\nexport type InvalidGeneratedMapping = {\n line: null;\n column: null;\n};\n\nexport type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND;\n\nexport type XInput = { x_google_ignoreList?: SourceMapV3['ignoreList'] };\nexport type EncodedSourceMapXInput = EncodedSourceMap & XInput;\nexport type DecodedSourceMapXInput = DecodedSourceMap & XInput;\nexport type SectionedSourceMapXInput = Omit<SectionedSourceMap, 'sections'> & {\n sections: SectionXInput[];\n};\nexport type SectionXInput = Omit<Section, 'map'> & {\n map: SectionedSourceMapInput;\n};\n\nexport type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap;\nexport type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput;\n\nexport type Needle = { line: number; column: number; bias?: Bias };\nexport type SourceNeedle = { source: string; line: number; column: number; bias?: Bias };\n\nexport type EachMapping =\n | {\n generatedLine: number;\n generatedColumn: number;\n source: null;\n originalLine: null;\n originalColumn: null;\n name: null;\n }\n | {\n generatedLine: number;\n generatedColumn: number;\n source: string | null;\n originalLine: number;\n originalColumn: number;\n name: string | null;\n };\n\nexport abstract class SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare resolvedSources: SourceMapV3['sources'];\n declare ignoreList: SourceMapV3['ignoreList'];\n}\n\nexport type Ro<T> =\n T extends Array<infer V>\n ? V[] | Readonly<V[]> | RoArray<V> | Readonly<RoArray<V>>\n : T extends object\n ? T | Readonly<T> | RoObject<T> | Readonly<RoObject<T>>\n : T;\ntype RoArray<T> = Ro<T>[];\ntype RoObject<T> = { [K in keyof T]: T[K] | Ro<T[K]> };\n\nexport function parse<T>(map: T): Exclude<T, string> {\n return typeof map === 'string' ? JSON.parse(map) : (map as Exclude<T, string>);\n}\n","import { encode, decode } from '@jridgewell/sourcemap-codec';\n\nimport resolver from './resolve';\nimport maybeSort from './sort';\nimport buildBySources from './by-source';\nimport {\n memoizedState,\n memoizedBinarySearch,\n upperBound,\n lowerBound,\n found as bsFound,\n} from './binary-search';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n REV_GENERATED_LINE,\n REV_GENERATED_COLUMN,\n} from './sourcemap-segment';\nimport { parse } from './types';\n\nimport type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport type {\n SourceMapV3,\n DecodedSourceMap,\n EncodedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n SourceMapInput,\n Needle,\n SourceNeedle,\n SourceMap,\n EachMapping,\n Bias,\n XInput,\n SectionedSourceMap,\n Ro,\n} from './types';\nimport type { Source } from './by-source';\nimport type { MemoState } from './binary-search';\n\nexport type { SourceMapSegment } from './sourcemap-segment';\nexport type {\n SourceMap,\n DecodedSourceMap,\n EncodedSourceMap,\n Section,\n SectionedSourceMap,\n SourceMapV3,\n Bias,\n EachMapping,\n GeneratedMapping,\n InvalidGeneratedMapping,\n InvalidOriginalMapping,\n Needle,\n OriginalMapping,\n OriginalMapping as Mapping,\n SectionedSourceMapInput,\n SourceMapInput,\n SourceNeedle,\n XInput,\n EncodedSourceMapXInput,\n DecodedSourceMapXInput,\n SectionedSourceMapXInput,\n SectionXInput,\n} from './types';\n\ninterface PublicMap {\n _encoded: TraceMap['_encoded'];\n _decoded: TraceMap['_decoded'];\n _decodedMemo: TraceMap['_decodedMemo'];\n _bySources: TraceMap['_bySources'];\n _bySourceMemos: TraceMap['_bySourceMemos'];\n}\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n\nexport const LEAST_UPPER_BOUND = -1;\nexport const GREATEST_LOWER_BOUND = 1;\n\nexport { FlattenMap, FlattenMap as AnyMap } from './flatten-map';\n\nexport class TraceMap implements SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare ignoreList: SourceMapV3['ignoreList'];\n\n declare resolvedSources: string[];\n declare private _encoded: string | undefined;\n\n declare private _decoded: SourceMapSegment[][] | undefined;\n declare private _decodedMemo: MemoState;\n\n declare private _bySources: Source[] | undefined;\n declare private _bySourceMemos: MemoState[] | undefined;\n\n constructor(map: Ro<SourceMapInput>, mapUrl?: string | null) {\n const isString = typeof map === 'string';\n if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap;\n\n const parsed = parse(map as Exclude<SourceMapInput, TraceMap>);\n\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || (parsed as XInput).x_google_ignoreList || undefined;\n\n const resolve = resolver(mapUrl, sourceRoot);\n this.resolvedSources = sources.map(resolve);\n\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n } else if (Array.isArray(mappings)) {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n } else if ((parsed as unknown as SectionedSourceMap).sections) {\n throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);\n } else {\n throw new Error(`invalid source map: ${JSON.stringify(parsed)}`);\n }\n\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nexport function encodedMappings(map: TraceMap): EncodedSourceMap['mappings'] {\n return (cast(map)._encoded ??= encode(cast(map)._decoded!));\n}\n\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nexport function decodedMappings(map: TraceMap): Readonly<DecodedSourceMap['mappings']> {\n return (cast(map)._decoded ||= decode(cast(map)._encoded!));\n}\n\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nexport function traceSegment(\n map: TraceMap,\n line: number,\n column: number,\n): Readonly<SourceMapSegment> | null {\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return null;\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND,\n );\n\n return index === -1 ? null : segments[index];\n}\n\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nexport function originalPositionFor(\n map: TraceMap,\n needle: Needle,\n): OriginalMapping | InvalidOriginalMapping {\n let { line, column, bias } = needle;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return OMapping(null, null, null, null);\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND,\n );\n\n if (index === -1) return OMapping(null, null, null, null);\n\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n );\n}\n\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nexport function generatedPositionFor(\n map: TraceMap,\n needle: SourceNeedle,\n): GeneratedMapping | InvalidGeneratedMapping {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n}\n\n/**\n * Finds all generated line/column positions of the provided source/line/column source position.\n */\nexport function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[] {\n const { source, line, column, bias } = needle;\n // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n}\n\n/**\n * Iterates each mapping in generated position order.\n */\nexport function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n } as EachMapping);\n }\n }\n}\n\nfunction sourceIndex(map: TraceMap, source: string): number {\n const { sources, resolvedSources } = map;\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n return index;\n}\n\n/**\n * Retrieves the source content for a particular source, if its found. Returns null if not.\n */\nexport function sourceContentFor(map: TraceMap, source: string): string | null {\n const { sourcesContent } = map;\n if (sourcesContent == null) return null;\n const index = sourceIndex(map, source);\n return index === -1 ? null : sourcesContent[index];\n}\n\n/**\n * Determines if the source is marked to ignore by the source map.\n */\nexport function isIgnored(map: TraceMap, source: string): boolean {\n const { ignoreList } = map;\n if (ignoreList == null) return false;\n const index = sourceIndex(map, source);\n return index === -1 ? false : ignoreList.includes(index);\n}\n\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nexport function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n cast(tracer)._decoded = map.mappings;\n return tracer;\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function decodedMap(\n map: TraceMap,\n): Omit<DecodedSourceMap, 'mappings'> & { mappings: readonly SourceMapSegment[][] } {\n return clone(map, decodedMappings(map));\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function encodedMap(map: TraceMap): EncodedSourceMap {\n return clone(map, encodedMappings(map));\n}\n\nfunction clone<T extends string | readonly SourceMapSegment[][]>(\n map: TraceMap | DecodedSourceMap,\n mappings: T,\n): T extends string ? EncodedSourceMap : DecodedSourceMap {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n ignoreList: map.ignoreList || (map as XInput).x_google_ignoreList,\n } as any;\n}\n\nfunction OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping;\nfunction OMapping(\n source: string,\n line: number,\n column: number,\n name: string | null,\n): OriginalMapping;\nfunction OMapping(\n source: string | null,\n line: number | null,\n column: number | null,\n name: string | null,\n): OriginalMapping | InvalidOriginalMapping {\n return { source, line, column, name } as any;\n}\n\nfunction GMapping(line: null, column: null): InvalidGeneratedMapping;\nfunction GMapping(line: number, column: number): GeneratedMapping;\nfunction GMapping(\n line: number | null,\n column: number | null,\n): GeneratedMapping | InvalidGeneratedMapping {\n return { line, column } as any;\n}\n\nfunction traceSegmentInternal(\n segments: SourceMapSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: SourceMapSegment[] | ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (bsFound) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nfunction sliceGeneratedPositions(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): GeneratedMapping[] {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!bsFound && bias === LEAST_UPPER_BOUND) min++;\n\n if (min === -1 || min === segments.length) return [];\n\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = bsFound ? column : segments[min][COLUMN];\n\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!bsFound) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\n\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: false,\n): GeneratedMapping | InvalidGeneratedMapping;\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: true,\n): GeneratedMapping[];\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: boolean,\n): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1) return all ? [] : GMapping(null, null);\n\n const bySourceMemos = (cast(map)._bySourceMemos ||= sources.map(memoizedState));\n const generated = (cast(map)._bySources ||= buildBySources(decodedMappings(map), bySourceMemos));\n\n const segments = generated[sourceIndex][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n\n const memo = bySourceMemos[sourceIndex];\n\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n}\n","type Key = string | number | symbol;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray<T extends Key = Key> {\n declare private _indexes: Record<T, number | undefined>;\n declare array: readonly T[];\n\n constructor() {\n this._indexes = { __proto__: null } as any;\n this.array = [];\n }\n}\n\ninterface PublicSet<T extends Key> {\n array: T[];\n _indexes: SetArray<T>['_indexes'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the set into a type\n * with public access modifiers.\n */\nfunction cast<T extends Key>(set: SetArray<T>): PublicSet<T> {\n return set as any;\n}\n\n/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport function get<T extends Key>(setarr: SetArray<T>, key: T): number | undefined {\n return cast(setarr)._indexes[key];\n}\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport function put<T extends Key>(setarr: SetArray<T>, key: T): number {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(setarr, key);\n if (index !== undefined) return index;\n\n const { array, _indexes: indexes } = cast(setarr);\n\n const length = array.push(key);\n return (indexes[key] = length - 1);\n}\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport function pop<T extends Key>(setarr: SetArray<T>): void {\n const { array, _indexes: indexes } = cast(setarr);\n if (array.length === 0) return;\n\n const last = array.pop()!;\n indexes[last] = undefined;\n}\n\n/**\n * Removes the key, if it exists in the set.\n */\nexport function remove<T extends Key>(setarr: SetArray<T>, key: T): void {\n const index = get(setarr, key);\n if (index === undefined) return;\n\n const { array, _indexes: indexes } = cast(setarr);\n for (let i = index + 1; i < array.length; i++) {\n const k = array[i];\n array[i - 1] = k;\n indexes[k]!--;\n }\n indexes[key] = undefined;\n array.pop();\n}\n","type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n","import { SetArray, put, remove } from './set-array';\nimport {\n encode,\n // encodeGeneratedRanges,\n // encodeOriginalScopes\n} from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\n// import type { OriginalScope, GeneratedRange } from '@jridgewell/sourcemap-codec';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type {\n DecodedSourceMap,\n EncodedSourceMap,\n Pos,\n Mapping,\n // BindingExpressionRange,\n // OriginalPos,\n // OriginalScopeInfo,\n // GeneratedRangeInfo,\n} from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n file?: string | null;\n sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n declare private _names: SetArray<string>;\n declare private _sources: SetArray<string>;\n declare private _sourcesContent: (string | null)[];\n declare private _mappings: SourceMapSegment[][];\n // private declare _originalScopes: OriginalScope[][];\n // private declare _generatedRanges: GeneratedRange[];\n declare private _ignoreList: SetArray<number>;\n declare file: string | null | undefined;\n declare sourceRoot: string | null | undefined;\n\n constructor({ file, sourceRoot }: Options = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n // this._originalScopes = [];\n // this._generatedRanges = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n this._ignoreList = new SetArray();\n }\n}\n\ninterface PublicMap {\n _names: GenMapping['_names'];\n _sources: GenMapping['_sources'];\n _sourcesContent: GenMapping['_sourcesContent'];\n _mappings: GenMapping['_mappings'];\n // _originalScopes: GenMapping['_originalScopes'];\n // _generatedRanges: GenMapping['_generatedRanges'];\n _ignoreList: GenMapping['_ignoreList'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: null,\n sourceLine?: null,\n sourceColumn?: null,\n name?: null,\n content?: null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name?: null,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name: string,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: string | null,\n sourceLine?: number | null,\n sourceColumn?: number | null,\n name?: string | null,\n content?: string | null,\n): void {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n}\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: null;\n original?: null;\n name?: null;\n content?: null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name?: null;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name: string;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: string | null;\n original?: Pos | null;\n name?: string | null;\n content?: string | null;\n },\n): void {\n return addMappingInternal(false, map, mapping as Parameters<typeof addMappingInternal>[2]);\n}\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport const maybeAddSegment: typeof addSegment = (\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n};\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport const maybeAddMapping: typeof addMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping as Parameters<typeof addMappingInternal>[2]);\n};\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport function setSourceContent(map: GenMapping, source: string, content: string | null): void {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n sourcesContent[index] = content;\n // if (index === originalScopes.length) originalScopes[index] = [];\n}\n\nexport function setIgnore(map: GenMapping, source: string, ignore = true) {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n // if (index === originalScopes.length) originalScopes[index] = [];\n if (ignore) put(ignoreList, index);\n else remove(ignoreList, index);\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toDecodedMap(map: GenMapping): DecodedSourceMap {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n // _generatedRanges: generatedRanges,\n } = cast(map);\n removeEmptyFinalLines(mappings);\n\n return {\n version: 3,\n file: map.file || undefined,\n names: names.array,\n sourceRoot: map.sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n // originalScopes,\n // generatedRanges,\n ignoreList: ignoreList.array,\n };\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toEncodedMap(map: GenMapping): EncodedSourceMap {\n const decoded = toDecodedMap(map);\n return Object.assign({}, decoded, {\n // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)),\n // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]),\n mappings: encode(decoded.mappings as SourceMapSegment[][]),\n });\n}\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport function fromMap(input: SourceMapInput): GenMapping {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n putAll(cast(gen)._names, map.names);\n putAll(cast(gen)._sources, map.sources as string[]);\n cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n cast(gen)._mappings = decodedMappings(map) as GenMapping['_mappings'];\n // TODO: implement originalScopes/generatedRanges\n if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList);\n\n return gen;\n}\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport function allMappings(map: GenMapping): Mapping[] {\n const out: Mapping[] = [];\n const { _mappings: mappings, _sources: sources, _names: names } = cast(map);\n\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source: string | undefined = undefined;\n let original: Pos | undefined = undefined;\n let name: string | undefined = undefined;\n\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n\n out.push({ generated, source, original, name } as Mapping);\n }\n }\n\n return out;\n}\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nfunction addSegmentInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: S,\n sourceLine: S extends string ? number : null | undefined,\n sourceColumn: S extends string ? number : null | undefined,\n name: S extends string ? string | null | undefined : null | undefined,\n content: S extends string ? string | null | undefined : null | undefined,\n): void {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n // _originalScopes: originalScopes,\n } = cast(map);\n const line = getIndex(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n\n // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n // isn't nullish.\n assert<number>(sourceLine);\n assert<number>(sourceColumn);\n\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n // if (sourcesIndex === originalScopes.length) originalScopes[sourcesIndex] = [];\n\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n\n return insert(\n line,\n index,\n name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n );\n}\n\nfunction assert<T>(_val: unknown): asserts _val is T {\n // noop.\n}\n\nfunction getIndex<T>(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) {\n arr[i] = [];\n }\n return arr[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\n\nfunction insert<T>(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\n\nfunction putAll<T extends string | number>(setarr: SetArray<T>, array: T[]) {\n for (let i = 0; i < array.length; i++) put(setarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0) return true;\n\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\n\nfunction skipSource(\n line: SourceMapSegment[],\n index: number,\n sourcesIndex: number,\n sourceLine: number,\n sourceColumn: number,\n namesIndex: number,\n): boolean {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0) return false;\n\n const prev = line[index - 1];\n\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1) return false;\n\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (\n sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n );\n}\n\nfunction addMappingInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: S;\n original: S extends string ? Pos : null | undefined;\n name: S extends string ? string | null | undefined : null | undefined;\n content: S extends string ? string | null | undefined : null | undefined;\n },\n) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null,\n );\n }\n assert<Pos>(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n source as string,\n original.line - 1,\n original.column,\n name,\n content,\n );\n}\n\n/*\nexport function addOriginalScope(\n map: GenMapping,\n data: {\n start: Pos;\n end: Pos;\n source: string;\n kind: string;\n name?: string;\n variables?: string[];\n },\n): OriginalScopeInfo {\n const { start, end, source, kind, name, variables } = data;\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _originalScopes: originalScopes,\n _names: names,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n\n const kindIndex = put(names, kind);\n const scope: OriginalScope = name\n ? [start.line - 1, start.column, end.line - 1, end.column, kindIndex, put(names, name)]\n : [start.line - 1, start.column, end.line - 1, end.column, kindIndex];\n if (variables) {\n scope.vars = variables.map((v) => put(names, v));\n }\n const len = originalScopes[index].push(scope);\n return [index, len - 1, variables];\n}\n*/\n\n// Generated Ranges\n/*\nexport function addGeneratedRange(\n map: GenMapping,\n data: {\n start: Pos;\n isScope: boolean;\n originalScope?: OriginalScopeInfo;\n callsite?: OriginalPos;\n },\n): GeneratedRangeInfo {\n const { start, isScope, originalScope, callsite } = data;\n const {\n _originalScopes: originalScopes,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _generatedRanges: generatedRanges,\n } = cast(map);\n\n const range: GeneratedRange = [\n start.line - 1,\n start.column,\n 0,\n 0,\n originalScope ? originalScope[0] : -1,\n originalScope ? originalScope[1] : -1,\n ];\n if (originalScope?.[2]) {\n range.bindings = originalScope[2].map(() => [[-1]]);\n }\n if (callsite) {\n const index = put(sources, callsite.source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n range.callsite = [index, callsite.line - 1, callsite.column];\n }\n if (isScope) range.isScope = true;\n generatedRanges.push(range);\n\n return [range, originalScope?.[2]];\n}\n\nexport function setEndPosition(range: GeneratedRangeInfo, pos: Pos) {\n range[0][2] = pos.line - 1;\n range[0][3] = pos.column;\n}\n\nexport function addBinding(\n map: GenMapping,\n range: GeneratedRangeInfo,\n variable: string,\n expression: string | BindingExpressionRange,\n) {\n const { _names: names } = cast(map);\n const bindings = (range[0].bindings ||= []);\n const vars = range[1];\n\n const index = vars!.indexOf(variable);\n const binding = getIndex(bindings, index);\n\n if (typeof expression === 'string') binding[0] = [put(names, expression)];\n else {\n const { start } = expression;\n binding.push([put(names, expression.expression), start.line - 1, start.column]);\n }\n}\n*/\n","import {\n GenMapping,\n maybeAddMapping,\n setSourceContent,\n allMappings,\n toEncodedMap,\n toDecodedMap,\n} from \"@jridgewell/gen-mapping\";\n\nimport type {\n EncodedSourceMap,\n DecodedSourceMap,\n Mapping,\n} from \"@jridgewell/gen-mapping\";\n\nimport type {\n InvalidOriginalMapping,\n OriginalMapping,\n SourceMapInput,\n} from \"@jridgewell/trace-mapping\";\nimport { originalPositionFor, TraceMap } from \"@jridgewell/trace-mapping\";\n\n/**\n * Build a sourcemap.\n */\n\nexport default class SourceMap {\n private _map: GenMapping;\n private _rawMappings: Mapping[] | undefined;\n private _sourceFileName: string | undefined;\n\n // Any real line is > 0, so init to 0 is fine.\n private _lastGenLine = 0;\n private _lastSourceLine = 0;\n\n // Source columns can be 0, but we only check in unison with sourceLine, which\n // inits to an impossible value. So init to 0 is fine.\n private _lastSourceColumn = 0;\n\n public _inputMap: TraceMap | null = null;\n\n constructor(\n opts: {\n sourceFileName?: string;\n sourceRoot?: string;\n inputSourceMap?: SourceMapInput;\n },\n code: string | Record<string, string> | null | undefined,\n ) {\n const map = (this._map = new GenMapping({ sourceRoot: opts.sourceRoot }));\n this._sourceFileName = opts.sourceFileName?.replace(/\\\\/g, \"/\");\n this._rawMappings = undefined;\n\n if (opts.inputSourceMap) {\n this._inputMap = new TraceMap(opts.inputSourceMap);\n const resolvedSources = this._inputMap.resolvedSources;\n if (resolvedSources.length) {\n for (let i = 0; i < resolvedSources.length; i++) {\n setSourceContent(\n map,\n resolvedSources[i],\n // @ts-expect-error FIXME: this._inputMap.sourcesContent?.[i] may be undefined, which is not acceptable by setSourceContent\n this._inputMap.sourcesContent?.[i],\n );\n }\n }\n }\n\n if (typeof code === \"string\" && !opts.inputSourceMap) {\n setSourceContent(map, this._sourceFileName!, code);\n } else if (typeof code === \"object\") {\n for (const sourceFileName of Object.keys(code!)) {\n setSourceContent(\n map,\n sourceFileName.replace(/\\\\/g, \"/\"),\n code![sourceFileName],\n );\n }\n }\n }\n\n /**\n * Get the sourcemap.\n */\n get(): EncodedSourceMap {\n return toEncodedMap(this._map);\n }\n\n getDecoded(): DecodedSourceMap {\n return toDecodedMap(this._map);\n }\n\n getRawMappings(): Mapping[] {\n return (this._rawMappings ||= allMappings(this._map));\n }\n\n /**\n * Mark the current generated position with a source position. May also be passed null line/column\n * values to insert a mapping to nothing.\n */\n\n mark(\n generated: { line: number; column: number },\n generatedIdentifierName: string | null,\n line?: number,\n column?: number,\n identifierName?: string | null,\n identifierNamePos?: { line: number; column: number },\n filename?: string | null,\n ) {\n this._rawMappings = undefined;\n\n let originalMapping: OriginalMapping | InvalidOriginalMapping | undefined;\n\n if (line != null) {\n if (this._inputMap) {\n // This is the lookup for this mark\n originalMapping = originalPositionFor(this._inputMap, {\n line,\n column: column!,\n });\n\n // Prefer the original name from the input sourcemap when marking an\n // identifier token at the same column, or when marking a related\n // token such as `(` via identifierNamePos.\n if (\n originalMapping.name &&\n (identifierNamePos ||\n (identifierName != null && originalMapping.column === column))\n ) {\n identifierName = originalMapping.name;\n } else if (identifierNamePos) {\n // Maybe we're marking a `(` and the input map already had a name attached there,\n // or we're marking a `(` and the sourcemap spanned a `foo(`,\n // or we're marking an identifier, etc.\n // We're trying to mark a `(` (as that's the only thing that provides\n // an identifierNamePos currently), and we the AST had an identifier attached.\n // Lookup it's original name.\n const originalIdentifierMapping = originalPositionFor(\n this._inputMap,\n identifierNamePos,\n );\n if (originalIdentifierMapping.name) {\n identifierName = originalIdentifierMapping.name;\n }\n }\n } else {\n originalMapping = {\n name: null,\n source: filename?.replace(/\\\\/g, \"/\") || this._sourceFileName!,\n line: line,\n column: column!,\n };\n }\n }\n\n if (identifierName != null && identifierName === generatedIdentifierName) {\n identifierName = null;\n }\n\n // @ts-expect-error FIXME: original cannot be InvalidOriginalMapping\n maybeAddMapping(this._map, {\n name: identifierName,\n generated,\n source: originalMapping?.source,\n original: originalMapping,\n });\n }\n}\n","import type SourceMap from \"./source-map.ts\";\nimport type { SourceLocation } from \"@babel/types\";\n\nimport * as charcodes from \"charcodes\";\n\nexport type Loc = SourceLocation;\nexport type Pos = SourceLocation[\"start\"];\n\ntype SourcePosition = {\n line: number | undefined;\n column: number | undefined;\n identifierName: string | undefined;\n identifierNamePos: Pos | undefined;\n filename: string | undefined;\n};\n\nconst spaceIndents: string[] = [];\nfor (let i = 0; i < 32; i++) {\n spaceIndents.push(\" \".repeat(i * 2));\n}\n\nexport default class Buffer {\n constructor(map: SourceMap | null, indentChar: string) {\n this._map = map;\n this._indentChar = indentChar;\n }\n\n _map: SourceMap | null = null;\n _buf = \"\";\n _str = \"\";\n _appendCount = 0;\n _last = 0;\n _canMarkIdName = true;\n _indentChar = \"\";\n _queuedChar: typeof charcodes.space | typeof charcodes.semicolon | 0 = 0;\n\n _position = {\n line: 1,\n column: 0,\n };\n _sourcePosition: SourcePosition = {\n identifierName: undefined,\n identifierNamePos: undefined,\n line: undefined,\n column: undefined,\n filename: undefined,\n };\n\n /**\n * Get the final string output from the buffer, along with the sourcemap if one exists.\n */\n\n get() {\n const { _map, _last } = this;\n if (this._queuedChar !== charcodes.space) {\n this._flush();\n }\n\n // Whatever trim is used here should not execute a regex against the\n // source string since it may be arbitrarily large after all transformations\n const code =\n _last === charcodes.lineFeed\n ? (this._buf + this._str).trimRight()\n : this._buf + this._str;\n\n // Creating objects with getters is expensive.\n if (_map === null) {\n return {\n code: code,\n decodedMap: undefined,\n map: null,\n rawMappings: undefined,\n };\n }\n\n const result = {\n code: code,\n // Decoded sourcemap is free to generate.\n decodedMap: _map.getDecoded(),\n // Encoding the sourcemap is moderately CPU expensive.\n get map() {\n const resultMap = _map.get();\n result.map = resultMap;\n return resultMap;\n },\n set map(value) {\n Object.defineProperty(result, \"map\", { value, writable: true });\n },\n // Retrieving the raw mappings is very memory intensive.\n get rawMappings() {\n const mappings = _map.getRawMappings();\n result.rawMappings = mappings;\n return mappings;\n },\n set rawMappings(value) {\n Object.defineProperty(result, \"rawMappings\", { value, writable: true });\n },\n };\n\n return result;\n }\n\n /**\n * Add a string to the buffer that cannot be reverted.\n */\n\n append(\n str: string,\n maybeNewline: boolean,\n ignoreMapping: boolean = false,\n ): void {\n this._flush();\n this._append(str, maybeNewline, ignoreMapping);\n }\n\n appendChar(char: number): void {\n this._flush();\n this._appendChar(char, 1, true);\n }\n\n /**\n * Add a string to the buffer than can be reverted.\n */\n queue(char: typeof charcodes.space | typeof charcodes.semicolon): void {\n this._flush();\n this._queuedChar = char;\n }\n\n _flush(): void {\n const queuedChar = this._queuedChar;\n if (queuedChar !== 0) {\n this._appendChar(queuedChar, 1, true);\n this._queuedChar = 0;\n }\n }\n\n _appendChar(char: number, repeat: number, useSourcePos: boolean): void {\n this._last = char;\n\n if (char === -1) {\n const indent =\n repeat >= 64\n ? this._indentChar.repeat(repeat)\n : spaceIndents[repeat / 2];\n this._str += indent;\n } else {\n this._str +=\n repeat > 1\n ? String.fromCharCode(char).repeat(repeat)\n : String.fromCharCode(char);\n }\n\n const isSpace = char === charcodes.space;\n const position = this._position;\n if (char !== charcodes.lineFeed) {\n if (this._map) {\n const sourcePos = this._sourcePosition;\n if (useSourcePos && sourcePos) {\n this._map.mark(\n position,\n null,\n sourcePos.line,\n sourcePos.column,\n isSpace ? undefined : sourcePos.identifierName,\n isSpace ? undefined : sourcePos.identifierNamePos,\n sourcePos.filename,\n );\n\n if (!isSpace && this._canMarkIdName) {\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n } else {\n this._map.mark(position, null);\n }\n }\n\n position.column += repeat;\n } else {\n position.line++;\n position.column = 0;\n }\n }\n\n _append(str: string, maybeNewline: boolean, ignoreMapping: boolean): void {\n const len = str.length;\n const position = this._position;\n const sourcePos = this._sourcePosition;\n\n this._last = -1; /* LAST_CHAR_KINDS.NORMAL */\n\n if (++this._appendCount > 4096) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n +this._str; // Unexplainable huge performance boost. Ref: https://github.com/davidmarkclements/flatstr License: MIT\n this._buf += this._str;\n this._str = str;\n this._appendCount = 0;\n } else {\n this._str += str;\n }\n\n const hasMap = !ignoreMapping && this._map !== null;\n\n if (!maybeNewline && !hasMap) {\n position.column += len;\n return;\n }\n\n const { column, identifierName, identifierNamePos, filename } = sourcePos;\n let line = sourcePos.line;\n\n if (\n (identifierName != null || identifierNamePos != null) &&\n this._canMarkIdName\n ) {\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n\n // Search for newline chars. We search only for `\\n`, since both `\\r` and\n // `\\r\\n` are normalized to `\\n` during parse. We exclude `\\u2028` and\n // `\\u2029` for performance reasons, they're so uncommon that it's probably\n // ok. It's also unclear how other sourcemap utilities handle them...\n let i = str.indexOf(\"\\n\");\n let last = 0;\n\n // If the string starts with a newline char, then adding a mark is redundant.\n // This catches both \"no newlines\" and \"newline after several chars\".\n if (hasMap && i !== 0) {\n this._map!.mark(\n position,\n str,\n line,\n column,\n identifierName,\n identifierNamePos,\n filename,\n );\n }\n\n // Now, find each remaining newline char in the string.\n while (i !== -1) {\n position.line++;\n position.column = 0;\n last = i + 1;\n\n // We mark the start of each line, which happens directly after this newline char\n // unless this is the last char.\n // When manually adding multi-line content (such as a comment), `line` will be `undefined`.\n if (last < len && line !== undefined) {\n line++;\n if (hasMap) {\n this._map!.mark(\n position,\n str,\n line,\n 0,\n undefined,\n undefined,\n filename,\n );\n }\n }\n i = str.indexOf(\"\\n\", last);\n }\n position.column += len - last;\n }\n\n removeLastSemicolon(): void {\n if (this._queuedChar === charcodes.semicolon) {\n this._queuedChar = 0;\n }\n }\n\n getLastChar(checkQueue?: boolean): number {\n if (!checkQueue) {\n return this._last;\n }\n const queuedChar = this._queuedChar;\n return queuedChar !== 0 ? queuedChar : this._last;\n }\n\n /**\n * This will only detect at most 1 newline after a call to `flush()`,\n * but this has not been found so far, and an accurate count can be achieved if needed later.\n */\n getNewlineCount(): number {\n return this._queuedChar === 0 && this._last === charcodes.lineFeed ? 1 : 0;\n }\n\n hasContent(): boolean {\n return this._last !== 0 /*|| this._queuedChar !== 0*/;\n }\n\n /**\n * Certain sourcemap usecases expect mappings to be more accurate than\n * Babel's generic sourcemap handling allows. For now, we special-case\n * identifiers to allow for the primary cases to work.\n * The goal of this line is to ensure that the map output from Babel will\n * have an exact range on identifiers in the output code. Without this\n * line, Babel would potentially include some number of trailing tokens\n * that are printed after the identifier, but before another location has\n * been assigned.\n * This allows tooling like Rollup and Webpack to more accurately perform\n * their own transformations. Most importantly, this allows the import/export\n * transformations performed by those tools to loose less information when\n * applying their own transformations on top of the code and map results\n * generated by Babel itself.\n *\n * The primary example of this is the snippet:\n *\n * import mod from \"mod\";\n * mod();\n *\n * With this line, there will be one mapping range over \"mod\" and another\n * over \"();\", where previously it would have been a single mapping.\n */\n exactSource(loc: Loc, cb: () => void) {\n if (!this._map) {\n cb();\n return;\n }\n\n this.source(\"start\", loc);\n const identifierName = loc.identifierName;\n const sourcePos = this._sourcePosition;\n if (identifierName != null) {\n this._canMarkIdName = false;\n sourcePos.identifierName = identifierName;\n }\n cb();\n\n if (identifierName != null) {\n this._canMarkIdName = true;\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n this.source(\"end\", loc);\n }\n\n /**\n * Sets a given position as the current source location so generated code after this call\n * will be given this position in the sourcemap.\n */\n\n source(prop: \"start\" | \"end\", loc: Loc): void {\n if (!this._map) return;\n\n // Since this is called extremely often, we reuse the same _sourcePosition\n // object for the whole lifetime of the buffer.\n this._normalizePosition(prop, loc, 0);\n }\n\n sourceWithOffset(\n prop: \"start\" | \"end\",\n loc: Loc,\n columnOffset: number,\n ): void {\n if (!this._map) return;\n\n this._normalizePosition(prop, loc, columnOffset);\n }\n\n _normalizePosition(prop: \"start\" | \"end\", loc: Loc, columnOffset: number) {\n this._flush();\n\n const pos = loc[prop];\n if (pos) {\n this.setSourcePosition(\n pos.line,\n // TODO: Fix https://github.com/babel/babel/issues/15712 in downstream\n Math.max(pos.column + columnOffset, 0),\n );\n this._sourcePosition.filename = loc.filename;\n }\n }\n\n setSourcePosition(line: number, column: number): void {\n const target = this._sourcePosition;\n target.line = line;\n target.column = column;\n }\n\n getCurrentColumn(): number {\n return this._position.column + (this._queuedChar ? 1 : 0);\n }\n\n getCurrentLine(): number {\n return this._position.line;\n }\n}\n","import {\n isMemberExpression,\n isOptionalMemberExpression,\n isYieldExpression,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport { TokenContext } from \"./index.ts\";\n\nconst PRECEDENCE = new Map([\n [\"||\", 0],\n [\"??\", 1],\n [\"&&\", 2],\n [\"|\", 3],\n [\"^\", 4],\n [\"&\", 5],\n [\"==\", 6],\n [\"===\", 6],\n [\"!=\", 6],\n [\"!==\", 6],\n [\"<\", 7],\n [\">\", 7],\n [\"<=\", 7],\n [\">=\", 7],\n [\"in\", 7],\n [\"instanceof\", 7],\n [\">>\", 8],\n [\"<<\", 8],\n [\">>>\", 8],\n [\"+\", 9],\n [\"-\", 9],\n [\"*\", 10],\n [\"/\", 10],\n [\"%\", 10],\n [\"**\", 11],\n]);\n\nfunction isTSTypeExpression(nodeId: number) {\n return (\n nodeId === __node(\"TSAsExpression\") ||\n nodeId === __node(\"TSSatisfiesExpression\") ||\n nodeId === __node(\"TSTypeAssertion\")\n );\n}\n\nconst isClassExtendsClause = (\n node: t.Node,\n parent: any,\n parentId: number,\n): parent is t.Class => {\n return (\n (parentId === __node(\"ClassDeclaration\") ||\n parentId === __node(\"ClassExpression\")) &&\n parent.superClass === node\n );\n};\n\nconst hasPostfixPart = (node: t.Node, parent: any, parentId: number) => {\n switch (parentId) {\n case __node(\"MemberExpression\"):\n case __node(\"OptionalMemberExpression\"):\n return parent.object === node;\n case __node(\"CallExpression\"):\n case __node(\"OptionalCallExpression\"):\n case __node(\"NewExpression\"):\n return parent.callee === node;\n case __node(\"TaggedTemplateExpression\"):\n return parent.tag === node;\n case __node(\"TSNonNullExpression\"):\n return true;\n }\n\n return false;\n};\n\nexport function NullableTypeAnnotation(\n node: t.NullableTypeAnnotation,\n parent: any,\n parentId: number,\n): boolean {\n return parentId === __node(\"ArrayTypeAnnotation\");\n}\n\nexport function FunctionTypeAnnotation(\n node: t.FunctionTypeAnnotation,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n return (\n // (() => A) | (() => B)\n parentId === __node(\"UnionTypeAnnotation\") ||\n // (() => A) & (() => B)\n parentId === __node(\"IntersectionTypeAnnotation\") ||\n // (() => A)[]\n parentId === __node(\"ArrayTypeAnnotation\") ||\n (tokenContext & TokenContext.arrowFlowReturnType) > 0\n );\n}\n\nexport function UpdateExpression(\n node: t.UpdateExpression,\n parent: any,\n parentId: number,\n): boolean {\n return (\n hasPostfixPart(node, parent, parentId) ||\n isClassExtendsClause(node, parent, parentId)\n );\n}\n\nfunction needsParenBeforeExpressionBrace(tokenContext: number) {\n return (\n (tokenContext &\n (TokenContext.expressionStatement | TokenContext.arrowBody)) >\n 0\n );\n}\n\nexport function ObjectExpression(\n node: t.ObjectExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n return needsParenBeforeExpressionBrace(tokenContext);\n}\n\nexport function DoExpression(\n node: t.DoExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n // `async do` can start an expression statement\n return (tokenContext & TokenContext.expressionStatement) > 0 && !node.async;\n}\n\nconst enum BinaryLikeType {\n Binary = 0,\n Logical = 1,\n TypeScript = 2,\n}\n\nfunction BinaryLike(\n node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n parent: any,\n parentId: number,\n nodeType: BinaryLikeType,\n): boolean {\n if (isClassExtendsClause(node, parent, parentId)) {\n return true;\n }\n\n if (\n hasPostfixPart(node, parent, parentId) ||\n parentId === __node(\"UnaryExpression\") ||\n parentId === __node(\"SpreadElement\") ||\n parentId === __node(\"AwaitExpression\")\n ) {\n return true;\n }\n let parentPos: number | undefined;\n switch (parentId) {\n case __node(\"BinaryExpression\"):\n case __node(\"LogicalExpression\"):\n parentPos = PRECEDENCE.get(parent.operator);\n break;\n case __node(\"TSAsExpression\"):\n case __node(\"TSSatisfiesExpression\"):\n parentPos = 7; /* in */\n }\n if (parentPos !== undefined) {\n const nodePos =\n nodeType === BinaryLikeType.TypeScript\n ? 7 /* in */\n : PRECEDENCE.get((node as t.Binary).operator)!;\n if (parentPos > nodePos) return true;\n if (\n parentPos === nodePos &&\n parentId === __node(\"BinaryExpression\") &&\n (nodePos === 11 /* ** */ ? parent.left === node : parent.right === node)\n ) {\n return true;\n }\n if (\n nodeType === BinaryLikeType.Logical &&\n parentId === __node(\"LogicalExpression\") &&\n // 1: ??\n ((nodePos === 1 && parentPos !== 1) || (parentPos === 1 && nodePos !== 1))\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function UnionTypeAnnotation(\n node: t.UnionTypeAnnotation | t.IntersectionTypeAnnotation,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"ArrayTypeAnnotation\"):\n case __node(\"NullableTypeAnnotation\"):\n case __node(\"IntersectionTypeAnnotation\"):\n case __node(\"UnionTypeAnnotation\"):\n return true;\n }\n return false;\n}\n\nexport { UnionTypeAnnotation as IntersectionTypeAnnotation };\n\nexport function OptionalIndexedAccessType(\n node: t.OptionalIndexedAccessType,\n parent: any,\n parentId: number,\n): boolean {\n return parentId === __node(\"IndexedAccessType\") && parent.objectType === node;\n}\n\nexport function TSAsExpression(\n node: t.TSAsExpression | t.TSSatisfiesExpression,\n parent: any,\n parentId: number,\n): boolean {\n if (\n (parentId === __node(\"AssignmentExpression\") ||\n parentId === __node(\"AssignmentPattern\")) &&\n parent.left === node\n ) {\n return true;\n }\n if (\n parentId === __node(\"BinaryExpression\") &&\n (parent.operator === \"|\" || parent.operator === \"&\") &&\n node === parent.left\n ) {\n return true;\n }\n return BinaryLike(node, parent, parentId, BinaryLikeType.TypeScript);\n}\n\nexport { TSAsExpression as TSSatisfiesExpression };\n\nexport { UnaryLike as TSTypeAssertion };\n\nexport function TSConditionalType(\n node: t.TSConditionalType,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"TSArrayType\"):\n case __node(\"TSOptionalType\"):\n case __node(\"TSTypeOperator\"):\n // for `infer K extends (L extends M ? M : ...)`\n // fallthrough\n case __node(\"TSTypeParameter\"):\n case __node(\"TSIntersectionType\"):\n case __node(\"TSUnionType\"):\n return true;\n case __node(\"TSIndexedAccessType\"):\n return parent.objectType === node;\n case __node(\"TSConditionalType\"):\n return parent.checkType === node || parent.extendsType === node;\n }\n return false;\n}\n\nexport function TSUnionType(\n node: t.TSUnionType | t.TSFunctionType,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"TSIntersectionType\"):\n case __node(\"TSTypeOperator\"):\n case __node(\"TSArrayType\"):\n case __node(\"TSOptionalType\"):\n return true;\n case __node(\"TSIndexedAccessType\"):\n return parent.objectType === node;\n }\n return false;\n}\n\nexport function TSIntersectionType(\n node: t.TSUnionType,\n parent: any,\n parentId: number,\n): boolean {\n return (\n parentId === __node(\"TSTypeOperator\") ||\n TSTypeOperator(node, parent, parentId)\n );\n}\n\nexport function TSInferType(\n node: t.TSInferType,\n parent: any,\n parentId: number,\n): boolean {\n if (TSTypeOperator(node, parent, parentId)) {\n return true;\n }\n if (\n (parentId === __node(\"TSIntersectionType\") ||\n parentId === __node(\"TSUnionType\")) &&\n node.typeParameter.constraint != null\n ) {\n return true;\n }\n return false;\n}\n\nexport function TSTypeOperator(\n node: t.TSTypeOperator | t.TSUnionType | t.TSInferType,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"TSArrayType\"):\n case __node(\"TSOptionalType\"):\n return true;\n case __node(\"TSIndexedAccessType\"):\n if (parent.objectType === node) {\n return true;\n }\n }\n return false;\n}\n\nexport function TSInstantiationExpression(\n node: t.TSInstantiationExpression,\n parent: any,\n parentId: number,\n) {\n switch (parentId) {\n case __node(\"CallExpression\"):\n case __node(\"OptionalCallExpression\"):\n case __node(\"NewExpression\"):\n case __node(\"TSInstantiationExpression\"):\n return parent.typeArguments != null;\n }\n\n return false;\n}\n\nexport function TSFunctionType(\n node: t.TSFunctionType,\n parent: any,\n parentId: number,\n): boolean {\n if (TSUnionType(node, parent, parentId)) return true;\n\n return (\n parentId === __node(\"TSUnionType\") ||\n (parentId === __node(\"TSConditionalType\") &&\n (parent.checkType === node || parent.extendsType === node))\n );\n}\n\nexport { TSFunctionType as TSConstructorType };\n\nexport function BinaryExpression(\n node: t.BinaryExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n if (BinaryLike(node, parent, parentId, BinaryLikeType.Binary)) return true;\n\n // for ((1 in []);;);\n // for (var x = (1 in []) in 2);\n return (\n (tokenContext & TokenContext.forInOrInitHeadAccumulate) > 0 &&\n node.operator === \"in\"\n );\n}\n\nexport function LogicalExpression(\n node: t.LogicalExpression,\n parent: any,\n parentId: number,\n): boolean {\n return BinaryLike(node, parent, parentId, BinaryLikeType.Logical);\n}\n\nexport function SequenceExpression(\n node: t.SequenceExpression,\n parent: any,\n parentId: number,\n): boolean {\n if (\n parentId === __node(\"SequenceExpression\") ||\n parentId === __node(\"ParenthesizedExpression\") ||\n (parentId === __node(\"MemberExpression\") && parent.property === node) ||\n (parentId === __node(\"OptionalMemberExpression\") &&\n parent.property === node) ||\n parentId === __node(\"TemplateLiteral\")\n ) {\n return false;\n }\n if (parentId === __node(\"ClassDeclaration\")) {\n return true;\n }\n if (parentId === __node(\"ForOfStatement\")) {\n return parent.right === node;\n }\n if (parentId === __node(\"ExportDefaultDeclaration\")) {\n return true;\n }\n\n return !isStatement(parent);\n}\n\nexport function YieldExpression(\n node: t.YieldExpression,\n parent: any,\n parentId: number,\n): boolean {\n return (\n parentId === __node(\"BinaryExpression\") ||\n parentId === __node(\"LogicalExpression\") ||\n parentId === __node(\"UnaryExpression\") ||\n parentId === __node(\"SpreadElement\") ||\n hasPostfixPart(node, parent, parentId) ||\n (parentId === __node(\"AwaitExpression\") && isYieldExpression(node)) ||\n (parentId === __node(\"ConditionalExpression\") && node === parent.test) ||\n isClassExtendsClause(node, parent, parentId) ||\n isTSTypeExpression(parentId)\n );\n}\n\nexport { YieldExpression as AwaitExpression };\n\nexport function ClassExpression(\n node: t.ClassExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n return (\n (tokenContext &\n (TokenContext.expressionStatement | TokenContext.exportDefault)) >\n 0\n );\n}\n\nfunction UnaryLike(\n node:\n | t.UnaryLike\n | t.TSTypeAssertion\n | t.ArrowFunctionExpression\n | t.ConditionalExpression\n | t.AssignmentExpression,\n parent: any,\n parentId: number,\n): boolean {\n return (\n hasPostfixPart(node, parent, parentId) ||\n (parentId === __node(\"BinaryExpression\") &&\n parent.operator === \"**\" &&\n parent.left === node) ||\n isClassExtendsClause(node, parent, parentId)\n );\n}\n\nexport { UnaryLike as UnaryExpression, UnaryLike as SpreadElement };\n\nexport function FunctionExpression(\n node: t.FunctionExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n return (\n (tokenContext &\n (TokenContext.expressionStatement | TokenContext.exportDefault)) >\n 0\n );\n}\n\nexport function ConditionalExpression(\n node:\n | t.ConditionalExpression\n | t.ArrowFunctionExpression\n | t.AssignmentExpression,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"UnaryExpression\"):\n case __node(\"SpreadElement\"):\n case __node(\"BinaryExpression\"):\n case __node(\"LogicalExpression\"):\n case __node(\"AwaitExpression\"):\n return true;\n case __node(\"ConditionalExpression\"):\n if (parent.test === node) {\n return true;\n }\n }\n\n if (isTSTypeExpression(parentId)) {\n return true;\n }\n\n return UnaryLike(node, parent, parentId);\n}\n\nexport { ConditionalExpression as ArrowFunctionExpression };\n\nexport function OptionalMemberExpression(\n node: t.OptionalMemberExpression,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"CallExpression\"):\n return parent.callee === node;\n case __node(\"MemberExpression\"):\n return parent.object === node;\n }\n return false;\n}\n\nexport { OptionalMemberExpression as OptionalCallExpression };\n\nexport function AssignmentExpression(\n node: t.AssignmentExpression,\n parent: any,\n parentId: number,\n tokenContext: number,\n): boolean {\n if (\n needsParenBeforeExpressionBrace(tokenContext) &&\n node.left.type === \"ObjectPattern\"\n ) {\n return true;\n }\n return ConditionalExpression(node, parent, parentId);\n}\n\nexport function Identifier(\n node: t.Identifier,\n parent: any,\n parentId: number,\n tokenContext: number,\n getRawIdentifier: (node: t.Identifier) => string,\n): boolean {\n if (getRawIdentifier && getRawIdentifier(node) !== node.name) {\n return false;\n }\n\n // 13.15.2 AssignmentExpression RS: Evaluation\n // (fn) = function () {};\n if (\n parentId === __node(\"AssignmentExpression\") &&\n node.extra?.parenthesized &&\n parent.left === node\n ) {\n const rightType = parent.right.type;\n if (\n (rightType === \"FunctionExpression\" || rightType === \"ClassExpression\") &&\n parent.right.id == null\n ) {\n return true;\n }\n }\n\n // fast path\n if (\n tokenContext & TokenContext.forOfHead ||\n ((parentId === __node(\"MemberExpression\") ||\n parentId === __node(\"OptionalMemberExpression\")) &&\n tokenContext &\n (TokenContext.expressionStatement |\n TokenContext.forInitHead |\n TokenContext.forInHead))\n ) {\n // Non-strict code allows the identifier `let`, but it cannot occur as-is in\n // certain contexts to avoid ambiguity with contextual keyword `let`.\n if (node.name === \"let\") {\n // Some contexts only forbid `let [`, so check if the next token would\n // be the left bracket of a computed member expression.\n const isFollowedByBracket =\n isMemberExpression(parent, {\n object: node,\n computed: true,\n }) ||\n isOptionalMemberExpression(parent, {\n object: node,\n computed: true,\n optional: false,\n });\n if (\n isFollowedByBracket &&\n tokenContext &\n (TokenContext.expressionStatement |\n TokenContext.forInitHead |\n TokenContext.forInHead)\n ) {\n return true;\n }\n return (tokenContext & TokenContext.forOfHead) > 0;\n }\n }\n\n // ECMAScript specifically forbids a for-of loop from starting with the\n // token sequence `for (async of`, because it would be ambiguous with\n // `for (async of => {};;)`, so we need to add extra parentheses.\n return (\n parentId === __node(\"ForOfStatement\") &&\n parent.left === node &&\n node.name === \"async\" &&\n !parent.await\n );\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TaggedTemplateExpression(\n this: Printer,\n node: t.TaggedTemplateExpression,\n) {\n this.print(node.tag);\n\n this.print(node.typeArguments);\n\n this.print(node.quasi);\n}\n\nexport function TemplateElement(this: Printer) {\n throw new Error(\"TemplateElement printing is handled in TemplateLiteral\");\n}\n\nexport type TemplateLiteralBase = t.Node & {\n quasis: t.TemplateElement[];\n};\n\nexport function _printTemplate<T extends t.Node>(\n this: Printer,\n node: TemplateLiteralBase,\n substitutions: T[],\n) {\n const quasis = node.quasis;\n let partRaw = \"`\";\n for (let i = 0; i < quasis.length - 1; i++) {\n partRaw += quasis[i].value.raw;\n this.token(partRaw + \"${\", true);\n this.print(substitutions[i]);\n partRaw = \"}\";\n }\n\n partRaw += quasis[quasis.length - 1].value.raw;\n this.token(partRaw + \"`\", true);\n}\n\nexport function TemplateLiteral(this: Printer, node: t.TemplateLiteral) {\n _printTemplate.call(this, node, node.expressions);\n}\n","import type Printer from \"../printer.ts\";\nimport {\n isCallExpression,\n isLiteral,\n isMemberExpression,\n isNewExpression,\n isPattern,\n} from \"@babel/types\";\nimport * as charCodes from \"charcodes\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function UnaryExpression(this: Printer, node: t.UnaryExpression) {\n const { operator } = node;\n const firstChar = operator.charCodeAt(0);\n if (firstChar >= charCodes.lowercaseA && firstChar <= charCodes.lowercaseZ) {\n this.word(operator);\n this.space();\n } else {\n this.tokenChar(firstChar);\n }\n\n this.print(node.argument);\n}\n\nexport function DoExpression(this: Printer, node: t.DoExpression) {\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n this.word(\"do\");\n this.space();\n this.print(node.body);\n}\n\nexport function ParenthesizedExpression(\n this: Printer,\n node: t.ParenthesizedExpression,\n) {\n this.token(\"(\");\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.print(node.expression, undefined, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightParens(node);\n}\n\nexport function UpdateExpression(this: Printer, node: t.UpdateExpression) {\n if (node.prefix) {\n this.token(node.operator, false, 0, true);\n this.print(node.argument);\n } else {\n this.print(node.argument, true);\n this.token(node.operator, false, 0, true);\n }\n}\n\nexport function ConditionalExpression(\n this: Printer,\n node: t.ConditionalExpression,\n) {\n this.print(node.test);\n this.space();\n this.token(\"?\");\n this.space();\n this.print(node.consequent);\n this.space();\n this.token(\":\");\n this.space();\n this.print(node.alternate);\n}\n\nfunction _printExpressionArguments(\n this: Printer,\n node: t.CallExpression | t.NewExpression | t.OptionalCallExpression,\n) {\n this.token(\"(\");\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.printList(\n node.arguments,\n this.shouldPrintTrailingComma(\")\"),\n undefined,\n undefined,\n undefined,\n true,\n );\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightParens(node);\n}\n\nexport function NewExpression(\n this: Printer,\n node: t.NewExpression,\n parent: t.Node,\n) {\n this.word(\"new\");\n this.space();\n this.print(node.callee);\n if (\n this.format.minified &&\n node.arguments.length === 0 &&\n !isCallExpression(parent, { callee: node }) &&\n !isMemberExpression(parent) &&\n !isNewExpression(parent)\n ) {\n return;\n }\n\n this.print(node.typeArguments);\n\n if (\n node.arguments.length === 0 &&\n this.tokenMap &&\n !this.tokenMap.endMatches(node, \")\")\n ) {\n return;\n }\n\n _printExpressionArguments.call(this, node);\n}\n\nexport function SequenceExpression(this: Printer, node: t.SequenceExpression) {\n this.printList(node.expressions);\n}\n\nexport function ThisExpression(this: Printer) {\n this.word(\"this\");\n}\n\nexport function Super(this: Printer) {\n this.word(\"super\");\n}\n\nexport function _shouldPrintDecoratorsBeforeExport(\n this: Printer,\n node: t.ExportDeclaration & { declaration: t.ClassDeclaration },\n) {\n return (\n typeof node.start === \"number\" && node.start === node.declaration.start\n );\n}\n\nexport function Decorator(this: Printer, node: t.Decorator) {\n this.token(\"@\");\n const { expression } = node;\n this.print(expression);\n this.newline();\n}\n\nexport function OptionalMemberExpression(\n this: Printer,\n node: t.OptionalMemberExpression,\n) {\n let { computed } = node;\n const { optional, property } = node;\n\n this.print(node.object);\n\n if (!computed && isMemberExpression(property)) {\n throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n }\n\n // @ts-expect-error todo(flow->ts) maybe instead of typeof check specific literal types?\n if (isLiteral(property) && typeof property.value === \"number\") {\n computed = true;\n }\n if (optional) {\n this.token(\"?.\");\n }\n\n if (computed) {\n this.token(\"[\");\n this.print(property);\n this.token(\"]\");\n } else {\n if (!optional) {\n this.token(\".\");\n }\n this.print(property);\n }\n}\n\nexport function OptionalCallExpression(\n this: Printer,\n node: t.OptionalCallExpression,\n) {\n this.print(node.callee);\n\n if (node.optional) {\n this.token(\"?.\");\n }\n\n this.print(node.typeArguments);\n\n _printExpressionArguments.call(this, node);\n}\n\nexport function CallExpression(this: Printer, node: t.CallExpression) {\n this.print(node.callee);\n\n this.print(node.typeArguments);\n\n _printExpressionArguments.call(this, node);\n}\n\nexport function Import(this: Printer) {\n this.word(\"import\");\n}\n\nexport function AwaitExpression(this: Printer, node: t.AwaitExpression) {\n this.word(\"await\");\n this.space();\n this.print(node.argument);\n}\n\nexport function YieldExpression(this: Printer, node: t.YieldExpression) {\n if (node.delegate) {\n this.word(\"yield\", true);\n this.token(\"*\");\n if (node.argument) {\n this.space();\n // line terminators are allowed after yield*\n this.print(node.argument);\n }\n } else if (node.argument) {\n this.word(\"yield\", true);\n this.space();\n this.print(node.argument);\n } else {\n this.word(\"yield\");\n }\n}\n\nexport function EmptyStatement(this: Printer) {\n this.semicolon(true /* force */);\n}\n\nexport function ExpressionStatement(\n this: Printer,\n node: t.ExpressionStatement,\n) {\n this.tokenContext |= TokenContext.expressionStatement;\n this.print(node.expression);\n this.semicolon();\n}\n\nexport function AssignmentPattern(this: Printer, node: t.AssignmentPattern) {\n this.print(node.left);\n if (node.left.type === \"Identifier\" || isPattern(node.left)) {\n if (node.left.optional) this.token(\"?\");\n this.print(node.left.typeAnnotation);\n }\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.right);\n}\n\nexport function AssignmentExpression(\n this: Printer,\n node: t.AssignmentExpression | t.LogicalExpression,\n) {\n this.print(node.left);\n\n this.space();\n this.token(node.operator, false, 0, true);\n this.space();\n\n this.print(node.right);\n}\n\nexport { AssignmentExpression as LogicalExpression };\n\nexport function BinaryExpression(this: Printer, node: t.BinaryExpression) {\n this.print(node.left);\n\n this.space();\n const { operator } = node;\n if (operator.charCodeAt(0) === charCodes.lowercaseI) {\n this.word(operator);\n } else {\n this.token(operator, false, 0, true);\n this.setLastChar(operator.charCodeAt(operator.length - 1));\n }\n this.space();\n\n this.print(node.right);\n}\n\nexport function BindExpression(this: Printer, node: t.BindExpression) {\n this.print(node.object);\n this.token(\"::\");\n this.print(node.callee);\n}\n\nexport function MemberExpression(this: Printer, node: t.MemberExpression) {\n this.print(node.object);\n\n if (!node.computed && isMemberExpression(node.property)) {\n throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n }\n\n let computed = node.computed;\n // @ts-expect-error todo(flow->ts) maybe use specific literal types\n if (isLiteral(node.property) && typeof node.property.value === \"number\") {\n computed = true;\n }\n\n if (computed) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.token(\"[\");\n this.print(node.property, undefined, true);\n this.token(\"]\");\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n } else {\n this.token(\".\");\n this.print(node.property);\n }\n}\n\nexport function MetaProperty(this: Printer, node: t.MetaProperty) {\n this.print(node.meta);\n this.token(\".\");\n this.print(node.property);\n}\n\nexport function PrivateName(this: Printer, node: t.PrivateName) {\n this.token(\"#\");\n this.print(node.id);\n}\n\nexport function V8IntrinsicIdentifier(\n this: Printer,\n node: t.V8IntrinsicIdentifier,\n) {\n this.token(\"%\");\n this.word(node.name);\n}\n\nexport function ModuleExpression(this: Printer, node: t.ModuleExpression) {\n this.word(\"module\", true);\n this.space();\n this.token(\"{\");\n this.indent();\n const { body } = node;\n if (body.body.length || body.directives.length) {\n this.newline();\n }\n this.print(body);\n this.dedent();\n this.rightBrace(node);\n}\n","import type Printer from \"../printer.ts\";\nimport { isFor, isIfStatement, isStatement, isVoidPattern } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport * as charCodes from \"charcodes\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n this.word(\"with\");\n this.space();\n this.token(\"(\");\n this.print(node.object);\n this.token(\")\");\n this.printBlock(node.body);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n this.word(\"if\");\n this.space();\n this.token(\"(\");\n this.print(node.test);\n this.token(\")\");\n this.space();\n\n const needsBlock =\n node.alternate && isIfStatement(getLastStatement(node.consequent));\n if (needsBlock) {\n this.token(\"{\");\n this.newline();\n this.indent();\n }\n\n this.printAndIndentOnComments(node.consequent);\n\n if (needsBlock) {\n this.dedent();\n this.newline();\n this.token(\"}\");\n }\n\n if (node.alternate) {\n if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n this.word(\"else\");\n this.space();\n this.printAndIndentOnComments(node.alternate);\n }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n const { body } = statement;\n if (isStatement(body) === false) {\n return statement;\n }\n\n return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n this.word(\"for\");\n this.space();\n this.token(\"(\");\n\n this.tokenContext |=\n TokenContext.forInitHead | TokenContext.forInOrInitHeadAccumulate;\n this.print(node.init);\n this.tokenContext = TokenContext.normal;\n\n this.token(\";\");\n\n if (node.test) {\n this.space();\n this.print(node.test);\n }\n this.tokenChar(charCodes.semicolon, 1);\n\n if (node.update) {\n this.space();\n this.print(node.update);\n }\n\n this.token(\")\");\n this.printBlock(node.body);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test);\n this.token(\")\");\n this.printBlock(node.body);\n}\n\nexport function ForInStatement(this: Printer, node: t.ForInStatement) {\n this.word(\"for\");\n this.space();\n this.noIndentInnerCommentsHere();\n this.token(\"(\");\n this.tokenContext |=\n TokenContext.forInHead | TokenContext.forInOrInitHeadAccumulate;\n this.print(node.left);\n this.tokenContext = TokenContext.normal;\n this.space();\n this.word(\"in\");\n this.space();\n this.print(node.right);\n this.token(\")\");\n this.printBlock(node.body);\n}\n\nexport function ForOfStatement(this: Printer, node: t.ForOfStatement) {\n this.word(\"for\");\n this.space();\n if (node.await) {\n this.word(\"await\");\n this.space();\n }\n this.noIndentInnerCommentsHere();\n this.token(\"(\");\n this.tokenContext |= TokenContext.forOfHead;\n this.print(node.left);\n this.space();\n this.word(\"of\");\n this.space();\n this.print(node.right);\n this.token(\")\");\n this.printBlock(node.body);\n}\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n this.word(\"do\");\n this.space();\n this.print(node.body);\n this.space();\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test);\n this.token(\")\");\n this.semicolon();\n}\n\nfunction printStatementAfterKeyword(\n printer: Printer,\n node: t.Node | null | undefined,\n) {\n if (node) {\n printer.space();\n printer.printTerminatorless(node);\n }\n\n printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"break\");\n printStatementAfterKeyword(this, node.label);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"continue\");\n printStatementAfterKeyword(this, node.label);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n this.word(\"return\");\n printStatementAfterKeyword(this, node.argument);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n this.word(\"throw\");\n printStatementAfterKeyword(this, node.argument);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n this.print(node.label);\n this.token(\":\");\n this.space();\n this.print(node.body);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n this.word(\"try\");\n this.space();\n this.print(node.block);\n this.space();\n\n // Esprima bug puts the catch clause in a `handlers` array.\n // see https://code.google.com/p/esprima/issues/detail?id=433\n // We run into this from regenerator generated ast.\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n if (node.handlers) {\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n this.print(node.handlers[0]);\n } else {\n this.print(node.handler);\n }\n\n if (node.finalizer) {\n this.space();\n this.word(\"finally\");\n this.space();\n this.print(node.finalizer);\n }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n this.word(\"catch\");\n this.space();\n if (node.param) {\n this.token(\"(\");\n this.print(node.param);\n this.print(node.param.typeAnnotation);\n this.token(\")\");\n this.space();\n }\n this.print(node.body);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n this.word(\"switch\");\n this.space();\n this.token(\"(\");\n this.print(node.discriminant);\n this.token(\")\");\n this.space();\n this.token(\"{\");\n\n this.printSequence(node.cases, true);\n\n this.rightBrace(node);\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n if (node.test) {\n this.word(\"case\");\n this.space();\n this.print(node.test);\n this.token(\":\");\n } else {\n this.word(\"default\");\n this.token(\":\");\n }\n\n if (node.consequent.length) {\n this.newline();\n this.printSequence(node.consequent, true);\n }\n}\n\nexport function DebuggerStatement(this: Printer) {\n this.word(\"debugger\");\n this.semicolon();\n}\n\nfunction commaSeparatorWithNewline(this: Printer, occurrenceCount: number) {\n this.tokenChar(charCodes.comma, occurrenceCount);\n this.newline();\n}\n\nexport function VariableDeclaration(\n this: Printer,\n node: t.VariableDeclaration,\n parent: t.Node,\n) {\n if (node.declare) {\n // TS\n this.word(\"declare\");\n this.space();\n }\n\n const { kind } = node;\n switch (kind) {\n case \"await using\":\n this.word(\"await\");\n this.space();\n // fallthrough\n case \"using\":\n this.word(\"using\", true);\n break;\n default:\n this.word(kind);\n }\n this.space();\n\n let hasInits = false;\n // don't add whitespace to loop heads\n if (!isFor(parent)) {\n for (const declar of node.declarations) {\n if (declar.init) {\n // has an init so let's split it up over multiple lines\n hasInits = true;\n break;\n }\n }\n }\n\n //\n // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n // this will format declarations like:\n //\n // let foo = \"bar\", bar = \"foo\";\n //\n // into\n //\n // let foo = \"bar\",\n // bar = \"foo\";\n //\n\n this.printList(\n node.declarations,\n undefined,\n undefined,\n node.declarations.length > 1,\n hasInits ? commaSeparatorWithNewline : undefined,\n );\n\n if (parent != null) {\n switch (parent.type) {\n case \"ForStatement\":\n if (parent.init === node) {\n return;\n }\n break;\n case \"ForInStatement\":\n case \"ForOfStatement\":\n if (parent.left === node) {\n return;\n }\n }\n }\n\n this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n this.print(node.id);\n if (node.definite) this.token(\"!\"); // TS\n\n if (!isVoidPattern(node.id)) {\n this.print(node.id.typeAnnotation);\n }\n\n if (node.init) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.init);\n }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\nimport { isIdentifier, type ParentMaps } from \"@babel/types\";\nimport * as charCodes from \"charcodes\";\nimport { TokenContext } from \"../node/index.ts\";\n\ntype ParentsOf<T extends t.Node> = ParentMaps[T[\"type\"]];\n\nexport function _params(\n this: Printer,\n node: t.Function | t.TSDeclareMethod | t.TSDeclareFunction,\n noLineTerminator: boolean,\n idNode?: t.Expression | t.PrivateName | null,\n parentNode?: ParentsOf<typeof node>,\n) {\n this.print(node.typeParameters);\n\n if (idNode !== undefined || parentNode !== undefined) {\n const nameInfo = _getFuncIdName.call(this, idNode!, parentNode!);\n if (nameInfo) {\n this.sourceIdentifierName(nameInfo.name, nameInfo.pos);\n }\n }\n\n this.token(\"(\");\n _parameters.call(this, node.params, charCodes.rightParenthesis);\n\n this.print(node.returnType, noLineTerminator);\n\n this._noLineTerminator = noLineTerminator;\n}\n\nexport function _parameters(\n this: Printer,\n parameters: t.Function[\"params\"],\n endToken: number,\n) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n\n const trailingComma = this.shouldPrintTrailingComma(endToken);\n\n const paramLength = parameters.length;\n for (let i = 0; i < paramLength; i++) {\n _param.call(this, parameters[i]);\n\n if (trailingComma || i < paramLength - 1) {\n this.tokenChar(charCodes.comma, i);\n this.space();\n }\n }\n\n this.tokenChar(endToken);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n}\n\nexport function _param(\n this: Printer,\n parameter: t.Identifier | t.RestElement | t.Pattern | t.TSParameterProperty,\n) {\n this.printJoin(\n // @ts-expect-error decorators is not in VoidPattern\n parameter.decorators,\n undefined,\n undefined,\n undefined,\n undefined,\n true,\n );\n this.print(parameter, undefined, true);\n if (\n // @ts-expect-error optional is not in TSParameterProperty\n parameter.optional\n ) {\n this.token(\"?\"); // TS / flow\n }\n\n this.print(\n // @ts-expect-error typeAnnotation is not in TSParameterProperty\n parameter.typeAnnotation,\n undefined,\n true,\n ); // TS / flow\n}\n\nexport function _methodHead(this: Printer, node: t.Method | t.TSDeclareMethod) {\n const kind = node.kind;\n const key = node.key;\n\n if (kind === \"get\" || kind === \"set\") {\n this.word(kind);\n this.space();\n }\n\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n\n if (\n kind === \"method\" ||\n // @ts-expect-error Fixme: kind: \"init\" is not defined\n kind === \"init\"\n ) {\n if (node.generator) {\n this.token(\"*\");\n }\n }\n\n if (node.computed) {\n this.token(\"[\");\n this.print(key);\n this.token(\"]\");\n } else {\n this.print(key);\n }\n\n if (\n // @ts-expect-error optional is not in ObjectMethod\n node.optional\n ) {\n // TS\n this.token(\"?\");\n }\n\n if (this._buf._map) {\n _params.call(\n this,\n node,\n false,\n node.computed && node.key.type !== \"StringLiteral\" ? undefined : node.key,\n );\n } else {\n _params.call(this, node, false);\n }\n}\n\nexport function _predicate(\n this: Printer,\n node:\n | t.FunctionDeclaration\n | t.FunctionExpression\n | t.ArrowFunctionExpression,\n noLineTerminatorAfter?: boolean,\n) {\n if (node.predicate) {\n if (!node.returnType) {\n this.token(\":\");\n }\n this.space();\n this.print(node.predicate, noLineTerminatorAfter);\n }\n}\n\nexport function _functionHead(\n this: Printer,\n node: t.FunctionDeclaration | t.FunctionExpression | t.TSDeclareFunction,\n parent: ParentsOf<typeof node>,\n hasPredicate: boolean,\n) {\n if (node.async) {\n this.word(\"async\");\n if (!this.format.preserveFormat) {\n // We prevent inner comments from being printed here,\n // so that they are always consistently printed in the\n // same place regardless of the function type.\n this._innerCommentsState = 0 /* INNER_COMMENT_STATE.DISALLOWED */;\n }\n this.space();\n }\n this.word(\"function\");\n if (node.generator) {\n if (!this.format.preserveFormat) {\n // We prevent inner comments from being printed here,\n // so that they are always consistently printed in the\n // same place regardless of the function type.\n this._innerCommentsState = 0 /* INNER_COMMENT_STATE.DISALLOWED */;\n }\n this.token(\"*\");\n }\n\n this.space();\n if (node.id) {\n this.print(node.id);\n }\n\n if (this._buf._map) {\n _params.call(this, node, false, node.id, parent);\n } else {\n _params.call(this, node, false);\n }\n if (hasPredicate) {\n _predicate.call(this, node as t.FunctionDeclaration | t.FunctionExpression);\n }\n}\n\nexport function FunctionExpression(\n this: Printer,\n node: t.FunctionExpression,\n parent: ParentsOf<typeof node>,\n) {\n _functionHead.call(this, node, parent, true);\n this.space();\n this.print(node.body);\n}\n\nexport { FunctionExpression as FunctionDeclaration };\n\nexport function ArrowFunctionExpression(\n this: Printer,\n node: t.ArrowFunctionExpression,\n parent: ParentsOf<typeof node>,\n) {\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n\n if (_shouldPrintArrowParamsParens.call(this, node)) {\n _params.call(\n this,\n node,\n true,\n undefined,\n this._buf._map ? parent : undefined,\n );\n } else {\n this.print(node.params[0], true);\n }\n\n _predicate.call(this, node, true);\n this.space();\n // When printing (x)/*1*/=>{}, we remove the parentheses\n // and thus there aren't two contiguous inner tokens.\n // We forcefully print inner comments here.\n this.printInnerComments();\n this.token(\"=>\");\n\n this.space();\n\n this.tokenContext |= TokenContext.arrowBody;\n this.print(node.body);\n}\n\n// Try to avoid printing parens in simple cases, but only if we're pretty\n// sure that they aren't needed by type annotations or potential newlines.\nexport function _shouldPrintArrowParamsParens(\n this: Printer,\n node: t.ArrowFunctionExpression,\n): boolean {\n if (node.params.length !== 1) return true;\n\n if (node.typeParameters || node.returnType || node.predicate) {\n return true;\n }\n\n const firstParam = node.params[0];\n if (\n !isIdentifier(firstParam) ||\n firstParam.typeAnnotation ||\n firstParam.optional ||\n // Flow does not support `foo /*: string*/ => {};`\n firstParam.leadingComments?.length ||\n firstParam.trailingComments?.length\n ) {\n return true;\n }\n\n if (this.tokenMap) {\n if (node.loc == null) return true;\n if (this.tokenMap.findMatching(node, \"(\") !== null) return true;\n const arrowToken = this.tokenMap.findMatching(node, \"=>\");\n if (arrowToken?.loc == null) return true;\n return arrowToken.loc.start.line !== node.loc.start.line;\n }\n\n if (this.format.retainLines) return true;\n\n return false;\n}\n\nfunction isRenamedIdentifier(id: t.Identifier) {\n return !!id.loc?.identifierName && id.loc.identifierName !== id.name;\n}\n\nfunction _getFuncIdName(\n this: Printer,\n idNode?: t.Expression | t.PrivateName | null,\n parent?: ParentsOf<\n t.Function | t.TSDeclareMethod | t.TSDeclareFunction\n > | null,\n) {\n let id:\n | t.Expression\n | t.PrivateName\n | t.LVal\n | t.VoidPattern\n | undefined\n | null = idNode;\n\n if (!id && parent) {\n const parentType = parent.type;\n\n if (parentType === \"VariableDeclarator\") {\n id = parent.id;\n } else if (\n parentType === \"AssignmentExpression\" ||\n parentType === \"AssignmentPattern\"\n ) {\n id = parent.left;\n } else if (\n parentType === \"ObjectProperty\" ||\n parentType === \"ClassProperty\"\n ) {\n if (!parent.computed || parent.key.type === \"StringLiteral\") {\n id = parent.key;\n }\n } else if (\n parentType === \"ClassPrivateProperty\" ||\n parentType === \"ClassAccessorProperty\"\n ) {\n id = parent.key;\n }\n }\n\n if (!id?.loc) return;\n\n let nameInfo;\n\n if (id.type === \"Identifier\") {\n if (!isRenamedIdentifier(id)) return;\n nameInfo = { pos: id.loc.start, name: id.loc.identifierName! };\n } else if (id.type === \"PrivateName\") {\n if (!isRenamedIdentifier(id.id)) return;\n nameInfo = {\n pos: id.loc.start,\n name: \"#\" + id.id.loc!.identifierName!,\n };\n } else if (id.type === \"StringLiteral\") {\n // TODO: Return empty when not renamed\n nameInfo = {\n pos: id.loc.start,\n name: id.value,\n };\n }\n\n return nameInfo;\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\nimport * as charCodes from \"charcodes\";\nimport { _functionHead, _param, _parameters } from \"./methods.ts\";\nimport { _classMethodHead } from \"./classes.ts\";\nimport { _printTemplate } from \"./template-literals.ts\";\n\nexport function TSTypeAnnotation(\n this: Printer,\n node: t.TSTypeAnnotation,\n parent: t.Node,\n) {\n // TODO(@nicolo-ribaudo): investigate not including => in the range\n // of the return type of an arrow function type\n this.token(\n (parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") &&\n parent.returnType === node\n ? \"=>\"\n : \":\",\n );\n this.space();\n // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n if (node.optional) this.token(\"?\");\n this.print(node.typeAnnotation);\n}\n\nexport function TSTypeParameterInstantiation(\n this: Printer,\n node: t.TSTypeParameterInstantiation,\n parent: t.Node,\n): void {\n this.token(\"<\");\n\n let printTrailingSeparator: boolean | null =\n parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n if (this.tokenMap && node.start != null && node.end != null) {\n // Only force the trailing comma for pre-existing nodes if they\n // already had a comma (either because they were multi-param, or\n // because they had a trailing comma)\n printTrailingSeparator &&= !!this.tokenMap.find(node, t =>\n this.tokenMap!.matchesOriginal(t, \",\"),\n );\n // Preserve the trailing comma if it was there before\n printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n }\n\n this.printList(node.params, printTrailingSeparator);\n this.token(\">\");\n}\n\nexport { TSTypeParameterInstantiation as TSTypeParameterDeclaration };\n\nexport function TSTypeParameter(this: Printer, node: t.TSTypeParameter) {\n if (node.const) {\n this.word(\"const\");\n this.space();\n }\n\n if (node.in) {\n this.word(\"in\");\n this.space();\n }\n\n if (node.out) {\n this.word(\"out\");\n this.space();\n }\n\n this.word(node.name.name);\n\n if (node.constraint) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.constraint);\n }\n\n if (node.default) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.default);\n }\n}\n\nexport function TSParameterProperty(\n this: Printer,\n node: t.TSParameterProperty,\n) {\n if (node.accessibility) {\n this.word(node.accessibility);\n this.space();\n }\n\n if (node.readonly) {\n this.word(\"readonly\");\n this.space();\n }\n\n _param.call(this, node.parameter);\n}\n\nexport function TSDeclareFunction(\n this: Printer,\n node: t.TSDeclareFunction,\n parent: t.ParentMaps[\"TSDeclareFunction\"],\n) {\n if (node.declare) {\n this.word(\"declare\");\n this.space();\n }\n _functionHead.call(this, node, parent, false);\n this.semicolon();\n}\n\nexport function TSDeclareMethod(this: Printer, node: t.TSDeclareMethod) {\n _classMethodHead.call(this, node, false);\n this.semicolon();\n}\n\nexport function TSQualifiedName(this: Printer, node: t.TSQualifiedName) {\n this.print(node.left);\n this.token(\".\");\n this.print(node.right);\n}\n\nexport function TSCallSignatureDeclaration(\n this: Printer,\n node: t.TSCallSignatureDeclaration,\n) {\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction maybePrintTrailingCommaOrSemicolon(printer: Printer, node: t.Node) {\n if (!printer.tokenMap || !node.start || !node.end) {\n printer.semicolon();\n return;\n }\n\n if (printer.tokenMap.endMatches(node, \",\")) {\n printer.token(\",\");\n } else if (printer.tokenMap.endMatches(node, \";\")) {\n printer.semicolon();\n }\n}\n\nexport function TSConstructSignatureDeclaration(\n this: Printer,\n node: t.TSConstructSignatureDeclaration,\n) {\n this.word(\"new\");\n this.space();\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSPropertySignature(\n this: Printer,\n node: t.TSPropertySignature,\n) {\n const { readonly } = node;\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n tsPrintPropertyOrMethodName.call(this, node);\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction tsPrintPropertyOrMethodName(\n this: Printer,\n node: t.TSPropertySignature | t.TSMethodSignature,\n) {\n if (node.computed) {\n this.token(\"[\");\n }\n this.print(node.key);\n if (node.computed) {\n this.token(\"]\");\n }\n if (node.optional) {\n this.token(\"?\");\n }\n}\n\nexport function TSMethodSignature(this: Printer, node: t.TSMethodSignature) {\n const { kind } = node;\n if (kind === \"set\" || kind === \"get\") {\n this.word(kind);\n this.space();\n }\n tsPrintPropertyOrMethodName.call(this, node);\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSIndexSignature(this: Printer, node: t.TSIndexSignature) {\n const { readonly, static: isStatic } = node;\n if (isStatic) {\n this.word(\"static\");\n this.space();\n }\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n this.token(\"[\");\n _parameters.call(this, node.parameters, charCodes.rightSquareBracket);\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSAnyKeyword(this: Printer) {\n this.word(\"any\");\n}\nexport function TSBigIntKeyword(this: Printer) {\n this.word(\"bigint\");\n}\nexport function TSUnknownKeyword(this: Printer) {\n this.word(\"unknown\");\n}\nexport function TSNumberKeyword(this: Printer) {\n this.word(\"number\");\n}\nexport function TSObjectKeyword(this: Printer) {\n this.word(\"object\");\n}\nexport function TSBooleanKeyword(this: Printer) {\n this.word(\"boolean\");\n}\nexport function TSStringKeyword(this: Printer) {\n this.word(\"string\");\n}\nexport function TSSymbolKeyword(this: Printer) {\n this.word(\"symbol\");\n}\nexport function TSVoidKeyword(this: Printer) {\n this.word(\"void\");\n}\nexport function TSUndefinedKeyword(this: Printer) {\n this.word(\"undefined\");\n}\nexport function TSNullKeyword(this: Printer) {\n this.word(\"null\");\n}\nexport function TSNeverKeyword(this: Printer) {\n this.word(\"never\");\n}\nexport function TSIntrinsicKeyword(this: Printer) {\n this.word(\"intrinsic\");\n}\n\nexport function TSThisType(this: Printer) {\n this.word(\"this\");\n}\n\nexport function TSFunctionType(this: Printer, node: t.TSFunctionType) {\n tsPrintFunctionOrConstructorType.call(this, node);\n}\n\nexport function TSConstructorType(this: Printer, node: t.TSConstructorType) {\n if (node.abstract) {\n this.word(\"abstract\");\n this.space();\n }\n this.word(\"new\");\n this.space();\n tsPrintFunctionOrConstructorType.call(this, node);\n}\n\nfunction tsPrintFunctionOrConstructorType(\n this: Printer,\n node: t.TSFunctionType | t.TSConstructorType,\n) {\n const { typeParameters } = node;\n const parameters = node.params;\n\n this.print(typeParameters);\n this.token(\"(\");\n _parameters.call(this, parameters, charCodes.rightParenthesis);\n this.space();\n const returnType = node.returnType;\n\n this.print(returnType);\n}\n\nexport function TSTypeReference(this: Printer, node: t.TSTypeReference) {\n const typeArguments = node.typeArguments;\n\n this.print(node.typeName, !!typeArguments);\n this.print(typeArguments);\n}\n\nexport function TSTypePredicate(this: Printer, node: t.TSTypePredicate) {\n if (node.asserts) {\n this.word(\"asserts\");\n this.space();\n }\n this.print(node.parameterName);\n if (node.typeAnnotation) {\n this.space();\n this.word(\"is\");\n this.space();\n this.print(node.typeAnnotation.typeAnnotation);\n }\n}\n\nexport function TSTypeQuery(this: Printer, node: t.TSTypeQuery) {\n this.word(\"typeof\");\n this.space();\n this.print(node.exprName);\n\n const typeArguments = node.typeArguments;\n\n if (typeArguments) {\n this.print(typeArguments);\n }\n}\n\nexport function TSTypeLiteral(this: Printer, node: t.TSTypeLiteral) {\n printBraced(this, node, () =>\n this.printJoin(node.members, true, true, undefined, undefined, true),\n );\n}\n\nexport function TSArrayType(this: Printer, node: t.TSArrayType) {\n this.print(node.elementType, true);\n\n this.token(\"[\");\n this.token(\"]\");\n}\n\nexport function TSTupleType(this: Printer, node: t.TSTupleType) {\n this.token(\"[\");\n this.printList(node.elementTypes, this.shouldPrintTrailingComma(\"]\"));\n this.token(\"]\");\n}\n\nexport function TSOptionalType(this: Printer, node: t.TSOptionalType) {\n this.print(node.typeAnnotation);\n this.token(\"?\");\n}\n\nexport function TSRestType(this: Printer, node: t.TSRestType) {\n this.token(\"...\");\n this.print(node.typeAnnotation);\n}\n\nexport function TSNamedTupleMember(this: Printer, node: t.TSNamedTupleMember) {\n this.print(node.label);\n if (node.optional) this.token(\"?\");\n this.token(\":\");\n this.space();\n this.print(node.elementType);\n}\n\nexport function TSUnionType(this: Printer, node: t.TSUnionType) {\n tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\n\nexport function TSIntersectionType(this: Printer, node: t.TSIntersectionType) {\n tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\n\nfunction tsPrintUnionOrIntersectionType(\n printer: Printer,\n node: t.TSUnionType | t.TSIntersectionType,\n sep: \"|\" | \"&\",\n) {\n let hasLeadingToken = 0;\n if (printer.tokenMap?.startMatches(node, sep)) {\n hasLeadingToken = 1;\n printer.token(sep);\n }\n\n printer.printJoin(node.types, undefined, undefined, function (i) {\n this.space();\n this.token(sep, undefined, i + hasLeadingToken);\n this.space();\n });\n}\n\nexport function TSConditionalType(this: Printer, node: t.TSConditionalType) {\n this.print(node.checkType);\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.extendsType);\n this.space();\n this.token(\"?\");\n this.space();\n this.print(node.trueType);\n this.space();\n this.token(\":\");\n this.space();\n this.print(node.falseType);\n}\n\nexport function TSInferType(this: Printer, node: t.TSInferType) {\n this.word(\"infer\");\n this.print(node.typeParameter);\n}\n\nexport function TSParenthesizedType(\n this: Printer,\n node: t.TSParenthesizedType,\n) {\n this.token(\"(\");\n this.print(node.typeAnnotation);\n this.token(\")\");\n}\n\nexport function TSTypeOperator(this: Printer, node: t.TSTypeOperator) {\n this.word(node.operator);\n this.space();\n this.print(node.typeAnnotation);\n}\n\nexport function TSIndexedAccessType(\n this: Printer,\n node: t.TSIndexedAccessType,\n) {\n this.print(node.objectType, true);\n this.token(\"[\");\n this.print(node.indexType);\n this.token(\"]\");\n}\n\nexport function TSMappedType(this: Printer, node: t.TSMappedType) {\n const { nameType, optional, readonly, typeAnnotation } = node;\n this.token(\"{\");\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.space();\n if (readonly) {\n tokenIfPlusMinus(this, readonly);\n this.word(\"readonly\");\n this.space();\n }\n\n this.token(\"[\");\n\n this.word(node.key.name);\n\n this.space();\n this.word(\"in\");\n this.space();\n\n this.print(node.constraint);\n\n if (nameType) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(nameType, undefined, true);\n }\n\n this.token(\"]\");\n\n if (optional) {\n tokenIfPlusMinus(this, optional);\n this.token(\"?\");\n }\n\n if (typeAnnotation) {\n this.token(\":\");\n this.space();\n this.print(typeAnnotation, undefined, true);\n }\n this.space();\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.token(\"}\");\n}\n\nfunction tokenIfPlusMinus(self: Printer, tok: true | \"+\" | \"-\") {\n if (tok !== true) {\n self.token(tok);\n }\n}\n\nexport function TSTemplateLiteralType(\n this: Printer,\n node: t.TSTemplateLiteralType,\n) {\n _printTemplate.call(this, node, node.types);\n}\n\nexport function TSLiteralType(this: Printer, node: t.TSLiteralType) {\n this.print(node.literal);\n}\n\nexport function TSClassImplements(this: Printer, node: t.TSClassImplements) {\n this.print(node.expression);\n this.print(node.typeArguments);\n}\n\nexport { TSClassImplements as TSInterfaceHeritage };\n\nexport function TSInterfaceDeclaration(\n this: Printer,\n node: t.TSInterfaceDeclaration,\n) {\n const { declare, id, typeParameters, extends: extendz, body } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"interface\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n if (extendz?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(extendz);\n }\n this.space();\n this.print(body);\n}\n\nexport function TSInterfaceBody(this: Printer, node: t.TSInterfaceBody) {\n printBraced(this, node, () =>\n this.printJoin(node.body, true, true, undefined, undefined, true),\n );\n}\n\nexport function TSTypeAliasDeclaration(\n this: Printer,\n node: t.TSTypeAliasDeclaration,\n) {\n const { declare, id, typeParameters, typeAnnotation } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"type\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n this.space();\n this.token(\"=\");\n this.space();\n this.print(typeAnnotation);\n this.semicolon();\n}\n\nexport function TSAsExpression(this: Printer, node: t.TSAsExpression) {\n const { expression, typeAnnotation } = node;\n this.print(expression, true);\n this.space();\n this.word(\"as\");\n this.space();\n this.print(typeAnnotation);\n}\n\nexport function TSSatisfiesExpression(\n this: Printer,\n node: t.TSSatisfiesExpression,\n) {\n const { expression, typeAnnotation } = node;\n this.print(expression, true);\n this.space();\n this.word(\"satisfies\");\n this.space();\n this.print(typeAnnotation);\n}\n\nexport function TSTypeAssertion(this: Printer, node: t.TSTypeAssertion) {\n const { typeAnnotation, expression } = node;\n this.token(\"<\");\n this.print(typeAnnotation);\n this.token(\">\");\n this.space();\n this.print(expression);\n}\n\nexport function TSInstantiationExpression(\n this: Printer,\n node: t.TSInstantiationExpression,\n) {\n this.print(node.expression);\n\n this.print(node.typeArguments);\n}\n\nexport function TSEnumDeclaration(this: Printer, node: t.TSEnumDeclaration) {\n const { declare, const: isConst, id } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n if (isConst) {\n this.word(\"const\");\n this.space();\n }\n this.word(\"enum\");\n this.space();\n this.print(id);\n this.space();\n\n this.print(node.body);\n}\n\nexport function TSEnumBody(this: Printer, node: t.TSEnumBody) {\n printBraced(this, node, () =>\n this.printList(\n node.members,\n this.shouldPrintTrailingComma(\"}\") ?? false,\n true,\n true,\n undefined,\n true,\n ),\n );\n}\n\nexport function TSEnumMember(this: Printer, node: t.TSEnumMember) {\n const { id, initializer } = node;\n this.print(id);\n if (initializer) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(initializer);\n }\n}\n\nexport function TSModuleDeclaration(\n this: Printer,\n node: t.TSModuleDeclaration,\n) {\n const { declare, kind } = node;\n\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n\n if (kind !== \"global\") {\n this.word(kind);\n this.space();\n }\n\n this.print(node.id);\n if (!node.body) {\n this.semicolon();\n return;\n }\n this.space();\n this.print(node.body);\n}\n\nexport function TSModuleBlock(this: Printer, node: t.TSModuleBlock) {\n printBraced(this, node, () => this.printSequence(node.body, true, true));\n}\n\nexport function TSImportType(this: Printer, node: t.TSImportType) {\n const { qualifier, options } = node;\n this.word(\"import\");\n this.token(\"(\");\n this.print(node.source);\n if (options) {\n this.token(\",\");\n this.print(options);\n }\n this.token(\")\");\n if (qualifier) {\n this.token(\".\");\n this.print(qualifier);\n }\n const typeArguments = node.typeArguments;\n\n if (typeArguments) {\n this.print(typeArguments);\n }\n}\n\nexport function TSImportEqualsDeclaration(\n this: Printer,\n node: t.TSImportEqualsDeclaration,\n) {\n const { id, moduleReference } = node;\n\n this.word(\"import\");\n this.space();\n this.print(id);\n this.space();\n this.token(\"=\");\n this.space();\n this.print(moduleReference);\n this.semicolon();\n}\n\nexport function TSExternalModuleReference(\n this: Printer,\n node: t.TSExternalModuleReference,\n) {\n this.token(\"require(\");\n this.print(node.expression);\n this.token(\")\");\n}\n\nexport function TSNonNullExpression(\n this: Printer,\n node: t.TSNonNullExpression,\n) {\n this.print(node.expression);\n this.token(\"!\");\n this.setLastChar(charCodes.exclamationMark);\n}\n\nexport function TSExportAssignment(this: Printer, node: t.TSExportAssignment) {\n this.word(\"export\");\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.expression);\n this.semicolon();\n}\n\nexport function TSNamespaceExportDeclaration(\n this: Printer,\n node: t.TSNamespaceExportDeclaration,\n) {\n this.word(\"export\");\n this.space();\n this.word(\"as\");\n this.space();\n this.word(\"namespace\");\n this.space();\n this.print(node.id);\n this.semicolon();\n}\n\nfunction tsPrintSignatureDeclarationBase(this: Printer, node: any) {\n const { typeParameters } = node;\n const parameters = node.params;\n this.print(typeParameters);\n this.token(\"(\");\n _parameters.call(this, parameters, charCodes.rightParenthesis);\n this.print(node.returnType);\n}\n\nexport function _tsPrintClassMemberModifiers(\n this: Printer,\n node:\n | t.ClassProperty\n | t.ClassAccessorProperty\n | t.ClassPrivateProperty\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.TSDeclareMethod,\n) {\n const isPrivateField = node.type === \"ClassPrivateProperty\";\n const isPublicField =\n node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n printModifiersList(this, node, [\n isPublicField && node.declare && \"declare\",\n !isPrivateField && node.accessibility,\n ]);\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n printModifiersList(this, node, [\n !isPrivateField && node.abstract && \"abstract\",\n !isPrivateField && node.override && \"override\",\n (isPublicField || isPrivateField) && node.readonly && \"readonly\",\n ]);\n}\n\nfunction printBraced(printer: Printer, node: t.Node, cb: () => void) {\n printer.token(\"{\");\n const oldNoLineTerminatorAfterNode = printer.enterDelimited();\n cb();\n printer._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n printer.rightBrace(node);\n}\n\nfunction printModifiersList(\n printer: Printer,\n node: t.Node,\n modifiers: (string | false | null | undefined)[],\n) {\n const modifiersSet = new Set<string>();\n for (const modifier of modifiers) {\n if (modifier) modifiersSet.add(modifier);\n }\n\n printer.tokenMap?.find(node, tok => {\n if (modifiersSet.has(tok.value)) {\n printer.token(tok.value);\n printer.space();\n modifiersSet.delete(tok.value);\n return modifiersSet.size === 0;\n }\n return false;\n });\n\n for (const modifier of modifiersSet) {\n printer.word(modifier);\n printer.space();\n }\n}\n","import type Printer from \"../printer.ts\";\nimport {\n isClassDeclaration,\n isExportDefaultSpecifier,\n isExportNamespaceSpecifier,\n isImportDefaultSpecifier,\n isImportNamespaceSpecifier,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\nimport { _shouldPrintDecoratorsBeforeExport } from \"./expressions.ts\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n this.word(node.importKind);\n this.space();\n }\n\n this.print(node.imported);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.local && node.local.name !== node.imported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local);\n }\n}\n\nexport function ImportDefaultSpecifier(\n this: Printer,\n node: t.ImportDefaultSpecifier,\n) {\n this.print(node.local);\n}\n\nexport function ExportDefaultSpecifier(\n this: Printer,\n node: t.ExportDefaultSpecifier,\n) {\n this.print(node.exported);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n this.print(node.local);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.exported && node.local.name !== node.exported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported);\n }\n}\n\nexport function ExportNamespaceSpecifier(\n this: Printer,\n node: t.ExportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported);\n}\n\nexport function _printAttributes(\n this: Printer,\n node: Extract<t.Node, { attributes?: t.ImportAttribute[] | null }>,\n hasPreviousBrace: boolean,\n) {\n const { attributes } = node;\n\n this.word(\"with\");\n this.space();\n\n const occurrenceCount = hasPreviousBrace ? 1 : 0;\n\n this.token(\"{\", undefined, occurrenceCount);\n this.space();\n this.printList(attributes, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n this.token(\"}\", undefined, occurrenceCount);\n}\n\nexport function ExportAllDeclaration(\n this: Printer,\n node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n this.word(\"export\");\n this.space();\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n this.token(\"*\");\n this.space();\n this.word(\"from\");\n this.space();\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, false);\n } else {\n this.print(node.source);\n }\n\n this.semicolon();\n}\n\nfunction maybePrintDecoratorsBeforeExport(\n printer: Printer,\n node: t.ExportNamedDeclaration | t.ExportDefaultDeclaration,\n) {\n if (\n isClassDeclaration(node.declaration) &&\n _shouldPrintDecoratorsBeforeExport.call(\n printer,\n node as t.ExportNamedDeclaration & { declaration: t.ClassDeclaration },\n )\n ) {\n printer.printJoin(node.declaration.decorators);\n }\n}\n\nexport function ExportNamedDeclaration(\n this: Printer,\n node: t.ExportNamedDeclaration,\n) {\n maybePrintDecoratorsBeforeExport(this, node);\n\n this.word(\"export\");\n this.space();\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement(declar)) this.semicolon();\n } else {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n\n // print \"special\" specifiers first\n let hasSpecial = false;\n for (;;) {\n const first = specifiers[0];\n if (\n isExportDefaultSpecifier(first) ||\n isExportNamespaceSpecifier(first)\n ) {\n hasSpecial = true;\n this.print(specifiers.shift());\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n let hasBrace = false;\n if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n hasBrace = true;\n this.token(\"{\");\n if (specifiers.length) {\n this.space();\n this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n }\n this.token(\"}\");\n }\n\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, hasBrace);\n } else {\n this.print(node.source);\n }\n }\n\n this.semicolon();\n }\n}\n\nexport function ExportDefaultDeclaration(\n this: Printer,\n node: t.ExportDefaultDeclaration,\n) {\n maybePrintDecoratorsBeforeExport(this, node);\n\n this.word(\"export\");\n this.noIndentInnerCommentsHere();\n this.space();\n this.word(\"default\");\n this.space();\n this.tokenContext |= TokenContext.exportDefault;\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n this.word(\"import\");\n this.space();\n\n const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n if (isTypeKind) {\n this.noIndentInnerCommentsHere();\n this.word(node.importKind!);\n this.space();\n } else if (node.module) {\n this.noIndentInnerCommentsHere();\n this.word(\"module\");\n this.space();\n } else if (node.phase) {\n this.noIndentInnerCommentsHere();\n this.word(node.phase);\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n const hasSpecifiers = !!specifiers.length;\n // print \"special\" specifiers first. The loop condition is constant,\n // but there is a \"break\" in the body.\n while (hasSpecifiers) {\n const first = specifiers[0];\n if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n this.print(specifiers.shift());\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n let hasBrace = false;\n if (specifiers.length) {\n hasBrace = true;\n this.token(\"{\");\n this.space();\n this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n this.token(\"}\");\n } else if (isTypeKind && !hasSpecifiers) {\n hasBrace = true;\n this.token(\"{\");\n this.token(\"}\");\n }\n\n if (hasSpecifiers || isTypeKind) {\n this.space();\n this.word(\"from\");\n this.space();\n }\n\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, hasBrace);\n } else {\n this.print(node.source);\n }\n\n this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n this.print(node.key);\n this.token(\":\");\n this.space();\n this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n this: Printer,\n node: t.ImportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local);\n}\n\nexport function ImportExpression(this: Printer, node: t.ImportExpression) {\n this.word(\"import\");\n if (node.phase) {\n this.token(\".\");\n this.word(node.phase);\n }\n this.token(\"(\");\n const shouldPrintTrailingComma = this.shouldPrintTrailingComma(\")\");\n this.print(node.source);\n if (node.options != null) {\n this.token(\",\");\n this.space();\n this.print(node.options);\n }\n if (shouldPrintTrailingComma) {\n this.token(\",\");\n }\n this.rightParens(node);\n}\n","import type Printer from \"../printer.ts\";\nimport { isAssignmentPattern, isIdentifier } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport jsesc from \"jsesc\";\nimport * as charCodes from \"charcodes\";\nimport { _methodHead } from \"./methods.ts\";\n\nlet lastRawIdentResult: string = \"\";\nexport function _getRawIdentifier(this: Printer, node: t.Identifier) {\n const { name } = node;\n const token = this.tokenMap!.find(node, tok => tok.value === name);\n if (token) {\n lastRawIdentResult = this._originalCode!.slice(token.start, token.end);\n return lastRawIdentResult;\n }\n return (lastRawIdentResult = node.name);\n}\n\nexport function Identifier(this: Printer, node: t.Identifier) {\n if (\n this._buf._map &&\n node.loc?.identifierName &&\n node.loc.identifierName !== node.name\n ) {\n this.sourceIdentifierName(node.loc.identifierName);\n }\n\n this.word(this.tokenMap ? lastRawIdentResult : node.name);\n}\n\nexport function ArgumentPlaceholder(this: Printer) {\n this.token(\"?\");\n}\n\nexport function RestElement(this: Printer, node: t.RestElement) {\n this.token(\"...\");\n this.print(node.argument);\n}\n\nexport { RestElement as SpreadElement };\n\nexport function ObjectExpression(this: Printer, node: t.ObjectExpression) {\n const props = node.properties;\n\n this.token(\"{\");\n\n if (props.length) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.space();\n this.printList(\n props,\n this.shouldPrintTrailingComma(\"}\"),\n true,\n true,\n undefined,\n true,\n );\n this.space();\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n }\n\n this.rightBrace(node);\n}\n\nexport { ObjectExpression as ObjectPattern };\n\nexport function ObjectMethod(this: Printer, node: t.ObjectMethod) {\n this.printJoin(node.decorators);\n _methodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\n\nexport function ObjectProperty(this: Printer, node: t.ObjectProperty) {\n this.printJoin(node.decorators);\n\n if (node.computed) {\n this.token(\"[\");\n this.print(node.key);\n this.token(\"]\");\n } else {\n // print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`\n if (\n isAssignmentPattern(node.value) &&\n isIdentifier(node.key) &&\n // @ts-expect-error todo(flow->ts) `.name` does not exist on some types in union\n node.key.name === node.value.left.name\n ) {\n this.print(node.value);\n return;\n }\n\n this.print(node.key);\n\n // shorthand!\n if (\n node.shorthand &&\n isIdentifier(node.key) &&\n isIdentifier(node.value) &&\n node.key.name === node.value.name\n ) {\n return;\n }\n }\n\n this.token(\":\");\n this.space();\n this.print(node.value);\n}\n\nexport function ArrayExpression(this: Printer, node: t.ArrayExpression) {\n const elems = node.elements;\n const len = elems.length;\n\n this.token(\"[\");\n\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n\n for (let i = 0; i < elems.length; i++) {\n const elem = elems[i];\n if (elem) {\n if (i > 0) this.space();\n this.print(elem, undefined, true);\n if (i < len - 1 || this.shouldPrintTrailingComma(\"]\")) {\n this.tokenChar(charCodes.comma, i);\n }\n } else {\n // If the array expression ends with a hole, that hole\n // will be ignored by the interpreter, but if it ends with\n // two (or more) holes, we need to write out two (or more)\n // commas so that the resulting code is interpreted with\n // both (all) of the holes.\n this.tokenChar(charCodes.comma, i);\n }\n }\n\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n\n this.token(\"]\");\n}\n\nexport { ArrayExpression as ArrayPattern };\n\nexport function RegExpLiteral(this: Printer, node: t.RegExpLiteral) {\n this.word(`/${node.pattern}/${node.flags}`, false);\n}\n\nexport function BooleanLiteral(this: Printer, node: t.BooleanLiteral) {\n this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteral(this: Printer) {\n this.word(\"null\");\n}\n\nexport function NumericLiteral(this: Printer, node: t.NumericLiteral) {\n const raw = this.getPossibleRaw(node);\n const opts = this.format.jsescOption;\n const value = node.value;\n const str = value + \"\";\n if (opts.numbers) {\n this.number(jsesc(value, opts), value);\n } else if (raw == null) {\n this.number(str, value); // normalize\n } else if (this.format.minified) {\n this.number(raw.length < str.length ? raw : str, value);\n } else {\n this.number(raw, value);\n }\n}\n\nexport function StringLiteral(this: Printer, node: t.StringLiteral) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.token(raw);\n return;\n }\n\n const val = jsesc(node.value, this.format.jsescOption);\n\n this.token(val);\n}\n\nexport function BigIntLiteral(this: Printer, node: t.BigIntLiteral) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.word(raw);\n return;\n }\n this.word(node.value + \"n\");\n}\n\n// Hack pipe operator\nconst validTopicTokenSet = new Set<string | undefined>([\n \"^^\",\n \"@@\",\n \"^\",\n \"%\",\n \"#\",\n]);\nexport function TopicReference(this: Printer) {\n const { topicToken } = this.format;\n\n if (validTopicTokenSet.has(topicToken)) {\n this.token(topicToken!);\n } else {\n const givenTopicTokenJSON = JSON.stringify(topicToken);\n const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));\n throw new Error(\n `The \"topicToken\" generator option must be one of ` +\n `${validTopics.join(\", \")} (${givenTopicTokenJSON} received instead).`,\n );\n }\n}\n\n// discard binding\nexport function VoidPattern(this: Printer) {\n this.word(\"void\");\n}\n","import type Printer from \"../printer.ts\";\nimport { isDeclareExportDeclaration, isStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { ExportAllDeclaration } from \"./modules.ts\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function AnyTypeAnnotation(this: Printer) {\n this.word(\"any\");\n}\n\nexport function ArrayTypeAnnotation(\n this: Printer,\n node: t.ArrayTypeAnnotation,\n) {\n this.print(node.elementType, true);\n this.token(\"[\");\n this.token(\"]\");\n}\n\nexport function BooleanTypeAnnotation(this: Printer) {\n this.word(\"boolean\");\n}\n\nexport function BooleanLiteralTypeAnnotation(\n this: Printer,\n node: t.BooleanLiteralTypeAnnotation,\n) {\n this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteralTypeAnnotation(this: Printer) {\n this.word(\"null\");\n}\n\nexport function DeclareClass(\n this: Printer,\n node: t.DeclareClass,\n parent: t.Node,\n) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"class\");\n this.space();\n _interfaceish.call(this, node);\n}\n\nexport function DeclareFunction(\n this: Printer,\n node: t.DeclareFunction,\n parent: t.Node,\n) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"function\");\n this.space();\n this.print(node.id);\n\n // Skip TypeAnnotation printing method as the FunctionTypeAnnotation will print `(): `\n this.print(node.id.typeAnnotation?.typeAnnotation);\n\n if (node.predicate) {\n this.space();\n this.print(node.predicate);\n }\n\n this.semicolon();\n}\n\nexport function InferredPredicate(this: Printer) {\n this.token(\"%\");\n this.word(\"checks\");\n}\n\nexport function DeclaredPredicate(this: Printer, node: t.DeclaredPredicate) {\n this.token(\"%\");\n this.word(\"checks\");\n this.token(\"(\");\n this.print(node.value);\n this.token(\")\");\n}\n\nexport function DeclareInterface(this: Printer, node: t.DeclareInterface) {\n this.word(\"declare\");\n this.space();\n InterfaceDeclaration.call(this, node);\n}\n\nexport function DeclareModule(this: Printer, node: t.DeclareModule) {\n this.word(\"declare\");\n this.space();\n this.word(\"module\");\n this.space();\n this.print(node.id);\n this.space();\n this.print(node.body);\n}\n\nexport function DeclareModuleExports(\n this: Printer,\n node: t.DeclareModuleExports,\n) {\n this.word(\"declare\");\n this.space();\n this.word(\"module\");\n this.token(\".\");\n this.word(\"exports\");\n this.print(node.typeAnnotation);\n}\n\nexport function DeclareTypeAlias(this: Printer, node: t.DeclareTypeAlias) {\n this.word(\"declare\");\n this.space();\n TypeAlias.call(this, node);\n}\n\nexport function DeclareOpaqueType(\n this: Printer,\n node: t.DeclareOpaqueType,\n parent: t.Node,\n) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n OpaqueType.call(this, node);\n}\n\nexport function DeclareVariable(\n this: Printer,\n node: t.DeclareVariable,\n parent: t.Node,\n) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"var\");\n this.space();\n this.print(node.id);\n this.print(node.id.typeAnnotation);\n this.semicolon();\n}\n\nexport function DeclareExportDeclaration(\n this: Printer,\n node: t.DeclareExportDeclaration,\n) {\n this.word(\"declare\");\n this.space();\n this.word(\"export\");\n this.space();\n if (node.default) {\n this.word(\"default\");\n this.space();\n }\n\n FlowExportDeclaration.call(this, node);\n}\n\nexport function DeclareExportAllDeclaration(\n this: Printer,\n node: t.DeclareExportAllDeclaration,\n) {\n this.word(\"declare\");\n this.space();\n ExportAllDeclaration.call(this, node);\n}\n\nexport function EnumDeclaration(this: Printer, node: t.EnumDeclaration) {\n const { id, body } = node;\n this.word(\"enum\");\n this.space();\n this.print(id);\n this.print(body);\n}\n\nfunction enumExplicitType(\n context: Printer,\n name: string,\n hasExplicitType: boolean,\n) {\n if (hasExplicitType) {\n context.space();\n context.word(\"of\");\n context.space();\n context.word(name);\n }\n context.space();\n}\n\nfunction enumBody(context: Printer, node: t.EnumBody) {\n const { members } = node;\n context.token(\"{\");\n context.indent();\n context.newline();\n for (const member of members) {\n context.print(member);\n context.newline();\n }\n if (node.hasUnknownMembers) {\n context.token(\"...\");\n context.newline();\n }\n context.dedent();\n context.token(\"}\");\n}\n\nexport function EnumBooleanBody(this: Printer, node: t.EnumBooleanBody) {\n const { explicitType } = node;\n enumExplicitType(this, \"boolean\", explicitType);\n enumBody(this, node);\n}\n\nexport function EnumNumberBody(this: Printer, node: t.EnumNumberBody) {\n const { explicitType } = node;\n enumExplicitType(this, \"number\", explicitType);\n enumBody(this, node);\n}\n\nexport function EnumStringBody(this: Printer, node: t.EnumStringBody) {\n const { explicitType } = node;\n enumExplicitType(this, \"string\", explicitType);\n enumBody(this, node);\n}\n\nexport function EnumSymbolBody(this: Printer, node: t.EnumSymbolBody) {\n enumExplicitType(this, \"symbol\", true);\n enumBody(this, node);\n}\n\nexport function EnumDefaultedMember(\n this: Printer,\n node: t.EnumDefaultedMember,\n) {\n const { id } = node;\n this.print(id);\n this.token(\",\");\n}\n\nfunction enumInitializedMember(\n context: Printer,\n node: t.EnumBooleanMember | t.EnumNumberMember | t.EnumStringMember,\n) {\n context.print(node.id);\n context.space();\n context.token(\"=\");\n context.space();\n context.print(node.init);\n context.token(\",\");\n}\n\nexport function EnumBooleanMember(this: Printer, node: t.EnumBooleanMember) {\n enumInitializedMember(this, node);\n}\n\nexport function EnumNumberMember(this: Printer, node: t.EnumNumberMember) {\n enumInitializedMember(this, node);\n}\n\nexport function EnumStringMember(this: Printer, node: t.EnumStringMember) {\n enumInitializedMember(this, node);\n}\n\nfunction FlowExportDeclaration(\n this: Printer,\n node: t.DeclareExportDeclaration,\n) {\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement(declar)) this.semicolon();\n } else {\n this.token(\"{\");\n if (node.specifiers!.length) {\n this.space();\n this.printList(node.specifiers);\n this.space();\n }\n this.token(\"}\");\n\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n this.print(node.source);\n }\n\n this.semicolon();\n }\n}\n\nexport function ExistsTypeAnnotation(this: Printer) {\n this.token(\"*\");\n}\n\nexport function FunctionTypeAnnotation(\n this: Printer,\n node: t.FunctionTypeAnnotation,\n parent?: t.Node,\n) {\n this.print(node.typeParameters);\n this.token(\"(\");\n\n if (node.this) {\n this.word(\"this\");\n this.token(\":\");\n this.space();\n this.print(node.this.typeAnnotation);\n if (node.params.length || node.rest) {\n this.token(\",\");\n this.space();\n }\n }\n\n this.printList(node.params);\n\n if (node.rest) {\n if (node.params.length) {\n this.token(\",\");\n this.space();\n }\n this.token(\"...\");\n this.print(node.rest);\n }\n\n this.token(\")\");\n\n // this node type is overloaded, not sure why but it makes it EXTREMELY annoying\n\n const type = parent?.type;\n if (\n type != null &&\n (type === \"ObjectTypeCallProperty\" ||\n type === \"ObjectTypeInternalSlot\" ||\n type === \"DeclareFunction\" ||\n (type === \"ObjectTypeProperty\" && parent.method))\n ) {\n this.token(\":\");\n } else {\n this.space();\n this.token(\"=>\");\n }\n\n this.space();\n this.print(node.returnType);\n}\n\nexport function FunctionTypeParam(this: Printer, node: t.FunctionTypeParam) {\n this.print(node.name);\n if (node.optional) this.token(\"?\");\n if (node.name) {\n this.token(\":\");\n this.space();\n }\n this.print(node.typeAnnotation);\n}\n\nexport function InterfaceExtends(this: Printer, node: t.InterfaceExtends) {\n this.print(node.id);\n this.print(node.typeParameters, true);\n}\n\nexport {\n InterfaceExtends as ClassImplements,\n InterfaceExtends as GenericTypeAnnotation,\n};\n\nexport function _interfaceish(\n this: Printer,\n node: t.InterfaceDeclaration | t.DeclareInterface | t.DeclareClass,\n) {\n this.print(node.id);\n this.print(node.typeParameters);\n if (node.extends?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(node.extends);\n }\n if (node.type === \"DeclareClass\") {\n if (node.mixins?.length) {\n this.space();\n this.word(\"mixins\");\n this.space();\n this.printList(node.mixins);\n }\n if (node.implements?.length) {\n this.space();\n this.word(\"implements\");\n this.space();\n this.printList(node.implements);\n }\n }\n this.space();\n this.print(node.body);\n}\n\nexport function _variance(\n this: Printer,\n node:\n | t.TypeParameter\n | t.ObjectTypeIndexer\n | t.ObjectTypeProperty\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty,\n) {\n const kind = node.variance?.kind;\n if (kind != null) {\n if (kind === \"plus\") {\n this.token(\"+\");\n } else if (kind === \"minus\") {\n this.token(\"-\");\n }\n }\n}\n\nexport function InterfaceDeclaration(\n this: Printer,\n node: t.InterfaceDeclaration | t.DeclareInterface,\n) {\n this.word(\"interface\");\n this.space();\n _interfaceish.call(this, node);\n}\n\nfunction andSeparator(this: Printer, occurrenceCount: number) {\n this.space();\n this.token(\"&\", false, occurrenceCount);\n this.space();\n}\n\nexport function InterfaceTypeAnnotation(\n this: Printer,\n node: t.InterfaceTypeAnnotation,\n) {\n this.word(\"interface\");\n if (node.extends?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(node.extends);\n }\n this.space();\n this.print(node.body);\n}\n\nexport function IntersectionTypeAnnotation(\n this: Printer,\n node: t.IntersectionTypeAnnotation,\n) {\n this.printJoin(node.types, undefined, undefined, andSeparator);\n}\n\nexport function MixedTypeAnnotation(this: Printer) {\n this.word(\"mixed\");\n}\n\nexport function EmptyTypeAnnotation(this: Printer) {\n this.word(\"empty\");\n}\n\nexport function NullableTypeAnnotation(\n this: Printer,\n node: t.NullableTypeAnnotation,\n) {\n this.token(\"?\");\n this.print(node.typeAnnotation);\n}\n\nexport {\n BigIntLiteral as BigIntLiteralTypeAnnotation,\n NumericLiteral as NumberLiteralTypeAnnotation,\n StringLiteral as StringLiteralTypeAnnotation,\n} from \"./types.ts\";\n\nexport function NumberTypeAnnotation(this: Printer) {\n this.word(\"number\");\n}\n\nexport function StringTypeAnnotation(this: Printer) {\n this.word(\"string\");\n}\n\nexport function ThisTypeAnnotation(this: Printer) {\n this.word(\"this\");\n}\n\nexport function TupleTypeAnnotation(\n this: Printer,\n node: t.TupleTypeAnnotation,\n) {\n this.token(\"[\");\n this.printList(node.types);\n this.token(\"]\");\n}\n\nexport function TypeofTypeAnnotation(\n this: Printer,\n node: t.TypeofTypeAnnotation,\n) {\n this.word(\"typeof\");\n this.space();\n this.print(node.argument);\n}\n\nexport function TypeAlias(\n this: Printer,\n node: t.TypeAlias | t.DeclareTypeAlias,\n) {\n this.word(\"type\");\n this.space();\n this.print(node.id);\n this.print(node.typeParameters);\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.right);\n this.semicolon();\n}\n\nexport function TypeAnnotation(\n this: Printer,\n node: t.TypeAnnotation,\n parent: t.Node,\n) {\n this.token(\":\");\n this.space();\n if (parent.type === \"ArrowFunctionExpression\") {\n this.tokenContext |= TokenContext.arrowFlowReturnType;\n } else if (\n // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n node.optional\n ) {\n this.token(\"?\");\n }\n this.print(node.typeAnnotation);\n}\n\nexport function TypeParameterInstantiation(\n this: Printer,\n node: t.TypeParameterInstantiation,\n): void {\n this.token(\"<\");\n this.printList(node.params);\n this.token(\">\");\n}\n\nexport { TypeParameterInstantiation as TypeParameterDeclaration };\n\nexport function TypeParameter(this: Printer, node: t.TypeParameter) {\n _variance.call(this, node);\n\n this.word(node.name);\n\n if (node.bound) {\n this.print(node.bound);\n }\n\n if (node.default) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.default);\n }\n}\n\nexport function OpaqueType(\n this: Printer,\n node: t.OpaqueType | t.DeclareOpaqueType,\n) {\n this.word(\"opaque\");\n this.space();\n this.word(\"type\");\n this.space();\n this.print(node.id);\n this.print(node.typeParameters);\n if (node.supertype) {\n this.token(\":\");\n this.space();\n this.print(node.supertype);\n }\n\n if (node.impltype) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.impltype);\n }\n this.semicolon();\n}\n\nexport function ObjectTypeAnnotation(\n this: Printer,\n node: t.ObjectTypeAnnotation,\n) {\n if (node.exact) {\n this.token(\"{|\");\n } else {\n this.token(\"{\");\n }\n\n // TODO: remove the array fallbacks and instead enforce the types to require an array\n const props = [\n ...node.properties,\n ...(node.callProperties || []),\n ...(node.indexers || []),\n ...(node.internalSlots || []),\n ];\n\n if (props.length) {\n this.newline();\n\n this.space();\n\n this.printJoin(\n props,\n true,\n true,\n () => {\n if (props.length !== 1 || node.inexact) {\n this.token(\",\");\n this.space();\n }\n },\n true,\n );\n\n this.space();\n }\n\n if (node.inexact) {\n this.indent();\n this.token(\"...\");\n if (props.length) {\n this.newline();\n }\n this.dedent();\n }\n\n if (node.exact) {\n this.token(\"|}\");\n } else {\n this.token(\"}\");\n }\n}\n\nexport function ObjectTypeInternalSlot(\n this: Printer,\n node: t.ObjectTypeInternalSlot,\n) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n this.token(\"[\");\n this.token(\"[\");\n this.print(node.id);\n this.token(\"]\");\n this.token(\"]\");\n if (node.optional) this.token(\"?\");\n if (!node.method) {\n this.token(\":\");\n this.space();\n }\n this.print(node.value);\n}\n\nexport function ObjectTypeCallProperty(\n this: Printer,\n node: t.ObjectTypeCallProperty,\n) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n this.print(node.value);\n}\n\nexport function ObjectTypeIndexer(this: Printer, node: t.ObjectTypeIndexer) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n _variance.call(this, node);\n this.token(\"[\");\n if (node.id) {\n this.print(node.id);\n this.token(\":\");\n this.space();\n }\n this.print(node.key);\n this.token(\"]\");\n this.token(\":\");\n this.space();\n this.print(node.value);\n}\n\nexport function ObjectTypeProperty(this: Printer, node: t.ObjectTypeProperty) {\n if (node.proto) {\n this.word(\"proto\");\n this.space();\n }\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n if (node.kind === \"get\" || node.kind === \"set\") {\n this.word(node.kind);\n this.space();\n }\n _variance.call(this, node);\n this.print(node.key);\n if (node.optional) this.token(\"?\");\n if (!node.method) {\n this.token(\":\");\n this.space();\n }\n this.print(node.value);\n}\n\nexport function ObjectTypeSpreadProperty(\n this: Printer,\n node: t.ObjectTypeSpreadProperty,\n) {\n this.token(\"...\");\n this.print(node.argument);\n}\n\nexport function QualifiedTypeIdentifier(\n this: Printer,\n node: t.QualifiedTypeIdentifier,\n) {\n this.print(node.qualification);\n this.token(\".\");\n this.print(node.id);\n}\n\nexport function SymbolTypeAnnotation(this: Printer) {\n this.word(\"symbol\");\n}\n\nfunction orSeparator(this: Printer, occurrenceCount: number) {\n this.space();\n this.token(\"|\", false, occurrenceCount);\n this.space();\n}\n\nexport function UnionTypeAnnotation(\n this: Printer,\n node: t.UnionTypeAnnotation,\n) {\n this.printJoin(node.types, undefined, undefined, orSeparator);\n}\n\nexport function TypeCastExpression(this: Printer, node: t.TypeCastExpression) {\n this.token(\"(\");\n this.print(node.expression);\n this.print(node.typeAnnotation);\n this.token(\")\");\n}\n\nexport function Variance(this: Printer, node: t.Variance) {\n if (node.kind === \"plus\") {\n this.token(\"+\");\n } else {\n this.token(\"-\");\n }\n}\n\nexport function VoidTypeAnnotation(this: Printer) {\n this.word(\"void\");\n}\n\nexport function IndexedAccessType(this: Printer, node: t.IndexedAccessType) {\n this.print(node.objectType, true);\n this.token(\"[\");\n this.print(node.indexType);\n this.token(\"]\");\n}\n\nexport function OptionalIndexedAccessType(\n this: Printer,\n node: t.OptionalIndexedAccessType,\n) {\n this.print(node.objectType);\n if (node.optional) {\n this.token(\"?.\");\n }\n this.token(\"[\");\n this.print(node.indexType);\n this.token(\"]\");\n}\n","import type Printer from \"../printer.ts\";\nimport {\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport * as charCodes from \"charcodes\";\nimport { _shouldPrintDecoratorsBeforeExport } from \"./expressions.ts\";\nimport { _tsPrintClassMemberModifiers } from \"./typescript.ts\";\nimport { _variance } from \"./flow.ts\";\nimport { _methodHead } from \"./methods.ts\";\n\nexport function ClassDeclaration(\n this: Printer,\n node: t.ClassDeclaration,\n parent: t.Node,\n) {\n const inExport =\n isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent);\n\n if (\n !inExport ||\n !_shouldPrintDecoratorsBeforeExport.call(\n this,\n parent as t.ExportDeclaration & { declaration: t.ClassDeclaration },\n )\n ) {\n this.printJoin(node.decorators);\n }\n\n if (node.declare) {\n // TS\n this.word(\"declare\");\n this.space();\n }\n\n if (node.abstract) {\n // TS\n this.word(\"abstract\");\n this.space();\n }\n\n this.word(\"class\");\n\n if (node.id) {\n this.space();\n this.print(node.id);\n }\n\n this.print(node.typeParameters);\n\n if (node.superClass) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.superClass);\n this.print(node.superTypeArguments);\n }\n\n if (node.implements) {\n this.space();\n this.word(\"implements\");\n this.space();\n this.printList(node.implements);\n }\n\n this.space();\n this.print(node.body);\n}\n\nexport { ClassDeclaration as ClassExpression };\n\nexport function ClassBody(this: Printer, node: t.ClassBody) {\n this.token(\"{\");\n if (node.body.length === 0) {\n this.token(\"}\");\n } else {\n const separator = classBodyEmptySemicolonsPrinter(this, node);\n separator?.(-1); // print leading semicolons in preserveFormat mode\n\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.printJoin(node.body, true, true, separator, true, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n\n if (!this.endsWith(charCodes.lineFeed)) this.newline();\n\n this.rightBrace(node);\n }\n}\n\nfunction classBodyEmptySemicolonsPrinter(printer: Printer, node: t.ClassBody) {\n if (!printer.tokenMap || node.start == null || node.end == null) {\n return null;\n }\n\n // \"empty statements\" in class bodies are not represented in the AST.\n // Print them by checking if there are any ; tokens between the current AST\n // member and the next one.\n\n const indexes = printer.tokenMap.getIndexes(node);\n if (!indexes) return null;\n\n let k = 1; // start from 1 to skip '{'\n\n let occurrenceCount = 0;\n\n let nextLocIndex = 0;\n const advanceNextLocIndex = () => {\n while (\n nextLocIndex < node.body.length &&\n node.body[nextLocIndex].start == null\n ) {\n nextLocIndex++;\n }\n };\n advanceNextLocIndex();\n\n return (i: number) => {\n if (nextLocIndex <= i) {\n nextLocIndex = i + 1;\n advanceNextLocIndex();\n }\n\n const end =\n nextLocIndex === node.body.length\n ? node.end\n : node.body[nextLocIndex].start;\n\n let tok;\n while (\n k < indexes.length &&\n printer.tokenMap!.matchesOriginal(\n (tok = printer._tokens![indexes[k]]),\n \";\",\n ) &&\n tok.start < end!\n ) {\n printer.tokenChar(charCodes.semicolon, occurrenceCount++);\n k++;\n }\n };\n}\n\nexport function ClassProperty(this: Printer, node: t.ClassProperty) {\n this.printJoin(node.decorators);\n\n if (!node.static && !this.format.preserveFormat) {\n // catch up to property key, avoid line break\n // between member TS modifiers and the property key.\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n }\n\n _tsPrintClassMemberModifiers.call(this, node);\n\n if (node.computed) {\n this.token(\"[\");\n this.print(node.key);\n this.token(\"]\");\n } else {\n _variance.call(this, node);\n this.print(node.key);\n }\n\n // TS\n if (node.optional) {\n this.token(\"?\");\n }\n if (node.definite) {\n this.token(\"!\");\n }\n\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\n\nexport function ClassAccessorProperty(\n this: Printer,\n node: t.ClassAccessorProperty,\n) {\n this.printJoin(node.decorators);\n\n // catch up to property key, avoid line break\n // between member modifiers and the property key.\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n\n // TS does not support class accessor property yet\n _tsPrintClassMemberModifiers.call(this, node);\n\n this.word(\"accessor\", true);\n this.space();\n\n if (node.computed) {\n this.token(\"[\");\n this.print(node.key);\n this.token(\"]\");\n } else {\n // Todo: Flow does not support class accessor property yet.\n _variance.call(this, node);\n this.print(node.key);\n }\n\n // TS\n if (node.optional) {\n this.token(\"?\");\n }\n if (node.definite) {\n this.token(\"!\");\n }\n\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\n\nexport function ClassPrivateProperty(\n this: Printer,\n node: t.ClassPrivateProperty,\n) {\n this.printJoin(node.decorators);\n _tsPrintClassMemberModifiers.call(this, node);\n this.print(node.key);\n // TS\n if (node.optional) {\n this.token(\"?\");\n }\n if (node.definite) {\n this.token(\"!\");\n }\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\n\nexport function ClassMethod(this: Printer, node: t.ClassMethod) {\n _classMethodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\n\nexport function ClassPrivateMethod(this: Printer, node: t.ClassPrivateMethod) {\n _classMethodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\n\nexport function _classMethodHead(\n this: Printer,\n node: t.ClassMethod | t.ClassPrivateMethod | t.TSDeclareMethod,\n allowDecorators = true,\n) {\n if (allowDecorators) {\n this.printJoin((node as t.ClassMethod | t.ClassPrivateMethod).decorators);\n }\n\n if (!this.format.preserveFormat) {\n // catch up to method key, avoid line break\n // between member modifiers/method heads and the method key.\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n }\n\n _tsPrintClassMemberModifiers.call(this, node);\n _methodHead.call(this, node);\n}\n\nexport function StaticBlock(this: Printer, node: t.StaticBlock) {\n this.word(\"static\");\n this.space();\n this.token(\"{\");\n if (node.body.length === 0) {\n this.token(\"}\");\n } else {\n this.newline();\n this.printSequence(node.body, true);\n this.rightBrace(node);\n }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function File(this: Printer, node: t.File) {\n if (node.program) {\n // Print this here to ensure that Program node 'leadingComments' still\n // get printed after the hashbang.\n this.print(node.program.interpreter);\n }\n\n this.print(node.program);\n}\n\nexport function Program(this: Printer, node: t.Program) {\n // An empty Program doesn't have any inner tokens, so\n // we must explicitly print its inner comments.\n this.printInnerComments(false);\n\n const directivesLen = node.directives?.length;\n if (directivesLen) {\n const newline = node.body.length ? 2 : 1;\n this.printSequence(node.directives, undefined, undefined, newline);\n if (!node.directives[directivesLen - 1].trailingComments?.length) {\n this.newline(newline);\n }\n }\n\n this.printSequence(node.body);\n}\n\nexport function BlockStatement(this: Printer, node: t.BlockStatement) {\n this.token(\"{\");\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n\n const directivesLen = node.directives?.length;\n if (directivesLen) {\n const newline = node.body.length ? 2 : 1;\n this.printSequence(node.directives, true, true, newline);\n if (!node.directives[directivesLen - 1].trailingComments?.length) {\n this.newline(newline);\n }\n }\n\n this.printSequence(node.body, true, true);\n\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightBrace(node);\n}\n\nexport function Directive(this: Printer, node: t.Directive) {\n this.print(node.value);\n this.semicolon();\n}\n\n// These regexes match an even number of \\ followed by a quote\nconst unescapedSingleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*'/;\nconst unescapedDoubleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*\"/;\n\nexport function DirectiveLiteral(this: Printer, node: t.DirectiveLiteral) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.token(raw);\n return;\n }\n\n const { value } = node;\n\n // NOTE: In directives we can't change escapings,\n // because they change the behavior.\n // e.g. \"us\\x65 strict\" (\\x65 is e) is not a \"use strict\" directive.\n\n if (!unescapedDoubleQuoteRE.test(value)) {\n this.token(`\"${value}\"`);\n } else if (!unescapedSingleQuoteRE.test(value)) {\n this.token(`'${value}'`);\n } else {\n throw new Error(\n \"Malformed AST: it is not possible to print a directive containing\" +\n \" both unescaped single and double quotes.\",\n );\n }\n}\n\nexport function InterpreterDirective(\n this: Printer,\n node: t.InterpreterDirective,\n) {\n this.token(`#!${node.value}`);\n this._newline();\n}\n\nexport function Placeholder(this: Printer, node: t.Placeholder) {\n this.token(\"%%\");\n this.print(node.name);\n this.token(\"%%\");\n\n if (node.expectedNode === \"Statement\") {\n this.semicolon();\n }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function JSXAttribute(this: Printer, node: t.JSXAttribute) {\n this.print(node.name);\n if (node.value) {\n this.token(\"=\");\n this.print(node.value);\n }\n}\n\nexport function JSXIdentifier(this: Printer, node: t.JSXIdentifier) {\n this.word(node.name);\n}\n\nexport function JSXNamespacedName(this: Printer, node: t.JSXNamespacedName) {\n this.print(node.namespace);\n this.token(\":\");\n this.print(node.name);\n}\n\nexport function JSXMemberExpression(\n this: Printer,\n node: t.JSXMemberExpression,\n) {\n this.print(node.object);\n this.token(\".\");\n this.print(node.property);\n}\n\nexport function JSXSpreadAttribute(this: Printer, node: t.JSXSpreadAttribute) {\n this.token(\"{\");\n this.token(\"...\");\n this.print(node.argument);\n this.rightBrace(node);\n}\n\nexport function JSXExpressionContainer(\n this: Printer,\n node: t.JSXExpressionContainer,\n) {\n this.token(\"{\");\n this.print(node.expression);\n this.rightBrace(node);\n}\n\nexport function JSXSpreadChild(this: Printer, node: t.JSXSpreadChild) {\n this.token(\"{\");\n this.token(\"...\");\n this.print(node.expression);\n this.rightBrace(node);\n}\n\nexport function JSXText(this: Printer, node: t.JSXText) {\n const raw = this.getPossibleRaw(node);\n\n if (raw !== undefined) {\n this.token(raw, true);\n } else {\n this.token(node.value, true);\n }\n}\n\nexport function JSXElement(this: Printer, node: t.JSXElement) {\n const open = node.openingElement;\n this.print(open);\n if (open.selfClosing) return;\n\n this.indent();\n for (const child of node.children) {\n this.print(child);\n }\n this.dedent();\n\n this.print(node.closingElement);\n}\n\nfunction spaceSeparator(this: Printer) {\n this.space();\n}\n\nexport function JSXOpeningElement(this: Printer, node: t.JSXOpeningElement) {\n this.token(\"<\");\n this.print(node.name);\n\n this.print(node.typeArguments);\n\n if (node.attributes.length > 0) {\n this.space();\n this.printJoin(node.attributes, undefined, undefined, spaceSeparator);\n }\n if (node.selfClosing) {\n this.space();\n this.token(\"/\");\n }\n this.token(\">\");\n}\n\nexport function JSXClosingElement(this: Printer, node: t.JSXClosingElement) {\n this.token(\"<\");\n this.token(\"/\");\n this.print(node.name);\n this.token(\">\");\n}\n\nexport function JSXEmptyExpression(this: Printer) {\n // This node is empty, so forcefully print its inner comments.\n this.printInnerComments();\n}\n\nexport function JSXFragment(this: Printer, node: t.JSXFragment) {\n this.print(node.openingFragment);\n\n this.indent();\n for (const child of node.children) {\n this.print(child);\n }\n this.dedent();\n\n this.print(node.closingFragment);\n}\n\nexport function JSXOpeningFragment(this: Printer) {\n this.token(\"<\");\n this.token(\">\");\n}\n\nexport function JSXClosingFragment(this: Printer) {\n this.token(\"</\");\n this.token(\">\");\n}\n","import type * as t from \"@babel/types\";\n\nimport * as generatorFunctions from \"./generators/index.ts\";\nimport type { NodeHandler } from \"./node/index.ts\";\nimport type Printer from \"./printer.ts\";\n\ndeclare global {\n function __node(type: t.Node[\"type\"]): number;\n}\n\nconst generatorInfosMap = new Map<\n string,\n [\n (this: Printer, node: t.Node, parent?: t.Node | null) => void,\n number,\n NodeHandler<boolean> | undefined,\n ]\n>();\nlet index = 0;\n\nfor (const key of Object.keys(generatorFunctions).sort() as Exclude<\n keyof typeof generatorFunctions,\n `_${string}`\n>[]) {\n if (key.startsWith(\"_\")) continue;\n generatorInfosMap.set(key, [\n generatorFunctions[key] as (\n this: Printer,\n node: t.Node,\n parent?: t.Node | null,\n ) => void,\n index++,\n undefined,\n ]);\n}\n\nexport { generatorInfosMap };\n","import * as parens from \"./parentheses.ts\";\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport { generatorInfosMap } from \"../nodes.ts\";\n\nexport const enum TokenContext {\n normal = 0,\n expressionStatement = 1 << 0,\n arrowBody = 1 << 1,\n exportDefault = 1 << 2,\n arrowFlowReturnType = 1 << 3,\n forInitHead = 1 << 4,\n forInHead = 1 << 5,\n forOfHead = 1 << 6,\n // This flag lives across the token boundary, and will\n // be reset after forIn or forInit head is printed\n forInOrInitHeadAccumulate = 1 << 7,\n forInOrInitHeadAccumulatePassThroughMask = 0b10000000,\n}\n\nexport type NodeHandler<R> = (\n node: t.Node,\n // todo:\n // node: K extends keyof typeof t\n // ? Extract<typeof t[K], { type: \"string\" }>\n // : t.Node,\n parent: t.Node,\n parentId: number,\n tokenContext?: number,\n getRawIdentifier?: (node: t.Identifier) => string,\n) => R | undefined;\n\nfor (const type of Object.keys(parens) as (keyof typeof parens)[]) {\n const func = parens[type];\n if (generatorInfosMap.has(type)) {\n generatorInfosMap.get(type)![2] = func as NodeHandler<boolean>;\n }\n}\n\nfunction newCalleeNeedsParens(node: t.Node): boolean {\n let current: t.Node = node;\n while (true) {\n switch (current.type) {\n case \"CallExpression\":\n case \"ImportExpression\":\n case \"OptionalCallExpression\":\n case \"OptionalMemberExpression\":\n return true;\n case \"MemberExpression\":\n current = current.object;\n break;\n case \"TaggedTemplateExpression\":\n current = current.tag;\n break;\n case \"TSNonNullExpression\":\n current = current.expression;\n break;\n default:\n return false;\n }\n }\n}\n\nexport function parentNeedsParens(\n node: t.Node,\n parent: any,\n parentId: number,\n): boolean {\n switch (parentId) {\n case __node(\"NewExpression\"):\n if (parent.callee === node) {\n return newCalleeNeedsParens(node);\n }\n break;\n case __node(\"Decorator\"):\n return (\n !isDecoratorMemberExpression(node) &&\n !(\n node.type === \"CallExpression\" &&\n isDecoratorMemberExpression(node.callee)\n ) &&\n node.type !== \"ParenthesizedExpression\"\n );\n }\n return false;\n}\n\nfunction isDecoratorMemberExpression(node: t.Node): boolean {\n switch (node.type) {\n case \"Identifier\":\n return true;\n case \"MemberExpression\":\n return (\n !node.computed &&\n node.property.type === \"Identifier\" &&\n isDecoratorMemberExpression(node.object)\n );\n default:\n return false;\n }\n}\n\nexport function isLastChild(parent: t.Node, child: t.Node) {\n const visitorKeys = VISITOR_KEYS[parent.type];\n for (let i = visitorKeys.length - 1; i >= 0; i--) {\n const val = (parent as any)[visitorKeys[i]] as t.Node | t.Node[] | null;\n if (val === child) {\n return true;\n } else if (Array.isArray(val)) {\n let j = val.length - 1;\n while (j >= 0 && val[j] === null) j--;\n return j >= 0 && val[j] === child;\n } else if (val) {\n return false;\n }\n }\n return false;\n}\n","import type * as t from \"@babel/types\";\nimport type { Token } from \"@babel/parser\";\n\nimport { traverseFast, VISITOR_KEYS } from \"@babel/types\";\n\nexport class TokenMap {\n _tokens: Token[];\n _source: string;\n\n _nodesToTokenIndexes = new Map<t.Node, number[]>();\n _nodesOccurrencesCountCache = new Map<\n t.Node,\n { test: string; count: number; i: number }\n >();\n\n _tokensCache = new Map<t.Node, { first: number; last: number }>();\n\n constructor(ast: t.Node, tokens: Token[], source: string) {\n this._tokens = tokens;\n this._source = source;\n\n traverseFast(ast, node => {\n const indexes = this._getTokensIndexesOfNode(node);\n if (indexes.length > 0) this._nodesToTokenIndexes.set(node, indexes);\n });\n\n this._tokensCache.clear();\n }\n\n has(node: t.Node): boolean {\n return this._nodesToTokenIndexes.has(node);\n }\n\n getIndexes(node: t.Node): readonly number[] | undefined {\n return this._nodesToTokenIndexes.get(node);\n }\n\n find(\n node: t.Node,\n condition: (token: Token, index: number) => boolean,\n ): Token | null {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n for (let k = 0; k < indexes.length; k++) {\n const index = indexes[k];\n const tok = this._tokens[index];\n if (condition(tok, index)) return tok;\n }\n }\n return null;\n }\n\n findLastIndex(\n node: t.Node,\n condition: (token: Token, index: number) => boolean,\n ): number {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n for (let k = indexes.length - 1; k >= 0; k--) {\n const index = indexes[k];\n const tok = this._tokens[index];\n if (condition(tok, index)) return index;\n }\n }\n return -1;\n }\n\n findMatching(\n node: t.Node,\n test: string | number,\n occurrenceCount: number = 0,\n ): Token | null {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n if (typeof test === \"number\") {\n test = String.fromCharCode(test);\n }\n let i = 0;\n const count = occurrenceCount;\n\n // To avoid O(n^2) search when printing lists (such as arrays), we\n // cache the last index of a given token for a given occurrence count.\n // If then we are asked to find the next occurrence of the same token,\n // we start from the index of the previously found token.\n // This cache only kicks in after 2 tokens of the same type, to avoid\n // overhead in the simple case of having unique tokens per node.\n if (count > 1) {\n const cache = this._nodesOccurrencesCountCache.get(node);\n if (cache?.test === test && cache.count < count) {\n i = cache.i + 1;\n occurrenceCount -= cache.count + 1;\n }\n }\n\n for (; i < indexes.length; i++) {\n const tok = this._tokens[indexes[i]];\n if (this.matchesOriginal(tok, test)) {\n if (occurrenceCount === 0) {\n if (count > 0) {\n this._nodesOccurrencesCountCache.set(node, { test, count, i });\n }\n return tok;\n }\n occurrenceCount--;\n }\n }\n }\n return null;\n }\n\n matchesOriginal(token: Token, test: string) {\n if (token.end - token.start !== test.length) return false;\n if (token.value != null) return token.value === test;\n return this._source.startsWith(test, token.start);\n }\n\n startMatches(node: t.Node, test: string): boolean {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (!indexes) return false;\n const tok = this._tokens[indexes[0]];\n if (tok.start !== node.start) return false;\n return this.matchesOriginal(tok, test);\n }\n\n endMatches(node: t.Node, test: string): boolean {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (!indexes) return false;\n const tok = this._tokens[indexes[indexes.length - 1]];\n if (tok.end !== node.end) return false;\n return this.matchesOriginal(tok, test);\n }\n\n _getTokensIndexesOfNode(node: t.Node): number[] {\n if (node.start == null || node.end == null) return [];\n\n const { first, last } = this._findTokensOfNode(\n node,\n 0,\n this._tokens.length - 1,\n );\n\n let low = first;\n\n const children = childrenIterator(node);\n\n if (\n (node.type === \"ExportNamedDeclaration\" ||\n node.type === \"ExportDefaultDeclaration\") &&\n node.declaration?.type === \"ClassDeclaration\"\n ) {\n // Exported class declarations can be not properly nested inside\n // the export declaration that contains them. For example, in\n // `@dec export class Foo {}` the `export` is covered by the\n // ClassDeclaration range. Skip the class declaration from the list\n // of children to skip, so that when looking for `export` we also\n // traverse its tokens.\n children.next();\n }\n\n const indexes = [];\n\n for (const child of children) {\n if (child == null) continue;\n if (child.start == null || child.end == null) continue;\n\n const childTok = this._findTokensOfNode(child, low, last);\n\n const high = childTok.first;\n for (let k = low; k < high; k++) indexes.push(k);\n\n low = childTok.last + 1;\n }\n\n for (let k = low; k <= last; k++) indexes.push(k);\n\n return indexes;\n }\n\n _findTokensOfNode(node: t.Node, low: number, high: number) {\n const cached = this._tokensCache.get(node);\n if (cached) return cached;\n\n const first = this._findFirstTokenOfNode(node.start!, low, high);\n const last = this._findLastTokenOfNode(node.end!, first, high);\n\n this._tokensCache.set(node, { first, last });\n return { first, last };\n }\n\n _findFirstTokenOfNode(start: number, low: number, high: number): number {\n while (low <= high) {\n const mid = (high + low) >> 1;\n if (start < this._tokens[mid].start) {\n high = mid - 1;\n } else if (start > this._tokens[mid].start) {\n low = mid + 1;\n } else {\n return mid;\n }\n }\n return low;\n }\n\n _findLastTokenOfNode(end: number, low: number, high: number): number {\n while (low <= high) {\n const mid = (high + low) >> 1;\n if (end < this._tokens[mid].end) {\n high = mid - 1;\n } else if (end > this._tokens[mid].end) {\n low = mid + 1;\n } else {\n return mid;\n }\n }\n return high;\n }\n}\n\nfunction* childrenIterator(node: t.Node) {\n // We need special handling to iterate TemplateLiteral\n // children in order, since the two lists are interleaved.\n if (node.type === \"TemplateLiteral\") {\n yield node.quasis[0];\n for (let i = 1; i < node.quasis.length; i++) {\n yield node.expressions[i - 1];\n yield node.quasis[i];\n }\n return;\n }\n\n const keys = VISITOR_KEYS[node.type];\n for (const key of keys) {\n const child = (node as any)[key];\n if (!child) continue;\n if (Array.isArray(child)) {\n yield* child;\n } else {\n yield child;\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n\nimport Buffer from \"./buffer.ts\";\nimport type { Loc, Pos } from \"./buffer.ts\";\nimport { isLastChild, parentNeedsParens } from \"./node/index.ts\";\nimport { generatorInfosMap } from \"./nodes.ts\";\nimport type * as t from \"@babel/types\";\nimport {\n isExpression,\n isFunction,\n isStatement,\n isClassBody,\n isTSInterfaceBody,\n isTSEnumMember,\n} from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\n\nimport { TokenMap } from \"./token-map.ts\";\n\nimport type { GeneratorOptions } from \"./index.ts\";\nimport type SourceMap from \"./source-map.ts\";\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport type { Token } from \"@babel/parser\";\n\nimport * as charCodes from \"charcodes\";\n\nconst SCIENTIFIC_NOTATION = /e/i;\nconst ZERO_DECIMAL_INTEGER = /\\.0+$/;\nconst HAS_NEWLINE = /[\\n\\r\\u2028\\u2029]/;\nconst HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\\n\\r\\u2028\\u2029]|\\*\\//;\n\nfunction commentIsNewline(c: t.Comment) {\n return c.type === \"CommentLine\" || HAS_NEWLINE.test(c.value);\n}\n\nimport { TokenContext } from \"./node/index.ts\";\nimport { _getRawIdentifier } from \"./generators/types.ts\";\n\nconst enum COMMENT_TYPE {\n LEADING,\n INNER,\n TRAILING,\n}\n\nconst enum COMMENT_SKIP_NEWLINE {\n DEFAULT,\n ALL,\n LEADING,\n TRAILING,\n}\n\nconst enum PRINT_COMMENT_HINT {\n SKIP,\n ALLOW,\n DEFER,\n}\n\nconst enum PRINTER_FLAGS {\n EMPTY = 0,\n PRESERVE_FORMAT = 1 << 0,\n COMPACT = 1 << 1,\n CONCISE = 1 << 2,\n RETAIN_LINES = 1 << 3,\n RETAIN_FUNCTION_PARENS = 1 << 4,\n AUX_COMMENTS = 1 << 5,\n}\n\nconst enum LAST_CHAR_KINDS {\n EMPTY = 0,\n NORMAL = -1,\n INTEGER = -2,\n WORD = -3,\n}\n\nconst enum INNER_COMMENTS_STATE {\n DISALLOWED = 0,\n ALLOWED = 1,\n PRINTED = 2,\n\n WITH_INDENT = 4,\n MASK = 3,\n}\n\nconst enum PRINT_COMMENTS_RESULT {\n PRINTED_NONE = 0,\n PRINTED_SOME = 1,\n PRINTED_ALL = 2,\n}\n\nexport type Format = {\n shouldPrintComment: (comment: string) => boolean;\n preserveFormat: boolean | undefined;\n retainLines: boolean | undefined;\n retainFunctionParens: boolean | undefined;\n comments: boolean | undefined;\n auxiliaryCommentBefore: string | undefined;\n auxiliaryCommentAfter: string | undefined;\n compact: boolean | \"auto\" | undefined;\n minified: boolean | undefined;\n concise: boolean | undefined;\n indent: {\n adjustMultilineComment: boolean;\n style: string;\n };\n jsescOption: jsescOptions;\n /**\n * For use with the Hack-style pipe operator.\n * Changes what token is used for pipe bodies’ topic references.\n */\n topicToken?: GeneratorOptions[\"topicToken\"];\n};\n\ninterface PrintSequenceOptions {\n statement?: boolean;\n indent?: boolean;\n trailingCommentsLineOffset?: number;\n}\n\ninterface PrintListOptions {\n separator?: (this: Printer, occurrenceCount: number, last: boolean) => void;\n statement?: boolean;\n indent?: boolean;\n printTrailingSeparator?: boolean;\n}\n\nexport type PrintJoinOptions = PrintListOptions & PrintSequenceOptions;\nclass Printer {\n constructor(\n format: Format,\n map: SourceMap | null,\n tokens: Token[] | null = null,\n originalCode: string | null = null,\n ) {\n this.format = format;\n\n this._tokens = tokens;\n this._originalCode = originalCode;\n\n this._indentRepeat = format.indent.style.length;\n\n this._inputMap = map?._inputMap || null;\n\n this._buf = new Buffer(map, format.indent.style[0]);\n\n const {\n preserveFormat,\n compact,\n concise,\n retainLines,\n retainFunctionParens,\n } = format;\n if (preserveFormat) {\n this._flags |= PRINTER_FLAGS.PRESERVE_FORMAT;\n }\n if (compact) {\n this._flags |= PRINTER_FLAGS.COMPACT;\n }\n if (concise) {\n this._flags |= PRINTER_FLAGS.CONCISE;\n }\n if (retainLines) {\n this._flags |= PRINTER_FLAGS.RETAIN_LINES;\n }\n if (retainFunctionParens) {\n this._flags |= PRINTER_FLAGS.RETAIN_FUNCTION_PARENS;\n }\n if (format.auxiliaryCommentBefore || format.auxiliaryCommentAfter) {\n this._flags |= PRINTER_FLAGS.AUX_COMMENTS;\n }\n }\n declare _inputMap: TraceMap | null;\n\n declare format: Format;\n\n enterDelimited() {\n const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n if (oldNoLineTerminatorAfterNode !== null) {\n this._noLineTerminatorAfterNode = null;\n }\n return oldNoLineTerminatorAfterNode;\n }\n\n tokenContext: number = TokenContext.normal;\n\n _tokens: Token[] | null = null;\n _originalCode: string | null = null;\n\n declare _buf: Buffer;\n _currentNode: t.Node | null = null;\n _currentTypeId: number | null = null;\n _indent: number = 0;\n _indentRepeat: number = 0;\n _insideAux: boolean = false;\n _noLineTerminator: boolean = false;\n _noLineTerminatorAfterNode: t.Node | null = null;\n _printAuxAfterOnNextUserNode: boolean = false;\n _printedComments = new Set<t.Comment>();\n _lastCommentLine = 0;\n _innerCommentsState = INNER_COMMENTS_STATE.DISALLOWED;\n _flags = PRINTER_FLAGS.EMPTY;\n\n tokenMap: TokenMap | null = null;\n\n _boundGetRawIdentifier: ((node: t.Identifier) => string) | null = null;\n\n generate(ast: t.Node) {\n if (this.format.preserveFormat) {\n this.tokenMap = new TokenMap(ast, this._tokens!, this._originalCode!);\n this._boundGetRawIdentifier = _getRawIdentifier.bind(this);\n }\n this.print(ast);\n this._maybeAddAuxComment();\n\n return this._buf.get();\n }\n\n /**\n * Increment indent size.\n */\n\n indent(flags = this._flags): void {\n if (\n flags &\n (PRINTER_FLAGS.PRESERVE_FORMAT |\n PRINTER_FLAGS.COMPACT |\n PRINTER_FLAGS.CONCISE)\n ) {\n return;\n }\n\n this._indent += this._indentRepeat;\n }\n\n /**\n * Decrement indent size.\n */\n\n dedent(flags = this._flags): void {\n if (\n flags &\n (PRINTER_FLAGS.PRESERVE_FORMAT |\n PRINTER_FLAGS.COMPACT |\n PRINTER_FLAGS.CONCISE)\n ) {\n return;\n }\n\n this._indent -= this._indentRepeat;\n }\n\n /**\n * If the next token is on the same line, we must first print a semicolon.\n * This option is only used in `preserveFormat` node, for semicolons that\n * might have omitted due to them being absent in the original code (thanks\n * to ASI).\n *\n * We need both *NextToken and *NextNode because we only want to insert the\n * semicolon when the next token starts a new node, and not in cases like\n * foo} (where } is not starting a new node). So we first set *NextNode, and\n * then the print() method will move it to *NextToken.\n */\n _printSemicolonBeforeNextNode: number = -1;\n _printSemicolonBeforeNextToken: number = -1;\n\n /**\n * Add a semicolon to the buffer.\n */\n semicolon(force: boolean = false): void {\n const flags = this._flags;\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n this._maybeAddAuxComment();\n }\n if (flags & PRINTER_FLAGS.PRESERVE_FORMAT) {\n const node = this._currentNode!;\n if (node.start != null && node.end != null) {\n if (!this.tokenMap!.endMatches(node, \";\")) {\n // no semicolon\n this._printSemicolonBeforeNextNode = this._buf.getCurrentLine();\n return;\n }\n const indexes = this.tokenMap!.getIndexes(this._currentNode!)!;\n this._catchUpTo(this._tokens![indexes[indexes.length - 1]].loc.start);\n }\n }\n if (force) {\n this._appendChar(charCodes.semicolon);\n } else {\n this._queue(charCodes.semicolon);\n }\n this._noLineTerminator = false;\n }\n\n /**\n * Add a right brace to the buffer.\n */\n\n rightBrace(node: t.Node): void {\n if (this.format.minified) {\n this._buf.removeLastSemicolon();\n }\n this.sourceWithOffset(\"end\", node.loc, -1);\n this.token(\"}\");\n }\n\n rightParens(node: t.Node): void {\n this.sourceWithOffset(\"end\", node.loc, -1);\n this.token(\")\");\n }\n\n /**\n * Add a space to the buffer unless it is compact.\n */\n\n space(force: boolean = false): void {\n if (this._flags & (PRINTER_FLAGS.PRESERVE_FORMAT | PRINTER_FLAGS.COMPACT)) {\n return;\n }\n\n if (force) {\n this._space();\n } else {\n const lastCp = this.getLastChar(true);\n if (\n lastCp !== 0 &&\n lastCp !== charCodes.space &&\n lastCp !== charCodes.lineFeed\n ) {\n this._space();\n }\n }\n }\n\n /**\n * Writes a token that can't be safely parsed without taking whitespace into account.\n */\n\n word(str: string, noLineTerminatorAfter: boolean = false): void {\n this.tokenContext &= TokenContext.forInOrInitHeadAccumulatePassThroughMask;\n\n this._maybePrintInnerComments(str);\n\n const flags = this._flags;\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n this._maybeAddAuxComment();\n }\n\n if (flags & PRINTER_FLAGS.PRESERVE_FORMAT) this._catchUpToCurrentToken(str);\n\n const lastChar = this.getLastChar();\n\n if (\n lastChar === LAST_CHAR_KINDS.INTEGER ||\n lastChar === LAST_CHAR_KINDS.WORD ||\n // prevent concatenating words and creating // comment out of division and regex\n (lastChar === charCodes.slash && str.charCodeAt(0) === charCodes.slash)\n ) {\n this._space();\n }\n this._append(str, false);\n\n this.setLastChar(-3);\n this._noLineTerminator = noLineTerminatorAfter;\n }\n\n /**\n * Writes a number token so that we can validate if it is an integer.\n */\n\n number(str: string, number?: number): void {\n // const NON_DECIMAL_LITERAL = /^0[box]/;\n function isNonDecimalLiteral(str: string) {\n if (str.length > 2 && str.charCodeAt(0) === charCodes.digit0) {\n const secondChar = str.charCodeAt(1);\n return (\n secondChar === charCodes.lowercaseB ||\n secondChar === charCodes.lowercaseO ||\n secondChar === charCodes.lowercaseX\n );\n }\n return false;\n }\n this.word(str);\n\n // Integer tokens need special handling because they cannot have '.'s inserted immediately after them.\n if (\n Number.isInteger(number) &&\n !isNonDecimalLiteral(str) &&\n !SCIENTIFIC_NOTATION.test(str) &&\n !ZERO_DECIMAL_INTEGER.test(str) &&\n str.charCodeAt(str.length - 1) !== charCodes.dot\n ) {\n this.setLastChar(LAST_CHAR_KINDS.INTEGER);\n }\n }\n\n /**\n * Writes a simple token.\n *\n * @param str The string to append.\n * @param [maybeNewline=false] Whether `str` might potentially\n * contain a line terminator or not.\n * @param [occurrenceCount=0] The occurrence count of this token in\n * the current node. This is used when printing in `preserveFormat` mode,\n * to know which token we should map to (for example, to disambiguate the\n * commas in an array literal).\n * @param [mayNeedSpace=false] Check whether a whitespace might be\n * needed after this token, and if so, add a whitespace after it.\n */\n token(\n str: string,\n maybeNewline = false,\n occurrenceCount = 0,\n mayNeedSpace: boolean = false,\n ): void {\n this.tokenContext &= TokenContext.forInOrInitHeadAccumulatePassThroughMask;\n\n this._maybePrintInnerComments(str, occurrenceCount);\n\n const flags = this._flags;\n\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n this._maybeAddAuxComment();\n }\n\n if (flags & PRINTER_FLAGS.PRESERVE_FORMAT) {\n this._catchUpToCurrentToken(str, occurrenceCount);\n }\n\n if (mayNeedSpace) {\n const strFirst = str.charCodeAt(0);\n if (\n // space is mandatory to avoid outputting <!--\n // http://javascript.spec.whatwg.org/#comment-syntax\n (((strFirst === charCodes.dash && str === \"--\") ||\n // Needs spaces to avoid changing a! == 0 to a!== 0\n strFirst === charCodes.equalsTo) &&\n this.getLastChar() === charCodes.exclamationMark) ||\n // Need spaces for operators of the same kind to avoid: `a+++b`\n (strFirst === charCodes.plusSign &&\n this.getLastChar() === charCodes.plusSign) ||\n (strFirst === charCodes.dash &&\n this.getLastChar() === charCodes.dash) ||\n // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n (strFirst === charCodes.dot &&\n this.getLastChar() === LAST_CHAR_KINDS.INTEGER)\n ) {\n this._space();\n }\n }\n this._append(str, maybeNewline);\n this._noLineTerminator = false;\n }\n\n tokenChar(char: number, occurrenceCount = 0): void {\n this.tokenContext &= TokenContext.forInOrInitHeadAccumulatePassThroughMask;\n\n this._maybePrintInnerComments(char, occurrenceCount);\n\n const flags = this._flags;\n\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n this._maybeAddAuxComment();\n }\n\n if (flags & PRINTER_FLAGS.PRESERVE_FORMAT) {\n this._catchUpToCurrentToken(char, occurrenceCount);\n }\n\n if (\n // Need spaces for operators of the same kind to avoid: `a+++b`\n (char === charCodes.plusSign &&\n this.getLastChar() === charCodes.plusSign) ||\n (char === charCodes.dash && this.getLastChar() === charCodes.dash) ||\n // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n (char === charCodes.dot && this.getLastChar() === LAST_CHAR_KINDS.INTEGER)\n ) {\n this._space();\n }\n this._appendChar(char);\n this._noLineTerminator = false;\n }\n\n /**\n * Add a newline (or many newlines), maintaining formatting.\n * This function checks the number of newlines in the queue and subtracts them.\n * It currently has some limitations.\n * @see {Buffer#getNewlineCount}\n */\n newline(i: number = 1, flags = this._flags): void {\n if (i <= 0) return;\n\n if (flags & (PRINTER_FLAGS.RETAIN_LINES | PRINTER_FLAGS.COMPACT)) {\n return;\n }\n\n if (flags & PRINTER_FLAGS.CONCISE) {\n this.space();\n return;\n }\n\n if (i > 2) i = 2; // Max two lines\n\n i -= this._buf.getNewlineCount();\n\n for (let j = 0; j < i; j++) {\n this._newline();\n }\n }\n\n endsWith(char: number): boolean {\n return this.getLastChar(true) === char;\n }\n\n getLastChar(checkQueue?: boolean): number {\n return this._buf.getLastChar(checkQueue);\n }\n\n setLastChar(char: number) {\n this._buf._last = char;\n }\n\n exactSource(loc: Loc | null | undefined, cb: () => void) {\n if (!loc) {\n cb();\n return;\n }\n\n this._catchUp(\"start\", loc);\n\n this._buf.exactSource(loc, cb);\n }\n\n source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n if (!loc) return;\n\n this._catchUp(prop, loc);\n\n this._buf.source(prop, loc);\n }\n\n sourceWithOffset(\n prop: \"start\" | \"end\",\n loc: Loc | null | undefined,\n columnOffset: number,\n ): void {\n if (!loc || this.format.preserveFormat) return;\n\n this._catchUp(prop, loc);\n\n this._buf.sourceWithOffset(prop, loc, columnOffset);\n }\n\n sourceIdentifierName(identifierName: string, pos?: Pos): void {\n if (!this._buf._canMarkIdName) return;\n\n const sourcePosition = this._buf._sourcePosition;\n sourcePosition.identifierNamePos = pos;\n sourcePosition.identifierName = identifierName;\n }\n\n _space(): void {\n this._queue(charCodes.space);\n }\n\n _newline(): void {\n // Drop trailing spaces when a newline is inserted.\n if (this._buf._queuedChar === charCodes.space) this._buf._queuedChar = 0;\n\n this._appendChar(charCodes.lineFeed, true);\n }\n\n _catchUpToCurrentToken(\n str: string | number,\n occurrenceCount: number = 0,\n ): void {\n // Assert: this.tokenMap\n\n const token = this.tokenMap!.findMatching(\n this._currentNode!,\n str,\n occurrenceCount,\n );\n if (token) this._catchUpTo(token.loc.start);\n\n if (\n this._printSemicolonBeforeNextToken !== -1 &&\n this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()\n ) {\n this._appendChar(charCodes.semicolon, true);\n }\n this._printSemicolonBeforeNextToken = -1;\n this._printSemicolonBeforeNextNode = -1;\n }\n\n _append(str: string, maybeNewline: boolean): void {\n this._maybeIndent();\n\n this._buf.append(str, maybeNewline);\n }\n\n _appendChar(char: number, noIndent?: boolean): void {\n if (!noIndent) {\n this._maybeIndent();\n }\n\n this._buf.appendChar(char);\n }\n\n _queue(char: typeof charCodes.space | typeof charCodes.semicolon): void {\n this._buf.queue(char);\n\n this.setLastChar(-1);\n }\n\n _maybeIndent(): void {\n const indent = this._shouldIndent();\n if (indent > 0) {\n this._buf._appendChar(-1, indent, false);\n }\n }\n\n _shouldIndent() {\n // we've got a newline before us so prepend on the indentation\n return this.endsWith(charCodes.lineFeed) ? this._indent : 0;\n }\n\n catchUp(line: number) {\n if (!this.format.retainLines) return;\n\n // catch up to this nodes newline if we're behind\n const count = line - this._buf.getCurrentLine();\n\n for (let i = 0; i < count; i++) {\n this._newline();\n }\n }\n\n _catchUp(prop: \"start\" | \"end\", loc?: Loc) {\n const flags = this._flags;\n if ((flags & PRINTER_FLAGS.PRESERVE_FORMAT) === 0) {\n if (flags & PRINTER_FLAGS.RETAIN_LINES && loc?.[prop]) {\n this.catchUp(loc[prop].line);\n }\n return;\n }\n\n // catch up to this nodes newline if we're behind\n const pos = loc?.[prop];\n if (pos != null) this._catchUpTo(pos);\n }\n\n _catchUpTo({ line, column, index }: Pos) {\n const count = line - this._buf.getCurrentLine();\n if (count > 0 && this._noLineTerminator) {\n // We cannot inject new lines when _noLineTemrinator is set\n // to `true`, or we would generate invalid code.\n return;\n }\n\n for (let i = 0; i < count; i++) {\n this._newline();\n }\n\n const spacesCount =\n count > 0 ? column : column - this._buf.getCurrentColumn();\n if (spacesCount > 0) {\n const spaces = this._originalCode\n ? this._originalCode\n .slice(index - spacesCount, index)\n // https://tc39.es/ecma262/#sec-white-space\n .replace(/[^\\t\\v\\f\\uFEFF\\p{Space_Separator}]/gu, \" \")\n : \" \".repeat(spacesCount);\n this._buf.append(spaces, false, true);\n this._buf.setSourcePosition(line, column);\n this.setLastChar(charCodes.space);\n }\n }\n\n printTerminatorless(node: t.Node) {\n /**\n * Set some state that will be modified if a newline has been inserted before any\n * non-space characters.\n *\n * This is to prevent breaking semantics for terminatorless separator nodes. eg:\n *\n * return foo;\n *\n * returns `foo`. But if we do:\n *\n * return\n * foo;\n *\n * `undefined` will be returned and not `foo` due to the terminator.\n */\n this._noLineTerminator = true;\n this.print(node);\n }\n\n print(\n node: t.Node | null | undefined,\n noLineTerminatorAfter: boolean = false,\n resetTokenContext: boolean = false,\n // trailingCommentsLineOffset also used to check if called from printJoin\n // it will be ignored if `noLineTerminatorAfter||this._noLineTerminator`\n trailingCommentsLineOffset?: number,\n ) {\n if (!node) return;\n\n this._innerCommentsState = INNER_COMMENTS_STATE.DISALLOWED;\n\n const { type, loc, extra } = node;\n\n const flags = this._flags;\n let changedFlags = false;\n if (\n // @ts-expect-error document _compact AST properties\n node._compact\n ) {\n this._flags |= PRINTER_FLAGS.CONCISE;\n changedFlags = true;\n }\n\n const nodeInfo = generatorInfosMap.get(type);\n if (nodeInfo === undefined) {\n throw new ReferenceError(\n `unknown node of type ${JSON.stringify(\n type,\n )} with constructor ${JSON.stringify(node.constructor.name)}`,\n );\n }\n\n const [printMethod, nodeId, needsParens] = nodeInfo;\n\n const parent = this._currentNode;\n const parentId = this._currentTypeId;\n this._currentNode = node;\n this._currentTypeId = nodeId;\n\n if (flags & PRINTER_FLAGS.PRESERVE_FORMAT) {\n this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode;\n }\n\n let oldInAux;\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n oldInAux = this._insideAux;\n this._insideAux = loc == null;\n this._maybeAddAuxComment(this._insideAux && !oldInAux);\n }\n\n let oldTokenContext = 0;\n if (resetTokenContext) {\n oldTokenContext = this.tokenContext;\n if (oldTokenContext & TokenContext.forInOrInitHeadAccumulate) {\n this.tokenContext = 0;\n } else {\n oldTokenContext = 0;\n }\n }\n\n const parenthesized =\n extra != null && (extra.parenthesized as boolean | undefined);\n let shouldPrintParens =\n (parenthesized && flags & PRINTER_FLAGS.PRESERVE_FORMAT) ||\n (parenthesized &&\n flags & PRINTER_FLAGS.RETAIN_FUNCTION_PARENS &&\n nodeId === __node(\"FunctionExpression\")) ||\n (parent &&\n (parentNeedsParens(node, parent, parentId!) ||\n (needsParens != null &&\n needsParens(\n node,\n parent,\n parentId!,\n this.tokenContext,\n flags & PRINTER_FLAGS.PRESERVE_FORMAT\n ? this._boundGetRawIdentifier!\n : undefined,\n ))));\n\n if (\n !shouldPrintParens &&\n parenthesized &&\n node.leadingComments?.length &&\n node.leadingComments[0].type === \"CommentBlock\"\n ) {\n switch (parentId) {\n case __node(\"ExpressionStatement\"):\n case __node(\"VariableDeclarator\"):\n case __node(\"AssignmentExpression\"):\n case __node(\"ReturnStatement\"):\n break;\n case __node(\"CallExpression\"):\n case __node(\"OptionalCallExpression\"):\n case __node(\"NewExpression\"):\n // @ts-expect-error checked by parentTypeId\n if (parent.callee !== node) break;\n // falls through\n default:\n shouldPrintParens = true;\n }\n }\n\n let indentParenthesized = false;\n if (\n !shouldPrintParens &&\n this._noLineTerminator &&\n (node.leadingComments?.some(commentIsNewline) ||\n (flags & PRINTER_FLAGS.RETAIN_LINES &&\n loc &&\n loc.start.line > this._buf.getCurrentLine()))\n ) {\n shouldPrintParens = true;\n indentParenthesized = true;\n }\n\n let oldNoLineTerminatorAfterNode;\n if (!shouldPrintParens) {\n noLineTerminatorAfter ||=\n !!parent &&\n this._noLineTerminatorAfterNode === parent &&\n isLastChild(parent, node);\n if (noLineTerminatorAfter) {\n if (node.trailingComments?.some(commentIsNewline)) {\n if (isExpression(node)) shouldPrintParens = true;\n } else {\n oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n this._noLineTerminatorAfterNode = node;\n }\n }\n }\n\n if (shouldPrintParens) {\n this.token(\"(\");\n if (indentParenthesized) this.indent();\n this._innerCommentsState = INNER_COMMENTS_STATE.DISALLOWED;\n if (!resetTokenContext) {\n oldTokenContext = this.tokenContext;\n }\n if (oldTokenContext & TokenContext.forInOrInitHeadAccumulate) {\n this.tokenContext = 0;\n }\n oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n this._noLineTerminatorAfterNode = null;\n }\n\n this._printLeadingComments(node, parent);\n\n this.exactSource(\n nodeId === __node(\"Program\") || nodeId === __node(\"File\") ? null : loc,\n printMethod.bind(this, node, parent),\n );\n\n if (shouldPrintParens) {\n this._printTrailingComments(node, parent);\n if (indentParenthesized) {\n this.dedent();\n this.newline();\n }\n this.token(\")\");\n this._noLineTerminator = noLineTerminatorAfter;\n } else if (noLineTerminatorAfter && !this._noLineTerminator) {\n this._noLineTerminator = true;\n this._printTrailingComments(node, parent);\n } else {\n this._printTrailingComments(node, parent, trailingCommentsLineOffset);\n }\n if (oldTokenContext) this.tokenContext = oldTokenContext;\n\n // end\n this._currentNode = parent;\n this._currentTypeId = parentId;\n if (changedFlags) {\n this._flags = flags;\n }\n if (flags & PRINTER_FLAGS.AUX_COMMENTS) {\n this._insideAux = oldInAux!;\n }\n\n if (oldNoLineTerminatorAfterNode != null) {\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n }\n\n this._innerCommentsState = INNER_COMMENTS_STATE.DISALLOWED;\n }\n\n _maybeAddAuxComment(enteredPositionlessNode?: boolean) {\n if (enteredPositionlessNode) this._printAuxBeforeComment();\n if (!this._insideAux) this._printAuxAfterComment();\n }\n\n _printAuxBeforeComment() {\n if (this._printAuxAfterOnNextUserNode) return;\n this._printAuxAfterOnNextUserNode = true;\n\n const comment = this.format.auxiliaryCommentBefore;\n if (comment) {\n this._printComment(\n {\n type: \"CommentBlock\",\n value: comment,\n },\n COMMENT_SKIP_NEWLINE.DEFAULT,\n );\n }\n }\n\n _printAuxAfterComment() {\n if (!this._printAuxAfterOnNextUserNode) return;\n this._printAuxAfterOnNextUserNode = false;\n\n const comment = this.format.auxiliaryCommentAfter;\n if (comment) {\n this._printComment(\n {\n type: \"CommentBlock\",\n value: comment,\n },\n COMMENT_SKIP_NEWLINE.DEFAULT,\n );\n }\n }\n\n getPossibleRaw(\n node:\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.DirectiveLiteral\n | t.JSXText,\n ): string | undefined {\n const extra = node.extra;\n if (\n extra?.raw != null &&\n extra.rawValue != null &&\n node.value === extra.rawValue\n ) {\n // @ts-expect-error: The extra.raw of these AST node types must be a string\n return extra.raw;\n }\n }\n\n printJoin(\n nodes: t.Node[] | undefined | null,\n statement?: boolean,\n indent?: boolean,\n separator?: PrintJoinOptions[\"separator\"] | null,\n printTrailingSeparator?: boolean | null,\n resetTokenContext?: boolean,\n trailingCommentsLineOffset?: number,\n ) {\n if (!nodes?.length) return;\n\n const flags = this._flags;\n\n if (indent == null && flags & PRINTER_FLAGS.RETAIN_LINES) {\n const startLine = nodes[0].loc?.start.line;\n if (startLine != null && startLine !== this._buf.getCurrentLine()) {\n indent = true;\n }\n }\n\n if (indent) this.indent(flags);\n\n const len = nodes.length;\n for (let i = 0; i < len; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // don't add newlines at the beginning of the file\n if (statement && i === 0 && this._buf.hasContent()) {\n this.newline(1, flags);\n }\n\n this.print(\n node,\n false,\n resetTokenContext,\n trailingCommentsLineOffset || 0,\n );\n\n if (separator != null) {\n if (i < len - 1) separator.call(this, i, false);\n else if (printTrailingSeparator) separator.call(this, i, true);\n }\n\n if (statement) {\n if (i + 1 === len) {\n this.newline(1, flags);\n } else {\n const lastCommentLine = this._lastCommentLine;\n if (lastCommentLine > 0) {\n const offset =\n (nodes[i + 1].loc?.start.line || 0) - lastCommentLine;\n if (offset >= 0) {\n this.newline(offset || 1, flags);\n continue;\n }\n }\n\n this.newline(1, flags);\n }\n }\n }\n\n if (indent) this.dedent(flags);\n }\n\n printAndIndentOnComments(node: t.Node) {\n const indent = node.leadingComments && node.leadingComments.length > 0;\n if (indent) this.indent();\n this.print(node);\n if (indent) this.dedent();\n }\n\n printBlock(body: t.Statement) {\n if (body.type !== \"EmptyStatement\") {\n this.space();\n }\n\n this.print(body);\n }\n\n _printTrailingComments(\n node: t.Node,\n parent?: t.Node | null,\n lineOffset?: number,\n ) {\n const { innerComments, trailingComments } = node;\n // We print inner comments here, so that if for some reason they couldn't\n // be printed in earlier locations they are still printed *somewhere*,\n // even if at the end of the node.\n if (innerComments?.length) {\n this._printComments(\n COMMENT_TYPE.TRAILING,\n innerComments,\n node,\n parent,\n lineOffset,\n );\n }\n if (trailingComments?.length) {\n this._printComments(\n COMMENT_TYPE.TRAILING,\n trailingComments,\n node,\n parent,\n lineOffset,\n );\n } else {\n this._lastCommentLine = 0;\n }\n }\n\n _printLeadingComments(node: t.Node, parent: t.Node | null) {\n const comments = node.leadingComments;\n if (!comments?.length) return;\n this._printComments(COMMENT_TYPE.LEADING, comments, node, parent);\n }\n\n _maybePrintInnerComments(\n nextTokenStr: string | number,\n nextTokenOccurrenceCount?: number,\n ) {\n const state = this._innerCommentsState;\n switch (state & INNER_COMMENTS_STATE.MASK) {\n case INNER_COMMENTS_STATE.DISALLOWED:\n this._innerCommentsState =\n INNER_COMMENTS_STATE.ALLOWED | INNER_COMMENTS_STATE.WITH_INDENT;\n return;\n case INNER_COMMENTS_STATE.ALLOWED:\n this.printInnerComments(\n (state & INNER_COMMENTS_STATE.WITH_INDENT) > 0,\n this.tokenMap?.findMatching(\n this._currentNode!,\n nextTokenStr,\n nextTokenOccurrenceCount,\n ),\n );\n }\n }\n\n printInnerComments(indent = true, nextToken?: Token | null) {\n const node = this._currentNode!;\n const comments = node.innerComments;\n if (!comments?.length) {\n this._innerCommentsState = INNER_COMMENTS_STATE.PRINTED;\n return;\n }\n\n const hasSpace = this.endsWith(charCodes.space);\n if (indent) this.indent();\n\n switch (\n this._printComments(\n COMMENT_TYPE.INNER,\n comments,\n node,\n undefined,\n undefined,\n nextToken,\n )\n ) {\n case PRINT_COMMENTS_RESULT.PRINTED_ALL:\n this._innerCommentsState = INNER_COMMENTS_STATE.PRINTED;\n // falls through\n case PRINT_COMMENTS_RESULT.PRINTED_SOME:\n if (hasSpace) this.space();\n }\n\n if (indent) this.dedent();\n }\n\n noIndentInnerCommentsHere() {\n this._innerCommentsState &= ~INNER_COMMENTS_STATE.WITH_INDENT;\n }\n\n printSequence(\n nodes: t.Node[],\n indent?: boolean,\n resetTokenContext?: boolean,\n trailingCommentsLineOffset?: number,\n ) {\n this.printJoin(\n nodes,\n true,\n indent ?? false,\n undefined,\n undefined,\n resetTokenContext,\n trailingCommentsLineOffset,\n );\n }\n\n printList(\n items: t.Node[] | null | undefined,\n printTrailingSeparator?: boolean | null,\n statement?: boolean,\n indent?: boolean,\n separator?: PrintListOptions[\"separator\"],\n resetTokenContext?: boolean,\n ) {\n this.printJoin(\n items,\n statement,\n indent,\n separator ?? commaSeparator,\n printTrailingSeparator,\n resetTokenContext,\n );\n }\n\n shouldPrintTrailingComma(listEnd: string | number): boolean | null {\n if (!this.tokenMap) return null;\n\n const listEndIndex = this.tokenMap.findLastIndex(\n this._currentNode!,\n token =>\n this.tokenMap!.matchesOriginal(\n token,\n typeof listEnd === \"number\" ? String.fromCharCode(listEnd) : listEnd,\n ),\n );\n if (listEndIndex <= 0) return null;\n return this.tokenMap.matchesOriginal(this._tokens![listEndIndex - 1], \",\");\n }\n\n // Returns `PRINT_COMMENT_HINT.DEFER` if the comment cannot be printed in this position due to\n // line terminators, signaling that the print comments loop can stop and\n // resume printing comments at the next possible position. This happens when\n // printing inner comments, since if we have an inner comment with a multiline\n // there is at least one inner position where line terminators are allowed.\n _shouldPrintComment(\n comment: t.Comment,\n nextToken?: Token | null,\n ): PRINT_COMMENT_HINT {\n // Some plugins (such as flow-strip-types) use this to mark comments as removed using the AST-root 'comments' property,\n // where they can't manually mutate the AST node comment lists.\n if (comment.ignore) return PRINT_COMMENT_HINT.SKIP;\n\n if (this._printedComments.has(comment)) return PRINT_COMMENT_HINT.SKIP;\n\n if (\n this._noLineTerminator &&\n HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)\n ) {\n return PRINT_COMMENT_HINT.DEFER;\n }\n\n if (nextToken && this.tokenMap) {\n const commentTok = this.tokenMap.find(\n this._currentNode!,\n token => token.value === comment.value,\n );\n if (commentTok && commentTok.start > nextToken.start) {\n return PRINT_COMMENT_HINT.DEFER;\n }\n }\n\n this._printedComments.add(comment);\n\n if (!this.format.shouldPrintComment(comment.value)) {\n return PRINT_COMMENT_HINT.SKIP;\n }\n\n return PRINT_COMMENT_HINT.ALLOW;\n }\n\n _printComment(comment: t.Comment, skipNewLines: COMMENT_SKIP_NEWLINE) {\n const noLineTerminator = this._noLineTerminator;\n const isBlockComment = comment.type === \"CommentBlock\";\n\n // Add a newline before and after a block comment, unless explicitly\n // disallowed\n const printNewLines =\n isBlockComment &&\n skipNewLines !== COMMENT_SKIP_NEWLINE.ALL &&\n !noLineTerminator;\n\n if (\n printNewLines &&\n this._buf.hasContent() &&\n skipNewLines !== COMMENT_SKIP_NEWLINE.LEADING\n ) {\n this.newline(1);\n }\n\n switch (this.getLastChar(true)) {\n // Avoid converting a / operator into a line comment by appending /* to it\n case charCodes.slash:\n this._space();\n // falls through\n case charCodes.leftSquareBracket:\n case charCodes.leftCurlyBrace:\n case charCodes.leftParenthesis:\n break;\n\n default:\n this.space();\n }\n\n let val;\n if (isBlockComment) {\n val = `/*${comment.value}*/`;\n if (this.format.indent.adjustMultilineComment) {\n const offset = comment.loc?.start.column;\n if (offset) {\n const newlineRegex = new RegExp(\"\\\\n\\\\s{1,\" + offset + \"}\", \"g\");\n val = val.replace(newlineRegex, \"\\n\");\n }\n if (this._flags & PRINTER_FLAGS.CONCISE) {\n val = val.replace(/\\n(?!$)/g, `\\n`);\n } else {\n let indentSize = this.format.retainLines\n ? 0\n : this._buf.getCurrentColumn();\n\n if (this._shouldIndent() || this.format.retainLines) {\n indentSize += this._indent;\n }\n\n val = val.replace(/\\n(?!$)/g, `\\n${\" \".repeat(indentSize)}`);\n }\n }\n } else if (!noLineTerminator) {\n val = `//${comment.value}`;\n } else {\n // It was a single-line comment, so it's guaranteed to not\n // contain newlines and it can be safely printed as a block\n // comment.\n val = `/*${comment.value}*/`;\n }\n\n this.source(\"start\", comment.loc);\n this._append(val, isBlockComment);\n\n if (!isBlockComment && !noLineTerminator) {\n this._newline();\n }\n\n if (printNewLines && skipNewLines !== COMMENT_SKIP_NEWLINE.TRAILING) {\n this.newline(1);\n }\n }\n\n _printComments(\n type: COMMENT_TYPE,\n comments: t.Comment[],\n node: t.Node,\n parent?: t.Node | null,\n lineOffset: number = 0,\n nextToken?: Token | null,\n ): PRINT_COMMENTS_RESULT {\n const nodeLoc = node.loc;\n const len = comments.length;\n let hasLoc = !!nodeLoc;\n const nodeStartLine = hasLoc ? nodeLoc!.start.line : 0;\n const nodeEndLine = hasLoc ? nodeLoc!.end.line : 0;\n let lastLine = 0;\n let leadingCommentNewline = 0;\n\n const { _noLineTerminator, _flags } = this;\n\n for (let i = 0; i < len; i++) {\n const comment = comments[i];\n\n const shouldPrint = this._shouldPrintComment(comment, nextToken);\n if (shouldPrint === PRINT_COMMENT_HINT.DEFER) {\n return i === 0\n ? PRINT_COMMENTS_RESULT.PRINTED_NONE\n : PRINT_COMMENTS_RESULT.PRINTED_SOME;\n }\n if (hasLoc && comment.loc && shouldPrint === PRINT_COMMENT_HINT.ALLOW) {\n const commentStartLine = comment.loc.start.line;\n const commentEndLine = comment.loc.end.line;\n if (type === COMMENT_TYPE.LEADING) {\n let offset = 0;\n if (i === 0) {\n // Because currently we cannot handle blank lines before leading comments,\n // we always wrap before and after multi-line comments.\n if (\n this._buf.hasContent() &&\n (comment.type === \"CommentLine\" ||\n commentStartLine !== commentEndLine)\n ) {\n offset = leadingCommentNewline = 1;\n }\n } else {\n offset = commentStartLine - lastLine;\n }\n lastLine = commentEndLine;\n\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n if (i + 1 === len) {\n const count = Math.max(\n nodeStartLine - lastLine,\n leadingCommentNewline,\n );\n if (count > 0 && !_noLineTerminator) {\n this.newline(count, _flags);\n }\n lastLine = nodeStartLine;\n }\n } else if (type === COMMENT_TYPE.INNER) {\n const offset =\n commentStartLine - (i === 0 ? nodeStartLine : lastLine);\n lastLine = commentEndLine;\n\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n if (i + 1 === len) {\n const count = Math.min(1, nodeEndLine - lastLine);\n if (count > 0 && !_noLineTerminator) {\n this.newline(count, _flags);\n }\n lastLine = nodeEndLine;\n }\n } else {\n const offset =\n commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);\n lastLine = commentEndLine;\n\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n }\n } else {\n hasLoc = false;\n if (shouldPrint !== PRINT_COMMENT_HINT.ALLOW) {\n continue;\n }\n\n if (len === 1) {\n const singleLine = comment.loc\n ? comment.loc.start.line === comment.loc.end.line\n : !HAS_NEWLINE.test(comment.value);\n\n const shouldSkipNewline =\n singleLine &&\n !isStatement(node) &&\n !isClassBody(parent) &&\n !isTSInterfaceBody(parent) &&\n !isTSEnumMember(node);\n\n if (type === COMMENT_TYPE.LEADING) {\n this._printComment(\n comment,\n (shouldSkipNewline && node.type !== \"ObjectExpression\") ||\n (singleLine && isFunction(parent) && parent.body === node)\n ? COMMENT_SKIP_NEWLINE.ALL\n : COMMENT_SKIP_NEWLINE.DEFAULT,\n );\n } else if (shouldSkipNewline && type === COMMENT_TYPE.TRAILING) {\n this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n } else {\n this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n }\n } else if (\n type === COMMENT_TYPE.INNER &&\n !(node.type === \"ObjectExpression\" && node.properties.length > 1) &&\n node.type !== \"ClassBody\" &&\n node.type !== \"TSInterfaceBody\"\n ) {\n // class X {\n // /*:: a: number*/\n // /*:: b: ?string*/\n // }\n\n this._printComment(\n comment,\n i === 0\n ? COMMENT_SKIP_NEWLINE.LEADING\n : i === len - 1\n ? COMMENT_SKIP_NEWLINE.TRAILING\n : COMMENT_SKIP_NEWLINE.DEFAULT,\n );\n } else {\n this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n }\n }\n }\n\n if (type === COMMENT_TYPE.TRAILING && hasLoc && lastLine) {\n this._lastCommentLine = lastLine;\n }\n return PRINT_COMMENTS_RESULT.PRINTED_ALL;\n }\n}\n\nexport default Printer;\n\nfunction commaSeparator(this: Printer, occurrenceCount: number, last: boolean) {\n this.tokenChar(charCodes.comma, occurrenceCount);\n if (!last) this.space();\n}\n","import SourceMap from \"./source-map.ts\";\nimport Printer from \"./printer.ts\";\nimport type * as t from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\nimport type { Format } from \"./printer.ts\";\nimport type {\n EncodedSourceMap,\n DecodedSourceMap,\n Mapping,\n} from \"@jridgewell/gen-mapping\";\n\n/**\n * Normalize generator options, setting defaults.\n *\n * - Detects code indentation.\n * - If `opts.compact = \"auto\"` and the code is over 500KB, `compact` will be set to `true`.\n */\n\nfunction normalizeOptions(\n code: string | Record<string, string> | undefined,\n opts: GeneratorOptions,\n ast: t.Node,\n): Format {\n if (opts.experimental_preserveFormat) {\n if (typeof code !== \"string\") {\n throw new Error(\n \"`experimental_preserveFormat` requires the original `code` to be passed to @babel/generator as a string\",\n );\n }\n if (!opts.retainLines) {\n throw new Error(\n \"`experimental_preserveFormat` requires `retainLines` to be set to `true`\",\n );\n }\n if (opts.compact && opts.compact !== \"auto\") {\n throw new Error(\n \"`experimental_preserveFormat` is not compatible with the `compact` option\",\n );\n }\n if (opts.minified) {\n throw new Error(\n \"`experimental_preserveFormat` is not compatible with the `minified` option\",\n );\n }\n if (opts.jsescOption) {\n throw new Error(\n \"`experimental_preserveFormat` is not compatible with the `jsescOption` option\",\n );\n }\n if (!Array.isArray((ast as any).tokens)) {\n throw new Error(\n \"`experimental_preserveFormat` requires the AST to have attached the token of the input code. Make sure to enable the `tokens: true` parser option.\",\n );\n }\n }\n\n const format: Format = {\n auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n // @ts-expect-error define it later\n shouldPrintComment: opts.shouldPrintComment,\n preserveFormat: opts.experimental_preserveFormat,\n retainLines: opts.retainLines,\n retainFunctionParens: opts.retainFunctionParens,\n comments: opts.comments == null || opts.comments,\n compact: opts.compact,\n minified: opts.minified,\n concise: opts.concise,\n indent: {\n adjustMultilineComment: true,\n style: \" \",\n },\n jsescOption: {\n quotes: \"double\",\n wrap: true,\n minimal: true,\n ...opts.jsescOption,\n },\n topicToken: opts.topicToken,\n };\n\n if (format.minified) {\n format.compact = true;\n\n format.shouldPrintComment =\n format.shouldPrintComment || (() => format.comments);\n } else {\n format.shouldPrintComment =\n format.shouldPrintComment ||\n (value =>\n format.comments ||\n value.includes(\"@license\") ||\n value.includes(\"@preserve\"));\n }\n\n if (format.compact === \"auto\") {\n format.compact = typeof code === \"string\" && code.length > 500_000; // 500KB\n\n if (format.compact) {\n console.error(\n \"[BABEL] Note: The code generator has deoptimised the styling of \" +\n `${opts.filename} as it exceeds the max of ${\"500KB\"}.`,\n );\n }\n }\n\n if (format.compact || format.preserveFormat) {\n format.indent.adjustMultilineComment = false;\n }\n\n const { auxiliaryCommentBefore, auxiliaryCommentAfter, shouldPrintComment } =\n format;\n\n if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {\n format.auxiliaryCommentBefore = undefined;\n }\n if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {\n format.auxiliaryCommentAfter = undefined;\n }\n\n return format;\n}\n\nexport interface GeneratorOptions {\n /**\n * Optional string to add as a block comment at the start of the output file.\n */\n auxiliaryCommentBefore?: string;\n\n /**\n * Optional string to add as a block comment at the end of the output file.\n */\n auxiliaryCommentAfter?: string;\n\n /**\n * Function that takes a comment (as a string) and returns true if the comment should be included in the output.\n * By default, comments are included if `opts.comments` is `true` or if `opts.minified` is `false` and the comment\n * contains `@preserve` or `@license`.\n */\n shouldPrintComment?(comment: string): boolean;\n\n /**\n * Preserve the input code format while printing the transformed code.\n * This is experimental, and may have breaking changes in future\n * patch releases. It will be removed in a future minor release,\n * when it will graduate to stable.\n */\n experimental_preserveFormat?: boolean;\n\n /**\n * Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces).\n * Defaults to `false`.\n */\n retainLines?: boolean;\n\n /**\n * Retain parens around function expressions (could be used to change engine parsing behavior)\n * Defaults to `false`.\n */\n retainFunctionParens?: boolean;\n\n /**\n * Should comments be included in output? Defaults to `true`.\n */\n comments?: boolean;\n\n /**\n * Set to true to avoid adding whitespace for formatting. Defaults to the value of `opts.minified`.\n */\n compact?: boolean | \"auto\";\n\n /**\n * Should the output be minified. Defaults to `false`.\n */\n minified?: boolean;\n\n /**\n * Set to true to reduce whitespace (but not as much as opts.compact). Defaults to `false`.\n */\n concise?: boolean;\n\n /**\n * Used in warning messages\n */\n filename?: string;\n\n /**\n * Enable generating source maps. Defaults to `false`.\n */\n sourceMaps?: boolean;\n\n inputSourceMap?: any;\n\n /**\n * A root for all relative URLs in the source map.\n */\n sourceRoot?: string;\n\n /**\n * The filename for the source code (i.e. the code in the `code` argument).\n * This will only be used if `code` is a string.\n */\n sourceFileName?: string;\n\n /**\n * Options for outputting jsesc representation.\n */\n jsescOption?: jsescOptions;\n\n /**\n * For use with the Hack-style pipe operator.\n * Changes what token is used for pipe bodies’ topic references.\n */\n topicToken?: \"%\" | \"#\" | \"@@\" | \"^^\" | \"^\";\n}\n\nexport interface GeneratorResult {\n code: string;\n map: EncodedSourceMap | null;\n decodedMap: DecodedSourceMap | undefined;\n rawMappings: Mapping[] | undefined;\n}\n\n/**\n * Turns an AST into code, maintaining sourcemaps, user preferences, and valid output.\n * @param ast - the abstract syntax tree from which to generate output code.\n * @param opts - used for specifying options for code generation.\n * @param code - the original source code, used for source maps.\n * @returns - an object containing the output code and source map.\n */\nexport function generate(\n ast: t.Node,\n opts: GeneratorOptions = {},\n code?: string | Record<string, string>,\n): GeneratorResult {\n const format = normalizeOptions(code, opts, ast);\n const map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n\n const printer = new Printer(\n format,\n map,\n (ast as any).tokens,\n typeof code === \"string\" ? code : null,\n );\n\n return printer.generate(ast);\n}\n\nexport default generate;\n","import { assertExpressionStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport type Formatter<T> = {\n code: (source: string) => string;\n validate: (ast: t.File) => void;\n unwrap: (ast: t.File) => T;\n};\n\nfunction makeStatementFormatter<T>(\n fn: (statements: t.Statement[]) => T,\n): Formatter<T> {\n return {\n // We need to prepend a \";\" to force statement parsing so that\n // ExpressionStatement strings won't be parsed as directives.\n // Alongside that, we also prepend a comment so that when a syntax error\n // is encountered, the user will be less likely to get confused about\n // where the random semicolon came from.\n code: str => `/* @babel/template */;\\n${str}`,\n validate: () => {},\n unwrap: (ast: t.File): T => {\n return fn(ast.program.body.slice(1));\n },\n };\n}\n\nexport const smart = makeStatementFormatter(body => {\n if (body.length > 1) {\n return body;\n } else {\n return body[0];\n }\n});\n\nexport const statements = makeStatementFormatter(body => body);\n\nexport const statement = makeStatementFormatter(body => {\n // We do this validation when unwrapping since the replacement process\n // could have added or removed statements.\n if (body.length === 0) {\n throw new Error(\"Found nothing to return.\");\n }\n if (body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n\n return body[0];\n});\n\nexport const expression: Formatter<t.Expression> = {\n code: str => `(\\n${str}\\n)`,\n validate: ast => {\n if (ast.program.body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n if (expression.unwrap(ast).start === 0) {\n throw new Error(\"Parse result included parens.\");\n }\n },\n unwrap: ({ program }) => {\n const [stmt] = program.body;\n assertExpressionStatement(stmt);\n return stmt.expression;\n },\n};\n\nexport const program: Formatter<t.Program> = {\n code: str => str,\n validate: () => {},\n unwrap: ast => ast.program,\n};\n","import type { ParserOptions as ParserOpts } from \"@babel/parser\";\n\nexport type { ParserOpts };\n\n/**\n * These are the options that 'babel-template' actually accepts and typechecks\n * when called. All other options are passed through to the parser.\n */\nexport type PublicOpts = {\n /**\n * A set of placeholder names to automatically accept, ignoring the given\n * pattern entirely.\n *\n * This option can be used when using %%foo%% style placeholders.\n */\n placeholderAllowlist?: Set<string>;\n /**\n * A pattern to search for when looking for Identifier and StringLiteral\n * nodes that can be replaced.\n *\n * 'false' will disable placeholder searching entirely, leaving only the\n * 'placeholderAllowlist' value to find replacements.\n *\n * Defaults to /^[_$A-Z0-9]+$/.\n *\n * This option can be used when using %%foo%% style placeholders.\n */\n placeholderPattern?: RegExp | false;\n /**\n * 'true' to pass through comments from the template into the resulting AST,\n * or 'false' to automatically discard comments. Defaults to 'false'.\n */\n preserveComments?: boolean;\n /**\n * 'true' to use %%foo%% style placeholders, 'false' to use legacy placeholders\n * described by placeholderPattern or placeholderAllowlist.\n * When it is not set, it behaves as 'true' if there are syntactic placeholders,\n * otherwise as 'false'.\n */\n syntacticPlaceholders?: boolean | null;\n} & ParserOpts;\n\nexport type TemplateOpts = {\n parser: ParserOpts;\n placeholderAllowlist?: Set<string>;\n placeholderPattern?: RegExp | false;\n preserveComments?: boolean;\n syntacticPlaceholders?: boolean;\n};\n\nexport function merge(a: TemplateOpts, b: TemplateOpts): TemplateOpts {\n const {\n placeholderAllowlist = a.placeholderAllowlist,\n placeholderPattern = a.placeholderPattern,\n preserveComments = a.preserveComments,\n syntacticPlaceholders = a.syntacticPlaceholders,\n } = b;\n\n return {\n parser: {\n ...a.parser,\n ...b.parser,\n },\n placeholderAllowlist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n };\n}\n\nexport function validate(opts: unknown): TemplateOpts {\n if (opts != null && typeof opts !== \"object\") {\n throw new Error(\"Unknown template options.\");\n }\n\n if (opts != null && Object.hasOwn(opts, \"placeholderWhitelist\")) {\n if (!Object.hasOwn(opts, \"placeholderAllowlist\")) {\n throw new Error(\n \"The 'placeholderWhitelist' option has been renamed to \" +\n \"'placeholderAllowlist'. Please update your configuration.\",\n );\n }\n // Both options provided: new option takes precedence (supports Babel 7/8 cross-version compat)\n }\n\n const {\n placeholderAllowlist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n ...parser\n } = opts || ({} as any);\n\n if (placeholderAllowlist != null && !(placeholderAllowlist instanceof Set)) {\n throw new Error(\n \"'.placeholderAllowlist' must be a Set, null, or undefined\",\n );\n }\n\n if (\n placeholderPattern != null &&\n !(placeholderPattern instanceof RegExp) &&\n placeholderPattern !== false\n ) {\n throw new Error(\n \"'.placeholderPattern' must be a RegExp, false, null, or undefined\",\n );\n }\n\n if (preserveComments != null && typeof preserveComments !== \"boolean\") {\n throw new Error(\n \"'.preserveComments' must be a boolean, null, or undefined\",\n );\n }\n\n if (\n syntacticPlaceholders != null &&\n typeof syntacticPlaceholders !== \"boolean\"\n ) {\n throw new Error(\n \"'.syntacticPlaceholders' must be a boolean, null, or undefined\",\n );\n }\n if (\n syntacticPlaceholders === true &&\n (placeholderAllowlist != null || placeholderPattern != null)\n ) {\n throw new Error(\n \"'.placeholderAllowlist' and '.placeholderPattern' aren't compatible\" +\n \" with '.syntacticPlaceholders: true'\",\n );\n }\n\n return {\n parser,\n placeholderAllowlist: placeholderAllowlist || undefined,\n placeholderPattern:\n placeholderPattern == null ? undefined : placeholderPattern,\n preserveComments: preserveComments == null ? undefined : preserveComments,\n syntacticPlaceholders:\n syntacticPlaceholders == null ? undefined : syntacticPlaceholders,\n };\n}\n\nexport type PublicReplacements = Record<string, unknown> | unknown[];\nexport type TemplateReplacements = Record<string, unknown> | void;\n\nexport function normalizeReplacements(\n replacements: unknown,\n): TemplateReplacements {\n if (Array.isArray(replacements)) {\n return replacements.reduce((acc, replacement, i) => {\n acc[\"$\" + i] = replacement;\n return acc;\n }, {});\n } else if (typeof replacements === \"object\" || replacements == null) {\n return (replacements as any) || undefined;\n }\n\n throw new Error(\n \"Template replacements must be an array, object, null, or undefined\",\n );\n}\n","import {\n isCallExpression,\n isExpressionStatement,\n isFunction,\n isIdentifier,\n isJSXIdentifier,\n isNewExpression,\n isPlaceholder,\n isStatement,\n isStringLiteral,\n removePropertiesDeep,\n traverse,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { TraversalAncestors } from \"@babel/types\";\nimport { parse } from \"@babel/parser\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport type { TemplateOpts, ParserOpts } from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nexport type Metadata = {\n ast: t.File;\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n};\n\ntype PlaceholderType = \"string\" | \"param\" | \"statement\" | \"other\";\nexport type Placeholder = {\n name: string;\n resolve: (a: t.File) => { parent: t.Node; key: string; index?: number };\n type: PlaceholderType;\n isDuplicate: boolean;\n};\n\nconst PATTERN = /^[_$A-Z0-9]+$/;\n\nexport default function parseAndBuildMetadata<T>(\n formatter: Formatter<T>,\n code: string,\n opts: TemplateOpts,\n): Metadata {\n const {\n placeholderAllowlist,\n placeholderPattern,\n preserveComments = false,\n syntacticPlaceholders,\n } = opts;\n\n const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);\n\n removePropertiesDeep(ast, {\n preserveComments,\n });\n\n formatter.validate(ast);\n\n const state: MetadataState = {\n syntactic: { placeholders: [], placeholderNames: new Set() },\n legacy: { placeholders: [], placeholderNames: new Set() },\n placeholderAllowlist,\n placeholderPattern,\n syntacticPlaceholders,\n };\n\n traverse(ast, placeholderVisitorHandler, state);\n\n return {\n ast,\n ...(state.syntactic.placeholders.length ? state.syntactic : state.legacy),\n };\n}\n\nfunction placeholderVisitorHandler(\n node: t.Node,\n ancestors: TraversalAncestors,\n state: MetadataState,\n) {\n let name: string;\n\n let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;\n\n if (isPlaceholder(node)) {\n if (state.syntacticPlaceholders === false) {\n throw new Error(\n \"%%foo%%-style placeholders can't be used when \" +\n \"'.syntacticPlaceholders' is false.\",\n );\n }\n name = node.name.name;\n hasSyntacticPlaceholders = true;\n } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {\n return;\n } else if (isIdentifier(node) || isJSXIdentifier(node)) {\n name = node.name;\n } else if (isStringLiteral(node)) {\n name = node.value;\n } else {\n return;\n }\n\n if (\n hasSyntacticPlaceholders &&\n (state.placeholderPattern != null || state.placeholderAllowlist != null)\n ) {\n // This check is also in options.js. We need it there to handle the default\n // .syntacticPlaceholders behavior.\n throw new Error(\n \"'.placeholderAllowlist' and '.placeholderPattern' aren't compatible\" +\n \" with '.syntacticPlaceholders: true'\",\n );\n }\n\n if (\n !hasSyntacticPlaceholders &&\n (state.placeholderPattern === false ||\n !(state.placeholderPattern || PATTERN).test(name)) &&\n !state.placeholderAllowlist?.has(name)\n ) {\n return;\n }\n\n // Keep our own copy of the ancestors so we can use it in .resolve().\n ancestors = ancestors.slice();\n\n const { node: parent, key } = ancestors[ancestors.length - 1];\n\n let type: PlaceholderType;\n if (\n isStringLiteral(node) ||\n isPlaceholder(node, { expectedNode: \"StringLiteral\" })\n ) {\n type = \"string\";\n } else if (\n (isNewExpression(parent) && key === \"arguments\") ||\n (isCallExpression(parent) && key === \"arguments\") ||\n (isFunction(parent) && key === \"params\")\n ) {\n type = \"param\";\n } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {\n type = \"statement\";\n ancestors = ancestors.slice(0, -1);\n } else if (isStatement(node) && isPlaceholder(node)) {\n type = \"statement\";\n } else {\n type = \"other\";\n }\n\n const { placeholders, placeholderNames } = !hasSyntacticPlaceholders\n ? state.legacy\n : state.syntactic;\n\n placeholders.push({\n name,\n type,\n resolve: ast => resolveAncestors(ast, ancestors),\n isDuplicate: placeholderNames.has(name),\n });\n placeholderNames.add(name);\n}\n\nfunction resolveAncestors(ast: t.File, ancestors: TraversalAncestors) {\n let parent: t.Node = ast;\n for (let i = 0; i < ancestors.length - 1; i++) {\n const { key, index } = ancestors[i];\n\n if (index === undefined) {\n parent = (parent as any)[key];\n } else {\n parent = (parent as any)[key][index];\n }\n }\n\n const { key, index } = ancestors[ancestors.length - 1];\n\n return { parent, key, index };\n}\n\ntype MetadataState = {\n syntactic: {\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n };\n legacy: {\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n };\n placeholderAllowlist?: Set<string>;\n placeholderPattern?: RegExp | false;\n syntacticPlaceholders?: boolean;\n};\n\nfunction parseWithCodeFrame(\n code: string,\n parserOpts: ParserOpts,\n syntacticPlaceholders?: boolean,\n): t.File {\n const plugins = (parserOpts.plugins || []).slice();\n if (syntacticPlaceholders !== false) {\n plugins.push(\"placeholders\");\n }\n\n parserOpts = {\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: true,\n allowNewTargetOutsideFunction: true,\n allowSuperOutsideMethod: true,\n allowYieldOutsideFunction: true,\n sourceType: \"module\",\n ...parserOpts,\n plugins,\n };\n\n try {\n return parse(code, parserOpts);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message += \"\\n\" + codeFrameColumns(code, { start: loc });\n err.code = \"BABEL_TEMPLATE_PARSE_ERROR\";\n }\n throw err;\n }\n}\n","import {\n blockStatement,\n cloneNode,\n emptyStatement,\n expressionStatement,\n identifier,\n isStatement,\n isStringLiteral,\n stringLiteral,\n validate,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport type { TemplateReplacements } from \"./options.ts\";\nimport type { Metadata, Placeholder } from \"./parse.ts\";\n\nexport default function populatePlaceholders(\n metadata: Metadata,\n replacements: TemplateReplacements,\n): t.File {\n const ast = cloneNode(metadata.ast);\n\n if (replacements) {\n metadata.placeholders.forEach(placeholder => {\n if (!Object.hasOwn(replacements, placeholder.name)) {\n const placeholderName = placeholder.name;\n\n throw new Error(\n `Error: No substitution given for \"${placeholderName}\". If this is not meant to be a\n placeholder you may want to consider passing one of the following options to @babel/template:\n - { placeholderPattern: false, placeholderAllowlist: new Set(['${placeholderName}'])}\n - { placeholderPattern: /^${placeholderName}$/ }`,\n );\n }\n });\n Object.keys(replacements).forEach(key => {\n if (!metadata.placeholderNames.has(key)) {\n throw new Error(`Unknown substitution \"${key}\" given`);\n }\n });\n }\n\n // Process in reverse order so AST mutation doesn't change indices that\n // will be needed for later calls to `placeholder.resolve()`.\n metadata.placeholders\n .slice()\n .reverse()\n .forEach(placeholder => {\n try {\n applyReplacement(\n placeholder,\n ast,\n (replacements && replacements[placeholder.name]) ?? null,\n );\n } catch (e) {\n e.message = `@babel/template placeholder \"${placeholder.name}\": ${e.message}`;\n throw e;\n }\n });\n\n return ast;\n}\n\nfunction applyReplacement(\n placeholder: Placeholder,\n ast: t.File,\n replacement: any,\n) {\n // Track inserted nodes and clone them if they are inserted more than\n // once to avoid injecting the same node multiple times.\n if (placeholder.isDuplicate) {\n if (Array.isArray(replacement)) {\n replacement = replacement.map(node => cloneNode(node));\n } else if (typeof replacement === \"object\") {\n replacement = cloneNode(replacement);\n }\n }\n\n const { parent, key, index } = placeholder.resolve(ast);\n\n if (placeholder.type === \"string\") {\n if (typeof replacement === \"string\") {\n replacement = stringLiteral(replacement);\n }\n if (!replacement || !isStringLiteral(replacement)) {\n throw new Error(\"Expected string substitution\");\n }\n } else if (placeholder.type === \"statement\") {\n if (index === undefined) {\n if (!replacement) {\n replacement = emptyStatement();\n } else if (Array.isArray(replacement)) {\n replacement = blockStatement(replacement);\n } else if (typeof replacement === \"string\") {\n replacement = expressionStatement(identifier(replacement));\n } else if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n } else {\n if (replacement && !Array.isArray(replacement)) {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n }\n }\n } else if (placeholder.type === \"param\") {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n\n if (index === undefined) throw new Error(\"Assertion failure.\");\n } else {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (Array.isArray(replacement)) {\n throw new Error(\"Cannot replace single expression with an array.\");\n }\n }\n\n function set(parent: any, key: any, value: any) {\n const node = parent[key] as t.Node;\n parent[key] = value;\n if (node.type === \"Identifier\" || node.type === \"Placeholder\") {\n if (node.typeAnnotation) {\n value.typeAnnotation = node.typeAnnotation;\n }\n if (node.optional) {\n value.optional = node.optional;\n }\n if (node.decorators) {\n value.decorators = node.decorators;\n }\n }\n }\n\n if (index === undefined) {\n validate(parent, key, replacement);\n\n set(parent, key, replacement);\n } else {\n const items: t.Node[] = (parent as any)[key].slice();\n\n if (placeholder.type === \"statement\" || placeholder.type === \"param\") {\n if (replacement == null) {\n items.splice(index, 1);\n } else if (Array.isArray(replacement)) {\n items.splice(index, 1, ...replacement);\n } else {\n set(items, index, replacement);\n }\n } else {\n set(items, index, replacement);\n }\n\n validate(parent, key, items);\n (parent as any)[key] = items;\n }\n}\n","import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateOpts } from \"./options.ts\";\nimport type { Metadata } from \"./parse.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function stringTemplate<T>(\n formatter: Formatter<T>,\n code: string,\n opts: TemplateOpts,\n): (arg?: unknown) => T {\n code = formatter.code(code);\n\n let metadata: Metadata;\n\n return (arg?: unknown) => {\n const replacements = normalizeReplacements(arg);\n\n if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);\n\n return formatter.unwrap(populatePlaceholders(metadata, replacements));\n };\n}\n","import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateReplacements, TemplateOpts } from \"./options.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function literalTemplate<T>(\n formatter: Formatter<T>,\n tpl: string[],\n opts: TemplateOpts,\n): (_: unknown[]) => (_: unknown) => T {\n const { metadata, names } = buildLiteralData(formatter, tpl, opts);\n\n return arg => {\n const defaultReplacements: TemplateReplacements = {};\n arg.forEach((replacement, i) => {\n defaultReplacements[names[i]] = replacement;\n });\n\n return (arg: unknown) => {\n const replacements = normalizeReplacements(arg);\n\n if (replacements) {\n Object.keys(replacements).forEach(key => {\n if (Object.hasOwn(defaultReplacements, key)) {\n throw new Error(\"Unexpected replacement overlap.\");\n }\n });\n }\n\n return formatter.unwrap(\n populatePlaceholders(\n metadata,\n replacements\n ? Object.assign(replacements, defaultReplacements)\n : defaultReplacements,\n ),\n );\n };\n };\n}\n\nfunction buildLiteralData<T>(\n formatter: Formatter<T>,\n tpl: string[],\n opts: TemplateOpts,\n) {\n let prefix = \"BABEL_TPL$\";\n\n const raw = tpl.join(\"\");\n\n do {\n // If there are cases where the template already contains $$BABEL_TPL$0 or any other\n // matching pattern, we keep adding \"$$\" characters until a unique prefix\n // is found.\n prefix = \"$$\" + prefix;\n } while (raw.includes(prefix));\n\n const { names, code } = buildTemplateCode(tpl, prefix);\n\n const metadata = parseAndBuildMetadata(formatter, formatter.code(code), {\n parser: opts.parser,\n\n // Explicitly include our generated names in the allowlist so users never\n // have to think about whether their placeholder pattern will match.\n placeholderAllowlist: new Set(\n names.concat(\n opts.placeholderAllowlist ? Array.from(opts.placeholderAllowlist) : [],\n ),\n ),\n placeholderPattern: opts.placeholderPattern,\n preserveComments: opts.preserveComments,\n syntacticPlaceholders: opts.syntacticPlaceholders,\n });\n\n return { metadata, names };\n}\n\nfunction buildTemplateCode(\n tpl: string[],\n prefix: string,\n): { names: string[]; code: string } {\n const names = [];\n\n let code = tpl[0];\n\n for (let i = 1; i < tpl.length; i++) {\n const value = `${prefix}${i - 1}`;\n names.push(value);\n\n code += value + tpl[i];\n }\n\n return { names, code };\n}\n","import { merge, validate } from \"./options.ts\";\nimport type {\n TemplateOpts,\n PublicOpts,\n PublicReplacements,\n} from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nimport stringTemplate from \"./string.ts\";\nimport literalTemplate from \"./literal.ts\";\n\nexport type TemplateBuilder<T> = {\n // Build a new builder, merging the given options with the previous ones.\n (opts: PublicOpts): TemplateBuilder<T>;\n\n // Building from a string produces an AST builder function by default.\n (tpl: string, opts?: PublicOpts): (replacements?: PublicReplacements) => T;\n\n // Building from a template literal produces an AST builder function by default.\n (\n tpl: TemplateStringsArray,\n ...args: unknown[]\n ): (replacements?: PublicReplacements) => T;\n\n // Allow users to explicitly create templates that produce ASTs, skipping\n // the need for an intermediate function.\n ast: {\n (tpl: string, opts?: PublicOpts): T;\n (tpl: TemplateStringsArray, ...args: unknown[]): T;\n };\n};\n\n// Prebuild the options that will be used when parsing a `.ast` template.\n// These do not use a pattern because there is no way for users to pass in\n// replacement patterns to begin with, and disabling pattern matching means\n// users have more flexibility in what type of content they have in their\n// template JS.\nconst NO_PLACEHOLDER: TemplateOpts = validate({\n placeholderPattern: false,\n});\n\nexport default function createTemplateBuilder<T>(\n formatter: Formatter<T>,\n defaultOpts?: TemplateOpts,\n): TemplateBuilder<T> {\n const templateFnCache = new WeakMap();\n const templateAstCache = new WeakMap();\n const cachedOpts = defaultOpts || validate(null);\n\n return Object.assign(\n ((tpl, ...args) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return extendedTrace(\n stringTemplate(formatter, tpl, merge(cachedOpts, validate(args[0]))),\n );\n } else if (Array.isArray(tpl)) {\n let builder = templateFnCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(formatter, tpl, cachedOpts);\n templateFnCache.set(tpl, builder);\n }\n return extendedTrace(builder(args));\n } else if (typeof tpl === \"object\" && tpl) {\n if (args.length > 0) throw new Error(\"Unexpected extra params.\");\n return createTemplateBuilder(\n formatter,\n merge(cachedOpts, validate(tpl)),\n );\n }\n throw new Error(`Unexpected template param ${typeof tpl}`);\n }) as TemplateBuilder<T>,\n {\n ast: (tpl: string | string[], ...args: unknown[]) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return stringTemplate(\n formatter,\n tpl,\n merge(merge(cachedOpts, validate(args[0])), NO_PLACEHOLDER),\n )();\n } else if (Array.isArray(tpl)) {\n let builder = templateAstCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(\n formatter,\n tpl,\n merge(cachedOpts, NO_PLACEHOLDER),\n );\n templateAstCache.set(tpl, builder);\n }\n return builder(args)();\n }\n\n throw new Error(`Unexpected template param ${typeof tpl}`);\n },\n },\n );\n}\n\nfunction extendedTrace<Arg, Result>(\n fn: (_: Arg) => Result,\n): (_: Arg) => Result {\n // Since we lazy parse the template, we get the current stack so we have the\n // original stack to append if it errors when parsing\n const rootErr = new Error();\n\n return (arg: Arg) => {\n try {\n return fn(arg);\n } catch (err) {\n // We slice off the top 3 items in the stack to remove the call to\n // 'extendedTrace', and the anonymous builder function, with the final\n // stripped line being the error message itself since we threw it\n // in the first place and it doesn't matter.\n err.stack += `\\n =============\\n${rootErr.stack!.split(\"\\n\").slice(3).join(\"\\n\")}`;\n throw err;\n }\n };\n}\n","import * as formatters from \"./formatters.ts\";\nimport createTemplateBuilder from \"./builder.ts\";\n\nexport const smart = createTemplateBuilder(formatters.smart);\nexport const statement = createTemplateBuilder(formatters.statement);\nexport const statements = createTemplateBuilder(formatters.statements);\nexport const expression = createTemplateBuilder(formatters.expression);\nexport const program = createTemplateBuilder(formatters.program);\n\ntype DefaultTemplateBuilder = typeof smart & {\n smart: typeof smart;\n statement: typeof statement;\n statements: typeof statements;\n expression: typeof expression;\n program: typeof program;\n};\n\nexport default Object.assign(smart.bind(undefined) as DefaultTemplateBuilder, {\n smart,\n statement,\n statements,\n expression,\n program,\n ast: smart.ast,\n});\n\nexport type {\n PublicOpts as Options,\n PublicReplacements as Replacements,\n} from \"./options.ts\";\n","import type * as t from \"@babel/types\";\n\nexport interface VirtualTypeAliases {\n BindingIdentifier: t.Identifier;\n BlockScoped:\n | t.FunctionDeclaration\n | t.ClassDeclaration\n | t.VariableDeclaration;\n ExistentialTypeParam: t.ExistsTypeAnnotation;\n Expression: t.Expression;\n Flow: t.Flow | t.ImportDeclaration | t.ExportDeclaration | t.ImportSpecifier;\n ForAwaitStatement: t.ForOfStatement;\n Generated: t.Node;\n NumericLiteralTypeAnnotation: t.NumberLiteralTypeAnnotation;\n Pure: t.Node;\n Referenced: t.Node;\n ReferencedIdentifier: t.Identifier | t.JSXIdentifier;\n ReferencedMemberExpression: t.MemberExpression;\n RestProperty: t.RestElement;\n Scope: t.Scopable | t.Pattern;\n SpreadProperty: t.RestElement;\n Statement: t.Statement;\n User: t.Node;\n Var: t.VariableDeclaration;\n}\n\ntype VirtualTypeMapping = readonly (t.Node[\"type\"] | keyof t.Aliases)[] | null;\n\nexport const ReferencedIdentifier: VirtualTypeMapping = [\n \"Identifier\",\n \"JSXIdentifier\",\n] as const;\n\nexport const ReferencedMemberExpression: VirtualTypeMapping = [\n \"MemberExpression\",\n] as const;\n\nexport const BindingIdentifier: VirtualTypeMapping = [\"Identifier\"] as const;\n\nexport const Statement: VirtualTypeMapping = [\"Statement\"] as const;\n\nexport const Expression: VirtualTypeMapping = [\"Expression\"] as const;\n\nexport const Scope: VirtualTypeMapping = [\"Scopable\", \"Pattern\"] as const;\n\nexport const Referenced: VirtualTypeMapping = null;\n\nexport const BlockScoped: VirtualTypeMapping = [\n \"FunctionDeclaration\",\n \"ClassDeclaration\",\n \"VariableDeclaration\",\n] as const;\n\nexport const Var: VirtualTypeMapping = [\"VariableDeclaration\"];\n\nexport const User: VirtualTypeMapping = null;\n\nexport const Generated: VirtualTypeMapping = null;\n\nexport const Pure: VirtualTypeMapping = null;\n\nexport const Flow: VirtualTypeMapping = [\n \"Flow\",\n \"ImportDeclaration\",\n \"ExportDeclaration\",\n \"ImportSpecifier\",\n] as const;\n\n// TODO: 7.0 Backwards Compat\nexport const RestProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const SpreadProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const ExistentialTypeParam: VirtualTypeMapping = [\n \"ExistsTypeAnnotation\",\n] as const;\n\nexport const NumericLiteralTypeAnnotation: VirtualTypeMapping = [\n \"NumberLiteralTypeAnnotation\",\n] as const;\n\nexport const ForAwaitStatement: VirtualTypeMapping = [\n \"ForOfStatement\",\n] as const;\n","import type { ExplodedVisitor, TraverseOptions } from \"./types.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type * as t from \"@babel/types\";\n\nexport default class TraversalContext<S = unknown> {\n constructor(opts: TraverseOptions & ExplodedVisitor<S>, state: S) {\n this.state = state;\n this.opts = opts;\n }\n\n declare state: S;\n declare opts: TraverseOptions & ExplodedVisitor<S>;\n queue: NodePath<t.Node | null>[] | null = null;\n priorityQueue: NodePath<t.Node | null>[] | null = null;\n\n maybeQueue(path: NodePath<t.Node | null>, notPriority?: boolean) {\n if (this.queue) {\n if (notPriority) {\n this.queue.push(path);\n } else {\n this.priorityQueue!.push(path);\n }\n }\n }\n}\n","import TraversalContext from \"./context.ts\";\nimport type { ExplodedVisitor, TraverseOptions } from \"./types.ts\";\nimport { Hub } from \"./index.ts\";\nimport NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type * as t from \"@babel/types\";\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport { _call, popContext, pushContext, resync } from \"./path/context.ts\";\n\nfunction _visitPaths(\n ctx: TraversalContext<any>,\n paths: NodePath<t.Node | null>[],\n): boolean {\n // set queue\n ctx.queue = paths;\n ctx.priorityQueue = [];\n\n const visited = new Set();\n let stop = false;\n let visitIndex = 0;\n\n for (; visitIndex < paths.length; ) {\n const path = paths[visitIndex];\n visitIndex++;\n\n resync.call(path);\n\n if (\n path.contexts.length === 0 ||\n path.contexts[path.contexts.length - 1] !== ctx\n ) {\n // The context might already have been pushed when this path was inserted and queued.\n // If we always re-pushed here, we could get duplicates and risk leaving contexts\n // on the stack after the traversal has completed, which could break things.\n pushContext.call(path, ctx);\n }\n\n // this path no longer belongs to the tree\n if (path.key === null) continue;\n\n // ensure we don't visit the same node twice\n const { node } = path;\n if (visited.has(node)) continue;\n if (node) visited.add(node);\n\n if (_visit(ctx, path)) {\n stop = true;\n break;\n }\n\n if (ctx.priorityQueue.length) {\n stop = _visitPaths(ctx, ctx.priorityQueue);\n ctx.priorityQueue = [];\n ctx.queue = paths;\n if (stop) break;\n }\n }\n\n // pop contexts\n for (let i = 0; i < visitIndex; i++) {\n popContext.call(paths[i]);\n }\n\n // clear queue\n ctx.queue = null;\n\n return stop;\n}\n\nfunction _visit(ctx: TraversalContext, path: NodePath<t.Node | null>) {\n const node = path.node;\n if (!node) {\n return false;\n }\n const opts = ctx.opts;\n\n const denylist = opts.denylist;\n if (denylist?.includes(node.type)) {\n return false;\n }\n\n if (opts.shouldSkip?.(path)) {\n return false;\n }\n\n // Note: We need to check \"this.shouldSkip\" first because\n // another visitor can set it to true. Usually .shouldSkip is false\n // before calling the enter visitor, but it can be true in case of\n // a requeued node (e.g. by .replaceWith()) that is then marked\n // with .skip().\n if (path.shouldSkip) return path.shouldStop;\n\n if (_call.call(path, opts.enter)) return path.shouldStop;\n if (path.node) {\n if (_call.call(path, opts[node.type]?.enter)) return path.shouldStop;\n }\n\n path.shouldStop = traverseNode(\n path.node,\n opts,\n path.scope,\n ctx.state,\n path,\n path.skipKeys,\n );\n\n if (path.node) {\n if (_call.call(path, opts.exit)) return path.shouldStop;\n }\n if (path.node) {\n _call.call(path, opts[node.type]?.exit);\n }\n\n return path.shouldStop;\n}\n\n/**\n * Traverse the children of given node\n * @param {Node} node\n * @param {TraverseOptions} opts The traverse options used to create a new traversal context\n * @param {scope} scope A traversal scope used to create a new traversal context. When opts.noScope is true, scope should not be provided\n * @param {any} state A user data storage provided as the second callback argument for traversal visitors\n * @param {NodePath} path A NodePath of given node\n * @param {Record<string, boolean>} skipKeys A map from key names to whether that should be skipped during traversal. The skipKeys are applied to every descendants\n * @param {boolean} visitSelf Whether to visit the given node itself\n * @returns {boolean} Whether the traversal stops early\n */\nexport function traverseNode<S = unknown>(\n node: t.Node,\n opts: TraverseOptions & ExplodedVisitor<S>,\n scope?: Scope | null,\n state?: S,\n path?: NodePath,\n skipKeys?: Record<string, boolean> | null,\n visitSelf?: boolean,\n) {\n const keys = VISITOR_KEYS[node.type];\n if (!keys?.length) return false;\n\n const ctx = new TraversalContext(opts, state!);\n if (visitSelf) {\n if (skipKeys?.[path!.parentKey]) return false;\n return _visitPaths(ctx, [path!]);\n }\n\n const hub =\n path == null\n ? node.type === \"Program\" || node.type === \"File\"\n ? new Hub()\n : undefined\n : path.hub;\n\n for (const key of keys) {\n if (skipKeys?.[key]) continue;\n // @ts-expect-error key must present in node\n const prop = node[key];\n if (!prop) continue;\n\n if (Array.isArray(prop)) {\n if (!prop.length) continue;\n const paths = [];\n for (let i = 0; i < prop.length; i++) {\n const childPath = NodePath.get({\n parentPath: path,\n parent: node,\n container: prop,\n key: i,\n listKey: key,\n hub,\n });\n paths.push(childPath);\n }\n if (_visitPaths(ctx, paths)) return true;\n } else {\n if (\n _visitPaths(ctx, [\n NodePath.get({\n parentPath: path,\n parent: node,\n container: node,\n key,\n listKey: null,\n hub,\n }),\n ])\n ) {\n return true;\n }\n }\n }\n\n return false;\n}\n","import type NodePath from \"../index.ts\";\nimport {\n isBinding,\n isBlockScoped as nodeIsBlockScoped,\n isExportDeclaration,\n isExpression as nodeIsExpression,\n isFlow as nodeIsFlow,\n isForStatement,\n isForXStatement,\n isIdentifier,\n isImportDeclaration,\n isImportSpecifier,\n isJSXIdentifier,\n isJSXMemberExpression,\n isMemberExpression,\n isRestElement as nodeIsRestElement,\n isReferenced as nodeIsReferenced,\n isScope as nodeIsScope,\n isStatement as nodeIsStatement,\n isVar as nodeIsVar,\n isVariableDeclaration,\n react,\n isForOfStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nconst { isCompatTag } = react;\nimport type { VirtualTypeAliases } from \"./virtual-types.ts\";\n\ntype Options<Obj> = Partial<{\n [Prop in Exclude<keyof Obj, \"type\">]: Obj[Prop] extends t.Node\n ? t.Node\n : Obj[Prop] extends t.Node[]\n ? t.Node[]\n : Obj[Prop];\n}>;\n\nexport interface VirtualTypeNodePathValidators {\n isBindingIdentifier(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"BindingIdentifier\"]>;\n isBlockScoped(this: NodePath<t.Node | null>): boolean;\n /**\n * @deprecated\n */\n isExistentialTypeParam(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"ExistentialTypeParam\"]>;\n isExpression(this: NodePath<t.Node | null>): this is NodePath<t.Expression>;\n isFlow(this: NodePath<t.Node | null>): this is NodePath<t.Flow>;\n isForAwaitStatement(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"ForAwaitStatement\"]>;\n isGenerated(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"Generated\"]>;\n /**\n * @deprecated\n */\n isNumericLiteralTypeAnnotation(this: NodePath<t.Node | null>): void;\n isPure(): boolean;\n isReferenced(): boolean;\n isReferencedIdentifier<\n Opts extends Options<VirtualTypeAliases[\"ReferencedIdentifier\"]>,\n >(\n this: NodePath<t.Node | null>,\n opts?: Opts,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedIdentifier\"] & Opts>;\n isReferencedMemberExpression(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedMemberExpression\"]>;\n isRestProperty(\n this: NodePath<t.Node | null>,\n ): this is NodePath<t.RestProperty>;\n isScope(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"Scope\"]>;\n isSpreadProperty(\n this: NodePath<t.Node | null>,\n ): this is NodePath<t.SpreadProperty>;\n isStatement(this: NodePath<t.Node | null>): this is NodePath<t.Statement>;\n isUser(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"User\"]>;\n isVar(\n this: NodePath<t.Node | null>,\n ): this is NodePath<VirtualTypeAliases[\"Var\"]>;\n}\n\nexport function isReferencedIdentifier(\n this: NodePath<t.Node | null>,\n opts?: Options<VirtualTypeAliases[\"ReferencedIdentifier\"]>,\n): boolean {\n const { node, parent } = this;\n if (isIdentifier(node, opts)) {\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n } else if (isJSXIdentifier(node, opts)) {\n if (!isJSXMemberExpression(parent) && isCompatTag(node.name)) return false;\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n } else {\n // not a JSXIdentifier or an Identifier\n return false;\n }\n}\n\nexport function isReferencedMemberExpression(\n this: NodePath<t.Node | null>,\n): boolean {\n const { node, parent } = this;\n return isMemberExpression(node) && nodeIsReferenced(node, parent);\n}\n\nexport function isBindingIdentifier(this: NodePath<t.Node | null>): boolean {\n const { node, parent } = this;\n const grandparent = this.parentPath.parent;\n return isIdentifier(node) && isBinding(node, parent, grandparent);\n}\n\nexport function isStatement(this: NodePath<t.Node | null>): boolean {\n const { node, parent } = this;\n if (nodeIsStatement(node)) {\n if (isVariableDeclaration(node)) {\n if (isForXStatement(parent, { left: node })) return false;\n if (isForStatement(parent, { init: node })) return false;\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nexport function isExpression(this: NodePath<t.Node | null>): boolean {\n if (this.isIdentifier()) {\n return this.isReferencedIdentifier();\n } else {\n return nodeIsExpression(this.node);\n }\n}\n\nexport function isScope(this: NodePath<t.Node | null>): boolean {\n return nodeIsScope(this.node, this.parent);\n}\n\nexport function isReferenced(this: NodePath<t.Node | null>): boolean {\n return nodeIsReferenced(this.node, this.parent);\n}\n\nexport function isBlockScoped(this: NodePath<t.Node | null>): boolean {\n return nodeIsBlockScoped(this.node);\n}\n\nexport function isVar(this: NodePath<t.Node | null>): boolean {\n return nodeIsVar(this.node);\n}\n\nexport function isUser(this: NodePath<t.Node | null>): boolean {\n return !!this.node?.loc;\n}\n\nexport function isGenerated(this: NodePath<t.Node | null>): boolean {\n return !this.isUser();\n}\n\nexport function isPure(\n this: NodePath<t.Node | null>,\n constantsOnly?: boolean,\n): boolean {\n return this.scope.isPure(this.node, constantsOnly);\n}\n\nexport function isFlow(this: NodePath<t.Node | null>): boolean {\n const { node } = this;\n if (nodeIsFlow(node)) {\n return true;\n } else if (isImportDeclaration(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else if (isExportDeclaration(node)) {\n return node.exportKind === \"type\";\n } else if (isImportSpecifier(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else {\n return false;\n }\n}\n\n// TODO: 7.0 Backwards Compat\nexport function isRestProperty(this: NodePath<t.Node | null>): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectPattern();\n}\n\nexport function isSpreadProperty(this: NodePath<t.Node | null>): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectExpression();\n}\n\nexport function isForAwaitStatement(this: NodePath<t.Node | null>): boolean {\n return isForOfStatement(this.node, { await: true });\n}\n","import * as virtualTypes from \"./path/lib/virtual-types.ts\";\nimport * as virtualTypesValidators from \"./path/lib/virtual-types-validator.ts\";\nimport type { Node } from \"@babel/types\";\nimport {\n DEPRECATED_KEYS,\n DEPRECATED_ALIASES,\n FLIPPED_ALIAS_KEYS,\n TYPES,\n __internal__deprecationWarning as deprecationWarning,\n} from \"@babel/types\";\nimport type { ExplodedVisitor, NodePath, Visitor } from \"./index.ts\";\nimport type {\n ExplVisitNode,\n VisitNodeFunction,\n VisitPhase,\n VisitorBase,\n VisitorProp,\n} from \"./types.ts\";\n\ntype VIRTUAL_TYPES = keyof typeof virtualTypes;\nfunction isVirtualType(type: string): type is VIRTUAL_TYPES {\n return type in virtualTypes;\n}\nexport type VisitWrapper<S = any> = (\n stateName: string | undefined,\n visitorType: VisitPhase,\n callback: VisitNodeFunction<S, Node>,\n) => VisitNodeFunction<S, Node>;\n\nexport function isExplodedVisitor(\n visitor: Visitor<any>,\n): visitor is ExplodedVisitor {\n // @ts-expect-error _exploded is not defined on non-exploded Visitor\n return visitor?._exploded;\n}\n\n// We need to name this function `explode$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var explode: typeof explode; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `explode` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { explode$1 as explode };\n/**\n * explode() will take a visitor object with all of the various shorthands\n * that we support, and validates & normalizes it into a common format, ready\n * to be used in traversal\n *\n * The various shorthands are:\n * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`\n * * `\"Identifier|NumericLiteral\": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`\n * * Aliases in `@babel/types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`\n * Other normalizations are:\n * * Visitors of virtual types are wrapped, so that they are only visited when\n * their dynamic check passes\n * * `enter` and `exit` functions are wrapped in arrays, to ease merging of\n * visitors\n */\nfunction explode$1<S, T extends object>(visitor: {\n [P in keyof T]: VisitorProp<S, P & string>;\n}): ExplodedVisitor<S>;\nfunction explode$1<S>(visitor: Visitor<S>): ExplodedVisitor<S>;\nfunction explode$1<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n if (isExplodedVisitor(visitor)) return visitor;\n // @ts-expect-error `visitor` will be cast to ExplodedVisitor by this function\n visitor._exploded = true;\n\n // Handle deprecated 'blacklist' option: only error if 'denylist' is not also provided.\n // If both are present, 'denylist' takes precedence (supports Babel 7/8 cross-version compat).\n if (Object.hasOwn(visitor, \"blacklist\")) {\n if (!Object.hasOwn(visitor, \"denylist\")) {\n throw new Error(\n \"The 'blacklist' visitor option has been renamed to 'denylist'. \" +\n \"Please update your configuration.\",\n );\n }\n // Both provided — 'denylist' will be used; 'blacklist' key is silently ignored.\n delete (visitor as any).blacklist;\n }\n\n // normalise pipes\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n const parts: string[] = nodeType.split(\"|\");\n if (parts.length === 1) continue;\n\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n\n for (const part of parts) {\n // @ts-expect-error part will be verified by `verify` later\n visitor[part] = fns;\n }\n }\n\n // verify data structure\n verify$1(visitor);\n\n // make sure there's no __esModule type since this is because we're using loose mode\n // and it sets __esModule to be enumerable on all modules :(\n // @ts-expect-error ESModule interop\n delete visitor.__esModule;\n\n // ensure visitors are objects\n ensureEntranceObjects(visitor);\n\n // ensure enter/exit callbacks are arrays\n ensureCallbackArrays(visitor);\n\n const visitorBase = visitor as VisitorBase<any>;\n\n // add type wrappers\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!isVirtualType(nodeType)) continue;\n\n // wrap all the functions\n const fns = visitorBase[nodeType]!;\n for (const type of Object.keys(fns)) {\n // @ts-expect-error normalised as VisitNodeObject\n fns[type] = wrapCheck(nodeType, fns[type]);\n }\n\n // clear it from the visitor\n delete visitorBase[nodeType];\n\n const types = virtualTypes[nodeType];\n if (types !== null) {\n for (const type of types) {\n // @ts-expect-error Expression produces too complex union\n visitorBase[type] ??= {};\n mergePair(visitorBase[type], fns);\n }\n } else {\n mergePair(visitor, fns);\n }\n }\n\n // add aliases\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n\n if (nodeType in DEPRECATED_KEYS) {\n const deprecatedKey = DEPRECATED_KEYS[nodeType];\n deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n aliases = [deprecatedKey];\n } else if (nodeType in DEPRECATED_ALIASES) {\n const deprecatedAlias =\n DEPRECATED_ALIASES[nodeType as keyof typeof DEPRECATED_ALIASES];\n deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n }\n\n if (!aliases) continue;\n\n const fns = visitor[nodeType];\n // clear it from the visitor\n delete visitor[nodeType];\n\n for (const alias of aliases) {\n const existing = visitorBase[alias];\n if (existing) {\n mergePair(existing, fns);\n } else {\n visitorBase[alias] = { ...fns };\n }\n }\n }\n\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n ensureCallbackArrays(\n // @ts-expect-error nodeType must present in visitor after previous validations\n visitor[nodeType],\n );\n }\n\n return visitor as ExplodedVisitor;\n}\n\n// We need to name this function `verify$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var verify: typeof verify; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `verify` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { verify$1 as verify };\nfunction verify$1(visitor: Visitor<any>) {\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n if (visitor._verified) return;\n\n if (typeof visitor === \"function\") {\n throw new Error(\n \"You passed `traverse()` a function when it expected a visitor object, \" +\n \"are you sure you didn't mean `{ enter: Function }`?\",\n );\n }\n\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (nodeType === \"enter\" || nodeType === \"exit\") {\n validateVisitorMethods(nodeType, visitor[nodeType]);\n }\n\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!TYPES.includes(nodeType)) {\n throw new Error(\n `You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${PACKAGE_JSON.version}`,\n );\n }\n\n const visitors = visitor[nodeType];\n if (typeof visitors === \"object\") {\n for (const visitorKey of Object.keys(visitors)) {\n if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n // verify that it just contains functions\n validateVisitorMethods(\n `${nodeType}.${visitorKey}`,\n visitors[visitorKey],\n );\n } else {\n throw new Error(\n \"You passed `traverse()` a visitor object with the property \" +\n `${nodeType} that has the invalid property ${visitorKey}`,\n );\n }\n }\n }\n }\n\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n visitor._verified = true;\n}\n\nfunction validateVisitorMethods(\n path: string,\n val: any,\n): asserts val is Function | Function[] {\n const fns = [].concat(val);\n for (const fn of fns) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\n `Non-function found defined in ${path} with type ${typeof fn}`,\n );\n }\n }\n}\n\nexport function merge<State>(\n visitors: Visitor<State>[],\n): ExplodedVisitor<State>;\nexport function merge<State>(\n visitors: Visitor<State>[],\n states?: State[],\n wrapper?: VisitWrapper<State> | null,\n): ExplodedVisitor<State>;\nexport function merge(\n visitors: any[],\n states: any[] = [],\n wrapper?: VisitWrapper | null,\n): ExplodedVisitor {\n const mergedVisitor: ExplodedVisitor = { _verified: true, _exploded: true };\n\n for (let i = 0; i < visitors.length; i++) {\n const visitor = explode$1(visitors[i]);\n const state = states[i];\n\n let topVisitor: ExplVisitNode<unknown, Node> = visitor;\n if (state || wrapper) {\n topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n }\n mergePair(mergedVisitor, topVisitor);\n\n for (const key of Object.keys(visitor) as (keyof ExplodedVisitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n let typeVisitor = visitor[key]!;\n\n // if we have state or wrapper then overload the callbacks to take it\n if (state || wrapper) {\n typeVisitor = wrapWithStateOrWrapper(\n typeVisitor as ExplVisitNode<unknown, Node>,\n state,\n wrapper,\n );\n }\n\n const nodeVisitor = (mergedVisitor[key] ||= {});\n mergePair(nodeVisitor, typeVisitor);\n }\n }\n\n return mergedVisitor;\n}\n\nfunction wrapWithStateOrWrapper<State>(\n oldVisitor: ExplVisitNode<State, Node>,\n state: State | null,\n wrapper?: VisitWrapper<State> | null,\n): ExplVisitNode<State, Node> {\n const newVisitor: ExplVisitNode<State, Node> = {};\n\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n let fns = oldVisitor[phase];\n\n // not an enter/exit array of callbacks\n if (!Array.isArray(fns)) continue;\n\n fns = fns.map(function (fn) {\n let newFn = fn;\n\n if (state) {\n newFn = function (path: NodePath<Node>) {\n fn.call(state, path, state);\n };\n }\n\n if (wrapper) {\n // @ts-expect-error Fixme: actually PluginPass.key (aka pluginAlias)?\n newFn = wrapper(state?.key, phase, newFn);\n }\n\n // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck`\n if (newFn !== fn) {\n newFn.toString = () => fn.toString();\n }\n\n return newFn;\n });\n\n newVisitor[phase] = fns;\n }\n\n return newVisitor;\n}\n\nfunction ensureEntranceObjects(obj: Visitor<any>) {\n for (const key of Object.keys(obj) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n const fns = obj[key];\n if (typeof fns === \"function\") {\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n obj[key] = { enter: fns };\n }\n }\n}\n\nfunction ensureCallbackArrays(obj: Visitor<any>) {\n if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\n\nfunction wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) {\n const fnKey = `is${nodeType}`;\n // @ts-expect-error we know virtualTypesValidators will contain `fnKey`, but TS doesn't\n const validator = virtualTypesValidators[fnKey];\n const newFn = function (this: unknown, path: NodePath) {\n if (validator.call(path)) {\n return fn.apply(this, arguments);\n }\n };\n newFn.toString = () => fn.toString();\n return newFn;\n}\n\nfunction shouldIgnoreKey(key: string): key is\n | `_${string}` // ` // Comment to fix syntax highlighting in vscode\n | \"enter\"\n | \"exit\"\n | \"shouldSkip\"\n | \"denylist\"\n | \"noScope\"\n | \"skipKeys\" {\n // internal/hidden key\n if (key.startsWith(\"_\")) return true;\n\n // ignore function keys\n if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n\n // ignore other options\n if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n return true;\n }\n\n if (key === \"blacklist\") {\n throw new Error(\n \"The 'blacklist' visitor option has been renamed to 'denylist'. \" +\n \"Please update your configuration.\",\n );\n }\n\n return false;\n}\n\n/*\nfunction mergePair(\n dest: ExplVisitNode<unknown, Node>,\n src: ExplVisitNode<unknown, Node>,\n);\n*/\nfunction mergePair(dest: any, src: any) {\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n if (!src[phase]) continue;\n dest[phase] = [].concat(dest[phase] || [], src[phase]);\n }\n}\n\n// environmentVisitor should be used when traversing the whole class and not for specific class elements/methods.\n// For perf reasons, the environmentVisitor might be traversed with `{ noScope: true }`, which means `path.scope` is undefined.\n// Avoid using `path.scope` here\nconst _environmentVisitor: Visitor = {\n FunctionParent(path) {\n // arrows are not skipped because they inherit the context.\n if (path.isArrowFunctionExpression()) return;\n\n path.skip();\n if (path.isMethod()) {\n path.requeueComputedKeyAndDecorators();\n }\n },\n Property(path) {\n if (path.isObjectProperty()) return;\n path.skip();\n\n path.requeueComputedKeyAndDecorators();\n },\n};\n\nexport function environmentVisitor<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n return merge([_environmentVisitor, visitor]);\n}\n","import type Binding from \"../binding.ts\";\nimport * as t from \"@babel/types\";\nimport type { NodePath, ExplodedVisitor } from \"../../index.ts\";\nimport { traverseNode } from \"../../traverse-node.ts\";\nimport { explode } from \"../../visitors.ts\";\nimport { getAssignmentIdentifiers, type Identifier } from \"@babel/types\";\n\nlet renameVisitor: ExplodedVisitor<Renamer>;\nconst getRenameVisitor = () =>\n (renameVisitor ??= explode({\n ReferencedIdentifier({ node }, state) {\n if (node.name === state.oldName) {\n node.name = state.newName;\n }\n },\n\n Scope(path, state) {\n if (\n !path.scope.bindingIdentifierEquals(\n state.oldName,\n state.binding.identifier,\n )\n ) {\n path.skip();\n if (path.isMethod()) {\n path.requeueComputedKeyAndDecorators();\n }\n if (path.isSwitchStatement()) {\n path.context.maybeQueue(path.get(\"discriminant\"));\n }\n }\n },\n\n ObjectProperty({ node, scope }, state) {\n const { name } = node.key as Identifier;\n if (\n node.shorthand &&\n // In destructuring the identifier is already renamed by the\n // AssignmentExpression|Declaration|VariableDeclarator visitor,\n // while in object literals it's renamed later by the\n // ReferencedIdentifier visitor.\n (name === state.oldName || name === state.newName) &&\n // Ignore shadowed bindings\n scope.getBindingIdentifier(name) === state.binding.identifier\n ) {\n node.shorthand = false;\n }\n },\n\n \"AssignmentExpression|Declaration|VariableDeclarator\"(\n path: NodePath<\n t.AssignmentExpression | t.Declaration | t.VariableDeclarator\n >,\n state,\n ) {\n if (path.isVariableDeclaration()) return;\n const ids = path.isAssignmentExpression()\n ? // See https://github.com/babel/babel/issues/16694\n getAssignmentIdentifiers(path.node)\n : path.getOuterBindingIdentifiers();\n\n for (const name in ids) {\n if (name === state.oldName) ids[name].name = state.newName;\n }\n },\n }));\n\nexport default class Renamer {\n constructor(binding: Binding, oldName: string, newName: string) {\n this.newName = newName;\n this.oldName = oldName;\n this.binding = binding;\n }\n\n declare oldName: string;\n declare newName: string;\n declare binding: Binding;\n\n maybeConvertFromExportDeclaration(parentDeclar: NodePath) {\n const maybeExportDeclar = parentDeclar.parentPath;\n\n if (!maybeExportDeclar.isExportDeclaration()) {\n return;\n }\n\n if (maybeExportDeclar.isExportDefaultDeclaration()) {\n const { declaration } = maybeExportDeclar.node;\n if (t.isDeclaration(declaration) && !declaration.id) {\n return;\n }\n }\n\n if (maybeExportDeclar.isExportAllDeclaration()) {\n return;\n }\n\n maybeExportDeclar.splitExportDeclaration();\n }\n\n maybeConvertFromClassFunctionDeclaration(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function declaration\n\n // if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;\n // if (this.binding.kind !== \"hoisted\") return;\n\n // path.node.id = identifier(this.oldName);\n // path.node._blockHoist = 3;\n\n // path.replaceWith(\n // variableDeclaration(\"let\", [\n // variableDeclarator(identifier(this.newName), toExpression(path.node)),\n // ]),\n // );\n }\n\n maybeConvertFromClassFunctionExpression(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function expression\n\n // if (!path.isFunctionExpression() && !path.isClassExpression()) return;\n // if (this.binding.kind !== \"local\") return;\n\n // path.node.id = identifier(this.oldName);\n\n // this.binding.scope.parent.push({\n // id: identifier(this.newName),\n // });\n\n // path.replaceWith(\n // assignmentExpression(\"=\", identifier(this.newName), path.node),\n // );\n }\n\n rename() {\n const { binding, oldName, newName } = this;\n const { scope, path } = binding;\n\n const parentDeclar = path.find(\n path =>\n path.isDeclaration() ||\n path.isFunctionExpression() ||\n path.isClassExpression(),\n );\n if (parentDeclar) {\n const bindingIds = parentDeclar.getOuterBindingIdentifiers();\n if (bindingIds[oldName] === binding.identifier) {\n // When we are renaming an exported identifier, we need to ensure that\n // the exported binding keeps the old name.\n this.maybeConvertFromExportDeclaration(parentDeclar);\n }\n }\n\n const blockToTraverse = scope.block;\n // When blockToTraverse is a SwitchStatement, the discriminant\n // is not part of the current scope and thus should be skipped.\n\n // const foo = {\n // get [x]() {\n // return x;\n // },\n // };\n const skipKeys: Record<string, true> = { discriminant: true };\n if (t.isMethod(blockToTraverse)) {\n if (blockToTraverse.computed) {\n skipKeys.key = true;\n }\n if (!t.isObjectMethod(blockToTraverse)) {\n skipKeys.decorators = true;\n }\n }\n\n traverseNode(\n blockToTraverse,\n getRenameVisitor(),\n scope,\n this,\n scope.path,\n skipKeys,\n );\n\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n\n if (parentDeclar) {\n this.maybeConvertFromClassFunctionDeclaration(path);\n this.maybeConvertFromClassFunctionExpression(path);\n }\n }\n}\n","import { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { HubInterface, Visitor } from \"../index.ts\";\nimport { NodePath } from \"../index.ts\";\nimport { explode } from \"../visitors.ts\";\nimport { _forceSetScope } from \"../path/context.ts\";\n\nexport default function traverseForScope(\n path: NodePath,\n visitors: Visitor,\n state: any,\n) {\n const exploded = explode(visitors);\n\n if (exploded.enter || exploded.exit) {\n throw new Error(\"Should not be used with enter/exit visitors.\");\n }\n\n _traverse(\n path.parentPath,\n path.parent,\n path.node,\n path.container!,\n path.key!,\n path.listKey,\n path.hub,\n path,\n );\n\n function _traverse(\n parentPath: NodePath,\n parent: t.Node,\n node: t.Node,\n container: t.Node | t.Node[],\n key: string | number,\n listKey: string | null | undefined,\n hub?: HubInterface,\n inPath?: NodePath,\n ) {\n if (!node) {\n return;\n }\n\n const path =\n inPath ||\n NodePath.get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key,\n });\n\n _forceSetScope.call(path);\n\n const visitor = exploded[node.type];\n if (visitor?.enter) {\n for (const visit of visitor.enter) {\n (visit as Function).call(state, path, state);\n }\n }\n\n if (path.shouldSkip) {\n return;\n }\n\n const keys = VISITOR_KEYS[node.type];\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n // @ts-expect-error key must present in node\n const prop = node[key];\n if (!prop) continue;\n if (Array.isArray(prop)) {\n for (let i = 0; i < prop.length; i++) {\n const value = prop[i];\n _traverse(path, node, value, prop, i, key);\n }\n } else {\n _traverse(path, node, prop, node, key, null);\n }\n }\n\n if (visitor?.exit) {\n for (const visit of visitor.exit) {\n (visit as Function).call(state, path, state);\n }\n }\n }\n}\n","import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n | \"var\" /* var declarator */\n | \"let\" /* let declarator, class declaration id, catch clause parameters */\n | \"const\" /* const/using/await using declarator */\n | \"module\" /* import specifiers */\n | \"hoisted\" /* function declaration id */\n | \"param\" /* function declaration parameters */\n | \"local\" /* function expression id, class expression id */\n | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n * * Node path.\n * * Amount of times referenced by other nodes.\n * * Paths to nodes that reassign or modify this binding.\n * * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n\n constructor({\n identifier,\n scope,\n path,\n kind,\n }: {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n }) {\n this.identifier = identifier;\n this.scope = scope;\n this.path = path;\n this.kind = kind;\n\n if ((kind === \"var\" || kind === \"hoisted\") && isInitInLoop(path)) {\n this.reassign(path);\n }\n\n this.clearValue();\n }\n\n constantViolations: NodePath[] = [];\n constant: boolean = true;\n\n referencePaths: NodePath[] = [];\n referenced: boolean = false;\n references: number = 0;\n\n declare hasDeoptedValue: boolean;\n declare hasValue: boolean;\n declare value: any;\n\n deoptValue() {\n this.clearValue();\n this.hasDeoptedValue = true;\n }\n\n setValue(value: any) {\n if (this.hasDeoptedValue) return;\n this.hasValue = true;\n this.value = value;\n }\n\n clearValue() {\n this.hasDeoptedValue = false;\n this.hasValue = false;\n this.value = null;\n }\n\n /**\n * Register a constant violation with the provided `path`.\n */\n\n reassign(path: NodePath) {\n this.constant = false;\n if (this.constantViolations.includes(path)) {\n return;\n }\n this.constantViolations.push(path);\n }\n\n /**\n * Increment the amount of references to this binding.\n */\n\n reference(path: NodePath) {\n if (this.referencePaths.includes(path)) {\n return;\n }\n this.referenced = true;\n this.references++;\n this.referencePaths.push(path);\n }\n\n /**\n * Decrement the amount of references to this binding.\n */\n\n dereference() {\n this.references--;\n this.referenced = !!this.references;\n }\n}\n\nfunction isInitInLoop(path: NodePath) {\n const isFunctionDeclarationOrHasInit =\n !path.isVariableDeclarator() || path.node.init;\n for (\n let { parentPath, key } = path;\n parentPath;\n { parentPath, key } = parentPath\n ) {\n if (parentPath.isFunctionParent()) return false;\n if (\n (key === \"left\" && parentPath.isForXStatement()) ||\n (isFunctionDeclarationOrHasInit && key === \"body\" && parentPath.isLoop())\n ) {\n return true;\n }\n }\n return false;\n}\n","import type { Node } from \"@babel/types\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\n\nlet pathsCache = new WeakMap<Node, Map<Node, NodePath>>();\nexport { pathsCache as path };\nexport let scope = new WeakMap<Node, Scope>();\n\nexport function clear() {\n clearPath();\n clearScope();\n}\n\nexport function clearPath() {\n pathsCache = new WeakMap();\n}\n\nexport function clearScope() {\n scope = new WeakMap();\n}\n\nexport function getCachedPaths(path: NodePath<Node | null>) {\n const { parent, parentPath } = path;\n return parentPath ? parentPath._store : pathsCache.get(parent);\n}\n\nexport function getOrCreateCachedPaths(\n node: Node,\n parentPath?: NodePath | null,\n) {\n if (parentPath) {\n return (parentPath._store ||= new Map());\n }\n\n let paths = pathsCache.get(node);\n if (!paths) pathsCache.set(node, (paths = new Map()));\n\n return paths;\n}\n","import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport traverseForScope from \"./traverseForScope.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globalsBuiltinLower from \"@babel/helper-globals/data/builtin-lower.json\" with { type: \"json\" };\nimport globalsBuiltinUpper from \"@babel/helper-globals/data/builtin-upper.json\" with { type: \"json\" };\nimport {\n assignmentExpression,\n cloneNode,\n getBindingIdentifiers,\n identifier,\n isArrayExpression,\n isBinary,\n isCallExpression,\n isClass,\n isClassBody,\n isClassDeclaration,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n isFunctionDeclaration,\n isIdentifier,\n isImportDeclaration,\n isLiteral,\n isMemberExpression,\n isMethod,\n isModuleSpecifier,\n isNullLiteral,\n isObjectExpression,\n isProperty,\n isPureish,\n isRegExpLiteral,\n isSuper,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isThisExpression,\n isUnaryExpression,\n isVariableDeclaration,\n expressionStatement,\n matchesPattern,\n toIdentifier,\n variableDeclaration,\n variableDeclarator,\n isObjectProperty,\n isTopicReference,\n isMetaProperty,\n isPrivateName,\n isExportDeclaration,\n sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { ExplodedVisitor, Visitor } from \"../types.ts\";\n\nexport type { BindingKind };\n\ntype NodePart = string | number | bigint | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node | null | undefined, parts: NodePart[]) {\n switch (node?.type) {\n default:\n if (isImportDeclaration(node) || isExportDeclaration(node)) {\n if (\n (isExportAllDeclaration(node) ||\n isExportNamedDeclaration(node) ||\n isImportDeclaration(node)) &&\n node.source\n ) {\n gatherNodeParts(node.source, parts);\n } else if (\n (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n node.specifiers?.length\n ) {\n for (const e of node.specifiers) gatherNodeParts(e, parts);\n } else if (\n (isExportDefaultDeclaration(node) ||\n isExportNamedDeclaration(node)) &&\n node.declaration\n ) {\n gatherNodeParts(node.declaration, parts);\n }\n } else if (isModuleSpecifier(node)) {\n // todo(flow->ts): should condition instead be:\n // ```\n // t.isExportSpecifier(node) ||\n // t.isImportDefaultSpecifier(node) ||\n // t.isImportNamespaceSpecifier(node) ||\n // t.isImportSpecifier(node)\n // ```\n // allowing only nodes with `.local`?\n // @ts-expect-error todo(flow->ts)\n gatherNodeParts(node.local, parts);\n } else if (\n isLiteral(node) &&\n !isNullLiteral(node) &&\n !isRegExpLiteral(node) &&\n !isTemplateLiteral(node)\n ) {\n parts.push(node.value);\n }\n break;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n case \"JSXMemberExpression\":\n gatherNodeParts(node.object, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"Identifier\":\n case \"JSXIdentifier\":\n parts.push(node.name);\n break;\n\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n case \"NewExpression\":\n gatherNodeParts(node.callee, parts);\n break;\n\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n for (const e of node.properties) {\n gatherNodeParts(e, parts);\n }\n break;\n\n case \"SpreadElement\":\n case \"RestElement\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"ObjectProperty\":\n case \"ObjectMethod\":\n case \"ClassProperty\":\n case \"ClassMethod\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n gatherNodeParts(node.key, parts);\n break;\n\n case \"ThisExpression\":\n parts.push(\"this\");\n break;\n\n case \"Super\":\n parts.push(\"super\");\n break;\n\n case \"Import\":\n case \"ImportExpression\":\n parts.push(\"import\");\n break;\n\n case \"DoExpression\":\n parts.push(\"do\");\n break;\n\n case \"YieldExpression\":\n parts.push(\"yield\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AwaitExpression\":\n parts.push(\"await\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AssignmentExpression\":\n gatherNodeParts(node.left, parts);\n break;\n\n case \"VariableDeclarator\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"FunctionExpression\":\n case \"FunctionDeclaration\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"PrivateName\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"ParenthesizedExpression\":\n gatherNodeParts(node.expression, parts);\n break;\n\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"MetaProperty\":\n gatherNodeParts(node.meta, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"JSXElement\":\n gatherNodeParts(node.openingElement, parts);\n break;\n\n case \"JSXOpeningElement\":\n gatherNodeParts(node.name, parts);\n break;\n\n case \"JSXFragment\":\n gatherNodeParts(node.openingFragment, parts);\n break;\n\n case \"JSXOpeningFragment\":\n parts.push(\"Fragment\");\n break;\n\n case \"JSXNamespacedName\":\n gatherNodeParts(node.namespace, parts);\n gatherNodeParts(node.name, parts);\n break;\n }\n}\n\nfunction resetScope(scope: Scope) {\n if (scope.path.type === \"Program\") {\n scope.referencesSet = new Set();\n scope.uidsSet = new Set();\n }\n\n scope.bindings = Object.create(null);\n scope.globals = Object.create(null);\n}\n\nfunction isAnonymousFunctionExpression(\n path: NodePath,\n): path is NodePath<t.FunctionExpression | t.ArrowFunctionExpression> {\n return (\n (path.isFunctionExpression() && !path.node.id) ||\n path.isArrowFunctionExpression()\n );\n}\n\ninterface CollectVisitorState {\n assignments: NodePath<t.AssignmentExpression>[];\n references: NodePath<t.Identifier | t.JSXIdentifier>[];\n constantViolations: NodePath<t.Node>[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n ForStatement(path) {\n const declar = path.get(\"init\");\n // delegate block scope handling to the `BlockScoped` method\n if (declar.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", declar);\n }\n },\n\n Declaration(path) {\n // delegate block scope handling to the `BlockScoped` method\n if (path.isBlockScoped()) return;\n\n // delegate import handing to the `ImportDeclaration` method\n if (path.isImportDeclaration()) return;\n\n // this will be hit again once we traverse into it after this iteration\n if (path.isExportDeclaration()) return;\n\n // we've ran into a declaration!\n const parent =\n path.scope.getFunctionParent() || path.scope.getProgramParent();\n parent.registerDeclaration(path);\n },\n\n ImportDeclaration(path) {\n // import may only appear in the top level or inside a module/namespace (for TS/flow)\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n TSImportEqualsDeclaration(path) {\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n ReferencedIdentifier(path, state) {\n if (t.isTSQualifiedName(path.parent) && path.parent.right === path.node) {\n return;\n }\n if (path.parentPath.isTSImportEqualsDeclaration()) return;\n state.references.push(path);\n },\n\n ForXStatement(path, state) {\n const left = path.get(\"left\");\n if (left.isPattern() || left.isIdentifier()) {\n state.constantViolations.push(path);\n }\n // delegate block scope handling to the `BlockScoped` method\n else if (left.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", left);\n }\n },\n\n ExportDeclaration: {\n exit(path) {\n const { node, scope } = path;\n // ExportAllDeclaration does not have `declaration`\n if (isExportAllDeclaration(node)) return;\n const declar = node.declaration;\n if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n const id = declar.id;\n if (!id) return;\n\n const binding = scope.getBinding(id.name);\n binding?.reference(path);\n } else if (isVariableDeclaration(declar)) {\n for (const decl of declar.declarations) {\n for (const name of Object.keys(getBindingIdentifiers(decl))) {\n const binding = scope.getBinding(name);\n binding?.reference(path);\n }\n }\n }\n },\n },\n\n LabeledStatement(path) {\n path.scope.getBlockParent().registerDeclaration(path);\n },\n\n AssignmentExpression(path, state) {\n state.assignments.push(path);\n },\n\n UpdateExpression(path, state) {\n state.constantViolations.push(path);\n },\n\n UnaryExpression(path, state) {\n if (path.node.operator === \"delete\") {\n state.constantViolations.push(path);\n }\n },\n\n BlockScoped(path) {\n let scope: Scope = path.scope;\n if (scope.path === path) scope = scope.parent!;\n\n const parent = scope.getBlockParent();\n parent.registerDeclaration(path);\n\n // Register class identifier in class' scope if this is a class declaration.\n if (path.isClassDeclaration() && path.node.id) {\n const id = path.node.id;\n const name = id.name;\n\n path.scope.bindings[name] = path.scope.parent!.getBinding(name)!;\n }\n },\n\n CatchClause(path) {\n path.scope.registerBinding(\"let\", path);\n },\n\n Function(path) {\n const params = path.get(\"params\");\n for (const param of params) {\n path.scope.registerBinding(\"param\", param);\n }\n\n // Register function expression id after params. When the id\n // collides with a function param, the id effectively can't be\n // referenced: here we registered it as a constantViolation\n if (path.isFunctionExpression() && path.node.id) {\n path.scope.registerBinding(\n \"local\",\n path.get(\"id\") as NodePath<t.Identifier>,\n path,\n );\n }\n },\n\n ClassExpression(path) {\n if (path.node.id) {\n path.scope.registerBinding(\n \"local\",\n path.get(\"id\") as NodePath<t.Identifier>,\n path,\n );\n }\n },\n\n TSTypeAnnotation(path) {\n path.skip();\n },\n};\n\nlet scopeVisitor: ExplodedVisitor<CollectVisitorState>;\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n uid;\n\n path!: NodePath;\n block!: t.Pattern | t.Scopable;\n\n inited!: boolean;\n\n labels!: Map<string, NodePath<t.LabeledStatement>>;\n bindings!: Record<string, Binding>;\n /** Only defined in the program scope */\n referencesSet?: Set<string>;\n globals!: Record<string, t.Identifier | t.JSXIdentifier>;\n /** Only defined in the program scope */\n uidsSet?: Set<string>;\n data!: Record<string | symbol, unknown>;\n crawling!: boolean;\n\n /**\n * This searches the current \"scope\" and collects all references/bindings\n * within.\n */\n constructor(path: NodePath<t.Pattern | t.Scopable>) {\n const { node } = path;\n const cached = scopeCache.get(node);\n // Sometimes, a scopable path is placed higher in the AST tree.\n // In these cases, have to create a new Scope.\n if (cached?.path === path) {\n return cached;\n }\n scopeCache.set(node, this);\n\n this.uid = uid++;\n\n this.block = node;\n this.path = path;\n\n this.labels = new Map();\n this.inited = false;\n }\n\n /**\n * Globals.\n */\n\n static globals = [...globalsBuiltinLower, ...globalsBuiltinUpper];\n\n /**\n * Variables available in current context.\n */\n\n static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n get parent() {\n let parent,\n path = this.path;\n do {\n // Skip method scope if coming from inside computed key or decorator expression\n const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n path = path.parentPath;\n if (shouldSkip && path.isMethod()) path = path.parentPath;\n if (path?.isScope()) parent = path;\n } while (path && !parent);\n\n return parent?.scope;\n }\n\n get references() {\n throw new Error(\n \"Scope#references is not available in Babel 8. Use Scope#referencesSet instead.\",\n );\n }\n\n get uids() {\n throw new Error(\n \"Scope#uids is not available in Babel 8. Use Scope#uidsSet instead.\",\n );\n }\n\n /**\n * Generate a unique identifier and add it to the current scope.\n */\n\n generateDeclaredUidIdentifier(name?: string) {\n const id = this.generateUidIdentifier(name);\n this.push({ id });\n return cloneNode(id);\n }\n\n /**\n * Generate a unique identifier.\n */\n\n generateUidIdentifier(name?: string) {\n return identifier(this.generateUid(name));\n }\n\n /**\n * Generate a unique `_id1` binding.\n */\n\n generateUid(name: string = \"temp\"): string {\n name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n let uid;\n let i = 0;\n do {\n uid = `_${name}`;\n\n // Ideally we would just use (i - 1) as the suffix, but that generates\n // unnecessary changes in every single file generated by Babel :)\n //\n // i: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...\n // suffix: (empty) 2 3 4 5 6 7 8 9 0 1 10 11 12 13 ...\n if (i >= 11) uid += i - 1;\n else if (i >= 9) uid += i - 9;\n else if (i >= 1) uid += i + 1;\n i++;\n } while (\n this.hasLabel(uid) ||\n this.hasBinding(uid) ||\n this.hasGlobal(uid) ||\n this.hasReference(uid)\n );\n\n const program = this.getProgramParent();\n\n program.referencesSet.add(uid);\n program.uidsSet.add(uid);\n\n return uid;\n }\n\n generateUidBasedOnNode(\n node: t.Node | undefined | null,\n defaultName?: string,\n ) {\n const parts: NodePart[] = [];\n gatherNodeParts(node, parts);\n\n let id = parts.join(\"$\");\n id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n return this.generateUid(id.slice(0, 20));\n }\n\n /**\n * Generate a unique identifier based on a node.\n */\n\n generateUidIdentifierBasedOnNode(\n node: t.Node | undefined | null,\n defaultName?: string,\n ) {\n return identifier(this.generateUidBasedOnNode(node, defaultName));\n }\n\n /**\n * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n * evaluating it won't result in potentially arbitrary code from being ran. The following are\n * allowed and determined not to cause side effects:\n *\n * - `this` expressions\n * - `super` expressions\n * - Bound identifiers\n */\n\n isStatic(node: t.Node | null): boolean {\n if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n return true;\n }\n\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (binding) {\n return binding.constant;\n } else {\n return this.hasBinding(node.name);\n }\n }\n\n return false;\n }\n\n /**\n * Possibly generate a memoised identifier if it is not static and has consequences.\n */\n\n maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n if (this.isStatic(node)) {\n return null;\n } else {\n const id = this.generateUidIdentifierBasedOnNode(node);\n if (!dontPush) {\n this.push({ id });\n return cloneNode(id);\n }\n return id;\n }\n }\n\n checkBlockScopedCollisions(\n local: Binding,\n kind: BindingKind,\n name: string,\n id: any,\n ) {\n // ignore parameters\n if (kind === \"param\") return;\n\n // Ignore existing binding if it's the name of the current function or\n // class expression\n if (local.kind === \"local\") return;\n\n const duplicate =\n // don't allow duplicate bindings to exist alongside\n kind === \"let\" ||\n local.kind === \"let\" ||\n local.kind === \"const\" ||\n local.kind === \"module\" ||\n // don't allow a local of param with a kind of let\n (local.kind === \"param\" && kind === \"const\");\n\n if (duplicate) {\n throw this.path.hub.buildError(\n id,\n `Duplicate declaration \"${name}\"`,\n TypeError,\n );\n }\n }\n\n rename(oldName: string, newName?: string) {\n const binding = this.getBinding(oldName);\n if (binding) {\n newName ||= this.generateUidIdentifier(oldName).name;\n const renamer = new Renamer(binding, oldName, newName);\n\n renamer.rename();\n }\n }\n\n dump() {\n const sep = \"-\".repeat(60);\n console.log(sep);\n let scope: Scope | undefined = this;\n do {\n console.log(\"#\", scope.block.type);\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n console.log(\" -\", name, {\n constant: binding.constant,\n references: binding.references,\n violations: binding.constantViolations.length,\n kind: binding.kind,\n });\n }\n } while ((scope = scope.parent));\n console.log(sep);\n }\n\n hasLabel(name: string) {\n return !!this.getLabel(name);\n }\n\n getLabel(name: string) {\n return this.labels.get(name);\n }\n\n registerLabel(path: NodePath<t.LabeledStatement>) {\n this.labels.set(path.node.label.name, path);\n }\n\n registerDeclaration(path: NodePath<t.Node>) {\n if (path.isLabeledStatement()) {\n this.registerLabel(path);\n } else if (path.isFunctionDeclaration()) {\n this.registerBinding(\n \"hoisted\",\n path.get(\"id\") as NodePath<t.Identifier>,\n path,\n );\n } else if (path.isVariableDeclaration()) {\n const declarations = path.get(\"declarations\");\n const { kind } = path.node;\n for (const declar of declarations) {\n this.registerBinding(\n kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n declar,\n );\n }\n } else if (path.isClassDeclaration()) {\n if (path.node.declare) return;\n this.registerBinding(\"let\", path);\n } else if (path.isImportDeclaration()) {\n const isTypeDeclaration =\n path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n const specifiers = path.get(\"specifiers\");\n for (const specifier of specifiers) {\n const isTypeSpecifier =\n isTypeDeclaration ||\n (specifier.isImportSpecifier() &&\n (specifier.node.importKind === \"type\" ||\n specifier.node.importKind === \"typeof\"));\n\n this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n }\n } else if (path.isExportDeclaration()) {\n // todo: improve babel-types\n const declar = path.get(\"declaration\") as NodePath;\n if (\n declar.isClassDeclaration() ||\n declar.isFunctionDeclaration() ||\n declar.isVariableDeclaration()\n ) {\n this.registerDeclaration(declar);\n }\n } else {\n this.registerBinding(\"unknown\", path);\n }\n }\n\n registerConstantViolation(path: NodePath<t.Node>) {\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n this.getBinding(name)?.reassign(path);\n }\n }\n\n registerBinding(\n kind: Binding[\"kind\"],\n path: NodePath<t.Node>,\n bindingPath: NodePath<t.Node> = path,\n ) {\n if (!kind) throw new ReferenceError(\"no `kind`\");\n\n if (path.isVariableDeclaration()) {\n const declarators = path.get(\"declarations\");\n for (const declar of declarators) {\n this.registerBinding(kind, declar);\n }\n return;\n }\n\n const parent = this.getProgramParent();\n const ids = path.getOuterBindingIdentifiers(true);\n\n for (const name of Object.keys(ids)) {\n parent.referencesSet.add(name);\n\n for (const id of ids[name]) {\n const local = this.getOwnBinding(name);\n\n if (local) {\n // same identifier so continue safely as we're likely trying to register it\n // multiple times\n if (local.identifier === id) continue;\n\n this.checkBlockScopedCollisions(local, kind, name, id);\n }\n\n // A redeclaration of an existing variable is a modification\n if (local) {\n local.reassign(bindingPath);\n } else {\n this.bindings[name] = new Binding({\n identifier: id,\n scope: this,\n path: bindingPath,\n kind: kind,\n });\n }\n }\n }\n }\n\n addGlobal(node: t.Identifier | t.JSXIdentifier) {\n this.globals[node.name] = node;\n }\n\n hasUid(name: string): boolean {\n return this.getProgramParent().uidsSet.has(name);\n }\n\n hasGlobal(name: string): boolean {\n let scope: Scope | undefined = this;\n\n do {\n if (scope.globals[name]) return true;\n } while ((scope = scope.parent));\n\n return false;\n }\n\n hasReference(name: string): boolean {\n return this.getProgramParent().referencesSet.has(name);\n }\n\n isPure(node: t.Node | null | undefined, constantsOnly?: boolean): boolean {\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (!binding) return false;\n if (constantsOnly) return binding.constant;\n return true;\n } else if (\n isThisExpression(node) ||\n isMetaProperty(node) ||\n isTopicReference(node) ||\n isPrivateName(node)\n ) {\n return true;\n } else if (isClass(node)) {\n if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n return false;\n }\n // @ts-expect-error comparing undefined and number\n if (node.decorators?.length > 0) {\n return false;\n }\n return this.isPure(node.body, constantsOnly);\n } else if (isClassBody(node)) {\n for (const method of node.body) {\n if (!this.isPure(method, constantsOnly)) return false;\n }\n return true;\n } else if (isBinary(node)) {\n return (\n this.isPure(node.left, constantsOnly) &&\n this.isPure(node.right, constantsOnly)\n );\n } else if (isArrayExpression(node)) {\n for (const elem of node.elements) {\n if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n }\n return true;\n } else if (isObjectExpression(node)) {\n for (const prop of node.properties) {\n if (!this.isPure(prop, constantsOnly)) return false;\n }\n return true;\n } else if (isMethod(node)) {\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n // @ts-expect-error comparing undefined and number\n if (node.decorators?.length > 0) {\n return false;\n }\n return true;\n } else if (isProperty(node)) {\n // @ts-expect-error todo(flow->ts): computed in not present on private properties\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n // @ts-expect-error comparing undefined and number\n if (node.decorators?.length > 0) {\n return false;\n }\n if (isObjectProperty(node) || node.static) {\n if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n return false;\n }\n }\n return true;\n } else if (isUnaryExpression(node)) {\n return this.isPure(node.argument, constantsOnly);\n } else if (isTemplateLiteral(node)) {\n for (const expression of node.expressions) {\n if (!this.isPure(expression, constantsOnly)) return false;\n }\n return true;\n } else if (isTaggedTemplateExpression(node)) {\n return (\n matchesPattern(node.tag, \"String.raw\") &&\n !this.hasBinding(\"String\", { noGlobals: true }) &&\n this.isPure(node.quasi, constantsOnly)\n );\n } else if (isMemberExpression(node)) {\n return (\n !node.computed &&\n isIdentifier(node.object) &&\n node.object.name === \"Symbol\" &&\n isIdentifier(node.property) &&\n node.property.name !== \"for\" &&\n !this.hasBinding(\"Symbol\", { noGlobals: true })\n );\n } else if (isCallExpression(node)) {\n return (\n matchesPattern(node.callee, \"Symbol.for\") &&\n !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n node.arguments.length === 1 &&\n t.isStringLiteral(node.arguments[0])\n );\n } else {\n return isPureish(node);\n }\n }\n\n /**\n * Set some arbitrary data on the current scope.\n */\n\n setData(key: string | symbol, val: any) {\n return (this.data[key] = val);\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key`.\n */\n\n getData(key: string | symbol): any {\n let scope: Scope | undefined = this;\n do {\n const data = scope.data[key];\n if (data != null) return data;\n } while ((scope = scope.parent));\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key` and if it exists,\n * remove it.\n */\n\n removeData(key: string) {\n let scope: Scope | undefined = this;\n do {\n const data = scope.data[key];\n if (data != null) scope.data[key] = null;\n } while ((scope = scope.parent));\n }\n\n init() {\n if (!this.inited) {\n this.inited = true;\n this.crawl();\n }\n }\n\n crawl() {\n const path = this.path;\n\n resetScope(this);\n this.data = Object.create(null);\n\n let scope: Scope | undefined = this;\n do {\n if (scope.crawling) return;\n if (scope.path.isProgram()) {\n break;\n }\n } while ((scope = scope.parent));\n\n const programParent = scope!;\n\n const state: CollectVisitorState = {\n references: [],\n constantViolations: [],\n assignments: [],\n };\n\n this.crawling = true;\n scopeVisitor ||= traverse.visitors.merge([\n {\n Scope(path) {\n resetScope(path.scope);\n },\n },\n collectorVisitor,\n ]);\n // traverse does not visit the root node, here we explicitly collect\n // root node binding info when the root is not a Program.\n if (path.type !== \"Program\") {\n const typeVisitors = scopeVisitor[path.type];\n if (typeVisitors) {\n for (const visit of typeVisitors.enter!) {\n (visit as Function).call(state, path, state);\n }\n }\n }\n\n traverseForScope(path, scopeVisitor as Visitor, state);\n\n this.crawling = false;\n\n // register assignments\n for (const path of state.assignments) {\n // register undeclared bindings as globals\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n if (path.scope.getBinding(name)) continue;\n programParent.addGlobal(ids[name]);\n }\n\n // register as constant violation\n path.scope.registerConstantViolation(path);\n }\n\n // register references\n for (const ref of state.references) {\n const binding = ref.scope.getBinding(ref.node.name);\n if (binding) {\n binding.reference(ref);\n } else {\n programParent.addGlobal(ref.node);\n }\n }\n\n // register constant violations\n for (const path of state.constantViolations) {\n path.scope.registerConstantViolation(path);\n }\n }\n\n push(opts: {\n id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n init?: t.Expression;\n unique?: boolean;\n _blockHoist?: number | undefined;\n kind?: \"var\" | \"let\" | \"const\";\n }) {\n let path = this.path;\n\n if (path.isPattern()) {\n path = this.getPatternParent().path;\n } else if (!path.isBlockStatement() && !path.isProgram()) {\n path = this.getBlockParent().path;\n }\n\n if (path.isSwitchStatement()) {\n path = (this.getFunctionParent() || this.getProgramParent()).path;\n }\n\n const { init, unique, kind = \"var\", id } = opts;\n\n // When injecting a non-const non-initialized binding inside\n // an IIFE, if the number of call arguments is less than or\n // equal to the number of function parameters, we can safely\n // inject the binding into the parameter list.\n if (\n !init &&\n !unique &&\n (kind === \"var\" || kind === \"let\") &&\n isAnonymousFunctionExpression(path) &&\n isCallExpression(path.parent, { callee: path.node }) &&\n path.parent.arguments.length <= path.node.params.length &&\n isIdentifier(id)\n ) {\n path.pushContainer(\"params\", id);\n path.scope.registerBinding(\n \"param\",\n path.get(\"params\")[path.node.params.length - 1],\n );\n return;\n }\n\n if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n path.ensureBlock();\n path = path.get(\"body\");\n }\n\n const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n const dataKey = `declaration:${kind}:${blockHoist}`;\n let declarPath = !unique && path.getData(dataKey);\n\n if (!declarPath) {\n const declar = variableDeclaration(kind, []);\n // @ts-expect-error todo(flow->ts): avoid modifying nodes\n declar._blockHoist = blockHoist;\n\n [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n \"body\",\n [declar],\n );\n if (!unique) path.setData(dataKey, declarPath);\n }\n\n const declarator = variableDeclarator(id, init);\n const len = declarPath.node.declarations.push(declarator);\n path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n }\n\n /**\n * Walk up to the top of the scope tree and get the `Program`.\n */\n\n getProgramParent(): Scope & {\n referencesSet: Set<string>;\n uidsSet: Set<string>;\n } {\n let scope: Scope | undefined = this;\n do {\n if (scope.path.isProgram()) {\n return scope as Scope & {\n referencesSet: Set<string>;\n uidsSet: Set<string>;\n };\n }\n } while ((scope = scope.parent));\n throw new Error(\"Couldn't find a Program\");\n }\n\n /**\n * Walk up the scope tree until we hit either a Function or return null.\n */\n\n getFunctionParent(): Scope | null {\n let scope: Scope | undefined = this;\n do {\n if (scope.path.isFunctionParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n return null;\n }\n\n /**\n * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n * very top and hit Program.\n */\n\n getBlockParent() {\n let scope: Scope | undefined = this;\n do {\n if (scope.path.isBlockParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n * then returns its block parent\n * @returns An ancestry scope whose path is a block parent\n */\n getPatternParent() {\n let scope: Scope | undefined = this;\n do {\n if (!scope.path.isPattern()) {\n return scope.getBlockParent();\n }\n } while ((scope = scope.parent!.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walks the scope tree and gathers **all** bindings.\n */\n\n getAllBindings(): Record<string, Binding> {\n const ids = Object.create(null);\n\n let scope: Scope | undefined = this;\n do {\n for (const key of Object.keys(scope.bindings)) {\n if (key in ids === false) {\n ids[key] = scope.bindings[key];\n }\n }\n scope = scope.parent;\n } while (scope);\n\n return ids;\n }\n\n bindingIdentifierEquals(name: string, node: t.Node): boolean {\n return this.getBindingIdentifier(name) === node;\n }\n\n getBinding(name: string): Binding | undefined {\n let scope: Scope | undefined = this;\n let previousPath;\n\n do {\n const binding = scope.getOwnBinding(name);\n if (binding) {\n // Check if a pattern is a part of parameter expressions.\n // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n // or `local`-kind (as id in function expression),\n // then it must be defined inside the function body, thus it should be skipped\n if (\n previousPath?.isPattern() &&\n binding.kind !== \"param\" &&\n binding.kind !== \"local\"\n ) {\n // do nothing\n } else {\n return binding;\n }\n } else if (\n !binding &&\n name === \"arguments\" &&\n scope.path.isFunction() &&\n !scope.path.isArrowFunctionExpression()\n ) {\n break;\n }\n previousPath = scope.path;\n } while ((scope = scope.parent));\n }\n\n getOwnBinding(name: string): Binding | undefined {\n return this.bindings[name];\n }\n\n getBindingIdentifier(name: string): t.Identifier | undefined {\n return this.getBinding(name)?.identifier;\n }\n\n getOwnBindingIdentifier(name: string): t.Identifier | undefined {\n const binding = this.bindings[name];\n return binding?.identifier;\n }\n\n hasOwnBinding(name: string) {\n return !!this.getOwnBinding(name);\n }\n\n // By default, we consider generated UIDs as bindings.\n // This is because they are almost always used to declare variables,\n // and since the scope isn't always up-to-date it's better to assume that\n // there is a variable with that name. The `noUids` option can be used to\n // turn off this behavior, for example if you know that the generate UID\n // was used to declare a variable in a different scope.\n hasBinding(\n name: string,\n opts?:\n | boolean\n | { noGlobals?: boolean; noUids?: boolean; upToScope?: Scope },\n ) {\n if (!name) return false;\n // TODO: Only accept the object form.\n let noGlobals;\n let noUids;\n let upToScope;\n if (typeof opts === \"object\") {\n noGlobals = opts.noGlobals;\n noUids = opts.noUids;\n upToScope = opts.upToScope;\n } else if (typeof opts === \"boolean\") {\n noGlobals = opts;\n }\n let scope: Scope | undefined = this;\n do {\n if (upToScope === scope) {\n break;\n }\n if (scope.hasOwnBinding(name)) {\n return true;\n }\n } while ((scope = scope.parent));\n\n if (!noUids && this.hasUid(name)) return true;\n if (!noGlobals && Scope.globals.includes(name)) return true;\n if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n return false;\n }\n\n parentHasBinding(\n name: string,\n opts?: { noGlobals?: boolean; noUids?: boolean },\n ) {\n return this.parent?.hasBinding(name, opts);\n }\n\n /**\n * Move a binding of `name` to another `scope`.\n */\n\n moveBindingTo(name: string, scope: Scope) {\n const info = this.getBinding(name);\n if (info) {\n info.scope.removeOwnBinding(name);\n info.scope = scope;\n scope.bindings[name] = info;\n }\n }\n\n removeOwnBinding(name: string) {\n delete this.bindings[name];\n }\n\n removeBinding(name: string) {\n // clear literal binding\n this.getBinding(name)?.scope.removeOwnBinding(name);\n\n // clear uids with this name - https://github.com/babel/babel/issues/2101\n\n this.getProgramParent().uidsSet.delete(name);\n }\n\n /**\n * Hoist all the `var` variable to the beginning of the function/program\n * scope where their binding will be actually defined. For exmaple,\n * { var x = 2 }\n * will be transformed to\n * var x; { x = 2 }\n *\n * @param emit A custom function to emit `var` declarations, for example to\n * emit them in a different scope.\n */\n hoistVariables(\n emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n this.push({ id }),\n ) {\n this.crawl();\n\n const seen = new Set();\n for (const name of Object.keys(this.bindings)) {\n const binding = this.bindings[name];\n if (!binding) continue;\n const { path } = binding;\n if (!path.isVariableDeclarator()) continue;\n const { parent, parentPath } = path;\n\n if (parent.kind !== \"var\" || seen.has(parent)) continue;\n seen.add(path.parent);\n\n let firstId;\n const init = [];\n for (const decl of parent.declarations) {\n firstId ??= decl.id;\n if (decl.init) {\n init.push(\n assignmentExpression(\n \"=\",\n // var declarator must not be a void pattern\n decl.id as Exclude<t.VariableDeclarator[\"id\"], t.VoidPattern>,\n decl.init,\n ),\n );\n }\n\n const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n for (const name of ids) {\n emit(identifier(name), decl.init != null);\n }\n }\n\n // for (var i in test)\n if (parentPath.parentPath.isForXStatement({ left: parent })) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n parentPath.replaceWith(firstId!);\n } else if (init.length === 0) {\n parentPath.remove();\n } else {\n const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n if (parentPath.parentPath.isForStatement({ init: parent })) {\n parentPath.replaceWith(expr);\n } else {\n parentPath.replaceWith(expressionStatement(expr));\n }\n }\n }\n }\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n export type Binding = _Binding;\n}\n","// This file contains that retrieve or validate anything related to the current paths ancestry.\n\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\n\n/**\n * Starting at the parent path of the current `NodePath` and going up the\n * tree, return the first `NodePath` that causes the provided `callback`\n * to return a truthy value, or `null` if the `callback` never returns a\n * truthy value.\n */\n\nexport function findParent(\n this: NodePath<t.Node | null>,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n while ((path = path.parentPath)) {\n if (callback(path)) return path;\n }\n return null;\n}\n\n/**\n * Starting at current `NodePath` and going up the tree, return the first\n * `NodePath` that causes the provided `callback` to return a truthy value,\n * or `null` if the `callback` never returns a truthy value.\n */\n\nexport function find(\n this: NodePath,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n do {\n if (callback(path)) return path;\n } while ((path = path.parentPath));\n return null;\n}\n\n/**\n * Get the parent function of the current path.\n */\n\nexport function getFunctionParent(\n this: NodePath<t.Node | null>,\n): NodePath<t.Function> | null {\n return this.findParent(p => p.isFunction()) as NodePath<t.Function> | null;\n}\n\n/**\n * Walk up the tree until we hit a parent node path in a list.\n */\n\nexport function getStatementParent(\n this: NodePath<t.Node | null>,\n): NodePath<t.Statement> {\n let path = this;\n\n do {\n if (\n !path.parentPath ||\n (Array.isArray(path.container) && path.isStatement())\n ) {\n break;\n } else {\n path = path.parentPath;\n }\n } while (path);\n\n if (path && (path.isProgram() || path.isFile())) {\n throw new Error(\n \"File/Program node, we can't possibly find a statement parent to this\",\n );\n }\n\n return path as NodePath<t.Statement>;\n}\n\n/**\n * Get the deepest common ancestor and then from it, get the earliest relationship path\n * to that ancestor.\n *\n * Earliest is defined as being \"before\" all the other nodes in terms of list container\n * position and visiting key.\n */\n\nexport function getEarliestCommonAncestorFrom(\n this: NodePath,\n paths: NodePath[],\n): NodePath {\n return this.getDeepestCommonAncestorFrom(\n paths,\n function (deepest, i, ancestries) {\n let earliest;\n const keys = VISITOR_KEYS[deepest.type];\n\n for (const ancestry of ancestries) {\n const path = ancestry[i + 1];\n\n // first path\n if (!earliest) {\n earliest = path;\n continue;\n }\n\n // handle containers\n if (path.listKey && earliest.listKey === path.listKey) {\n // we're in the same container so check if we're earlier\n if (path.key! < earliest.key!) {\n earliest = path;\n continue;\n }\n }\n\n // handle keys\n const earliestKeyIndex = keys.indexOf(earliest.parentKey);\n const currentKeyIndex = keys.indexOf(path.parentKey);\n if (earliestKeyIndex > currentKeyIndex) {\n // key appears before so it's earlier\n earliest = path;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return earliest!;\n },\n );\n}\n\n/**\n * Get the earliest path in the tree where the provided `paths` intersect.\n *\n * TODO: Possible optimisation target.\n */\n\nexport function getDeepestCommonAncestorFrom(\n this: NodePath,\n paths: NodePath[],\n filter?: (deepest: NodePath, i: number, ancestries: NodePath[][]) => NodePath,\n): NodePath {\n if (!paths.length) {\n return this;\n }\n\n if (paths.length === 1) {\n return paths[0];\n }\n\n // minimum depth of the tree so we know the highest node\n let minDepth = Infinity;\n\n // last common ancestor\n let lastCommonIndex, lastCommon;\n\n // get the ancestors of the path, breaking when the parent exceeds ourselves\n const ancestries = paths.map(path => {\n const ancestry: NodePath[] = [];\n\n do {\n ancestry.unshift(path);\n } while ((path = path.parentPath) && path !== this);\n\n // save min depth to avoid going too far in\n if (ancestry.length < minDepth) {\n minDepth = ancestry.length;\n }\n\n return ancestry;\n });\n\n // get the first ancestry so we have a seed to assess all other ancestries with\n const first = ancestries[0];\n\n // check ancestor equality\n depthLoop: for (let i = 0; i < minDepth; i++) {\n const shouldMatch = first[i];\n\n for (const ancestry of ancestries) {\n if (ancestry[i] !== shouldMatch) {\n // we've hit a snag\n break depthLoop;\n }\n }\n\n // next iteration may break so store these so they can be returned\n lastCommonIndex = i;\n lastCommon = shouldMatch;\n }\n\n if (lastCommon) {\n if (filter) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return filter(lastCommon, lastCommonIndex!, ancestries);\n } else {\n return lastCommon;\n }\n } else {\n throw new Error(\"Couldn't find intersection\");\n }\n}\n\n/**\n * Build an array of node paths containing the entire ancestry of the current node path.\n *\n * NOTE: The current node path is included in this.\n */\n\nexport function getAncestry(this: NodePath): NodePath[] {\n let path = this;\n const paths = [];\n do {\n paths.push(path);\n } while ((path = path.parentPath));\n return paths;\n}\n\n/**\n * A helper to find if `this` path is an ancestor of @param maybeDescendant\n */\nexport function isAncestor(this: NodePath, maybeDescendant: NodePath): boolean {\n return maybeDescendant.isDescendant(this);\n}\n\n/**\n * A helper to find if `this` path is a descendant of @param maybeAncestor\n */\nexport function isDescendant(this: NodePath, maybeAncestor: NodePath): boolean {\n return !!this.findParent(parent => parent === maybeAncestor);\n}\n\nexport function inType(this: NodePath, ...candidateTypes: string[]): boolean {\n let path = this;\n while (path) {\n if (candidateTypes.includes(path.node.type)) return true;\n path = path.parentPath;\n }\n\n return false;\n}\n","import {\n createFlowUnionType,\n createTSUnionType,\n isFlowType,\n isTSType,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function createUnionType(\n types: (t.FlowType | t.TSType)[],\n): t.FlowType | t.TSType | undefined {\n if (types.every(v => isFlowType(v))) {\n return createFlowUnionType(types);\n }\n if (types.every(v => isTSType(v))) {\n return createTSUnionType(types);\n }\n}\n","import type NodePath from \"../index.ts\";\nimport {\n BOOLEAN_NUMBER_BINARY_OPERATORS,\n createTypeAnnotationBasedOnTypeof,\n numberTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Binding from \"../../scope/binding.ts\";\n\nimport { createUnionType } from \"./util.ts\";\n\nexport default function (this: NodePath<t.Identifier>, node: t.Identifier) {\n if (!this.isReferenced()) return;\n\n // check if a binding exists of this value and if so then return a union type of all\n // possible types that the binding could be\n const binding = this.scope.getBinding(node.name);\n if (binding) {\n if (binding.identifier.typeAnnotation) {\n return binding.identifier.typeAnnotation;\n } else {\n return getTypeAnnotationBindingConstantViolations(\n binding,\n this,\n node.name,\n );\n }\n }\n\n // built-in values\n if (node.name === \"undefined\") {\n return voidTypeAnnotation();\n } else if (node.name === \"NaN\" || node.name === \"Infinity\") {\n return numberTypeAnnotation();\n } else if (node.name === \"arguments\") {\n // todo\n }\n}\n\nfunction getTypeAnnotationBindingConstantViolations(\n binding: Binding,\n path: NodePath<t.Identifier>,\n name: string,\n) {\n const types = [];\n\n const functionConstantViolations: NodePath[] = [];\n let constantViolations = getConstantViolationsBefore(\n binding,\n path,\n functionConstantViolations,\n );\n\n const testType = getConditionalAnnotation(binding, path, name);\n if (testType) {\n const testConstantViolations = getConstantViolationsBefore(\n binding,\n testType.ifStatement,\n );\n\n // remove constant violations observed before the IfStatement\n constantViolations = constantViolations.filter(\n path => !testConstantViolations.includes(path),\n );\n\n // clear current types and add in observed test type\n types.push(testType.typeAnnotation);\n }\n\n if (constantViolations.length) {\n // pick one constant from each scope which will represent the last possible\n // control flow path that it could've taken/been\n /* This code is broken for the following problems:\n * It thinks that assignments can only happen in scopes.\n * What about conditionals, if statements without block,\n * or guarded assignments.\n * It also checks to see if one of the assignments is in the\n * same scope and uses that as the only \"violation\". However,\n * the binding is returned by `getConstantViolationsBefore` so we for\n * sure always going to return that as the only \"violation\".\n let rawConstantViolations = constantViolations.reverse();\n let visitedScopes = [];\n constantViolations = [];\n for (let violation of (rawConstantViolations: Array<NodePath>)) {\n let violationScope = violation.scope;\n if (visitedScopes.indexOf(violationScope) >= 0) continue;\n\n visitedScopes.push(violationScope);\n constantViolations.push(violation);\n\n if (violationScope === path.scope) {\n constantViolations = [violation];\n break;\n }\n }*/\n\n // add back on function constant violations since we can't track calls\n constantViolations.push(...functionConstantViolations);\n\n // push on inferred types of violated paths\n for (const violation of constantViolations) {\n types.push(violation.getTypeAnnotation());\n }\n }\n\n if (!types.length) {\n return;\n }\n\n return createUnionType(types);\n}\n\nfunction getConstantViolationsBefore(\n binding: Binding,\n path: NodePath,\n functions?: NodePath[],\n) {\n const violations = binding.constantViolations.slice();\n violations.unshift(binding.path);\n return violations.filter(violation => {\n violation = violation.resolve();\n const status = violation._guessExecutionStatusRelativeTo(path);\n if (functions && status === \"unknown\") functions.push(violation);\n return status === \"before\";\n });\n}\n\nfunction inferAnnotationFromBinaryExpression(\n name: string | undefined,\n path: NodePath<t.BinaryExpression>,\n) {\n const operator = path.node.operator;\n\n const right = path.get(\"right\").resolve();\n const left = path.get(\"left\").resolve();\n\n let target;\n if (left.isIdentifier({ name })) {\n target = right;\n } else if (right.isIdentifier({ name })) {\n target = left;\n }\n\n if (target) {\n if (operator === \"===\") {\n return target.getTypeAnnotation();\n }\n if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n }\n\n return;\n }\n\n if (operator !== \"===\" && operator !== \"==\") return;\n\n let typeofPath: NodePath<t.UnaryExpression>;\n let typePath: NodePath<t.Expression>;\n if (left.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = left;\n typePath = right as NodePath<t.Expression>;\n } else if (right.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = right;\n typePath = left as NodePath<t.Expression>;\n }\n\n if (!typeofPath!) return;\n // and that the argument of the typeof path references us!\n if (!typeofPath.get(\"argument\").isIdentifier({ name })) return;\n\n // ensure that the type path is a Literal\n typePath = typePath!.resolve() as NodePath<t.Expression>;\n if (!typePath.isLiteral()) return;\n\n // and that it's a string so we can infer it\n // @ts-expect-error todo(flow->ts): value is not defined for NullLiteral and some other\n const typeValue = typePath.node.value;\n if (typeof typeValue !== \"string\") return;\n\n // turn type value into a type annotation\n // @ts-expect-error todo(flow->ts): move validation from helper or relax type constraint to just a string\n return createTypeAnnotationBasedOnTypeof(typeValue);\n}\n\nfunction getParentConditionalPath(\n binding: Binding,\n path: NodePath,\n name: string,\n) {\n let parentPath;\n while ((parentPath = path.parentPath)) {\n if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {\n if (path.key === \"test\") {\n return;\n }\n\n return parentPath as NodePath<t.IfStatement | t.ConditionalExpression>;\n }\n if (parentPath.isFunction()) {\n if (\n name == null ||\n parentPath.parentPath.scope.getBinding(name) !== binding\n )\n return;\n }\n\n path = parentPath;\n }\n}\n\nfunction getConditionalAnnotation<T extends t.Node>(\n binding: Binding,\n path: NodePath<T>,\n name: string,\n):\n | {\n typeAnnotation: t.FlowType | t.TSType;\n ifStatement: NodePath<t.IfStatement | t.ConditionalExpression>;\n }\n | undefined {\n const ifStatement = getParentConditionalPath(binding, path, name);\n if (!ifStatement) return;\n\n const test = ifStatement.get(\"test\");\n const paths = [test];\n const types = [];\n\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n\n if (path.isLogicalExpression()) {\n if (path.node.operator === \"&&\") {\n paths.push(path.get(\"left\"));\n paths.push(path.get(\"right\"));\n }\n } else if (path.isBinaryExpression()) {\n const type = inferAnnotationFromBinaryExpression(name, path);\n if (type) types.push(type);\n }\n }\n\n if (types.length) {\n return {\n typeAnnotation: createUnionType(types)!,\n ifStatement,\n };\n }\n\n return getConditionalAnnotation(binding, ifStatement, name);\n}\n","import {\n BOOLEAN_BINARY_OPERATORS,\n BOOLEAN_UNARY_OPERATORS,\n NUMBER_BINARY_OPERATORS,\n NUMBER_UNARY_OPERATORS,\n STRING_UNARY_OPERATORS,\n anyTypeAnnotation,\n arrayTypeAnnotation,\n booleanTypeAnnotation,\n buildMatchMemberExpression,\n genericTypeAnnotation,\n identifier,\n nullLiteralTypeAnnotation,\n numberTypeAnnotation,\n stringTypeAnnotation,\n tupleTypeAnnotation,\n unionTypeAnnotation,\n voidTypeAnnotation,\n isIdentifier,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport { default as Identifier } from \"./inferer-reference.ts\";\n\nimport { createUnionType } from \"./util.ts\";\nimport type NodePath from \"../index.ts\";\n\nexport function VariableDeclarator(this: NodePath<t.VariableDeclarator>) {\n if (!this.get(\"id\").isIdentifier()) return;\n return this.get(\"init\").getTypeAnnotation();\n}\n\nexport function TypeCastExpression(node: t.TypeCastExpression) {\n return node.typeAnnotation;\n}\n\nTypeCastExpression.validParent = true;\n\nexport function TSAsExpression(node: t.TSAsExpression) {\n return node.typeAnnotation;\n}\n\nTSAsExpression.validParent = true;\n\nexport function TSNonNullExpression(this: NodePath<t.TSNonNullExpression>) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function NewExpression(\n this: NodePath<t.NewExpression>,\n node: t.NewExpression,\n) {\n if (node.callee.type === \"Identifier\") {\n // only resolve identifier callee\n return genericTypeAnnotation(node.callee);\n }\n}\n\nexport function TemplateLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function UnaryExpression(node: t.UnaryExpression) {\n const operator = node.operator;\n\n if (operator === \"void\") {\n return voidTypeAnnotation();\n } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (STRING_UNARY_OPERATORS.includes(operator)) {\n return stringTypeAnnotation();\n } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n }\n}\n\nexport function BinaryExpression(\n this: NodePath<t.BinaryExpression>,\n node: t.BinaryExpression,\n) {\n const operator = node.operator;\n\n if (NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n } else if (operator === \"+\") {\n const right = this.get(\"right\");\n const left = this.get(\"left\");\n\n if (left.isBaseType(\"number\") && right.isBaseType(\"number\")) {\n // both numbers so this will be a number\n return numberTypeAnnotation();\n } else if (left.isBaseType(\"string\") || right.isBaseType(\"string\")) {\n // one is a string so the result will be a string\n return stringTypeAnnotation();\n }\n\n // unsure if left and right are strings or numbers so stay on the safe side\n return unionTypeAnnotation([\n stringTypeAnnotation(),\n numberTypeAnnotation(),\n ]);\n }\n}\n\nexport function LogicalExpression(this: NodePath<t.LogicalExpression>) {\n const argumentTypes = [\n this.get(\"left\").getTypeAnnotation(),\n this.get(\"right\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function ConditionalExpression(this: NodePath<t.ConditionalExpression>) {\n const argumentTypes = [\n this.get(\"consequent\").getTypeAnnotation(),\n this.get(\"alternate\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function SequenceExpression(this: NodePath<t.SequenceExpression>) {\n return this.get(\"expressions\").pop()!.getTypeAnnotation();\n}\n\nexport function ParenthesizedExpression(\n this: NodePath<t.ParenthesizedExpression>,\n) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function AssignmentExpression(this: NodePath<t.AssignmentExpression>) {\n return this.get(\"right\").getTypeAnnotation();\n}\n\nexport function UpdateExpression(\n this: NodePath<t.UpdateExpression>,\n node: t.UpdateExpression,\n) {\n const operator = node.operator;\n if (operator === \"++\" || operator === \"--\") {\n return numberTypeAnnotation();\n }\n}\n\nexport function StringLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function NumericLiteral() {\n return numberTypeAnnotation();\n}\n\nexport function BooleanLiteral() {\n return booleanTypeAnnotation();\n}\n\nexport function NullLiteral() {\n return nullLiteralTypeAnnotation();\n}\n\nexport function RegExpLiteral() {\n return genericTypeAnnotation(identifier(\"RegExp\"));\n}\n\nexport function ObjectExpression() {\n return genericTypeAnnotation(identifier(\"Object\"));\n}\n\nexport function ArrayExpression() {\n return genericTypeAnnotation(identifier(\"Array\"));\n}\n\nexport function RestElement() {\n return ArrayExpression();\n}\n\nRestElement.validParent = true;\n\nfunction Func() {\n return genericTypeAnnotation(identifier(\"Function\"));\n}\n\nexport {\n Func as FunctionExpression,\n Func as ArrowFunctionExpression,\n Func as FunctionDeclaration,\n Func as ClassExpression,\n Func as ClassDeclaration,\n};\n\nconst isArrayFrom = buildMatchMemberExpression(\"Array.from\");\nconst isObjectKeys = buildMatchMemberExpression(\"Object.keys\");\nconst isObjectValues = buildMatchMemberExpression(\"Object.values\");\nconst isObjectEntries = buildMatchMemberExpression(\"Object.entries\");\nexport function CallExpression(this: NodePath<t.CallExpression>) {\n const { callee } = this.node;\n if (isObjectKeys(callee)) {\n return arrayTypeAnnotation(stringTypeAnnotation());\n } else if (\n isArrayFrom(callee) ||\n isObjectValues(callee) ||\n // Detect \"var foo = Array()\" calls so we can optimize for arrays vs iterables.\n isIdentifier(callee, { name: \"Array\" })\n ) {\n return arrayTypeAnnotation(anyTypeAnnotation());\n } else if (isObjectEntries(callee)) {\n return arrayTypeAnnotation(\n tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]),\n );\n }\n\n return resolveCall(this.get(\"callee\"));\n}\n\nexport function TaggedTemplateExpression(\n this: NodePath<t.TaggedTemplateExpression>,\n) {\n return resolveCall(this.get(\"tag\"));\n}\n\nfunction resolveCall(callee: NodePath) {\n callee = callee.resolve();\n\n if (callee.isFunction()) {\n const { node } = callee;\n if (node.async) {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"AsyncIterator\"));\n } else {\n return genericTypeAnnotation(identifier(\"Promise\"));\n }\n } else {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"Iterator\"));\n } else if (callee.node.returnType) {\n return callee.node.returnType;\n } else {\n // todo: get union type of all return arguments\n }\n }\n }\n}\n","import type NodePath from \"../index.ts\";\nimport * as inferers from \"./inferers.ts\";\nimport {\n anyTypeAnnotation,\n isAnyTypeAnnotation,\n isArrayTypeAnnotation,\n isBooleanTypeAnnotation,\n isEmptyTypeAnnotation,\n isFlowBaseAnnotation,\n isGenericTypeAnnotation,\n isIdentifier,\n isMixedTypeAnnotation,\n isNumberTypeAnnotation,\n isStringTypeAnnotation,\n isTSArrayType,\n isTSTypeAnnotation,\n isTSTypeReference,\n isTupleTypeAnnotation,\n isTypeAnnotation,\n isUnionTypeAnnotation,\n isVoidTypeAnnotation,\n stringTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Infer the type of the current `NodePath`.\n */\n\nexport function getTypeAnnotation(\n this: NodePath<t.Node | null>,\n): t.FlowType | t.TSType {\n let type = this.getData(\"typeAnnotation\");\n if (type != null) {\n return type;\n }\n type = _getTypeAnnotation.call(this) || anyTypeAnnotation();\n if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {\n type = type.typeAnnotation;\n }\n this.setData(\"typeAnnotation\", type);\n return type;\n}\n\n// Used to avoid infinite recursion in cases like\n// var b, c; if (0) { c = 1; b = c; } c = b;\n// It also works with indirect recursion.\nconst typeAnnotationInferringNodes = new WeakSet();\n\n/**\n * todo: split up this method\n */\n\nexport function _getTypeAnnotation(this: NodePath<t.Node | null>): any {\n const node = this.node;\n\n if (!node) {\n // handle initializerless variables, add in checks for loop initializers too\n if (this.key === \"init\" && this.parentPath.isVariableDeclarator()) {\n const declar = this.parentPath.parentPath;\n const declarParent = declar.parentPath;\n\n // for (let NODE in bar) {}\n if (declar.key === \"left\" && declarParent.isForInStatement()) {\n return stringTypeAnnotation();\n }\n\n // for (let NODE of bar) {}\n if (declar.key === \"left\" && declarParent.isForOfStatement()) {\n return anyTypeAnnotation();\n }\n\n return voidTypeAnnotation();\n } else {\n return;\n }\n }\n\n // @ts-expect-error typeAnnotation may not index node\n if (node.typeAnnotation) {\n // @ts-expect-error typeAnnotation may not index node\n return node.typeAnnotation;\n }\n\n if (typeAnnotationInferringNodes.has(node)) {\n // Bail out from type inference to avoid infinite loops\n return;\n }\n typeAnnotationInferringNodes.add(node);\n\n try {\n let inferer =\n // @ts-expect-error inferers do not cover all AST types\n inferers[node.type];\n if (inferer) {\n return inferer.call(this, node);\n }\n\n // @ts-expect-error inferers do not cover all AST types\n inferer = inferers[this.parentPath.type];\n if (inferer?.validParent) {\n return this.parentPath.getTypeAnnotation();\n }\n } finally {\n typeAnnotationInferringNodes.delete(node);\n }\n}\n\nexport function isBaseType(\n this: NodePath,\n baseName: string,\n soft?: boolean,\n): boolean {\n return _isBaseType(baseName, this.getTypeAnnotation(), soft);\n}\n\nfunction _isBaseType(\n baseName: string,\n type?: t.FlowType | t.TSType,\n soft?: boolean,\n): boolean {\n if (baseName === \"string\") {\n return isStringTypeAnnotation(type);\n } else if (baseName === \"number\") {\n return isNumberTypeAnnotation(type);\n } else if (baseName === \"boolean\") {\n return isBooleanTypeAnnotation(type);\n } else if (baseName === \"any\") {\n return isAnyTypeAnnotation(type);\n } else if (baseName === \"mixed\") {\n return isMixedTypeAnnotation(type);\n } else if (baseName === \"empty\") {\n return isEmptyTypeAnnotation(type);\n } else if (baseName === \"void\") {\n return isVoidTypeAnnotation(type);\n } else {\n if (soft) {\n return false;\n } else {\n throw new Error(`Unknown base type ${baseName}`);\n }\n }\n}\n\nexport function couldBeBaseType(this: NodePath, name: string): boolean {\n const type = this.getTypeAnnotation();\n if (isAnyTypeAnnotation(type)) return true;\n\n if (isUnionTypeAnnotation(type)) {\n for (const type2 of type.types) {\n if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {\n return true;\n }\n }\n return false;\n } else {\n return _isBaseType(name, type, true);\n }\n}\n\nexport function baseTypeStrictlyMatches(\n this: NodePath,\n rightArg: NodePath,\n): boolean {\n const left = this.getTypeAnnotation();\n const right = rightArg.getTypeAnnotation();\n\n if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {\n return right.type === left.type;\n }\n return false;\n}\n\nexport function isGenericType(this: NodePath, genericName: string): boolean {\n const type = this.getTypeAnnotation();\n if (genericName === \"Array\") {\n // T[]\n if (\n isTSArrayType(type) ||\n isArrayTypeAnnotation(type) ||\n isTupleTypeAnnotation(type)\n ) {\n return true;\n }\n }\n return (\n (isGenericTypeAnnotation(type) &&\n isIdentifier(type.id, {\n name: genericName,\n })) ||\n (isTSTypeReference(type) &&\n isIdentifier(type.typeName, {\n name: genericName,\n }))\n );\n}\n","// this file contains hooks that handle ancestry cleanup of parent nodes when removing children\n\nimport type NodePath from \"../index.ts\";\nimport type * as t from \"@babel/types\";\n/**\n * Pre hooks should be used for either rejecting removal or delegating removal\n */\n\nexport const hooks = [\n function (self: NodePath, parent: NodePath) {\n const removeParent =\n // while (NODE);\n // removing the test of a while/switch, we can either just remove it entirely *or* turn the\n // `test` into `true` unlikely that the latter will ever be what's wanted so we just remove\n // the loop to avoid infinite recursion\n (self.key === \"test\" && (parent.isWhile() || parent.isSwitchCase())) ||\n // export NODE;\n // just remove a declaration for an export as this is no longer valid\n (self.key === \"declaration\" && parent.isExportDeclaration()) ||\n // label: NODE\n // stray labeled statement with no body\n (self.key === \"body\" && parent.isLabeledStatement()) ||\n // let NODE;\n // remove an entire declaration if there are no declarators left\n (self.listKey === \"declarations\" &&\n parent.isVariableDeclaration() &&\n parent.node.declarations.length === 1) ||\n // NODE;\n // remove the entire expression statement if there's no expression\n (self.key === \"expression\" && parent.isExpressionStatement());\n\n if (removeParent) {\n parent.remove();\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {\n // (node, NODE);\n // we've just removed the second element of a sequence expression so let's turn that sequence\n // expression into a regular expression\n parent.replaceWith(parent.node.expressions[0]);\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isBinary()) {\n // left + NODE;\n // NODE + right;\n // we're in a binary expression, better remove it and replace it with the last expression\n if (self.key === \"left\") {\n parent.replaceWith(parent.node.right);\n } else {\n // key === \"right\"\n parent.replaceWith(parent.node.left);\n }\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (\n (parent.isIfStatement() && self.key === \"consequent\") ||\n (self.key === \"body\" &&\n (parent.isLoop() || parent.isArrowFunctionExpression()))\n ) {\n self.replaceWith({\n type: \"BlockStatement\",\n directives: [],\n body: [],\n } satisfies t.BlockStatement);\n return true;\n }\n },\n];\n","// This file contains methods responsible for removing a node.\n\nimport { hooks } from \"./lib/removal-hooks.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _replaceWith } from \"./replacement.ts\";\nimport type NodePath from \"./index.ts\";\nimport { REMOVED, SHOULD_SKIP } from \"./index.ts\";\nimport * as t from \"@babel/types\";\nimport { updateSiblingKeys } from \"./modification.ts\";\nimport { resync } from \"./context.ts\";\n\nexport function remove(this: NodePath<t.Node | null>) {\n _assertUnremoved.call(this);\n\n resync.call(this);\n\n if (_callRemovalHooks.call(this)) {\n _markRemoved.call(this);\n return;\n }\n\n if (!this.opts?.noScope) {\n _removeFromScope.call(this);\n }\n\n this.shareCommentsWithSiblings();\n _remove.call(this);\n _markRemoved.call(this);\n}\n\nexport function _removeFromScope(this: NodePath<t.Node | null>) {\n if (!this.node) return;\n const bindings = t.getBindingIdentifiers(this.node, false, false, true);\n Object.keys(bindings).forEach(name => this.scope.removeBinding(name));\n}\n\nexport function _callRemovalHooks(this: NodePath<t.Node | null>) {\n if (this.parentPath) {\n for (const fn of hooks) {\n if (fn(this as NodePath<t.Node>, this.parentPath)) return true;\n }\n }\n}\n\nexport function _remove(this: NodePath<t.Node | null>) {\n if (Array.isArray(this.container)) {\n this.container.splice(this.key as number, 1);\n updateSiblingKeys.call(this, this.key as number, -1);\n } else {\n _replaceWith.call(this, null);\n }\n}\n\nexport function _markRemoved(this: NodePath<t.Node | null>) {\n // this.shouldSkip = true; this.removed = true;\n this._traverseFlags |= SHOULD_SKIP | REMOVED;\n if (this.parent) {\n // @ts-expect-error TODO: better types\n getCachedPaths(this)?.delete(this.node);\n }\n this.node = null;\n}\n\nexport function _assertUnremoved(this: NodePath<t.Node | null>) {\n if (this.removed) {\n throw this.buildCodeFrameError(\n \"NodePath has been removed so is read-only.\",\n );\n }\n}\n","// This file contains methods that modify the path/node in some ways.\n\nimport { getCachedPaths } from \"../cache.ts\";\nimport NodePath from \"./index.ts\";\nimport { _getQueueContexts, pushContext, setScope } from \"./context.ts\";\nimport { _assertUnremoved } from \"./removal.ts\";\nimport {\n arrowFunctionExpression,\n assertExpression,\n assignmentExpression,\n blockStatement,\n callExpression,\n cloneNode,\n expressionStatement,\n isAssignmentExpression,\n isCallExpression,\n isExportNamedDeclaration,\n isExpression,\n isIdentifier,\n isSequenceExpression,\n isSuper,\n thisExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"../scope/index.ts\";\nimport type {\n NodeList,\n NodeOrNodeList,\n NodeListType,\n NodePaths,\n} from \"./index.ts\";\n\n/**\n * Insert the provided nodes before the current one.\n */\n\nexport function insertBefore<Nodes extends NodeOrNodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n nodes_: Nodes,\n): NodePaths<Nodes> {\n _assertUnremoved.call(this);\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // https://github.com/babel/babel/issues/15293\n // When Babel transforms `export class String { field }`, the class properties plugin will inject the defineProperty\n // helper, which depends on the builtins e.g. String, Number, Symbol, etc. To prevent them from being shadowed by local\n // exports, the helper injector replaces the named export into `class _String { field }; export { _String as String }`,\n // with `parentPath` here changed to the moved ClassDeclaration, causing rare inconsistency between `parent` and `parentPath`.\n // Here we retrieve the parent type from the `parent` property. This is a temporary fix and we should revisit when\n // helpers should get injected.\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertBefore(nodes as Nodes);\n } else if (\n (this.isNodeType(\"Expression\") && !this.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n if (this.node) nodes.push(this.node);\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertBefore.call(this, nodes) as NodePaths<Nodes>;\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n const [blockPath] = this.replaceWith(\n blockStatement(shouldInsertCurrentNode ? [node] : []),\n );\n return blockPath.unshiftContainer(\n \"body\",\n nodes as t.Statement[],\n ) as NodePaths<Nodes>;\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\nexport function _containerInsert<Nodes extends NodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n from: number,\n nodes: Nodes,\n): NodePaths<Nodes> {\n updateSiblingKeys.call(this, from, nodes.length);\n\n const paths: NodePath<t.Node | null>[] = [];\n\n // @ts-expect-error todo(flow->ts): this.container could be a NodePath\n this.container.splice(from, 0, ...nodes);\n for (let i = 0; i < nodes.length; i++) {\n const to = from + i;\n const path = this.getSibling(to);\n paths.push(path);\n\n if (this.context?.queue) {\n pushContext.call(path, this.context);\n }\n }\n\n const contexts = _getQueueContexts.call(this);\n\n for (const path of paths) {\n setScope.call(path);\n path.debug(\"Inserted.\");\n\n for (const context of contexts) {\n context.maybeQueue(path, true);\n }\n }\n\n return paths as NodePaths<Nodes>;\n}\n\nexport function _containerInsertBefore<Nodes extends NodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n nodes: Nodes,\n): NodePaths<Nodes> {\n return _containerInsert.call(\n this,\n this.key as number,\n nodes,\n ) as NodePaths<Nodes>;\n}\n\nexport function _containerInsertAfter<Nodes extends NodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n nodes: Nodes,\n): NodePaths<Nodes> {\n return _containerInsert.call(\n this,\n (this.key as number) + 1,\n nodes,\n ) as NodePaths<Nodes>;\n}\n\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isHiddenInSequenceExpression(path: NodePath): boolean {\n return (\n isSequenceExpression(path.parent) &&\n (last(path.parent.expressions) !== path.node ||\n isHiddenInSequenceExpression(path.parentPath))\n );\n}\n\nfunction isAlmostConstantAssignment(\n node: t.Node,\n scope: Scope,\n): node is t.AssignmentExpression & { left: t.Identifier } {\n if (!isAssignmentExpression(node) || !isIdentifier(node.left)) {\n return false;\n }\n\n // Not every scope can contain variables. For example, we might be in\n // a ClassScope either in the ClassHeritage or in a computed key.\n const blockScope = scope.getBlockParent();\n\n // If the variable is defined in the current scope and only assigned here,\n // we can be sure that its value won't change.\n return (\n blockScope.hasOwnBinding(node.left.name) &&\n blockScope.getOwnBinding(node.left.name)!.constantViolations.length <= 1\n );\n}\n\n/**\n * Insert the provided nodes after the current one. When inserting nodes after an\n * expression, ensure that the completion record is correct by pushing the current node.\n */\n\nexport function insertAfter<Nodes extends NodeOrNodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n nodes_: Nodes,\n): NodePaths<Nodes> {\n _assertUnremoved.call(this);\n\n if (this.isSequenceExpression()) {\n return last(this.get(\"expressions\")).insertAfter(nodes_);\n }\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // see insertBefore\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertAfter(\n nodes.map(node => {\n // Usually after an expression we can safely insert another expression:\n // A.insertAfter(B)\n // foo = A; -> foo = (A, B);\n // If A is an expression statement, it isn't safe anymore so we need to\n // convert B to an expression statement\n // A; -> A; B // No semicolon! It could break if followed by [!\n return isExpression(node) ? expressionStatement(node) : node;\n }),\n // todo: this cast is unsound, we wrap some expression nodes in expressionStatement but never unwrap them in the return values.\n ) as NodePaths<Nodes>;\n } else if (\n (this.isNodeType(\"Expression\") &&\n !this.isJSXElement() &&\n !parentPath.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n const self = this as NodePath<t.Expression | t.VariableDeclaration>;\n if (self.node) {\n const node = self.node;\n let { scope } = this;\n\n if (scope.path.isPattern()) {\n assertExpression(node);\n\n self.replaceWith(callExpression(arrowFunctionExpression([], node), []));\n (\n self.get(\"callee.body\") as unknown as NodePath<t.Expression>\n ).insertAfter(nodes);\n // todo: this cast is unsound, we wrap nodes in the IIFE but never unwrap them in the return values.\n // consider just returning the insertAfter result.\n return [self] as NodePaths<Nodes>;\n }\n\n if (isHiddenInSequenceExpression(self)) {\n nodes.unshift(node);\n }\n // We need to preserve the value of this expression.\n else if (isCallExpression(node) && isSuper(node.callee)) {\n nodes.unshift(node);\n // `super(...)` always evaluates to `this`.\n nodes.push(thisExpression());\n } else if (isAlmostConstantAssignment(node, scope)) {\n nodes.unshift(node);\n nodes.push(cloneNode(node.left));\n } else if (scope.isPure(node, true)) {\n // Insert the nodes before rather than after; it's not observable.\n nodes.push(node);\n } else {\n // Inserting after the computed key of a method should insert the\n // temporary binding in the method's parent's scope.\n if (parentPath.isMethod({ computed: true, key: node })) {\n scope = scope.parent!;\n }\n const temp = scope.generateDeclaredUidIdentifier();\n nodes.unshift(\n expressionStatement(\n // @ts-expect-error todo(flow->ts): This can be a variable\n // declaration in the \"init\" of a for statement, but that's\n // invalid here.\n assignmentExpression(\"=\", cloneNode(temp), node),\n ),\n );\n nodes.push(expressionStatement(cloneNode(temp)));\n }\n }\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertAfter.call(this, nodes) as NodePaths<Nodes>;\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n const [blockPath] = this.replaceWith(\n blockStatement(shouldInsertCurrentNode ? [node] : []),\n );\n return blockPath.pushContainer(\n \"body\",\n nodes as t.Statement[],\n ) as NodePaths<Nodes>;\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\n/**\n * Update all sibling node paths after `fromIndex` by `incrementBy`.\n */\n\nexport function updateSiblingKeys(\n this: NodePath<t.Node | null>,\n fromIndex: number,\n incrementBy: number,\n) {\n if (!this.parent) return;\n\n const paths = getCachedPaths(this);\n if (!paths) return;\n\n for (const [, path] of paths) {\n if (\n typeof path.key === \"number\" &&\n path.container === this.container &&\n path.key >= fromIndex\n ) {\n path.key += incrementBy;\n }\n }\n}\n\nexport function _verifyNodeList<N extends t.Node>(\n this: NodePath<t.Node | null>,\n nodes: N | N[],\n) {\n if (!nodes) {\n return [];\n }\n\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n let msg;\n\n if (!node) {\n msg = \"has falsy node\";\n } else if (typeof node !== \"object\") {\n msg = \"contains a non-object node\";\n } else if (!node.type) {\n msg = \"without a type\";\n } else if (node instanceof NodePath) {\n msg = \"has a NodePath when it expected a raw object\";\n }\n\n if (msg) {\n const type = Array.isArray(node) ? \"array\" : typeof node;\n throw new Error(\n `Node list ${msg} with the index of ${i} and type of ${type}`,\n );\n }\n }\n\n return nodes;\n}\n\ntype NodeKeyOfArrays<N extends t.Node> = {\n [P in string & keyof N]-?: N[P] extends (t.Node | null)[] ? P : never;\n}[string & keyof N];\n\nexport function unshiftContainer<\n N extends t.Node,\n K extends NodeKeyOfArrays<N>,\n Nodes extends NodeOrNodeList<NodeListType<N, K>>,\n>(this: NodePath<N>, listKey: K, nodes: Nodes): NodePaths<Nodes> {\n _assertUnremoved.call(this);\n\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n\n // get the first path and insert our nodes before it, if it doesn't exist then it\n // doesn't matter, our nodes will be inserted anyway\n const container = (this.node as N)[listKey] as t.Node[];\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container,\n listKey,\n key: 0,\n }).setContext(this.context);\n\n return _containerInsertBefore.call(path, verifiedNodes) as NodePaths<Nodes>;\n}\n\nexport function pushContainer<\n N extends t.Node,\n K extends NodeKeyOfArrays<N>,\n Nodes extends NodeOrNodeList<NodeListType<N, K>>,\n>(this: NodePath<N>, listKey: K, nodes: Nodes): NodePaths<Nodes> {\n _assertUnremoved.call(this);\n\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n\n // get an invisible path that represents the last node + 1 and replace it with our\n // nodes, effectively inlining it\n\n const container = (this.node as N)[listKey] as t.Node[];\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container,\n listKey,\n key: container.length,\n }).setContext(this.context);\n\n return path.replaceWithMultiple(verifiedNodes) as NodePaths<Nodes>;\n}\n","// This file contains methods responsible for replacing a node with another.\n\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport traverse from \"../index.ts\";\nimport NodePath from \"./index.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _verifyNodeList, _containerInsertAfter } from \"./modification.ts\";\nimport { parse } from \"@babel/parser\";\nimport {\n FUNCTION_TYPES,\n arrowFunctionExpression,\n assignmentExpression,\n awaitExpression,\n blockStatement,\n buildUndefinedNode,\n callExpression,\n cloneNode,\n conditionalExpression,\n expressionStatement,\n getBindingIdentifiers,\n identifier,\n inheritLeadingComments,\n inheritTrailingComments,\n inheritsComments,\n isBlockStatement,\n isEmptyStatement,\n isExpression,\n isExpressionStatement,\n isIfStatement,\n isProgram,\n isStatement,\n isVariableDeclaration,\n removeComments,\n returnStatement,\n sequenceExpression,\n validate,\n yieldExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { resync, setScope } from \"./context.ts\";\n\n/**\n * Replace a node with an array of multiple. This method performs the following steps:\n *\n * - Inherit the comments of first provided node with that of the current node.\n * - Insert the provided nodes after the current node.\n * - Remove the current node.\n */\n\nimport type { NodeOrNodeList, NodePaths } from \"./index.ts\";\n\nexport function replaceWithMultiple<Nodes extends NodeOrNodeList<t.Node>>(\n this: NodePath<t.Node | null>,\n nodes: Nodes,\n): NodePaths<Nodes> {\n resync.call(this);\n\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n inheritLeadingComments(verifiedNodes[0], this.node);\n inheritTrailingComments(verifiedNodes[verifiedNodes.length - 1], this.node);\n // @ts-expect-error TODO: better types\n getCachedPaths(this)?.delete(this.node);\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = null;\n const paths = this.insertAfter(nodes);\n\n if (this.node) {\n this.requeue();\n } else {\n this.remove();\n }\n return paths;\n}\n\n/**\n * Parse a string as an expression and replace the current node with the result.\n *\n * NOTE: This is typically not a good idea to use. Building source strings when\n * transforming ASTs is an antipattern and SHOULD NOT be encouraged. Even if it's\n * easier to use, your transforms will be extremely brittle.\n */\n\nexport function replaceWithSourceString(\n this: NodePath<t.Node | null>,\n replacement: string,\n) {\n resync.call(this);\n let ast: t.File;\n\n try {\n replacement = `(${replacement})`;\n ast = parse(replacement);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message +=\n \" - make sure this is an expression.\\n\" +\n codeFrameColumns(replacement, {\n start: {\n line: loc.line,\n column: loc.column,\n },\n });\n err.code = \"BABEL_REPLACE_SOURCE_ERROR\";\n }\n throw err;\n }\n\n const expressionAST = (ast.program.body[0] as t.ExpressionStatement)\n .expression;\n traverse.removeProperties(expressionAST);\n return this.replaceWith(expressionAST);\n}\n\n/**\n * Replace the current node with another.\n */\nexport function replaceWith<R extends t.Node>(\n this: NodePath<t.Node | null>,\n replacementPath: R,\n): [NodePath<R>];\nexport function replaceWith<R extends NodePath<t.Node>>(\n this: NodePath<t.Node | null>,\n replacementPath: R,\n): [R];\nexport function replaceWith(\n this: NodePath<t.Node | null>,\n replacementPath: t.Node | NodePath<t.Node>,\n): [NodePath<t.Node>] {\n resync.call(this);\n\n if (this.removed) {\n throw new Error(\"You can't replace this node, we've already removed it\");\n }\n\n let replacement: t.Node =\n replacementPath instanceof NodePath\n ? replacementPath.node\n : replacementPath;\n\n if (!replacement) {\n throw new Error(\n \"You passed `path.replaceWith()` a falsy node, use `path.remove()` instead\",\n );\n }\n\n if (this.node === replacement) {\n return [this];\n }\n\n if (this.isProgram() && !isProgram(replacement)) {\n throw new Error(\n \"You can only replace a Program root node with another Program node\",\n );\n }\n\n if (Array.isArray(replacement)) {\n throw new Error(\n \"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`\",\n );\n }\n\n if (typeof replacement === \"string\") {\n throw new Error(\n \"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`\",\n );\n }\n\n let nodePath = \"\";\n\n if (this.isNodeType(\"Statement\") && isExpression(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement) &&\n !this.parentPath.isExportDefaultDeclaration()\n ) {\n // replacing a statement with an expression so wrap it in an expression statement\n replacement = expressionStatement(replacement);\n nodePath = \"expression\";\n }\n }\n\n if (this.isNodeType(\"Expression\") && isStatement(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement)\n ) {\n // replacing an expression with a statement so let's explode it\n return this.replaceExpressionWithStatements([replacement]) as [NodePath];\n }\n }\n\n const oldNode = this.node;\n if (oldNode) {\n inheritsComments(replacement, oldNode);\n removeComments(oldNode);\n }\n\n // replace the node\n _replaceWith.call(this, replacement);\n this.type = replacement.type;\n\n // potentially create new scope\n setScope.call(this as NodePath<t.Node>);\n\n // requeue for visiting\n this.requeue();\n\n // @ts-expect-error TODO: better types\n return [nodePath ? this.get(nodePath) : this];\n}\n\nexport function _replaceWith(\n this: NodePath<t.Node | null>,\n node: t.Node | null,\n) {\n if (!this.container) {\n throw new ReferenceError(\"Container is falsy\");\n }\n\n if (this.inList) {\n // @ts-expect-error todo(flow->ts): check if validate accepts a numeric key\n validate(this.parent, this.key, [node]);\n } else {\n validate(this.parent, this.key as string, node);\n }\n\n this.debug(`Replace with ${node?.type}`);\n // @ts-expect-error TODO: better types\n getCachedPaths(this)?.set(node, this).delete(this.node);\n\n this.node = node;\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = node;\n}\n\n/**\n * This method takes an array of statements nodes and then explodes it\n * into expressions. This method retains completion records which is\n * extremely important to retain original semantics.\n */\n\nexport function replaceExpressionWithStatements(\n this: NodePath<t.Node | null>,\n nodes: t.Statement[],\n) {\n resync.call(this);\n\n const declars: t.Identifier[] = [];\n const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);\n if (nodesAsSingleExpression) {\n for (const id of declars) this.scope.push({ id });\n return this.replaceWith(nodesAsSingleExpression)[0].get(\"expressions\");\n }\n\n const functionParent = this.getFunctionParent();\n const isParentAsync = functionParent?.node.async;\n const isParentGenerator = functionParent?.node.generator;\n\n const container = arrowFunctionExpression([], blockStatement(nodes));\n\n this.replaceWith(callExpression(container, []));\n // replaceWith changes the type of \"this\", but it isn't trackable by TS\n type ThisType = NodePath<\n t.CallExpression & {\n callee: t.ArrowFunctionExpression & { body: t.BlockStatement };\n }\n >;\n\n // hoist variable declaration in do block\n // `(do { var x = 1; x;})` -> `var x; (() => { x = 1; return x; })()`\n const callee = (this as ThisType).get(\"callee\");\n callee.get(\"body\").scope.hoistVariables(id => this.scope.push({ id }));\n\n // add implicit returns to all ending expression statements\n const completionRecords: NodePath[] = callee.getCompletionRecords();\n for (const path of completionRecords) {\n if (!path.isExpressionStatement()) continue;\n\n const loop = path.findParent(path => path.isLoop());\n if (loop) {\n let uid = loop.getData(\"expressionReplacementReturnUid\");\n\n if (!uid) {\n uid = callee.scope.generateDeclaredUidIdentifier(\"ret\");\n callee\n .get(\"body\")\n .pushContainer(\"body\", returnStatement(cloneNode(uid)));\n loop.setData(\"expressionReplacementReturnUid\", uid);\n } else {\n uid = identifier(uid.name);\n }\n\n path\n .get(\"expression\")\n .replaceWith(\n assignmentExpression(\"=\", cloneNode(uid), path.node.expression),\n );\n } else {\n path.replaceWith(returnStatement(path.node.expression));\n }\n }\n\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n callee.arrowFunctionToExpression();\n // Fixme: we can not `assert this is NodePath<t.FunctionExpression>` in `arrowFunctionToExpression`\n // because it is not a class method known at compile time.\n const newCallee = callee as unknown as NodePath<t.FunctionExpression>;\n // (() => await xxx)() -> await (async () => await xxx)();\n const needToAwaitFunction =\n isParentAsync &&\n traverse.hasType(newCallee.node.body, \"AwaitExpression\", FUNCTION_TYPES);\n const needToYieldFunction =\n isParentGenerator &&\n traverse.hasType(newCallee.node.body, \"YieldExpression\", FUNCTION_TYPES);\n if (needToAwaitFunction) {\n newCallee.set(\"async\", true);\n // yield* will await the generator return result\n if (!needToYieldFunction) {\n this.replaceWith(awaitExpression((this as ThisType).node));\n }\n }\n if (needToYieldFunction) {\n newCallee.set(\"generator\", true);\n this.replaceWith(yieldExpression((this as ThisType).node, true));\n }\n\n return newCallee.get(\"body.body\");\n}\n\nfunction gatherSequenceExpressions(\n nodes: readonly t.Node[],\n declars: t.Identifier[],\n) {\n const exprs: t.Expression[] = [];\n let ensureLastUndefined = true;\n\n for (const node of nodes) {\n // if we encounter emptyStatement before a non-emptyStatement\n // we want to disregard that\n if (!isEmptyStatement(node)) {\n ensureLastUndefined = false;\n }\n\n if (isExpression(node)) {\n exprs.push(node);\n } else if (isExpressionStatement(node)) {\n exprs.push(node.expression);\n } else if (isVariableDeclaration(node)) {\n if (node.kind !== \"var\") return; // bailed\n\n for (const declar of node.declarations) {\n const bindings = getBindingIdentifiers(declar);\n for (const key of Object.keys(bindings)) {\n declars.push(cloneNode(bindings[key]));\n }\n\n if (declar.init) {\n exprs.push(\n assignmentExpression(\n \"=\",\n // var declarator must not be a void pattern\n declar.id as Exclude<t.VariableDeclarator[\"id\"], t.VoidPattern>,\n declar.init,\n ),\n );\n }\n }\n\n ensureLastUndefined = true;\n } else if (isIfStatement(node)) {\n const consequent = node.consequent\n ? gatherSequenceExpressions([node.consequent], declars)\n : buildUndefinedNode();\n const alternate = node.alternate\n ? gatherSequenceExpressions([node.alternate], declars)\n : buildUndefinedNode();\n if (!consequent || !alternate) return; // bailed\n\n exprs.push(conditionalExpression(node.test, consequent, alternate));\n } else if (isBlockStatement(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return; // bailed\n\n exprs.push(body);\n } else if (isEmptyStatement(node)) {\n // empty statement so ensure the last item is undefined if we're last\n // checks if emptyStatement is first\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n // bailed, we can't turn this statement into an expression\n return;\n }\n }\n\n if (ensureLastUndefined) exprs.push(buildUndefinedNode());\n\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression(exprs);\n }\n}\n\nexport function replaceInline(\n this: NodePath<t.Node | null>,\n nodes: t.Node | t.Node[],\n) {\n resync.call(this);\n\n if (Array.isArray(nodes)) {\n if (Array.isArray(this.container)) {\n nodes = _verifyNodeList.call(this, nodes);\n const paths = _containerInsertAfter.call(this, nodes);\n this.remove();\n return paths;\n } else {\n return this.replaceWithMultiple(nodes);\n }\n } else {\n return this.replaceWith(nodes);\n }\n}\n","import type NodePath from \"./index.ts\";\nimport type * as t from \"@babel/types\";\n\n// This file contains Babels metainterpreter that can evaluate static code.\n\nconst VALID_OBJECT_CALLEES = [\"Number\", \"String\", \"Math\"] as const;\nconst VALID_IDENTIFIER_CALLEES = [\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"btoa\",\n \"atob\",\n] as const;\n\nconst INVALID_METHODS = [\"random\"] as const;\n\nfunction isValidObjectCallee(\n val: string,\n): val is (typeof VALID_OBJECT_CALLEES)[number] {\n return VALID_OBJECT_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isValidIdentifierCallee(\n val: string,\n): val is NonNullable<(typeof VALID_IDENTIFIER_CALLEES)[number]> {\n return VALID_IDENTIFIER_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isInvalidMethod(val: string): val is (typeof INVALID_METHODS)[number] {\n return INVALID_METHODS.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\n/**\n * Walk the input `node` and statically evaluate if it's truthy.\n *\n * Returning `true` when we're sure that the expression will evaluate to a\n * truthy value, `false` if we're sure that it will evaluate to a falsy\n * value and `undefined` if we aren't sure. Because of this please do not\n * rely on coercion when using this method and check with === if it's false.\n *\n * For example do:\n *\n * if (t.evaluateTruthy(node) === false) falsyLogic();\n *\n * **AND NOT**\n *\n * if (!t.evaluateTruthy(node)) falsyLogic();\n *\n */\n\nexport function evaluateTruthy(this: NodePath): boolean | undefined {\n const res = this.evaluate();\n if (res.confident) return !!res.value;\n}\n\ntype State = {\n confident: boolean;\n deoptPath: NodePath | null;\n seen: Map<t.Node, Result>;\n};\n\ntype Result = {\n resolved: boolean;\n value?: any;\n};\n/**\n * Deopts the evaluation\n */\nfunction deopt(path: NodePath | null, state: State) {\n if (!state.confident) return;\n state.deoptPath = path;\n state.confident = false;\n}\n\nconst Globals = new Map([\n [\"undefined\", undefined],\n [\"Infinity\", Infinity],\n [\"NaN\", NaN],\n]);\n\n/**\n * We wrap the _evaluate method so we can track `seen` nodes, we push an item\n * to the map before we actually evaluate it so we can deopt on self recursive\n * nodes such as:\n *\n * var g = a ? 1 : 2,\n * a = g * this.foo\n */\nfunction evaluateCached(path: NodePath, state: State): any {\n const { node } = path;\n const { seen } = state;\n\n if (seen.has(node)) {\n const existing = seen.get(node)!;\n if (existing.resolved) {\n return existing.value;\n } else {\n deopt(path, state);\n return;\n }\n } else {\n const item: Result = { resolved: false };\n seen.set(node, item);\n\n const val = _evaluate(path, state);\n if (state.confident) {\n item.resolved = true;\n item.value = val;\n }\n return val;\n }\n}\n\nfunction _evaluate(path: NodePath, state: State): any {\n if (!state.confident) return;\n\n if (path.isSequenceExpression()) {\n const exprs = path.get(\"expressions\");\n return evaluateCached(exprs[exprs.length - 1], state);\n }\n\n if (\n path.isStringLiteral() ||\n path.isNumericLiteral() ||\n path.isBooleanLiteral()\n ) {\n return path.node.value;\n }\n\n if (path.isNullLiteral()) {\n return null;\n }\n\n if (path.isTemplateLiteral()) {\n return evaluateQuasis(path, path.node.quasis, state);\n }\n\n if (\n path.isTaggedTemplateExpression() &&\n path.get(\"tag\").isMemberExpression()\n ) {\n const object = path.get(\"tag.object\") as NodePath;\n const {\n // @ts-expect-error todo(flow->ts): possible bug, object is can be any expression and so name might be undefined\n node: { name },\n } = object;\n const property = path.get(\"tag.property\") as NodePath;\n\n if (\n object.isIdentifier() &&\n name === \"String\" &&\n // todo(flow->ts): was changed from getBinding(name, true)\n // should this be hasBinding(name, true) as the binding is never used later?\n !path.scope.getBinding(name) &&\n property.isIdentifier() &&\n property.node.name === \"raw\"\n ) {\n return evaluateQuasis(path, path.node.quasi.quasis, state, true);\n }\n }\n\n if (path.isConditionalExpression()) {\n const testResult = evaluateCached(path.get(\"test\"), state);\n if (!state.confident) return;\n if (testResult) {\n return evaluateCached(path.get(\"consequent\"), state);\n } else {\n return evaluateCached(path.get(\"alternate\"), state);\n }\n }\n\n if (path.isExpressionWrapper()) {\n // TypeCastExpression, ExpressionStatement etc\n return evaluateCached(path.get(\"expression\"), state);\n }\n\n // \"foo\".length, \"foo\"[0]\n if (\n path.isMemberExpression() &&\n !path.parentPath.isCallExpression({ callee: path.node })\n ) {\n const property = path.get(\"property\");\n const object = path.get(\"object\");\n\n if (object.isLiteral()) {\n // @ts-expect-error todo(flow->ts): instead of typeof - would it be better to check type of ast node?\n const value = object.node.value;\n const type = typeof value;\n\n let key = null;\n if (path.node.computed) {\n key = evaluateCached(property, state);\n if (!state.confident) return;\n } else if (property.isIdentifier()) {\n key = property.node.name;\n }\n if (\n (type === \"number\" || type === \"string\") &&\n key != null &&\n (typeof key === \"number\" || typeof key === \"string\")\n ) {\n return value[key];\n }\n }\n }\n\n if (path.isReferencedIdentifier()) {\n const binding = path.scope.getBinding(path.node.name);\n\n if (binding) {\n if (\n binding.constantViolations.length > 0 ||\n // @ts-expect-error comparing undefined and number\n path.node.start < binding.path.node.end\n ) {\n deopt(binding.path, state);\n return;\n }\n const bindingPathScope = binding.path.scope;\n if (binding.kind === \"var\" && bindingPathScope !== binding.scope) {\n let hasUnsafeBlock =\n !bindingPathScope.path.parentPath.isBlockStatement();\n for (let scope = bindingPathScope.parent; scope; scope = scope.parent) {\n if (scope === path.scope) {\n if (hasUnsafeBlock) {\n deopt(binding.path, state);\n return;\n }\n break;\n }\n if (scope.path.parentPath?.isBlockStatement()) {\n hasUnsafeBlock = true;\n }\n }\n }\n if (binding.hasValue) {\n return binding.value;\n }\n }\n\n const name = path.node.name;\n if (Globals.has(name)) {\n if (!binding) {\n return Globals.get(name);\n }\n deopt(binding.path, state);\n return;\n }\n\n if (!binding) {\n deopt(path, state);\n return;\n }\n\n const bindingPath = binding.path;\n if (!bindingPath.isVariableDeclarator()) {\n deopt(bindingPath, state);\n return;\n }\n const initPath = bindingPath.get(\"init\");\n // @ts-expect-error FIXME: evaluateCached does not accept NodePath<null>\n const value = evaluateCached(initPath, state);\n if (typeof value === \"object\" && value !== null && binding.references > 1) {\n // @ts-expect-error FIXME: deopt does not accept NodePath<null>\n deopt(initPath, state);\n return;\n }\n return value;\n }\n\n if (path.isUnaryExpression({ prefix: true })) {\n if (path.node.operator === \"void\") {\n // we don't need to evaluate the argument to know what this will return\n return undefined;\n }\n\n const argument = path.get(\"argument\");\n if (\n path.node.operator === \"typeof\" &&\n (argument.isFunction() || argument.isClass())\n ) {\n return \"function\";\n }\n\n const arg = evaluateCached(argument, state);\n if (!state.confident) return;\n switch (path.node.operator) {\n case \"!\":\n return !arg;\n case \"+\":\n return +arg;\n case \"-\":\n return -arg;\n case \"~\":\n return ~arg;\n case \"typeof\":\n return typeof arg;\n }\n }\n\n if (path.isArrayExpression()) {\n const arr = [];\n const elems = path.get(\"elements\");\n for (const elem of elems) {\n // @ts-expect-error FIXME: better types\n const elemValue = elem.evaluate();\n\n if (elemValue.confident) {\n arr.push(elemValue.value);\n } else {\n deopt(elemValue.deopt, state);\n return;\n }\n }\n return arr;\n }\n\n if (path.isObjectExpression()) {\n const obj = {};\n const props = path.get(\"properties\");\n for (const prop of props) {\n if (prop.isObjectMethod() || prop.isSpreadElement()) {\n deopt(prop, state);\n return;\n }\n const keyPath = prop.get(\"key\");\n let key;\n if (prop.node.computed) {\n key = keyPath.evaluate();\n if (!key.confident) {\n deopt(key.deopt, state);\n return;\n }\n key = key.value;\n } else if (keyPath.isIdentifier()) {\n key = keyPath.node.name;\n } else {\n key = (\n keyPath.node as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral\n ).value;\n }\n const valuePath = prop.get(\"value\");\n let value = valuePath.evaluate();\n if (!value.confident) {\n deopt(value.deopt, state);\n return;\n }\n value = value.value;\n // @ts-expect-error key is any type\n obj[key] = value;\n }\n return obj;\n }\n\n if (path.isLogicalExpression()) {\n // If we are confident that the left side of an && is false, or the left\n // side of an || is true, we can be confident about the entire expression\n const wasConfident = state.confident;\n const left = evaluateCached(path.get(\"left\"), state);\n const leftConfident = state.confident;\n state.confident = wasConfident;\n const right = evaluateCached(path.get(\"right\"), state);\n const rightConfident = state.confident;\n\n switch (path.node.operator) {\n case \"||\":\n // TODO consider having a \"truthy type\" that doesn't bail on\n // left uncertainty but can still evaluate to truthy.\n state.confident = leftConfident && (!!left || rightConfident);\n if (!state.confident) return;\n\n return left || right;\n case \"&&\":\n state.confident = leftConfident && (!left || rightConfident);\n if (!state.confident) return;\n\n return left && right;\n case \"??\":\n state.confident = leftConfident && (left != null || rightConfident);\n if (!state.confident) return;\n\n return left ?? right;\n }\n }\n\n if (path.isBinaryExpression()) {\n const left = evaluateCached(path.get(\"left\"), state);\n if (!state.confident) return;\n const right = evaluateCached(path.get(\"right\"), state);\n if (!state.confident) return;\n\n switch (path.node.operator) {\n case \"-\":\n return left - right;\n case \"+\":\n return left + right;\n case \"/\":\n return left / right;\n case \"*\":\n return left * right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n case \"<\":\n return left < right;\n case \">\":\n return left > right;\n case \"<=\":\n return left <= right;\n case \">=\":\n return left >= right;\n case \"==\":\n return left == right; // eslint-disable-line eqeqeq\n case \"!=\":\n return left != right; // eslint-disable-line eqeqeq\n case \"===\":\n return left === right;\n case \"!==\":\n return left !== right;\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \"^\":\n return left ^ right;\n case \"<<\":\n return left << right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n }\n }\n\n if (path.isCallExpression()) {\n const callee = path.get(\"callee\");\n let context;\n let func;\n\n // Number(1);\n if (\n callee.isIdentifier() &&\n !path.scope.getBinding(callee.node.name) &&\n (isValidObjectCallee(callee.node.name) ||\n isValidIdentifierCallee(callee.node.name))\n ) {\n func = global[callee.node.name];\n }\n\n if (callee.isMemberExpression()) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n\n // Math.min(1, 2)\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isValidObjectCallee(object.node.name) &&\n !isInvalidMethod(property.node.name) &&\n !path.scope.getBinding(object.node.name)\n ) {\n context = global[object.node.name];\n const key = property.node.name;\n if (Object.hasOwn(context, key)) {\n func = context[key as keyof typeof context];\n }\n }\n\n // \"abc\".charCodeAt(4)\n if (object.isLiteral() && property.isIdentifier()) {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type (StringLiteral and NumberLiteral)\n const type = typeof object.node.value;\n if (type === \"string\" || type === \"number\") {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type\n context = object.node.value;\n func = context[property.node.name];\n }\n }\n }\n\n if (func) {\n const args = path.get(\"arguments\").map(arg => evaluateCached(arg, state));\n if (!state.confident) return;\n\n return func.apply(context, args);\n }\n }\n\n deopt(path, state);\n}\n\nfunction evaluateQuasis(\n path: NodePath<t.TaggedTemplateExpression | t.TemplateLiteral>,\n quasis: any[],\n state: State,\n raw = false,\n) {\n let str = \"\";\n\n let i = 0;\n const exprs = (\n path.isTemplateLiteral()\n ? path.get(\"expressions\")\n : path.get(\"quasi.expressions\")\n ) as NodePath<t.Expression>[];\n\n for (const elem of quasis) {\n // not confident, evaluated an expression we don't like\n if (!state.confident) break;\n\n // add on element\n str += raw ? elem.value.raw : elem.value.cooked;\n\n // add on interpolated expression if it's present\n const expr = exprs[i++];\n if (expr) str += String(evaluateCached(expr, state));\n }\n\n if (!state.confident) return;\n return str;\n}\n\n/**\n * Walk the input `node` and statically evaluate it.\n *\n * Returns an object in the form `{ confident, value, deopt }`. `confident`\n * indicates whether or not we had to drop out of evaluating the expression\n * because of hitting an unknown node that we couldn't confidently find the\n * value of, in which case `deopt` is the path of said node.\n *\n * Example:\n *\n * t.evaluate(parse(\"5 + 5\")) // { confident: true, value: 10 }\n * t.evaluate(parse(\"!true\")) // { confident: true, value: false }\n * t.evaluate(parse(\"foo + foo\")) // { confident: false, value: undefined, deopt: NodePath }\n *\n */\n\nexport function evaluate(this: NodePath): {\n confident: boolean;\n value: any;\n deopt: NodePath | null;\n} {\n const state: State = {\n confident: true,\n deoptPath: null,\n seen: new Map(),\n };\n let value = evaluateCached(this, state);\n if (!state.confident) value = undefined;\n\n return {\n confident: state.confident,\n deopt: state.deoptPath,\n value: value,\n };\n}\n","// This file contains methods that convert the path node into another node or some other type of data.\n\nimport {\n arrowFunctionExpression,\n assignmentExpression,\n binaryExpression,\n blockStatement,\n callExpression,\n conditionalExpression,\n expressionStatement,\n identifier,\n jsxIdentifier,\n logicalExpression,\n LOGICAL_OPERATORS,\n memberExpression,\n metaProperty,\n numericLiteral,\n objectExpression,\n restElement,\n returnStatement,\n sequenceExpression,\n spreadElement,\n stringLiteral,\n super as _super,\n thisExpression,\n toExpression,\n unaryExpression,\n toBindingIdentifierName,\n isFunction,\n isAssignmentPattern,\n isRestElement,\n getFunctionName,\n cloneNode,\n variableDeclaration,\n variableDeclarator,\n exportNamedDeclaration,\n exportSpecifier,\n inherits,\n buildUndefinedNode,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport template from \"@babel/template\";\nimport { environmentVisitor, explode } from \"../visitors.ts\";\nimport type NodePath from \"./index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { setup } from \"./context.ts\";\nimport type Scope from \"../scope/index.ts\";\n\nexport function ensureBlock(\n this: NodePath<\n t.Loop | t.WithStatement | t.Function | t.LabeledStatement | t.CatchClause\n >,\n): void {\n const body = this.get(\"body\");\n const bodyNode = body.node;\n\n if (Array.isArray(body)) {\n throw new Error(\"Can't convert array path to a block statement\");\n }\n if (!bodyNode) {\n throw new Error(\"Can't convert node without a body\");\n }\n\n if (body.isBlockStatement()) {\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return bodyNode;\n }\n\n const statements: t.Statement[] = [];\n\n let stringPath = \"body\";\n let key;\n let listKey;\n if (body.isStatement()) {\n listKey = \"body\";\n key = 0;\n statements.push(body.node);\n } else {\n stringPath += \".body.0\";\n if (this.isFunction()) {\n key = \"argument\";\n statements.push(returnStatement(body.node));\n } else {\n key = \"expression\";\n statements.push(expressionStatement(body.node));\n }\n }\n\n this.node.body = blockStatement(statements);\n const parentPath = this.get(stringPath) as NodePath;\n setup.call(\n body,\n parentPath,\n listKey\n ? // @ts-expect-error listKey must present in parent path\n parentPath.node[listKey]\n : parentPath.node,\n listKey,\n key,\n );\n\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return this.node;\n}\n\n/**\n * Given an arbitrary function, process its content as if it were an arrow function, moving references\n * to \"this\", \"arguments\", \"super\", and such into the function's parent scope. This method is useful if\n * you have wrapped some set of items in an IIFE or other function, but want \"this\", \"arguments\", and super\"\n * to continue behaving as expected.\n */\nexport function unwrapFunctionEnvironment(\n this: NodePath<\n t.ArrayExpression | t.FunctionExpression | t.FunctionDeclaration\n >,\n) {\n if (\n !this.isArrowFunctionExpression() &&\n !this.isFunctionExpression() &&\n !this.isFunctionDeclaration()\n ) {\n throw this.buildCodeFrameError(\n \"Can only unwrap the environment of a function.\",\n );\n }\n\n hoistFunctionEnvironment(this);\n}\n\nfunction setType<N extends t.Node, T extends N[\"type\"]>(\n path: NodePath<N>,\n type: T,\n): asserts path is NodePath<Extract<N, { type: T }>> {\n path.node.type = type;\n}\n\n/**\n * Convert a given arrow function into a normal ES5 function expression.\n */\nexport function arrowFunctionToExpression(\n this: NodePath<t.ArrowFunctionExpression>,\n {\n allowInsertArrow = true,\n allowInsertArrowWithRest = allowInsertArrow,\n // TODO(Babel 9): Consider defaulting to `false` for spec compliance\n noNewArrows = true,\n }: {\n allowInsertArrow?: boolean;\n allowInsertArrowWithRest?: boolean;\n noNewArrows?: boolean;\n } = {},\n): NodePath<\n Exclude<t.Function, t.Method | t.ArrowFunctionExpression> | t.CallExpression\n> {\n if (!this.isArrowFunctionExpression()) {\n throw (this as NodePath).buildCodeFrameError(\n \"Cannot convert non-arrow function to a function expression.\",\n );\n }\n\n let self = this;\n if (!noNewArrows) {\n // @ts-expect-error This is technicallynot valid on arrow functions\n // because it adds an .id property, but we are going to convert it\n // to a function expression anyway\n self = self.ensureFunctionName(false) ?? self;\n }\n\n const { thisBinding, fnPath: fn } = hoistFunctionEnvironment(\n self,\n noNewArrows,\n allowInsertArrow,\n allowInsertArrowWithRest,\n );\n\n fn.ensureBlock();\n setType(fn, \"FunctionExpression\");\n\n if (!noNewArrows) {\n const checkBinding = thisBinding\n ? null\n : fn.scope.generateUidIdentifier(\"arrowCheckId\");\n if (checkBinding) {\n fn.parentPath.scope.push({\n id: checkBinding,\n init: objectExpression([]),\n });\n }\n\n fn.get(\"body\").unshiftContainer(\n \"body\",\n expressionStatement(\n callExpression(this.hub.addHelper(\"newArrowCheck\"), [\n thisExpression(),\n checkBinding\n ? identifier(checkBinding.name)\n : identifier(thisBinding),\n ]),\n ),\n );\n\n return fn\n .replaceWith(\n callExpression(memberExpression(fn.node, identifier(\"bind\")), [\n checkBinding ? identifier(checkBinding.name) : thisExpression(),\n ]),\n )[0]\n .get(\"callee.object\") as NodePath<t.FunctionExpression>;\n }\n\n return fn;\n}\n\nconst getSuperCallsVisitor = environmentVisitor<{\n allSuperCalls: NodePath<t.CallExpression>[];\n}>({\n CallExpression(child, { allSuperCalls }) {\n if (!child.get(\"callee\").isSuper()) return;\n allSuperCalls.push(child);\n },\n});\n\n/**\n * Given a function, traverse its contents, and if there are references to \"this\", \"arguments\", \"super\",\n * or \"new.target\", ensure that these references reference the parent environment around this function.\n *\n * @returns `thisBinding`: the name of the injected reference to `this`; for example \"_this\"\n * @returns `fnPath`: the new path to the function node. This is different from the fnPath\n * parameter when the function node is wrapped in another node.\n */\nfunction hoistFunctionEnvironment(\n fnPath: NodePath<t.Function>,\n // TODO(Babel 9): Consider defaulting to `false` for spec compliance\n noNewArrows: boolean = true,\n allowInsertArrow: boolean = true,\n allowInsertArrowWithRest: boolean = true,\n): { thisBinding: string; fnPath: NodePath<t.Function> } {\n let arrowParent;\n let thisEnvFn: NodePath<t.Function> = fnPath.findParent(p => {\n if (p.isArrowFunctionExpression()) {\n arrowParent ??= p;\n return false;\n }\n return (\n p.isFunction() ||\n p.isProgram() ||\n p.isClassProperty({ static: false }) ||\n p.isClassPrivateProperty({ static: false })\n );\n }) as NodePath<t.Function>;\n const inConstructor = thisEnvFn.isClassMethod({ kind: \"constructor\" });\n\n if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {\n if (arrowParent) {\n thisEnvFn = arrowParent;\n } else if (allowInsertArrow) {\n // It's safe to wrap this function in another and not hoist to the\n // top level because the 'this' binding is constant in class\n // properties (since 'super()' has already been called), so we don't\n // need to capture/reassign it at the top level.\n thisEnvFn = fnPath\n .replaceWith(\n callExpression(\n arrowFunctionExpression([], toExpression(fnPath.node)),\n [],\n ),\n )[0]\n .get(\"callee\") as NodePath<t.ArrowFunctionExpression>;\n fnPath = thisEnvFn.get(\"body\") as NodePath<t.FunctionExpression>;\n } else {\n throw fnPath.buildCodeFrameError(\n \"Unable to transform arrow inside class property\",\n );\n }\n }\n\n const { thisPaths, argumentsPaths, newTargetPaths, superProps, superCalls } =\n getScopeInformation(fnPath);\n\n // Convert all super() calls in the constructor, if super is used in an arrow.\n if (inConstructor && superCalls.length > 0) {\n if (!allowInsertArrow) {\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super()` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n if (!allowInsertArrowWithRest) {\n // preset-env with target `since 2017` enables `transform-parameters` without `transform-classes`.\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-parameters', \" +\n \"it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n const allSuperCalls: NodePath<t.CallExpression>[] = [];\n thisEnvFn.traverse(getSuperCallsVisitor, { allSuperCalls });\n const superBinding = getSuperBinding(thisEnvFn);\n allSuperCalls.forEach(superCall => {\n const callee = identifier(superBinding);\n callee.loc = superCall.node.callee.loc;\n\n superCall.get(\"callee\").replaceWith(callee);\n });\n }\n\n // Convert all \"arguments\" references in the arrow to point at the alias.\n if (argumentsPaths.length > 0) {\n const argumentsBinding = getBinding(thisEnvFn, \"arguments\", () => {\n const args = () => identifier(\"arguments\");\n if (thisEnvFn.scope.path.isProgram()) {\n return conditionalExpression(\n binaryExpression(\n \"===\",\n unaryExpression(\"typeof\", args()),\n stringLiteral(\"undefined\"),\n ),\n buildUndefinedNode(),\n args(),\n );\n } else {\n return args();\n }\n });\n\n argumentsPaths.forEach(argumentsChild => {\n const argsRef = identifier(argumentsBinding);\n argsRef.loc = argumentsChild.node.loc;\n\n argumentsChild.replaceWith(argsRef);\n });\n }\n\n // Convert all \"new.target\" references in the arrow to point at the alias.\n if (newTargetPaths.length > 0) {\n const newTargetBinding = getBinding(thisEnvFn, \"newtarget\", () =>\n metaProperty(identifier(\"new\"), identifier(\"target\")),\n );\n\n newTargetPaths.forEach(targetChild => {\n const targetRef = identifier(newTargetBinding);\n targetRef.loc = targetChild.node.loc;\n\n targetChild.replaceWith(targetRef);\n });\n }\n\n // Convert all \"super.prop\" references to point at aliases.\n if (superProps.length > 0) {\n if (!allowInsertArrow) {\n throw superProps[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super.prop` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n\n const flatSuperProps = superProps.reduce(\n (acc, superProp) => acc.concat(standardizeSuperProperty(superProp)),\n [] as NodePath<t.MemberExpression>[],\n );\n\n flatSuperProps.forEach(superProp => {\n const key = superProp.node.computed\n ? \"\"\n : // @ts-expect-error super property must not contain private name\n superProp.get(\"property\").node.name;\n\n const superParentPath = superProp.parentPath;\n\n const isAssignment = superParentPath.isAssignmentExpression({\n left: superProp.node,\n });\n const isCall = superParentPath.isCallExpression({\n callee: superProp.node,\n });\n const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({\n tag: superProp.node,\n });\n const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);\n\n const args: t.Expression[] = [];\n if (superProp.node.computed) {\n // SuperProperty must not be a private name\n args.push(superProp.get(\"property\").node as t.Expression);\n }\n\n if (isAssignment) {\n const value = superParentPath.node.right;\n args.push(value);\n }\n\n const call = callExpression(identifier(superBinding), args);\n\n if (isCall) {\n superParentPath.unshiftContainer(\"arguments\", thisExpression());\n superProp.replaceWith(memberExpression(call, identifier(\"call\")));\n\n thisPaths.push(\n superParentPath.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else if (isAssignment) {\n // Replace not only the super.prop, but the whole assignment\n superParentPath.replaceWith(call);\n } else if (isTaggedTemplate) {\n thisPaths.push(\n superProp\n .replaceWith(\n callExpression(\n memberExpression(call, identifier(\"bind\"), false),\n [thisExpression()],\n ),\n )[0]\n .get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else {\n superProp.replaceWith(call);\n }\n });\n }\n\n // Convert all \"this\" references in the arrow to point at the alias.\n let thisBinding: string | null;\n if (thisPaths.length > 0 || !noNewArrows) {\n thisBinding = getThisBinding(thisEnvFn, inConstructor);\n\n if (\n noNewArrows ||\n // In subclass constructors, still need to rewrite because \"this\" can't be bound in spec mode\n // because it might not have been initialized yet.\n (inConstructor && hasSuperClass(thisEnvFn))\n ) {\n thisPaths.forEach(thisChild => {\n const thisRef = thisChild.isJSX()\n ? jsxIdentifier(thisBinding!)\n : identifier(thisBinding!);\n\n thisRef.loc = thisChild.node.loc;\n thisChild.replaceWith(thisRef);\n });\n\n if (!noNewArrows) thisBinding = null;\n }\n }\n\n return { thisBinding: thisBinding!, fnPath };\n}\n\ntype LogicalOp = Parameters<typeof logicalExpression>[0];\ntype BinaryOp = Parameters<typeof binaryExpression>[0];\n\nfunction isLogicalOp(op: string): op is LogicalOp {\n return LOGICAL_OPERATORS.includes(op);\n}\n\nfunction standardizeSuperProperty(\n superProp: NodePath<t.MemberExpression>,\n):\n | [NodePath<t.MemberExpression>]\n | [NodePath<t.MemberExpression>, NodePath<t.MemberExpression>] {\n if (\n superProp.parentPath.isAssignmentExpression() &&\n superProp.parentPath.node.operator !== \"=\"\n ) {\n const assignmentPath = superProp.parentPath;\n\n const op = assignmentPath.node.operator.slice(0, -1) as\n | LogicalOp\n | BinaryOp;\n\n const value = assignmentPath.node.right;\n\n const isLogicalAssignment = isLogicalOp(op);\n\n if (superProp.node.computed) {\n // from: super[foo] **= 4;\n // to: super[tmp = foo] = super[tmp] ** 4;\n\n // from: super[foo] ??= 4;\n // to: super[tmp = foo] ?? super[tmp] = 4;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n\n const { object, property } = superProp.node;\n\n assignmentPath.get(\"left\").replaceWith(\n memberExpression(\n object,\n\n assignmentExpression(\"=\", tmp, property),\n true /* computed */,\n ),\n );\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(tmp.name), true /* computed */),\n value,\n ),\n );\n } else {\n // from: super.foo **= 4;\n // to: super.foo = super.foo ** 4;\n\n // from: super.foo ??= 4;\n // to: super.foo ?? super.foo = 4;\n\n const object = superProp.node.object;\n const property = superProp.node.property as t.Identifier;\n\n assignmentPath\n .get(\"left\")\n .replaceWith(memberExpression(object, property));\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(property.name)),\n value,\n ),\n );\n }\n\n if (isLogicalAssignment) {\n assignmentPath.replaceWith(\n logicalExpression(\n op,\n assignmentPath.node.left as t.MemberExpression,\n assignmentPath.node.right,\n ),\n );\n } else {\n assignmentPath.node.operator = \"=\";\n }\n\n return [\n assignmentPath.get(\"left\") as NodePath<t.MemberExpression>,\n assignmentPath.get(\"right\").get(\"left\") as NodePath<t.MemberExpression>,\n ];\n } else if (superProp.parentPath.isUpdateExpression()) {\n const updateExpr = superProp.parentPath;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n const computedKey = superProp.node.computed\n ? superProp.scope.generateDeclaredUidIdentifier(\"prop\")\n : null;\n\n const parts: t.Expression[] = [\n assignmentExpression(\n \"=\",\n tmp,\n memberExpression(\n superProp.node.object,\n computedKey\n ? assignmentExpression(\n \"=\",\n computedKey,\n superProp.node.property as t.Expression,\n )\n : superProp.node.property,\n superProp.node.computed,\n ),\n ),\n assignmentExpression(\n \"=\",\n memberExpression(\n superProp.node.object,\n computedKey ? identifier(computedKey.name) : superProp.node.property,\n superProp.node.computed,\n ),\n binaryExpression(\n // map `++` to `+`, and `--` to `-`\n superProp.parentPath.node.operator[0] as \"+\" | \"-\",\n identifier(tmp.name),\n numericLiteral(1),\n ),\n ),\n ];\n\n if (!superProp.parentPath.node.prefix) {\n parts.push(identifier(tmp.name));\n }\n\n const sequenceExpr = updateExpr.replaceWith(sequenceExpression(parts))[0];\n\n const left = sequenceExpr.get(\n \"expressions.0.right\",\n ) as NodePath<t.MemberExpression>;\n const right = sequenceExpr.get(\n \"expressions.1.left\",\n ) as NodePath<t.MemberExpression>;\n return [left, right];\n }\n\n return [superProp];\n\n function rightExpression(\n op: BinaryOp | \"=\",\n left: t.MemberExpression,\n right: t.Expression,\n ) {\n if (op === \"=\") {\n return assignmentExpression(\"=\", left, right);\n } else {\n return binaryExpression(op, left, right);\n }\n }\n}\n\nfunction hasSuperClass(thisEnvFn: NodePath<t.Function>) {\n return (\n thisEnvFn.isClassMethod() &&\n !!thisEnvFn.parentPath.parentPath.node.superClass\n );\n}\n\nconst assignSuperThisVisitor = environmentVisitor<{\n supers: WeakSet<t.CallExpression>;\n thisBinding: string;\n}>({\n CallExpression(child, { supers, thisBinding }) {\n if (!child.get(\"callee\").isSuper()) return;\n if (supers.has(child.node)) return;\n supers.add(child.node);\n\n child.replaceWithMultiple([\n child.node,\n assignmentExpression(\"=\", identifier(thisBinding), identifier(\"this\")),\n ]);\n },\n});\n\n// Create a binding that evaluates to the \"this\" of the given function.\nfunction getThisBinding(\n thisEnvFn: NodePath<t.Function>,\n inConstructor: boolean,\n) {\n return getBinding(thisEnvFn, \"this\", thisBinding => {\n if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();\n\n thisEnvFn.traverse(assignSuperThisVisitor, {\n supers: new WeakSet(),\n thisBinding,\n });\n });\n}\n\n// Create a binding for a function that will call \"super()\" with arguments passed through.\nfunction getSuperBinding(thisEnvFn: NodePath<t.Function>) {\n return getBinding(thisEnvFn, \"supercall\", () => {\n const argsBinding = thisEnvFn.scope.generateUidIdentifier(\"args\");\n return arrowFunctionExpression(\n [restElement(argsBinding)],\n callExpression(_super(), [spreadElement(identifier(argsBinding.name))]),\n );\n });\n}\n\n// Create a binding for a function that will call \"super.foo\" or \"super[foo]\".\nfunction getSuperPropBinding(\n thisEnvFn: NodePath<t.Function>,\n isAssignment: boolean,\n propName: string,\n) {\n const op = isAssignment ? \"set\" : \"get\";\n\n return getBinding(thisEnvFn, `superprop_${op}:${propName || \"\"}`, () => {\n const argsList = [];\n\n let fnBody;\n if (propName) {\n // () => super.foo\n fnBody = memberExpression(_super(), identifier(propName));\n } else {\n const method = thisEnvFn.scope.generateUidIdentifier(\"prop\");\n // (method) => super[method]\n argsList.unshift(method);\n fnBody = memberExpression(\n _super(),\n identifier(method.name),\n true /* computed */,\n );\n }\n\n if (isAssignment) {\n const valueIdent = thisEnvFn.scope.generateUidIdentifier(\"value\");\n argsList.push(valueIdent);\n\n fnBody = assignmentExpression(\"=\", fnBody, identifier(valueIdent.name));\n }\n\n return arrowFunctionExpression(argsList, fnBody);\n });\n}\n\nfunction getBinding(\n thisEnvFn: NodePath,\n key: string,\n init: (name: string) => t.Expression | undefined,\n) {\n const cacheKey = \"binding:\" + key;\n let data: string | undefined = thisEnvFn.getData(cacheKey);\n if (!data) {\n const id = thisEnvFn.scope.generateUidIdentifier(key);\n data = id.name;\n thisEnvFn.setData(cacheKey, data);\n\n thisEnvFn.scope.push({\n id: id,\n init: init(data),\n });\n }\n\n return data;\n}\n\ntype ScopeInfo = {\n thisPaths: NodePath<t.ThisExpression | t.JSXIdentifier>[];\n superCalls: NodePath<t.CallExpression>[];\n superProps: NodePath<t.MemberExpression>[];\n argumentsPaths: NodePath<t.Identifier | t.JSXIdentifier>[];\n newTargetPaths: NodePath<t.MetaProperty>[];\n};\n\nconst getScopeInformationVisitor = environmentVisitor<ScopeInfo>({\n ThisExpression(child, { thisPaths }) {\n thisPaths.push(child);\n },\n JSXIdentifier(child, { thisPaths }) {\n if (child.node.name !== \"this\") return;\n if (\n !child.parentPath.isJSXMemberExpression({ object: child.node }) &&\n !child.parentPath.isJSXOpeningElement({ name: child.node })\n ) {\n return;\n }\n\n thisPaths.push(child);\n },\n CallExpression(child, { superCalls }) {\n if (child.get(\"callee\").isSuper()) superCalls.push(child);\n },\n MemberExpression(child, { superProps }) {\n if (child.get(\"object\").isSuper()) superProps.push(child);\n },\n Identifier(child, { argumentsPaths }) {\n if (!child.isReferencedIdentifier({ name: \"arguments\" })) return;\n\n let curr: Scope | undefined = child.scope;\n do {\n if (curr.hasOwnBinding(\"arguments\")) {\n curr.rename(\"arguments\");\n return;\n }\n if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {\n break;\n }\n } while ((curr = curr.parent));\n\n argumentsPaths.push(child);\n },\n MetaProperty(child, { newTargetPaths }) {\n if (!child.get(\"meta\").isIdentifier({ name: \"new\" })) return;\n if (!child.get(\"property\").isIdentifier({ name: \"target\" })) return;\n\n newTargetPaths.push(child);\n },\n});\n\nfunction getScopeInformation(fnPath: NodePath) {\n const thisPaths: ScopeInfo[\"thisPaths\"] = [];\n const argumentsPaths: ScopeInfo[\"argumentsPaths\"] = [];\n const newTargetPaths: ScopeInfo[\"newTargetPaths\"] = [];\n const superProps: ScopeInfo[\"superProps\"] = [];\n const superCalls: ScopeInfo[\"superCalls\"] = [];\n\n fnPath.traverse(getScopeInformationVisitor, {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n });\n\n return {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n };\n}\n\nexport function splitExportDeclaration(\n this: NodePath<t.ExportDefaultDeclaration | t.ExportNamedDeclaration>,\n): NodePath<t.Declaration> {\n if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {\n throw new Error(\"Only default and named export declarations can be split.\");\n }\n if (this.isExportNamedDeclaration() && this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const declaration = this.get(\"declaration\");\n\n if (this.isExportDefaultDeclaration()) {\n const standaloneDeclaration =\n declaration.isFunctionDeclaration() || declaration.isClassDeclaration();\n const exportExpr =\n declaration.isFunctionExpression() || declaration.isClassExpression();\n\n const scope = declaration.isScope()\n ? declaration.scope.parent!\n : declaration.scope;\n\n // @ts-expect-error id is not defined in expressions other than function/class\n let id = declaration.node.id;\n let needBindingRegistration = false;\n\n if (!id) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(\"default\");\n\n if (standaloneDeclaration || exportExpr) {\n declaration.node.id = cloneNode(id);\n }\n } else if (exportExpr && scope.hasBinding(id.name)) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(id.name);\n }\n\n const updatedDeclaration = standaloneDeclaration\n ? declaration.node\n : variableDeclaration(\"var\", [\n variableDeclarator(\n cloneNode(id),\n // @ts-expect-error When `standaloneDeclaration` is false, declaration must not be a Function/ClassDeclaration\n declaration.node,\n ),\n ]);\n\n const updatedExportDeclaration = exportNamedDeclaration(null, [\n exportSpecifier(cloneNode(id), identifier(\"default\")),\n ]);\n\n this.insertAfter(updatedExportDeclaration);\n this.replaceWith(updatedDeclaration);\n\n if (needBindingRegistration) {\n scope.registerDeclaration(this);\n }\n\n return this;\n } else if (this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const bindingIdentifiers = declaration.getOuterBindingIdentifiers();\n\n const specifiers = Object.keys(bindingIdentifiers).map(name => {\n return exportSpecifier(identifier(name), identifier(name));\n });\n\n const aliasDeclar = exportNamedDeclaration(null, specifiers);\n\n this.insertAfter(aliasDeclar);\n this.replaceWith(declaration.node!);\n return this;\n}\n\nconst getRefersOuterBindingVisitor = (): Visitor<{\n needsRename: boolean;\n name: string;\n}> =>\n explode({\n \"ReferencedIdentifier|BindingIdentifier\"(path, state) {\n // check if this node matches our function id\n if (path.node.name !== state.name) return;\n state.needsRename = true;\n path.stop();\n },\n Scope(path, state) {\n if (path.scope.hasOwnBinding(state.name)) {\n path.skip();\n }\n },\n });\n\nexport function ensureFunctionName<\n N extends t.FunctionExpression | t.ClassExpression,\n>(this: NodePath<N>, supportUnicodeId: boolean): null | NodePath<N> {\n if (this.node.id) return this;\n\n const res = getFunctionName(this.node, this.parent);\n if (res == null) return this;\n let { name } = res;\n\n if (!supportUnicodeId && /[\\uD800-\\uDFFF]/.test(name)) {\n return null;\n }\n\n if (name.startsWith(\"get \") || name.startsWith(\"set \")) {\n // TODO: Remove this to support naming getters and setters\n return null;\n }\n\n name = toBindingIdentifierName(name.replace(/[/ ]/g, \"_\"));\n const id = identifier(name);\n inherits(id, res.originalNode);\n\n const state = { needsRename: false, name };\n\n // check to see if we have a local binding of the id we're setting inside of\n // the function, this is important as there are caveats associated\n\n const { scope } = this;\n const binding = scope.getOwnBinding(name);\n if (binding) {\n if (binding.kind === \"param\") {\n // safari will blow up in strict mode with code like:\n //\n // let t = function t(t) {};\n //\n // with the error:\n //\n // Cannot declare a parameter named 't' as it shadows the name of a\n // strict mode function.\n //\n // this isn't to the spec and they've invented this behaviour which is\n // **extremely** annoying so we avoid setting the name if it has a param\n // with the same id\n state.needsRename = true;\n } else {\n // otherwise it's defined somewhere in scope like:\n //\n // let t = function () {\n // let t = 2;\n // };\n //\n // so we can safely just set the id and move along as it shadows the\n // bound function id\n }\n } else if (scope.parent!.hasBinding(name) || scope.hasGlobal(name)) {\n this.traverse(getRefersOuterBindingVisitor(), state);\n }\n\n if (!state.needsRename) {\n this.node.id = id;\n\n scope.getProgramParent().referencesSet.add(id.name);\n\n return this;\n }\n\n if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {\n // we can just munge the local binding\n scope.rename(id.name);\n this.node.id = id;\n\n scope.getProgramParent().referencesSet.add(id.name);\n\n return this;\n }\n\n // TODO: we don't currently support wrapping class expressions\n if (!isFunction(this.node)) return null;\n\n // need to add a wrapper since we can't change the references\n\n const key = scope.generateUidIdentifier(id.name);\n // shim in dummy params to retain function arity, if you try to read the\n // source then you'll get the original since it's proxied so it's all good\n const params = [];\n for (let i = 0, len = getFunctionArity(this.node); i < len; i++) {\n params.push(scope.generateUidIdentifier(\"x\"));\n }\n const call = template.expression.ast`\n (function (${key}) {\n function ${id}(${params}) {\n return ${cloneNode(key)}.apply(this, arguments);\n }\n\n ${cloneNode(id)}.toString = function () {\n return ${cloneNode(key)}.toString();\n }\n\n return ${cloneNode(id)};\n })(${toExpression(this.node)})\n ` as t.CallExpression;\n\n return this.replaceWith(call)[0].get(\"arguments.0\") as NodePath<N>;\n}\n\nfunction getFunctionArity(node: t.Function): number {\n const count = node.params.findIndex(\n param => isAssignmentPattern(param) || isRestElement(param),\n );\n return count === -1 ? node.params.length : count;\n}\n","// This file contains methods responsible for introspecting the current path for certain values.\n\nimport type NodePath from \"./index.ts\";\nimport {\n STATEMENT_OR_BLOCK_KEYS,\n VISITOR_KEYS,\n isBlockStatement,\n isExpression,\n isIdentifier,\n isLiteral,\n isStringLiteral,\n isType,\n matchesPattern as _matchesPattern,\n toComputedKey,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Match the current node if it matches the provided `pattern`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\n\nexport function matchesPattern(\n this: NodePath,\n pattern: string,\n allowPartial?: boolean,\n): boolean {\n return _matchesPattern(this.node, pattern, allowPartial);\n}\n\nexport function isStatic(this: NodePath): boolean {\n return this.scope.isStatic(this.node);\n}\n\n/**\n * Check the type against our stored internal type of the node. This is handy when a node has\n * been removed yet we still internally know the type and need it to calculate node replacement.\n */\n\nexport function isNodeType(\n this: NodePath<t.Node | null>,\n type: string,\n): boolean {\n return isType(this.type, type);\n}\n\n/**\n * This checks whether or not we're in one of the following positions:\n *\n * for (KEY in right);\n * for (KEY;;);\n *\n * This is because these spots allow VariableDeclarations AND normal expressions so we need\n * to tell the path replacement that it's ok to replace this with an expression.\n */\n\nexport function canHaveVariableDeclarationOrExpression(\n this: NodePath<t.Node | null>,\n): boolean {\n return (\n (this.key === \"init\" || this.key === \"left\") && this.parentPath.isFor()\n );\n}\n\n/**\n * This checks whether we are swapping an arrow function's body between an\n * expression and a block statement (or vice versa).\n *\n * This is because arrow functions may implicitly return an expression, which\n * is the same as containing a block statement.\n */\n\nexport function canSwapBetweenExpressionAndStatement(\n this: NodePath<t.Node | null>,\n replacement: t.Node,\n): boolean {\n if (this.key !== \"body\" || !this.parentPath.isArrowFunctionExpression()) {\n return false;\n }\n\n if (this.isExpression()) {\n return isBlockStatement(replacement);\n } else if (this.isBlockStatement()) {\n return isExpression(replacement);\n }\n\n return false;\n}\n\n/**\n * Check whether the current path references a completion record\n */\n\nexport function isCompletionRecord(\n this: NodePath,\n allowInsideFunction?: boolean,\n): boolean {\n let path = this;\n let first = true;\n\n do {\n const { type, container } = path;\n\n // we're in a function so can't be a completion record\n if (!first && (path.isFunction() || type === \"StaticBlock\")) {\n return !!allowInsideFunction;\n }\n\n first = false;\n\n // check to see if we're the last item in the container and if we are\n // we're a completion record!\n if (Array.isArray(container) && path.key !== container.length - 1) {\n return false;\n }\n } while (\n (path = path.parentPath) &&\n !path.isProgram() &&\n !path.isDoExpression()\n );\n\n return true;\n}\n\n/**\n * Check whether or not the current `key` allows either a single statement or block statement\n * so we can explode it if necessary.\n */\n\nexport function isStatementOrBlock(this: NodePath<t.Node | null>): boolean {\n if (\n this.parentPath.isLabeledStatement() ||\n isBlockStatement(this.container as t.Node)\n ) {\n return false;\n } else {\n return STATEMENT_OR_BLOCK_KEYS.includes(this.key as string);\n }\n}\n\n/**\n * Check if the currently assigned path references the `importName` of `moduleSource`.\n */\n\nexport function referencesImport(\n this: NodePath,\n moduleSource: string,\n importName: string,\n): boolean {\n if (!this.isReferencedIdentifier()) {\n if (\n (this.isJSXMemberExpression() &&\n this.node.property.name === importName) ||\n ((this.isMemberExpression() || this.isOptionalMemberExpression()) &&\n (this.node.computed\n ? isStringLiteral(this.node.property, { value: importName })\n : (this.node.property as t.Identifier).name === importName))\n ) {\n const object = (\n this as NodePath<t.MemberExpression | t.OptionalMemberExpression>\n ).get(\"object\");\n return (\n object.isReferencedIdentifier() &&\n object.referencesImport(moduleSource, \"*\")\n );\n }\n\n return false;\n }\n\n const binding = this.scope.getBinding((this.node as t.Identifier).name);\n if (binding?.kind !== \"module\") return false;\n\n const path = binding.path;\n const parent = path.parentPath;\n if (!parent.isImportDeclaration()) return false;\n\n // check moduleSource\n if (parent.node.source.value === moduleSource) {\n if (!importName) return true;\n } else {\n return false;\n }\n\n if (path.isImportDefaultSpecifier() && importName === \"default\") {\n return true;\n }\n\n if (path.isImportNamespaceSpecifier() && importName === \"*\") {\n return true;\n }\n\n if (\n path.isImportSpecifier() &&\n isIdentifier(path.node.imported, { name: importName })\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Get the source code associated with this node.\n */\n\nexport function getSource(this: NodePath): string {\n const node = this.node;\n if (node.end) {\n const code = this.hub.getCode();\n if (code) return code.slice(node.start!, node.end);\n }\n return \"\";\n}\n\nexport function willIMaybeExecuteBefore(\n this: NodePath,\n target: NodePath,\n): boolean {\n return this._guessExecutionStatusRelativeTo(target) !== \"after\";\n}\n\nfunction getOuterFunction(path: NodePath) {\n return path.isProgram()\n ? path\n : (\n path.parentPath.scope.getFunctionParent() ||\n path.parentPath.scope.getProgramParent()\n ).path;\n}\n\nfunction isExecutionUncertain(type: t.Node[\"type\"], key: string) {\n switch (type) {\n // a && FOO\n // a || FOO\n case \"LogicalExpression\":\n return key === \"right\";\n\n // a ? FOO : FOO\n // if (a) FOO; else FOO;\n case \"ConditionalExpression\":\n case \"IfStatement\":\n return key === \"consequent\" || key === \"alternate\";\n\n // while (a) FOO;\n case \"WhileStatement\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n return key === \"body\";\n\n // for (a; b; FOO) FOO;\n case \"ForStatement\":\n return key === \"body\" || key === \"update\";\n\n // switch (a) { FOO }\n case \"SwitchStatement\":\n return key === \"cases\";\n\n // try { a } catch FOO finally { b }\n case \"TryStatement\":\n return key === \"handler\";\n\n // var [ x = FOO ]\n case \"AssignmentPattern\":\n return key === \"right\";\n\n // a?.[FOO]\n case \"OptionalMemberExpression\":\n return key === \"property\";\n\n // a?.(FOO)\n case \"OptionalCallExpression\":\n return key === \"arguments\";\n\n default:\n return false;\n }\n}\n\nfunction isExecutionUncertainInList(paths: NodePath[], maxIndex: number) {\n for (let i = 0; i < maxIndex; i++) {\n const path = paths[i];\n if (isExecutionUncertain(path.parent.type, path.parentKey)) {\n return true;\n }\n }\n return false;\n}\n\n// TODO(Babel 9)\n// This can be { before: boolean, after: boolean, unknown: boolean }.\n// This allows transforms like the tdz one to treat cases when the status\n// is both before and unknown/after like if it were before.\ntype RelativeExecutionStatus = \"before\" | \"after\" | \"unknown\";\n\n// Used to avoid infinite recursion in cases like\n// function f() { if (false) f(); }\n// f();\n// It also works with indirect recursion.\nconst SYMBOL_CHECKING = Symbol();\n\ntype ExecutionStatusCache = Map<\n t.Node,\n Map<t.Node, RelativeExecutionStatus | typeof SYMBOL_CHECKING>\n>;\n\n/**\n * Given a `target` check the execution status of it relative to the current path.\n *\n * \"Execution status\" simply refers to where or not we **think** this will execute\n * before or after the input `target` element.\n */\n\nexport function _guessExecutionStatusRelativeTo(\n this: NodePath,\n target: NodePath,\n): RelativeExecutionStatus {\n return _guessExecutionStatusRelativeToCached(this, target, new Map());\n}\n\nfunction _guessExecutionStatusRelativeToCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n // check if the two paths are in different functions, we can't track execution of these\n const funcParent = {\n this: getOuterFunction(base),\n target: getOuterFunction(target),\n };\n\n // here we check the `node` equality as sometimes we may have different paths for the\n // same node due to path thrashing\n if (funcParent.target.node !== funcParent.this.node) {\n return _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base,\n funcParent.target,\n cache,\n );\n }\n\n const paths = {\n target: target.getAncestry(),\n this: base.getAncestry(),\n };\n\n // If this is an ancestor of the target path,\n // e.g. f(g); where this is f and target is g.\n if (paths.target.includes(base)) return \"after\";\n if (paths.this.includes(target)) return \"before\";\n\n // get ancestor where the branches intersect\n let commonPath;\n const commonIndex = { target: 0, this: 0 };\n\n while (!commonPath && commonIndex.this < paths.this.length) {\n const path = paths.this[commonIndex.this];\n commonIndex.target = paths.target.indexOf(path);\n if (commonIndex.target >= 0) {\n commonPath = path;\n } else {\n commonIndex.this++;\n }\n }\n\n if (!commonPath) {\n throw new Error(\n \"Internal Babel error - The two compared nodes\" +\n \" don't appear to belong to the same program.\",\n );\n }\n\n if (\n isExecutionUncertainInList(paths.this, commonIndex.this - 1) ||\n isExecutionUncertainInList(paths.target, commonIndex.target - 1)\n ) {\n return \"unknown\";\n }\n\n const divergence = {\n this: paths.this[commonIndex.this - 1],\n target: paths.target[commonIndex.target - 1],\n };\n\n // container list so let's see which one is after the other\n // e.g. [ THIS, TARGET ]\n if (\n divergence.target.listKey &&\n divergence.this.listKey &&\n divergence.target.container === divergence.this.container\n ) {\n return divergence.target.key! > divergence.this.key! ? \"before\" : \"after\";\n }\n\n // otherwise we're associated by a parent node, check which key comes before the other\n const keys = VISITOR_KEYS[commonPath.type];\n const keyPosition = {\n this: keys.indexOf(divergence.this.parentKey),\n target: keys.indexOf(divergence.target.parentKey),\n };\n return keyPosition.target > keyPosition.this ? \"before\" : \"after\";\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n if (!target.isFunctionDeclaration()) {\n if (\n _guessExecutionStatusRelativeToCached(base, target, cache) === \"before\"\n ) {\n return \"before\";\n }\n return \"unknown\";\n } else if (target.parentPath.isExportDeclaration()) {\n return \"unknown\";\n }\n\n // so we're in a completely different function, if this is a function declaration\n // then we can be a bit smarter and handle cases where the function is either\n // a. not called at all (part of an export)\n // b. called directly\n const binding = target.scope.getBinding(target.node.id!.name)!;\n\n // no references!\n if (!binding.references) return \"before\";\n\n const referencePaths: NodePath[] = binding.referencePaths;\n\n let allStatus;\n\n // verify that all the calls have the same execution status\n for (const path of referencePaths) {\n // if a reference is a child of the function we're checking against then we can\n // safely ignore it\n const childOfFunction = !!path.find(path => path.node === target.node);\n if (childOfFunction) continue;\n\n if (path.key !== \"callee\" || !path.parentPath.isCallExpression()) {\n // This function is passed as a reference, so we don't\n // know when it will be called.\n return \"unknown\";\n }\n\n const status = _guessExecutionStatusRelativeToCached(base, path, cache);\n\n if (allStatus && allStatus !== status) {\n return \"unknown\";\n } else {\n allStatus = status;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return allStatus!;\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n let nodeMap = cache.get(base.node);\n let cached;\n\n if (!nodeMap) {\n cache.set(base.node, (nodeMap = new Map()));\n } else if ((cached = nodeMap.get(target.node))) {\n if (cached === SYMBOL_CHECKING) {\n return \"unknown\";\n }\n return cached;\n }\n\n nodeMap.set(target.node, SYMBOL_CHECKING);\n\n const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base,\n target,\n cache,\n );\n\n nodeMap.set(target.node, result);\n return result;\n}\n\n/**\n * Resolve the value pointed to by a NodePath\n * e.g.\n * ```\n * var a = 1;\n * var b = a;\n * b;\n * ```\n * `b.resolve()` will return `1`\n */\nexport function resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n) {\n return _resolve.call(this, dangerous, resolved) || this;\n}\n\nexport function _resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n): NodePath | undefined | null {\n // detect infinite recursion\n // todo: possibly have a max length on this just to be safe\n if (resolved?.includes(this)) return;\n\n // we store all the paths we've \"resolved\" in this array to prevent infinite recursion\n resolved = resolved || [];\n resolved.push(this);\n\n if (this.isVariableDeclarator()) {\n if (this.get(\"id\").isIdentifier()) {\n // @ts-expect-error FIXME: NodePath<null>\n return this.get(\"init\").resolve(dangerous, resolved);\n } else {\n // otherwise it's a request for a pattern and that's a bit more tricky\n }\n } else if (this.isReferencedIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return;\n\n // reassigned so we can't really resolve it\n if (!binding.constant) return;\n\n // todo - lookup module in dependency graph\n if (binding.kind === \"module\") return;\n\n if (binding.path !== this) {\n const ret = binding.path.resolve(dangerous, resolved);\n // If the identifier resolves to parent node then we can't really resolve it.\n if (this.find(parent => parent.node === ret.node)) return;\n return ret;\n }\n } else if (this.isTypeCastExpression()) {\n // @ ts-ignore todo: babel-types\n return this.get(\"expression\").resolve(dangerous, resolved);\n } else if (dangerous && this.isMemberExpression()) {\n // this is dangerous, as non-direct target assignments will mutate it's state\n // making this resolution inaccurate\n\n const targetKey = toComputedKey(this.node);\n if (!isLiteral(targetKey)) return;\n\n // @ts-expect-error todo(flow->ts): NullLiteral\n const targetName = targetKey.value;\n\n const target = this.get(\"object\").resolve(dangerous, resolved);\n\n if (target.isObjectExpression()) {\n const props = target.get(\"properties\");\n for (const prop of props as any[]) {\n if (!prop.isProperty()) continue;\n\n const key = prop.get(\"key\");\n\n // { foo: obj }\n let match =\n prop.isnt(\"computed\") && key.isIdentifier({ name: targetName });\n\n // { \"foo\": \"obj\" } or { [\"foo\"]: \"obj\" }\n match = match || key.isLiteral({ value: targetName });\n\n if (match) return prop.get(\"value\").resolve(dangerous, resolved);\n }\n } else if (target.isArrayExpression() && !isNaN(+targetName)) {\n const elems = target.get(\"elements\");\n const elem = elems[targetName];\n // @ts-expect-error FIXME: NodePath<null>\n if (elem) return elem.resolve(dangerous, resolved);\n }\n }\n}\n\nexport function isConstantExpression(this: NodePath<t.Node | null>): boolean {\n if (this.isIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return false;\n return binding.constant;\n }\n\n if (this.isLiteral()) {\n if (this.isRegExpLiteral()) {\n return false;\n }\n\n if (this.isTemplateLiteral()) {\n return this.get(\"expressions\").every(expression =>\n expression.isConstantExpression(),\n );\n }\n\n return true;\n }\n\n if (this.isUnaryExpression()) {\n if (this.node.operator !== \"void\") {\n return false;\n }\n\n return this.get(\"argument\").isConstantExpression();\n }\n\n if (this.isBinaryExpression()) {\n const { operator } = this.node;\n return (\n operator !== \"in\" &&\n operator !== \"instanceof\" &&\n this.get(\"left\").isConstantExpression() &&\n this.get(\"right\").isConstantExpression()\n );\n }\n\n if (this.isMemberExpression()) {\n return (\n !this.node.computed &&\n this.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true })\n );\n }\n\n if (this.isCallExpression()) {\n return (\n this.node.arguments.length === 1 &&\n this.get(\"callee\").matchesPattern(\"Symbol.for\") &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true }) &&\n this.get(\"arguments\")[0].isStringLiteral()\n );\n }\n\n return false;\n}\n\nexport function isInStrictMode(this: NodePath<t.Node | null>) {\n const start = this.isProgram() ? this : this.parentPath;\n\n const strictParent = start.find(path => {\n if (path.isProgram({ sourceType: \"module\" })) return true;\n\n if (path.isClass()) return true;\n\n if (\n path.isArrowFunctionExpression() &&\n !path.get(\"body\").isBlockStatement()\n ) {\n return false;\n }\n\n let body: t.BlockStatement | t.Program;\n if (path.isFunction()) {\n body = path.node.body as t.BlockStatement;\n } else if (path.isProgram()) {\n body = path.node;\n } else {\n return false;\n }\n\n for (const directive of body.directives) {\n if (directive.value.value === \"use strict\") {\n return true;\n }\n }\n return false;\n });\n\n return !!strictParent;\n}\n","// This file contains methods responsible for dealing with/retrieving children or siblings.\n\nimport type TraversalContext from \"../context.ts\";\nimport NodePath from \"./index.ts\";\nimport {\n getAssignmentIdentifiers as _getAssignmentIdentifiers,\n getBindingIdentifiers as _getBindingIdentifiers,\n getOuterBindingIdentifiers as _getOuterBindingIdentifiers,\n buildUndefinedNode,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nconst NORMAL_COMPLETION = 0;\nconst BREAK_COMPLETION = 1;\n\ntype Completion = {\n path: NodePath;\n type: 0 | 1;\n};\n\ntype CompletionContext = {\n // whether the current context allows `break` statement. When it allows, we have\n // to search all the statements for potential `break`\n canHaveBreak: boolean;\n // whether the statement is an immediate descendant of a switch case clause\n inCaseClause: boolean;\n // whether the `break` statement record should be populated to upper level\n // when a `break` statement is an immediate descendant of a block statement, e.g.\n // `{ break }`, it can influence the control flow in the upper levels.\n shouldPopulateBreak: boolean;\n // Whether the `break` statement should be preserved.\n shouldPreserveBreak: boolean;\n};\n\nfunction NormalCompletion(path: NodePath): Completion {\n return { type: NORMAL_COMPLETION, path };\n}\n\nfunction BreakCompletion(path: NodePath): Completion {\n return { type: BREAK_COMPLETION, path };\n}\n\nexport function getOpposite(this: NodePath): NodePath<t.Node | null> | null {\n if (this.key === \"left\") {\n return this.getSibling(\"right\");\n } else if (this.key === \"right\") {\n return this.getSibling(\"left\");\n }\n return null;\n}\n\nfunction addCompletionRecords(\n path: NodePath<t.Node | null> | null | undefined,\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n if (path) {\n // @ts-expect-error FIXME: path may be NodePath<null>\n records.push(..._getCompletionRecords(path, context));\n }\n return records;\n}\n\nfunction completionRecordForSwitch(\n cases: NodePath<t.SwitchCase>[],\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n let lastNormalCompletions: Completion[] = [];\n for (let i = 0; i < cases.length; i++) {\n const casePath = cases[i];\n const caseCompletions = _getCompletionRecords(casePath, context);\n const normalCompletions = [];\n const breakCompletions = [];\n for (const c of caseCompletions) {\n if (c.type === NORMAL_COMPLETION) {\n normalCompletions.push(c);\n }\n if (c.type === BREAK_COMPLETION) {\n breakCompletions.push(c);\n }\n }\n if (normalCompletions.length) {\n lastNormalCompletions = normalCompletions;\n }\n records.push(...breakCompletions);\n }\n records.push(...lastNormalCompletions);\n return records;\n}\n\nfunction normalCompletionToBreak(completions: Completion[]) {\n completions.forEach(c => {\n c.type = BREAK_COMPLETION;\n });\n}\n\n/**\n * Determine how we should handle the break statement for break completions\n *\n * @param {Completion[]} completions\n * @param {boolean} reachable Whether the break statement is reachable after\n we mark the normal completions _before_ the given break completions as the final\n completions. For example,\n `{ 0 }; break;` is transformed to `{ return 0 }; break;`, the `break` here is unreachable\n and thus can be removed without consequences. We may in the future reserve them instead since\n we do not consistently remove unreachable statements _after_ break\n `{ var x = 0 }; break;` is transformed to `{ var x = 0 }; return void 0;`, the `break` is reachable\n because we can not wrap variable declaration under a return statement\n */\nfunction replaceBreakStatementInBreakCompletion(\n completions: Completion[],\n reachable: boolean,\n) {\n completions.forEach(c => {\n if (c.path.isBreakStatement({ label: null })) {\n if (reachable) {\n c.path.replaceWith(buildUndefinedNode());\n } else {\n c.path.remove();\n }\n }\n });\n}\n\nfunction getStatementListCompletion(\n paths: NodePath[],\n context: CompletionContext,\n): Completion[] {\n const completions = [];\n if (context.canHaveBreak) {\n let lastNormalCompletions = [];\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n const newContext = { ...context, inCaseClause: false };\n if (\n path.isBlockStatement() &&\n (context.inCaseClause || // case test: { break }\n context.shouldPopulateBreak) // case test: { { break } }\n ) {\n newContext.shouldPopulateBreak = true;\n } else {\n newContext.shouldPopulateBreak = false;\n }\n const statementCompletions = _getCompletionRecords(path, newContext);\n if (\n statementCompletions.length > 0 &&\n // we can stop search `paths` when we have seen a `path` that is\n // effectively a `break` statement. Examples are\n // - `break`\n // - `if (true) { 1; break } else { 2; break }`\n // - `{ break }```\n // In other words, the paths after this `path` are unreachable\n statementCompletions.every(c => c.type === BREAK_COMPLETION)\n ) {\n if (\n lastNormalCompletions.length > 0 &&\n statementCompletions.every(c =>\n c.path.isBreakStatement({ label: null }),\n )\n ) {\n // when a break completion has a path as BreakStatement, it must be `{ break }`\n // whose completion value we can not determine, otherwise it would have been\n // replaced by `replaceBreakStatementInBreakCompletion`\n // When we have seen normal completions from the last statement\n // it is safe to stop populating break and mark normal completions as break\n normalCompletionToBreak(lastNormalCompletions);\n completions.push(...lastNormalCompletions);\n // Declarations have empty completion record, however they can not be nested\n // directly in return statement, i.e. `return (var a = 1)` is invalid.\n if (lastNormalCompletions.some(c => c.path.isDeclaration())) {\n completions.push(...statementCompletions);\n if (!context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n }\n if (!context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ false,\n );\n }\n } else {\n completions.push(...statementCompletions);\n if (!context.shouldPopulateBreak && !context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n }\n break;\n }\n if (i === paths.length - 1) {\n completions.push(...statementCompletions);\n } else {\n lastNormalCompletions = [];\n for (let i = 0; i < statementCompletions.length; i++) {\n const c = statementCompletions[i];\n if (c.type === BREAK_COMPLETION) {\n completions.push(c);\n }\n if (c.type === NORMAL_COMPLETION) {\n lastNormalCompletions.push(c);\n }\n }\n }\n }\n } else if (paths.length) {\n // When we are in a context where `break` must not exist, we can skip linear\n // search on statement lists and assume that the last\n // non-variable-declaration statement determines the completion.\n for (let i = paths.length - 1; i >= 0; i--) {\n const pathCompletions = _getCompletionRecords(paths[i], context);\n if (\n pathCompletions.length > 1 ||\n (pathCompletions.length === 1 &&\n !pathCompletions[0].path.isVariableDeclaration() &&\n !pathCompletions[0].path.isEmptyStatement())\n ) {\n completions.push(...pathCompletions);\n break;\n }\n }\n }\n return completions;\n}\n\nfunction _getCompletionRecords(\n path: NodePath,\n context: CompletionContext,\n): Completion[] {\n let records: Completion[] = [];\n if (path.isIfStatement()) {\n records = addCompletionRecords(path.get(\"consequent\"), records, context);\n records = addCompletionRecords(path.get(\"alternate\"), records, context);\n } else if (\n path.isDoExpression() ||\n path.isFor() ||\n path.isWhile() ||\n path.isLabeledStatement()\n ) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isProgram() || path.isBlockStatement()) {\n return getStatementListCompletion(path.get(\"body\"), context);\n } else if (path.isFunction()) {\n return _getCompletionRecords(path.get(\"body\"), context);\n } else if (path.isTryStatement()) {\n records = addCompletionRecords(path.get(\"block\"), records, context);\n records = addCompletionRecords(path.get(\"handler\"), records, context);\n } else if (path.isCatchClause()) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isSwitchStatement()) {\n return completionRecordForSwitch(path.get(\"cases\"), records, context);\n } else if (path.isSwitchCase()) {\n return getStatementListCompletion(path.get(\"consequent\"), {\n canHaveBreak: true,\n shouldPopulateBreak: false,\n inCaseClause: true,\n shouldPreserveBreak: context.shouldPreserveBreak,\n });\n } else if (path.isBreakStatement()) {\n records.push(BreakCompletion(path));\n } else {\n records.push(NormalCompletion(path));\n }\n\n return records;\n}\n\n/**\n * Retrieve the completion records of a given path.\n * Note: to ensure proper support on `break` statement, this method\n * will manipulate the AST around the break statement. Do not call the method\n * twice for the same path.\n *\n * @export\n * @param {NodePath} this\n * @param {boolean} [shouldPreserveBreak=false] Whether the `break` statement should be preserved.\n * @returns {NodePath[]} Completion records\n */\nexport function getCompletionRecords(\n this: NodePath,\n shouldPreserveBreak = false,\n): NodePath[] {\n const records = _getCompletionRecords(this, {\n canHaveBreak: false,\n shouldPopulateBreak: false,\n inCaseClause: false,\n shouldPreserveBreak,\n });\n return records.map(r => r.path);\n}\n\nexport function getSibling(\n this: NodePath<t.Node | null>,\n key: string | number,\n): NodePath<t.Node | null> {\n return NodePath.get({\n parentPath: this.parentPath,\n parent: this.parent,\n container: this.container!,\n listKey: this.listKey!,\n key: key,\n }).setContext(this.context);\n}\n\nexport function getPrevSibling(\n this: NodePath<t.Node | null>,\n): NodePath<t.Node | null> {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key - 1);\n}\n\nexport function getNextSibling(\n this: NodePath<t.Node | null>,\n): NodePath<t.Node | null> {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key + 1);\n}\n\nexport function getAllNextSiblings(\n this: NodePath<t.Node | null>,\n): NodePath<t.Node | null>[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(++_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(++_key);\n }\n return siblings;\n}\n\nexport function getAllPrevSiblings(\n this: NodePath<t.Node | null>,\n): NodePath<t.Node | null>[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(--_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(--_key);\n }\n return siblings;\n}\n\n// convert \"1\" to 1 (string index to number index)\ntype MaybeToIndex<T extends string> = T extends `${number}` ? number : T;\n\ntype Pattern<Obj extends string, Prop extends string> = `${Obj}.${Prop}`;\n\n// split \"body.body.1\" to [\"body\", \"body\", 1]\ntype Split<P extends string> =\n P extends Pattern<infer O, infer U>\n ? [MaybeToIndex<O>, ...Split<U>]\n : [MaybeToIndex<P>];\n\n// traverse the Node with tuple path [\"body\", \"body\", 1]\n// Path should be created with Split\ntype Trav<\n Node extends t.Node | t.Node[],\n Path extends unknown[],\n> = Path extends [infer K, ...infer R]\n ? K extends keyof Node\n ? R extends []\n ? Node[K]\n : Node[K] extends t.Node | t.Node[] | null | undefined\n ? null | undefined extends Node[K]\n ? TravD<Node[K] & {}, R> | null\n : TravD<Node[K] & {}, R>\n : never\n : string extends K\n ? t.Node | null\n : null\n : never;\n\ntype TravD<\n Node extends t.Node | t.Node[],\n Path extends unknown[],\n> = Node extends any ? Trav<Node, Path> : never;\n\ntype ToNodePath<T> = T extends undefined | null\n ? NodePath<null>\n : T extends (infer U extends t.Node | null)[]\n ? NodePath<U>[]\n : T extends t.Node | null | undefined\n ? NodePath<T & {}>\n : never;\n\nfunction get<T extends NodePath, K extends keyof T[\"node\"]>(\n this: T,\n key: K,\n context?: true | TraversalContext,\n): T extends any\n ? T[\"node\"][K] extends (infer U extends t.Node | null)[] | null | undefined\n ? NodePath<U>[]\n : T[\"node\"][K] extends (infer U extends t.Node | null) | undefined\n ? NodePath<U>\n : never\n : never;\n\nfunction get<T extends NodePath<t.Node>, K extends string>(\n this: T,\n key: K,\n context?: true | TraversalContext,\n): string extends K\n ? NodePath<t.Node | null> | NodePath<t.Node | null>[]\n : T extends any\n ? ToNodePath<Trav<T[\"node\"], Split<K>>>\n : never;\n\nfunction get(\n this: NodePath,\n key: string,\n context?: true | TraversalContext,\n): NodePath<t.Node | null> | NodePath<t.Node | null>[];\n\nfunction get(\n this: NodePath,\n key: string,\n context: true | TraversalContext = true,\n): NodePath | NodePath[] {\n if (context === true) context = this.context;\n const parts = key.split(\".\");\n if (parts.length === 1) {\n // \"foo\"\n // @ts-expect-error key may not index T\n return _getKey.call(this, key, context);\n } else {\n // \"foo.bar\"\n // @ts-expect-error this may be NodePath<null>\n return _getPattern.call(this, parts, context);\n }\n}\n\nexport { get };\n\nexport function _getKey<T extends t.Node>(\n this: NodePath<T>,\n key: keyof T & string,\n context?: TraversalContext,\n): NodePath<t.Node | null> | NodePath<t.Node | null>[] {\n const node = this.node as T;\n const container = node[key];\n\n if (Array.isArray(container)) {\n // requested a container so give them all the paths\n return container.map((_, i) => {\n return NodePath.get({\n listKey: key,\n parentPath: this,\n parent: node,\n container: container,\n key: i,\n }).setContext(context);\n });\n } else {\n return NodePath.get({\n parentPath: this,\n parent: node,\n container: node,\n key: key,\n }).setContext(context);\n }\n}\n\nexport function _getPattern(\n this: NodePath,\n parts: string[],\n context?: TraversalContext,\n) {\n let path: NodePath<t.Node | null> | NodePath<t.Node | null>[] = this;\n for (const part of parts) {\n if (part === \".\") {\n // @ts-expect-error todo(flow-ts): Can path be an array here?\n path = path.parentPath;\n } else {\n if (Array.isArray(path)) {\n // @ts-expect-error part may not index path\n path = path[part];\n } else {\n // @ts-expect-error path may be NodePath<null>\n path = path.get(part, context);\n }\n }\n }\n return path;\n}\n\nexport function getAssignmentIdentifiers(this: NodePath) {\n return _getAssignmentIdentifiers(this.node);\n}\n\nfunction getBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getBindingIdentifiers };\n\nfunction getOuterBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getOuterBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getOuterBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getOuterBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getOuterBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getOuterBindingIdentifiers };\n\nfunction getBindingIdentifierPaths(\n duplicates: true,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getBindingIdentifierPaths(\n duplicates: false,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>>;\nfunction getBindingIdentifierPaths(\n duplicates?: boolean,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\n// original source - https://github.com/babel/babel/blob/main/packages/babel-types/src/retrievers/getBindingIdentifiers.js\n// path.getBindingIdentifiers returns nodes where the following re-implementation returns paths\nfunction getBindingIdentifierPaths(\n this: NodePath<t.Node | null>,\n duplicates: boolean = false,\n outerOnly: boolean = false,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]> {\n const path = this;\n const search = [path];\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (!id.node) continue;\n\n const keys = _getBindingIdentifiers.keys[id.node.type];\n\n if (id.isIdentifier()) {\n if (duplicates) {\n const _ids = (ids[id.node.name] = ids[id.node.name] || []);\n _ids.push(id);\n } else {\n ids[id.node.name] = id;\n }\n continue;\n }\n\n if (id.isExportDeclaration()) {\n const declaration = id.get(\"declaration\");\n if (declaration.isDeclaration()) {\n search.push(declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (id.isFunctionDeclaration()) {\n search.push(id.get(\"id\"));\n continue;\n }\n if (id.isFunctionExpression()) {\n continue;\n }\n }\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const child = id.get(key);\n if (Array.isArray(child)) {\n search.push(...child);\n } else if (child.node) {\n search.push(child);\n }\n }\n }\n }\n\n return ids;\n}\n\nexport { getBindingIdentifierPaths };\n\nfunction getOuterBindingIdentifierPaths(\n duplicates: true,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: false,\n): Record<string, NodePath<t.Identifier>>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\nfunction getOuterBindingIdentifierPaths(\n this: NodePath,\n duplicates: boolean = false,\n) {\n return this.getBindingIdentifierPaths(duplicates, true);\n}\n\nexport { getOuterBindingIdentifierPaths };\n","// This file contains methods responsible for dealing with comments.\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\nimport {\n addComment as _addComment,\n addComments as _addComments,\n} from \"@babel/types\";\n\n/**\n * Share comments amongst siblings.\n */\n\nexport function shareCommentsWithSiblings(this: NodePath<t.Node | null>) {\n // NOTE: this assumes numbered keys\n if (typeof this.key === \"string\") return;\n\n const node = this.node;\n if (!node) return;\n\n const trailing = node.trailingComments;\n const leading = node.leadingComments;\n if (!trailing && !leading) return;\n\n const prev = this.getSibling(this.key! - 1);\n const next = this.getSibling(this.key! + 1);\n const hasPrev = !!prev.node;\n const hasNext = !!next.node;\n\n if (hasPrev) {\n if (leading) {\n prev.addComments(\n \"trailing\",\n removeIfExisting(leading, prev.node.trailingComments),\n );\n }\n if (trailing && !hasNext) prev.addComments(\"trailing\", trailing);\n }\n if (hasNext) {\n if (trailing) {\n next.addComments(\n \"leading\",\n removeIfExisting(trailing, next.node.leadingComments),\n );\n }\n if (leading && !hasPrev) next.addComments(\"leading\", leading);\n }\n}\n\nfunction removeIfExisting<T>(list: T[], toRemove?: T[] | null): T[] {\n if (!toRemove?.length) return list;\n const set = new Set(toRemove);\n return list.filter(el => {\n return !set.has(el);\n });\n}\n\nexport function addComment(\n this: NodePath,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n) {\n _addComment(this.node, type, content, line);\n}\n\n/**\n * Give node `comments` of the specified `type`.\n */\n\nexport function addComments(\n this: NodePath,\n type: t.CommentTypeShorthand,\n comments: t.Comment[],\n) {\n _addComments(this.node, type, comments);\n}\n","import type { HubInterface } from \"../hub.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport * as virtualTypes from \"./lib/virtual-types.ts\";\nimport { createDebug } from \"obug\";\nimport traverse from \"../index.ts\";\nimport type {\n Visitor,\n VisitorProp,\n TraverseOptions,\n ExplodedVisitor,\n} from \"../types.ts\";\nimport Scope from \"../scope/index.ts\";\nimport { validate } from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport * as cache from \"../cache.ts\";\nimport generator from \"@babel/generator\";\n\n// NodePath is split across many files.\nimport * as NodePath_ancestry from \"./ancestry.ts\";\nimport * as NodePath_inference from \"./inference/index.ts\";\nimport * as NodePath_replacement from \"./replacement.ts\";\nimport * as NodePath_evaluation from \"./evaluation.ts\";\nimport * as NodePath_conversion from \"./conversion.ts\";\nimport * as NodePath_introspection from \"./introspection.ts\";\nimport * as NodePath_context from \"./context.ts\";\nimport * as NodePath_removal from \"./removal.ts\";\nimport * as NodePath_modification from \"./modification.ts\";\nimport * as NodePath_family from \"./family.ts\";\nimport * as NodePath_comments from \"./comments.ts\";\nimport * as NodePath_virtual_types_validator from \"./lib/virtual-types-validator.ts\";\nimport type { NodePathAssertions } from \"./generated/asserts.d.ts\";\nimport type { NodePathValidators } from \"./generated/validators.d.ts\";\nimport { setup } from \"./context.ts\";\n\nconst debug = createDebug(\"babel\");\n\nexport const REMOVED = 1 << 0;\nexport const SHOULD_STOP = 1 << 1;\nexport const SHOULD_SKIP = 1 << 2;\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<\n NodePath_Final<t.Node>\n>;\n\nexport type NodePaths<T extends t.Node | t.Node[]> = T extends t.Node[]\n ? { [K in keyof T]: NodePath_Final<Extract<T[K], t.Node>> }\n : T extends t.Node\n ? [NodePath_Final<T>]\n : never;\n\nexport type NodeListType<N, K extends keyof N> = N[K] extends (infer P extends\n t.Node)[]\n ? P\n : never;\n\nexport type NodeOrNodeList<T extends t.Node> = T | NodeList<T>;\n\nexport type NodeList<T extends t.Node> = T[] | [T, ...T[]];\n\nconst NodePath_Final = class NodePath {\n constructor(hub: HubInterface | undefined, parent: t.Node) {\n this.parent = parent;\n this.hub = hub!;\n this.data = null;\n\n // @ts-expect-error Set it in setContext\n this.context = null;\n // @ts-expect-error Set it in setContext\n this.scope = null;\n }\n\n declare parent: t.Node;\n declare hub: HubInterface;\n declare data: Record<string | symbol, unknown> | null;\n // TraversalContext is configured by setContext\n declare context: TraversalContext;\n declare scope: Scope;\n\n contexts: TraversalContext[] = [];\n state: any = null;\n declare opts: TraverseOptions & ExplodedVisitor;\n\n @bit.storage _traverseFlags: number = 0;\n @bit(REMOVED) accessor removed = false;\n @bit(SHOULD_STOP) accessor shouldStop = false;\n @bit(SHOULD_SKIP) accessor shouldSkip = false;\n\n skipKeys: Record<string, boolean> | null = null;\n parentPath: NodePath_Final | null = null;\n container: t.Node | t.Node[] | null = null;\n listKey: string | null | undefined = null;\n key: string | number | null = null;\n node: t.Node | null = null;\n type: t.Node[\"type\"] | null = null;\n _store: Map<t.Node, NodePath_Final> | null = null;\n\n static get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key,\n }: {\n hub?: HubInterface;\n parentPath: NodePath_Final | null | undefined;\n parent: t.Node;\n container: t.Node | t.Node[];\n listKey?: string | null;\n key: string | number;\n }): NodePath_Final {\n if (!hub && parentPath) {\n hub = parentPath.hub;\n }\n\n if (!parent) {\n throw new Error(\"To get a node path the parent needs to exist\");\n }\n\n const targetNode =\n // @ts-expect-error key must present in container\n container[key];\n\n const paths = cache.getOrCreateCachedPaths(parent, parentPath);\n\n let path = paths.get(targetNode);\n if (!path) {\n path = new NodePath(hub, parent) as NodePath_Final;\n if (targetNode) paths.set(targetNode, path);\n }\n\n setup.call(path, parentPath, container, listKey, key);\n\n return path;\n }\n\n getScope(this: NodePath_Final, scope: Scope): Scope {\n return this.isScope() ? new Scope(this) : scope;\n }\n\n setData<T>(key: string | symbol, val: T): T {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n return (this.data![key] = val);\n }\n\n getData(key: string | symbol, def?: any): any {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n let val = this.data![key];\n if (val === undefined && def !== undefined) val = this.data![key] = def;\n return val;\n }\n\n hasNode(): boolean {\n return this.node != null;\n }\n\n buildCodeFrameError(\n msg: string,\n Error: new () => Error = SyntaxError,\n ): Error {\n return this.hub.buildError(this.node!, msg, Error);\n }\n\n traverse<S, T extends object>(\n this: NodePath_Final,\n visitor: {\n [P in keyof T]: VisitorProp<S, P & string>;\n },\n state: S,\n ): void;\n traverse<T extends object>(\n this: NodePath_Final,\n visitor: {\n [P in keyof T]: VisitorProp<any, P & string>;\n },\n ): void;\n traverse<S>(\n this: NodePath_Final,\n visitor: TraverseOptions & Visitor<S>,\n state: S,\n ): void;\n traverse(this: NodePath_Final, visitor: TraverseOptions & Visitor<any>): void;\n traverse(this: NodePath_Final, visitor: any, state?: any) {\n traverse(this.node, visitor, this.scope, state, this);\n }\n\n set(key: string, node: any) {\n validate(this.node, key, node);\n // @ts-expect-error key must present in this.node\n this.node[key] = node;\n }\n\n getPathLocation(this: NodePath_Final<t.Node | null>): string {\n const parts = [];\n let path: NodePath_Final<t.Node | null> = this;\n do {\n let key = path.key;\n if (path.inList) key = `${path.listKey}[${key}]`;\n parts.unshift(key);\n } while ((path = path.parentPath));\n return parts.join(\".\");\n }\n\n debug(this: NodePath_Final<t.Node | null>, message: string) {\n if (!debug.enabled) return;\n debug(`${this.getPathLocation()} ${this.type}: ${message}`);\n }\n\n toString() {\n return generator(this.node!).code;\n }\n\n get inList() {\n return !!this.listKey;\n }\n\n set inList(inList) {\n if (!inList) {\n this.listKey = null;\n }\n // ignore inList = true as it should depend on `listKey`\n }\n\n get parentKey(): string {\n return (this.listKey || this.key) as string;\n }\n};\n\nconst methods = {\n // NodePath_ancestry\n findParent: NodePath_ancestry.findParent,\n find: NodePath_ancestry.find,\n getFunctionParent: NodePath_ancestry.getFunctionParent,\n getStatementParent: NodePath_ancestry.getStatementParent,\n getEarliestCommonAncestorFrom:\n NodePath_ancestry.getEarliestCommonAncestorFrom,\n getDeepestCommonAncestorFrom: NodePath_ancestry.getDeepestCommonAncestorFrom,\n getAncestry: NodePath_ancestry.getAncestry,\n isAncestor: NodePath_ancestry.isAncestor,\n isDescendant: NodePath_ancestry.isDescendant,\n inType: NodePath_ancestry.inType,\n\n // NodePath_inference\n getTypeAnnotation: NodePath_inference.getTypeAnnotation,\n isBaseType: NodePath_inference.isBaseType,\n couldBeBaseType: NodePath_inference.couldBeBaseType,\n baseTypeStrictlyMatches: NodePath_inference.baseTypeStrictlyMatches,\n isGenericType: NodePath_inference.isGenericType,\n\n // NodePath_replacement\n replaceWithMultiple: NodePath_replacement.replaceWithMultiple,\n replaceWithSourceString: NodePath_replacement.replaceWithSourceString,\n replaceWith: NodePath_replacement.replaceWith,\n replaceExpressionWithStatements:\n NodePath_replacement.replaceExpressionWithStatements,\n replaceInline: NodePath_replacement.replaceInline,\n\n // NodePath_evaluation\n evaluateTruthy: NodePath_evaluation.evaluateTruthy,\n evaluate: NodePath_evaluation.evaluate,\n\n // NodePath_conversion\n ensureBlock: NodePath_conversion.ensureBlock,\n unwrapFunctionEnvironment: NodePath_conversion.unwrapFunctionEnvironment,\n arrowFunctionToExpression: NodePath_conversion.arrowFunctionToExpression,\n splitExportDeclaration: NodePath_conversion.splitExportDeclaration,\n ensureFunctionName: NodePath_conversion.ensureFunctionName,\n\n // NodePath_introspection\n matchesPattern: NodePath_introspection.matchesPattern,\n isStatic: NodePath_introspection.isStatic,\n isNodeType: NodePath_introspection.isNodeType,\n canHaveVariableDeclarationOrExpression:\n NodePath_introspection.canHaveVariableDeclarationOrExpression,\n canSwapBetweenExpressionAndStatement:\n NodePath_introspection.canSwapBetweenExpressionAndStatement,\n isCompletionRecord: NodePath_introspection.isCompletionRecord,\n isStatementOrBlock: NodePath_introspection.isStatementOrBlock,\n referencesImport: NodePath_introspection.referencesImport,\n getSource: NodePath_introspection.getSource,\n willIMaybeExecuteBefore: NodePath_introspection.willIMaybeExecuteBefore,\n _guessExecutionStatusRelativeTo:\n NodePath_introspection._guessExecutionStatusRelativeTo,\n resolve: NodePath_introspection.resolve,\n isConstantExpression: NodePath_introspection.isConstantExpression,\n isInStrictMode: NodePath_introspection.isInStrictMode,\n\n // NodePath_context\n isDenylisted: NodePath_context.isDenylisted,\n skip: NodePath_context.skip,\n skipKey: NodePath_context.skipKey,\n stop: NodePath_context.stop,\n setContext: NodePath_context.setContext,\n requeue: NodePath_context.requeue,\n requeueComputedKeyAndDecorators:\n NodePath_context.requeueComputedKeyAndDecorators,\n\n // NodePath_removal\n remove: NodePath_removal.remove,\n\n // NodePath_modification\n insertBefore: NodePath_modification.insertBefore,\n insertAfter: NodePath_modification.insertAfter,\n unshiftContainer: NodePath_modification.unshiftContainer,\n pushContainer: NodePath_modification.pushContainer,\n\n // NodePath_family\n getOpposite: NodePath_family.getOpposite,\n getCompletionRecords: NodePath_family.getCompletionRecords,\n getSibling: NodePath_family.getSibling,\n getPrevSibling: NodePath_family.getPrevSibling,\n getNextSibling: NodePath_family.getNextSibling,\n getAllNextSiblings: NodePath_family.getAllNextSiblings,\n getAllPrevSiblings: NodePath_family.getAllPrevSiblings,\n get: NodePath_family.get,\n getAssignmentIdentifiers: NodePath_family.getAssignmentIdentifiers,\n getBindingIdentifiers: NodePath_family.getBindingIdentifiers,\n getOuterBindingIdentifiers: NodePath_family.getOuterBindingIdentifiers,\n getBindingIdentifierPaths: NodePath_family.getBindingIdentifierPaths,\n getOuterBindingIdentifierPaths:\n NodePath_family.getOuterBindingIdentifierPaths,\n\n // NodePath_comments\n shareCommentsWithSiblings: NodePath_comments.shareCommentsWithSiblings,\n addComment: NodePath_comments.addComment,\n addComments: NodePath_comments.addComments,\n};\n\nObject.assign(NodePath_Final.prototype, methods);\n\n// we can not use `import { TYPES } from \"@babel/types\"` here\n// because the transformNamedBabelTypesImportToDestructuring plugin in babel.config.js\n// does not offer live bindings for `TYPES`\n// we can change to `import { TYPES }` when we are publishing ES modules only\nfor (const type of t.TYPES) {\n const typeKey = `is${type}`;\n // @ts-expect-error typeKey must present in t\n const fn = t[typeKey];\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[typeKey] = function (opts: any) {\n return fn(this.node, opts);\n };\n\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[`assert${type}`] = function (opts: any) {\n if (!fn(this.node, opts)) {\n throw new TypeError(`Expected node path of type ${type}`);\n }\n };\n}\n\n// Register virtual types validators after base types validators\nObject.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);\n\nfor (const type of Object.keys(virtualTypes) as (keyof typeof virtualTypes)[]) {\n if (type.startsWith(\"_\")) continue;\n if (!t.TYPES.includes(type)) t.TYPES.push(type);\n}\n\ninterface NodePathOverwrites {\n // We need to re-define these predicate and assertion\n // methods here, because we cannot refine `this` in\n // a function declaration.\n // See https://github.com/microsoft/TypeScript/issues/38150\n\n /**\n * NOTE: This assertion doesn't narrow the type on unions of\n * NodePaths, due to https://github.com/microsoft/TypeScript/issues/44212\n *\n * @see ./conversion.ts for implementation.\n */\n ensureBlock(\n this: NodePath_Final,\n ): asserts this is NodePath_Final<\n (\n | t.Loop\n | t.WithStatement\n | t.Function\n | t.LabeledStatement\n | t.CatchClause\n ) & { body: t.BlockStatement }\n >;\n /**\n * @see ./introspection.ts for implementation.\n */\n isStatementOrBlock(\n this: NodePath_Final<t.Node | null>,\n ): this is NodePath_Final<t.Statement | t.Block>;\n}\n\ntype NodePathMixins = Omit<typeof methods, keyof NodePathOverwrites>;\n\ninterface NodePath<\n N extends t.Node | null,\n T extends t.Node[\"type\"] | null = N extends null\n ? null\n : NonNullable<N>[\"type\"],\n P extends t.Node = T extends null\n ? t.Node\n : NonNullable<t.ParentMaps[NonNullable<T>]>,\n>\n extends\n InstanceType<typeof NodePath_Final>,\n NodePathAssertions,\n NodePathValidators,\n NodePathMixins,\n NodePathOverwrites {\n type: T;\n node: N;\n // .parent is only null for File nodes, which are not traversed by @babel/traverse\n // You can technically create a path that contains one, but it's so rare that\n // we can ignore it to avoid having non-null assertions everywhere.\n parent: P;\n parentPath: NodePath_Final<P>;\n}\n\n// This trick is necessary so that\n// NodePath_Final<A | B> is the same as NodePath_Final<A> | NodePath_Final<B>\ntype NodePath_Final<T extends t.Node | null = t.Node> = T extends any\n ? NodePath<T>\n : never;\n\nexport { NodePath_Final as default, type NodePath as NodePath_Internal };\n","// This file contains methods responsible for maintaining a TraversalContext.\n\nimport { SHOULD_SKIP, SHOULD_STOP } from \"./index.ts\";\nimport { _markRemoved } from \"./removal.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type NodePath from \"./index.ts\";\nimport type { ExplodedVisitor, TraverseOptions } from \"../types.ts\";\nimport * as t from \"@babel/types\";\n\nexport function _call(this: NodePath, fns?: Function[]): boolean {\n if (!fns) return false;\n\n for (const fn of fns) {\n if (!fn) continue;\n\n const node = this.node;\n if (!node) return true;\n\n const ret = fn.call(this.state, this, this.state);\n if (ret && typeof ret === \"object\" && typeof ret.then === \"function\") {\n throw new Error(\n `You appear to be using a plugin with an async traversal visitor, ` +\n `which your current version of Babel does not support. ` +\n `If you're using a published plugin, you may need to upgrade ` +\n `your @babel/core version.`,\n );\n }\n if (ret) {\n throw new Error(`Unexpected return value from visitor method ${fn}`);\n }\n\n // node has been replaced, it will have been requeued\n if (this.node !== node) return true;\n\n // this.shouldSkip || this.shouldStop || this.removed\n if (this._traverseFlags > 0) return true;\n }\n\n return false;\n}\n\nexport function isDenylisted(this: NodePath): boolean {\n return !!this.opts.denylist?.includes(this.node.type);\n}\n\nexport function skip(this: NodePath) {\n this.shouldSkip = true;\n}\n\nexport function skipKey(this: NodePath, key: string) {\n if (this.skipKeys == null) {\n this.skipKeys = {};\n }\n this.skipKeys[key] = true;\n}\n\nexport function stop(this: NodePath) {\n // this.shouldSkip = true; this.shouldStop = true;\n this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;\n}\n\nexport function _forceSetScope(this: NodePath) {\n let path = this.parentPath;\n\n if (\n // Skip method scope if is computed method key or decorator expression\n ((this.key === \"key\" || this.listKey === \"decorators\") &&\n path.isMethod()) ||\n // Skip switch scope if for discriminant (`x` in `switch (x) {}`).\n (this.key === \"discriminant\" && path.isSwitchStatement())\n ) {\n path = path.parentPath;\n }\n\n let target;\n while (path && !target) {\n target = path.scope;\n path = path.parentPath;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.scope = this.getScope(target!);\n this.scope?.init();\n}\n\nexport function setScope(this: NodePath<t.Node | null>) {\n if (this.opts?.noScope) return;\n\n let path = this.parentPath;\n\n if (\n // Skip method scope if is computed method key or decorator expression\n ((this.key === \"key\" || this.listKey === \"decorators\") &&\n path.isMethod()) ||\n // Skip switch scope if for discriminant (`x` in `switch (x) {}`).\n (this.key === \"discriminant\" && path.isSwitchStatement())\n ) {\n path = path.parentPath;\n }\n\n let target;\n while (path && !target) {\n if (path.opts?.noScope) return;\n\n target = path.scope;\n path = path.parentPath;\n }\n\n // @ts-expect-error getScope does not accept NodePath<null> as this\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.scope = this.getScope(target!);\n this.scope?.init();\n}\n\nexport function setContext<S = unknown>(\n this: NodePath<t.Node | null>,\n context?: TraversalContext<S>,\n) {\n if (this.skipKeys != null) {\n this.skipKeys = {};\n }\n // this.shouldSkip = false; this.shouldStop = false; this.removed = false;\n this._traverseFlags = 0;\n\n if (context) {\n this.context = context as TraversalContext;\n this.state = context.state;\n // Discard the S type parameter from context.opts\n this.opts = context.opts as TraverseOptions & ExplodedVisitor<unknown>;\n }\n\n setScope.call(this);\n\n return this;\n}\n\n/**\n * Here we resync the node paths `key` and `container`. If they've changed according\n * to what we have stored internally then we attempt to resync by crawling and looking\n * for the new values.\n */\n\nexport function resync(this: NodePath<t.Node | null>) {\n if (this.removed) return;\n\n _resyncParent.call(this);\n _resyncList.call(this);\n _resyncKey.call(this);\n //this._resyncRemoved();\n}\n\nexport function _resyncParent(this: NodePath<t.Node | null>) {\n if (this.parentPath) {\n this.parent = this.parentPath.node;\n }\n}\n\nexport function _resyncKey(this: NodePath<t.Node | null>) {\n if (!this.container) return;\n\n if (\n this.node ===\n // @ts-expect-error this.key should present in this.container\n this.container[this.key]\n ) {\n return;\n }\n\n // grrr, path key is out of sync. this is likely due to a modification to the AST\n // not done through our path APIs\n\n if (Array.isArray(this.container)) {\n for (let i = 0; i < this.container.length; i++) {\n if (this.container[i] === this.node) {\n setKey.call(this, i);\n return;\n }\n }\n } else {\n for (const key of Object.keys(this.container)) {\n // @ts-expect-error this.key should present in this.container\n if (this.container[key] === this.node) {\n setKey.call(this, key);\n return;\n }\n }\n }\n\n // ¯\\_(ツ)_/¯ who knows where it's gone lol\n this.key = null;\n}\n\nexport function _resyncList(this: NodePath<t.Node | null>) {\n if (!this.parent || !this.inList) return;\n\n const newContainer =\n // @ts-expect-error this.listKey should present in this.parent\n this.parent[this.listKey];\n if (this.container === newContainer) return;\n\n // container is out of sync. this is likely the result of it being reassigned\n this.container = newContainer || null;\n}\n\nexport function _resyncRemoved(this: NodePath<t.Node | null>) {\n if (\n this.key == null ||\n !this.container ||\n // @ts-expect-error this.key should present in this.container\n this.container[this.key] !== this.node\n ) {\n _markRemoved.call(this);\n }\n}\n\nexport function popContext(this: NodePath<t.Node | null>) {\n this.contexts.pop();\n if (this.contexts.length > 0) {\n this.setContext(this.contexts[this.contexts.length - 1]);\n } else {\n this.setContext(undefined);\n }\n}\n\nexport function pushContext(\n this: NodePath<t.Node | null>,\n context: TraversalContext,\n) {\n this.contexts.push(context);\n this.setContext(context);\n}\n\nexport function setup(\n this: NodePath,\n parentPath: NodePath | undefined | null,\n container: t.Node | t.Node[],\n listKey: string | undefined | null,\n key: string | number,\n) {\n this.listKey = listKey;\n this.container = container;\n\n this.parentPath = parentPath || this.parentPath;\n setKey.call(this, key);\n}\n\nexport function setKey(this: NodePath<t.Node | null>, key: string | number) {\n this.key = key;\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key];\n this.type = this.node?.type ?? null;\n}\n\nexport function requeue(this: NodePath<t.Node | null>, pathToQueue = this) {\n if (pathToQueue.removed) return;\n\n // If a path is skipped, and then replaced with a\n // new one, the new one shouldn't probably be skipped.\n\n pathToQueue.shouldSkip = false;\n\n // TODO(loganfsmyth): This should be switched back to queue in parent contexts\n // automatically once #2892 and #4135 have been resolved. See #4140.\n // let contexts = this._getQueueContexts();\n const contexts = this.contexts;\n\n for (const context of contexts) {\n context.maybeQueue(pathToQueue);\n }\n}\n\nexport function requeueComputedKeyAndDecorators(\n this: NodePath<t.Method | t.Property>,\n) {\n const { context, node } = this;\n if (!t.isPrivate(node) && node.computed) {\n context.maybeQueue(this.get(\"key\"));\n }\n if (node.decorators) {\n for (const decorator of this.get(\"decorators\")) {\n context.maybeQueue(decorator);\n }\n }\n}\n\nexport function _getQueueContexts(this: NodePath<t.Node | null>) {\n let path = this;\n let contexts = this.contexts;\n while (!contexts.length) {\n path = path.parentPath;\n if (!path) break;\n contexts = path.contexts;\n }\n return contexts;\n}\n","import type Scope from \"./scope/index.ts\";\nimport type { Node } from \"@babel/types\";\n\nexport interface HubInterface {\n getCode(): string | void;\n getScope(): Scope | void;\n addHelper(name: string): any;\n buildError(node: Node, msg: string, Error: new (msg: string) => Error): Error;\n}\n\nexport default class Hub implements HubInterface {\n getCode() {}\n\n getScope() {}\n\n addHelper() {\n throw new Error(\"Helpers are not supported by the default hub.\");\n }\n\n buildError(\n node: Node,\n msg: string,\n Error: new (msg: string) => Error = TypeError,\n ): Error {\n return new Error(msg);\n }\n}\n","import \"./path/context.ts\"; // We have some cycles, this ensures correct order to avoid TDZ\nimport * as visitors from \"./visitors.ts\";\nimport {\n VISITOR_KEYS,\n removeProperties,\n type RemovePropertiesOptions,\n traverseFast,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as cache from \"./cache.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type { default as Scope, Binding } from \"./scope/index.ts\";\nimport type {\n ExplodedVisitor,\n Visitor,\n VisitorBase,\n VisitorProp,\n TraverseOptions,\n} from \"./types.ts\";\nimport { traverseNode } from \"./traverse-node.ts\";\n\nexport type { ExplodedVisitor, Visitor, VisitorBase, Binding, TraverseOptions };\nexport { default as NodePath } from \"./path/index.ts\";\nexport { default as Scope, type BindingKind } from \"./scope/index.ts\";\nexport { default as Hub } from \"./hub.ts\";\nexport type { HubInterface } from \"./hub.ts\";\nexport type { VisitWrapper } from \"./visitors.ts\";\n\nexport { visitors };\n\nfunction traverse<S, T extends object>(\n parent: t.Node,\n opts: {\n [P in keyof T]: VisitorProp<S, P & string>;\n },\n scope: Scope | null | undefined,\n state: S,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\nfunction traverse<T extends object>(\n parent: t.Node,\n opts: {\n [P in keyof T]: VisitorProp<any, P & string>;\n },\n scope?: Scope | null,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\nfunction traverse<S>(\n parent: t.Node,\n opts: TraverseOptions & Visitor<S>,\n scope: Scope | null | undefined,\n state: S,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\nfunction traverse(\n parent: t.Node,\n opts: TraverseOptions & Visitor<any>,\n scope?: Scope | null,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\nfunction traverse(\n parent: t.Node,\n opts: any = {},\n scope?: Scope | null,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n) {\n if (!parent) return;\n\n if (!opts.noScope && !scope) {\n if (parent.type !== \"Program\" && parent.type !== \"File\") {\n throw new Error(\n \"You must pass a scope and parentPath unless traversing a Program/File. \" +\n `Instead of that you tried to traverse a ${parent.type} node without ` +\n \"passing scope and parentPath.\",\n );\n }\n }\n\n if (!parentPath && visitSelf) {\n throw new Error(\"visitSelf can only be used when providing a NodePath.\");\n }\n\n if (!VISITOR_KEYS[parent.type]) {\n return;\n }\n\n visitors.explode(opts);\n\n traverseNode(\n parent,\n opts,\n scope,\n state,\n parentPath,\n /* skipKeys */ undefined,\n visitSelf,\n );\n}\n\nexport default traverse;\n\ntraverse.visitors = visitors;\ntraverse.verify = visitors.verify;\ntraverse.explode = visitors.explode;\n\ntraverse.cheap = function (node: t.Node, enter: (node: t.Node) => void) {\n traverseFast(node, enter);\n return;\n};\n\ntraverse.node = function (\n node: t.Node,\n opts: TraverseOptions & ExplodedVisitor,\n scope?: Scope,\n state?: any,\n path?: NodePath,\n skipKeys?: Record<string, boolean>,\n) {\n traverseNode(node, opts, scope, state, path, skipKeys);\n // traverse.node always returns undefined\n};\n\ntraverse.clearNode = function (node: t.Node, opts?: RemovePropertiesOptions) {\n removeProperties(node, opts);\n};\n\ntraverse.removeProperties = function (\n tree: t.Node,\n opts?: RemovePropertiesOptions,\n) {\n traverseFast(tree, traverse.clearNode, opts);\n return tree;\n};\n\ntraverse.hasType = function (\n tree: t.Node,\n type: t.Node[\"type\"],\n denylistTypes?: string[],\n): boolean {\n // the node we're searching in is denylisted\n if (denylistTypes?.includes(tree.type)) return false;\n\n // the type we're looking for is the same as the passed node\n if (tree.type === type) return true;\n\n return traverseFast(tree, function (node) {\n if (denylistTypes?.includes(node.type)) {\n return traverseFast.skip;\n }\n if (node.type === type) {\n return traverseFast.stop;\n }\n });\n};\n\ntraverse.cache = cache;\n"]}