gemi 0.4.119 → 0.4.121

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 (676) hide show
  1. package/dist/app/index.js +2 -2
  2. package/dist/app/index.js.map +2 -2
  3. package/dist/broadcasting/index.js +1 -1
  4. package/dist/chunk-001ftwam.js +4 -0
  5. package/dist/chunk-001ftwam.js.map +10 -0
  6. package/dist/chunk-01td3x3h.js +4 -0
  7. package/dist/chunk-01td3x3h.js.map +10 -0
  8. package/dist/chunk-029k2gah.js +4 -0
  9. package/dist/chunk-029k2gah.js.map +10 -0
  10. package/dist/chunk-0662pv0m.js +4 -0
  11. package/dist/{chunk-a67a5vtk.js.map → chunk-0662pv0m.js.map} +2 -2
  12. package/dist/chunk-0cax9v4f.js +4 -0
  13. package/dist/chunk-0cax9v4f.js.map +10 -0
  14. package/dist/chunk-0d9amhty.js +4 -0
  15. package/dist/chunk-0d9amhty.js.map +10 -0
  16. package/dist/chunk-0e502hy4.js +4 -0
  17. package/dist/chunk-0e502hy4.js.map +10 -0
  18. package/dist/chunk-0gqrxkhr.js +4 -0
  19. package/dist/chunk-0gqrxkhr.js.map +10 -0
  20. package/dist/chunk-0kk73bxd.js +4 -0
  21. package/dist/chunk-0kk73bxd.js.map +10 -0
  22. package/dist/{chunk-x8wrqc4y.js → chunk-0nvzdwwv.js} +2 -2
  23. package/dist/{chunk-x8wrqc4y.js.map → chunk-0nvzdwwv.js.map} +1 -1
  24. package/dist/chunk-0t4b19w0.js +5 -0
  25. package/dist/chunk-0t4b19w0.js.map +10 -0
  26. package/dist/chunk-0xq80cr7.js +4 -0
  27. package/dist/chunk-0xq80cr7.js.map +10 -0
  28. package/dist/chunk-0zp3sbms.js +4 -0
  29. package/dist/chunk-0zp3sbms.js.map +10 -0
  30. package/dist/chunk-10897e1t.js +5 -0
  31. package/dist/chunk-10897e1t.js.map +10 -0
  32. package/dist/chunk-147gjb8j.js +4 -0
  33. package/dist/chunk-147gjb8j.js.map +10 -0
  34. package/dist/chunk-165evrks.js +4 -0
  35. package/dist/chunk-165evrks.js.map +10 -0
  36. package/dist/chunk-16pqbv30.js +4 -0
  37. package/dist/chunk-16pqbv30.js.map +10 -0
  38. package/dist/chunk-18akssnh.js +4 -0
  39. package/dist/chunk-18akssnh.js.map +10 -0
  40. package/dist/chunk-1d07epxn.js +4 -0
  41. package/dist/chunk-1d07epxn.js.map +10 -0
  42. package/dist/chunk-1d3brmyr.js +4 -0
  43. package/dist/{chunk-ef6dgp5k.js.map → chunk-1d3brmyr.js.map} +6 -6
  44. package/dist/chunk-1fenkptw.js +4 -0
  45. package/dist/chunk-1fenkptw.js.map +10 -0
  46. package/dist/chunk-1fpyfztm.js +4 -0
  47. package/dist/chunk-1fpyfztm.js.map +10 -0
  48. package/dist/chunk-1jr2awdv.js +4 -0
  49. package/dist/chunk-1jr2awdv.js.map +10 -0
  50. package/dist/chunk-1pjd7z7e.js +5 -0
  51. package/dist/chunk-1pjd7z7e.js.map +11 -0
  52. package/dist/chunk-1vxhaep8.js +4 -0
  53. package/dist/chunk-1vxhaep8.js.map +10 -0
  54. package/dist/chunk-1zje855e.js +4 -0
  55. package/dist/chunk-1zje855e.js.map +10 -0
  56. package/dist/chunk-2a6xtt8w.js +4 -0
  57. package/dist/chunk-2a6xtt8w.js.map +10 -0
  58. package/dist/chunk-2nbxbgja.js +4 -0
  59. package/dist/chunk-2nbxbgja.js.map +10 -0
  60. package/dist/chunk-2qek6vwk.js +5 -0
  61. package/dist/chunk-2qek6vwk.js.map +10 -0
  62. package/dist/chunk-2qs5hcvw.js +4 -0
  63. package/dist/chunk-2qs5hcvw.js.map +15 -0
  64. package/dist/chunk-2rpt28ng.js +4 -0
  65. package/dist/chunk-2rpt28ng.js.map +10 -0
  66. package/dist/chunk-2zbw9b4r.js +4 -0
  67. package/dist/chunk-2zbw9b4r.js.map +10 -0
  68. package/dist/chunk-3evg8b1k.js +4 -0
  69. package/dist/chunk-3evg8b1k.js.map +10 -0
  70. package/dist/chunk-3vasf2wf.js +4 -0
  71. package/dist/chunk-3vasf2wf.js.map +10 -0
  72. package/dist/chunk-3zmgkx0w.js +4 -0
  73. package/dist/chunk-3zmgkx0w.js.map +10 -0
  74. package/dist/chunk-44g267q3.js +77 -0
  75. package/dist/chunk-44g267q3.js.map +22 -0
  76. package/dist/chunk-4b5zjps1.js +4 -0
  77. package/dist/chunk-4b5zjps1.js.map +10 -0
  78. package/dist/chunk-4f60mvxv.js +4 -0
  79. package/dist/chunk-4f60mvxv.js.map +10 -0
  80. package/dist/chunk-4gam76xs.js +4 -0
  81. package/dist/chunk-4gam76xs.js.map +10 -0
  82. package/dist/chunk-4jzv24rt.js +4 -0
  83. package/dist/chunk-4jzv24rt.js.map +10 -0
  84. package/dist/chunk-4np6kjty.js +4 -0
  85. package/dist/chunk-4np6kjty.js.map +10 -0
  86. package/dist/chunk-4psr7qf1.js +4 -0
  87. package/dist/chunk-4psr7qf1.js.map +10 -0
  88. package/dist/chunk-4s350vgd.js +4 -0
  89. package/dist/chunk-4s350vgd.js.map +10 -0
  90. package/dist/chunk-4txy30je.js +4 -0
  91. package/dist/chunk-4txy30je.js.map +10 -0
  92. package/dist/chunk-4zq5qst4.js +4 -0
  93. package/dist/chunk-4zq5qst4.js.map +10 -0
  94. package/dist/chunk-54a103ah.js +4 -0
  95. package/dist/chunk-54a103ah.js.map +10 -0
  96. package/dist/chunk-58jyqcxt.js +4 -0
  97. package/dist/chunk-58jyqcxt.js.map +10 -0
  98. package/dist/chunk-59a4qnm6.js +4 -0
  99. package/dist/chunk-59a4qnm6.js.map +10 -0
  100. package/dist/chunk-5crks4mc.js +4 -0
  101. package/dist/chunk-5crks4mc.js.map +10 -0
  102. package/dist/chunk-5fs16qc2.js +4 -0
  103. package/dist/chunk-5fs16qc2.js.map +10 -0
  104. package/dist/chunk-5nb5v649.js +4 -0
  105. package/dist/chunk-5nb5v649.js.map +10 -0
  106. package/dist/chunk-5psj5g03.js +4 -0
  107. package/dist/chunk-5psj5g03.js.map +10 -0
  108. package/dist/chunk-5qa0wvgg.js +4 -0
  109. package/dist/chunk-5qa0wvgg.js.map +10 -0
  110. package/dist/chunk-5t6fd3qq.js +4 -0
  111. package/dist/chunk-5t6fd3qq.js.map +12 -0
  112. package/dist/chunk-5whsf328.js +4 -0
  113. package/dist/chunk-5whsf328.js.map +10 -0
  114. package/dist/chunk-612vvdg0.js +5 -0
  115. package/dist/chunk-612vvdg0.js.map +10 -0
  116. package/dist/chunk-61fr8e09.js +5 -0
  117. package/dist/chunk-61fr8e09.js.map +10 -0
  118. package/dist/chunk-629qemrx.js +4 -0
  119. package/dist/chunk-629qemrx.js.map +10 -0
  120. package/dist/chunk-65kp9t0w.js +4 -0
  121. package/dist/chunk-65kp9t0w.js.map +10 -0
  122. package/dist/chunk-66f14pqy.js +4 -0
  123. package/dist/chunk-66f14pqy.js.map +10 -0
  124. package/dist/chunk-69bs53j4.js +4 -0
  125. package/dist/chunk-69bs53j4.js.map +10 -0
  126. package/dist/chunk-6a16vs8y.js +4 -0
  127. package/dist/chunk-6a16vs8y.js.map +10 -0
  128. package/dist/chunk-6ant7bcg.js +5 -0
  129. package/dist/chunk-6ant7bcg.js.map +10 -0
  130. package/dist/chunk-6fvkzn8b.js +4 -0
  131. package/dist/chunk-6fvkzn8b.js.map +10 -0
  132. package/dist/chunk-6fvtad65.js +4 -0
  133. package/dist/chunk-6fvtad65.js.map +10 -0
  134. package/dist/chunk-6m11rfdt.js +4 -0
  135. package/dist/chunk-6m11rfdt.js.map +10 -0
  136. package/dist/chunk-6p5ty79g.js +4 -0
  137. package/dist/chunk-6p5ty79g.js.map +10 -0
  138. package/dist/chunk-6vzzwyt5.js +4 -0
  139. package/dist/chunk-6vzzwyt5.js.map +10 -0
  140. package/dist/chunk-6zfyy2sq.js +5 -0
  141. package/dist/chunk-6zfyy2sq.js.map +10 -0
  142. package/dist/chunk-73mtep9k.js +5 -0
  143. package/dist/chunk-73mtep9k.js.map +10 -0
  144. package/dist/chunk-76cxqdm5.js +4 -0
  145. package/dist/chunk-76cxqdm5.js.map +10 -0
  146. package/dist/chunk-76q7gcr7.js +4 -0
  147. package/dist/chunk-76q7gcr7.js.map +10 -0
  148. package/dist/chunk-77hx7jrk.js +4 -0
  149. package/dist/chunk-77hx7jrk.js.map +10 -0
  150. package/dist/chunk-7e7xv67y.js +4 -0
  151. package/dist/chunk-7e7xv67y.js.map +10 -0
  152. package/dist/chunk-7sj61wa1.js +4 -0
  153. package/dist/chunk-7sj61wa1.js.map +10 -0
  154. package/dist/chunk-7w7gd3mf.js +4 -0
  155. package/dist/chunk-7w7gd3mf.js.map +10 -0
  156. package/dist/chunk-7y71tyb6.js +4 -0
  157. package/dist/chunk-7y71tyb6.js.map +10 -0
  158. package/dist/chunk-7yw671gx.js +5 -0
  159. package/dist/chunk-7yw671gx.js.map +10 -0
  160. package/dist/chunk-81zgg7ah.js +4 -0
  161. package/dist/chunk-81zgg7ah.js.map +10 -0
  162. package/dist/chunk-82sj7aem.js +5 -0
  163. package/dist/chunk-82sj7aem.js.map +10 -0
  164. package/dist/chunk-83ngngpn.js +4 -0
  165. package/dist/chunk-83ngngpn.js.map +10 -0
  166. package/dist/chunk-88h3dfxg.js +4 -0
  167. package/dist/chunk-88h3dfxg.js.map +10 -0
  168. package/dist/chunk-88pbkfa6.js +4 -0
  169. package/dist/chunk-88pbkfa6.js.map +10 -0
  170. package/dist/chunk-8dj48k3f.js +4 -0
  171. package/dist/chunk-8dj48k3f.js.map +10 -0
  172. package/dist/chunk-8mmnj32j.js +4 -0
  173. package/dist/chunk-8mmnj32j.js.map +10 -0
  174. package/dist/chunk-8qf94hzv.js +4 -0
  175. package/dist/chunk-8qf94hzv.js.map +10 -0
  176. package/dist/chunk-8w9c6mxe.js +3 -0
  177. package/dist/chunk-8w9c6mxe.js.map +17 -0
  178. package/dist/chunk-93mkmwaj.js +4 -0
  179. package/dist/chunk-93mkmwaj.js.map +10 -0
  180. package/dist/chunk-96m5669w.js +4 -0
  181. package/dist/chunk-96m5669w.js.map +10 -0
  182. package/dist/chunk-9717ybek.js +4 -0
  183. package/dist/chunk-9717ybek.js.map +10 -0
  184. package/dist/chunk-997k48kg.js +4 -0
  185. package/dist/chunk-997k48kg.js.map +10 -0
  186. package/dist/chunk-9abm0pr9.js +4 -0
  187. package/dist/chunk-9abm0pr9.js.map +10 -0
  188. package/dist/chunk-9dz8xyy1.js +3 -0
  189. package/dist/{chunk-p9gc7ke6.js.map → chunk-9dz8xyy1.js.map} +4 -4
  190. package/dist/chunk-9f1r7zrg.js +4 -0
  191. package/dist/chunk-9f1r7zrg.js.map +10 -0
  192. package/dist/chunk-9fj0c4p1.js +4 -0
  193. package/dist/chunk-9fj0c4p1.js.map +10 -0
  194. package/dist/chunk-9mv0k6t0.js +4 -0
  195. package/dist/chunk-9mv0k6t0.js.map +11 -0
  196. package/dist/chunk-9q75e96q.js +4 -0
  197. package/dist/chunk-9q75e96q.js.map +10 -0
  198. package/dist/chunk-9s0w0gjc.js +4 -0
  199. package/dist/chunk-9s0w0gjc.js.map +10 -0
  200. package/dist/chunk-9seafyf3.js +4 -0
  201. package/dist/chunk-9seafyf3.js.map +10 -0
  202. package/dist/chunk-9tpfth1g.js +5 -0
  203. package/dist/chunk-9tpfth1g.js.map +10 -0
  204. package/dist/chunk-9vm0ck1e.js +4 -0
  205. package/dist/{chunk-kmfnx43s.js.map → chunk-9vm0ck1e.js.map} +2 -2
  206. package/dist/chunk-aanamgj7.js +4 -0
  207. package/dist/chunk-aanamgj7.js.map +10 -0
  208. package/dist/chunk-acfp8fm2.js +5 -0
  209. package/dist/chunk-acfp8fm2.js.map +10 -0
  210. package/dist/chunk-agf0k1k9.js +4 -0
  211. package/dist/chunk-agf0k1k9.js.map +10 -0
  212. package/dist/chunk-ajft9tzm.js +5 -0
  213. package/dist/chunk-ajft9tzm.js.map +10 -0
  214. package/dist/chunk-apgh9fht.js +4 -0
  215. package/dist/chunk-apgh9fht.js.map +10 -0
  216. package/dist/chunk-aq7h2jz2.js +4 -0
  217. package/dist/chunk-aq7h2jz2.js.map +10 -0
  218. package/dist/chunk-atx3b9qj.js +4 -0
  219. package/dist/chunk-atx3b9qj.js.map +10 -0
  220. package/dist/chunk-axa5gvjg.js +4 -0
  221. package/dist/chunk-axa5gvjg.js.map +10 -0
  222. package/dist/chunk-b44x5gst.js +4 -0
  223. package/dist/chunk-b44x5gst.js.map +10 -0
  224. package/dist/chunk-b7ap0z6v.js +4 -0
  225. package/dist/chunk-b7ap0z6v.js.map +10 -0
  226. package/dist/{chunk-35bsy26w.js → chunk-bajafpzj.js} +2 -2
  227. package/dist/{chunk-35bsy26w.js.map → chunk-bajafpzj.js.map} +1 -1
  228. package/dist/chunk-baxfcaes.js +5 -0
  229. package/dist/chunk-baxfcaes.js.map +10 -0
  230. package/dist/chunk-bbrwkw5y.js +4 -0
  231. package/dist/chunk-bbrwkw5y.js.map +13 -0
  232. package/dist/chunk-befwbt0h.js +5 -0
  233. package/dist/chunk-befwbt0h.js.map +14 -0
  234. package/dist/chunk-bej163fy.js +4 -0
  235. package/dist/chunk-bej163fy.js.map +10 -0
  236. package/dist/chunk-bfrzstr0.js +4 -0
  237. package/dist/chunk-bfrzstr0.js.map +10 -0
  238. package/dist/chunk-bgf2a50m.js +4 -0
  239. package/dist/chunk-bgf2a50m.js.map +10 -0
  240. package/dist/chunk-bk649aen.js +4 -0
  241. package/dist/chunk-bk649aen.js.map +10 -0
  242. package/dist/chunk-brsavvrn.js +4 -0
  243. package/dist/chunk-brsavvrn.js.map +10 -0
  244. package/dist/chunk-bwgwxgw8.js +4 -0
  245. package/dist/chunk-bwgwxgw8.js.map +10 -0
  246. package/dist/chunk-c7qx33ys.js +4 -0
  247. package/dist/chunk-c7qx33ys.js.map +10 -0
  248. package/dist/chunk-cb616xw5.js +4 -0
  249. package/dist/{chunk-ktwy9nyn.js.map → chunk-cb616xw5.js.map} +1 -1
  250. package/dist/chunk-ce7rcdsg.js +4 -0
  251. package/dist/chunk-ce7rcdsg.js.map +10 -0
  252. package/dist/chunk-ce89kst6.js +4 -0
  253. package/dist/chunk-ce89kst6.js.map +10 -0
  254. package/dist/chunk-cefrz6wd.js +4 -0
  255. package/dist/chunk-cefrz6wd.js.map +10 -0
  256. package/dist/chunk-cgfc4w0w.js +4 -0
  257. package/dist/chunk-cgfc4w0w.js.map +10 -0
  258. package/dist/chunk-chabgvmr.js +4 -0
  259. package/dist/chunk-chabgvmr.js.map +10 -0
  260. package/dist/chunk-cjsmqv12.js +4 -0
  261. package/dist/chunk-cjsmqv12.js.map +10 -0
  262. package/dist/chunk-d12swf8t.js +4 -0
  263. package/dist/chunk-d12swf8t.js.map +10 -0
  264. package/dist/chunk-d1vf91bx.js +5 -0
  265. package/dist/chunk-d1vf91bx.js.map +10 -0
  266. package/dist/chunk-d3vvh6x2.js +4 -0
  267. package/dist/chunk-d3vvh6x2.js.map +13 -0
  268. package/dist/chunk-d7zvjgvr.js +4 -0
  269. package/dist/{chunk-1gjhrqfe.js.map → chunk-d7zvjgvr.js.map} +5 -5
  270. package/dist/chunk-d87mx4t6.js +4 -0
  271. package/dist/chunk-d87mx4t6.js.map +13 -0
  272. package/dist/chunk-d8nm5ddh.js +7 -0
  273. package/dist/chunk-d8nm5ddh.js.map +65 -0
  274. package/dist/chunk-dgpcg2dh.js +5 -0
  275. package/dist/chunk-dgpcg2dh.js.map +10 -0
  276. package/dist/chunk-dhfkqc5x.js +4 -0
  277. package/dist/chunk-dhfkqc5x.js.map +10 -0
  278. package/dist/chunk-e5n4eyrc.js +4 -0
  279. package/dist/chunk-e5n4eyrc.js.map +10 -0
  280. package/dist/chunk-ec6tgefk.js +5 -0
  281. package/dist/chunk-ec6tgefk.js.map +10 -0
  282. package/dist/chunk-eddsdprs.js +5 -0
  283. package/dist/chunk-eddsdprs.js.map +10 -0
  284. package/dist/chunk-efkfryw1.js +4 -0
  285. package/dist/chunk-efkfryw1.js.map +10 -0
  286. package/dist/chunk-enbw3h06.js +4 -0
  287. package/dist/chunk-enbw3h06.js.map +10 -0
  288. package/dist/chunk-eqne9ppg.js +5 -0
  289. package/dist/chunk-eqne9ppg.js.map +10 -0
  290. package/dist/chunk-etcm6fh1.js +4 -0
  291. package/dist/chunk-etcm6fh1.js.map +10 -0
  292. package/dist/chunk-evmtw59h.js +4 -0
  293. package/dist/chunk-evmtw59h.js.map +10 -0
  294. package/dist/chunk-eytgtgtj.js +4 -0
  295. package/dist/chunk-eytgtgtj.js.map +10 -0
  296. package/dist/chunk-eza2c3t1.js +4 -0
  297. package/dist/chunk-eza2c3t1.js.map +10 -0
  298. package/dist/chunk-f08ksmq5.js +4 -0
  299. package/dist/chunk-f08ksmq5.js.map +10 -0
  300. package/dist/chunk-f48vajs9.js +4 -0
  301. package/dist/chunk-f48vajs9.js.map +10 -0
  302. package/dist/chunk-f6ypbp8s.js +4 -0
  303. package/dist/chunk-f6ypbp8s.js.map +10 -0
  304. package/dist/chunk-f867b961.js +4 -0
  305. package/dist/chunk-f867b961.js.map +10 -0
  306. package/dist/chunk-f9q2xx8j.js +4 -0
  307. package/dist/chunk-f9q2xx8j.js.map +10 -0
  308. package/dist/chunk-fb3xpd5h.js +4 -0
  309. package/dist/chunk-fb3xpd5h.js.map +10 -0
  310. package/dist/chunk-fc95wase.js +4 -0
  311. package/dist/chunk-fc95wase.js.map +10 -0
  312. package/dist/chunk-fqqhza9s.js +4 -0
  313. package/dist/chunk-fqqhza9s.js.map +10 -0
  314. package/dist/chunk-g28v2sg8.js +4 -0
  315. package/dist/chunk-g28v2sg8.js.map +10 -0
  316. package/dist/chunk-g3nnqcbw.js +5 -0
  317. package/dist/chunk-g3nnqcbw.js.map +10 -0
  318. package/dist/chunk-g5b9r81v.js +5 -0
  319. package/dist/chunk-g5b9r81v.js.map +10 -0
  320. package/dist/chunk-gj0zbz3g.js +4 -0
  321. package/dist/chunk-gj0zbz3g.js.map +10 -0
  322. package/dist/chunk-gn1cd35p.js +4 -0
  323. package/dist/chunk-gn1cd35p.js.map +10 -0
  324. package/dist/chunk-gprayftg.js +4 -0
  325. package/dist/chunk-gprayftg.js.map +10 -0
  326. package/dist/chunk-gr995e76.js +5 -0
  327. package/dist/chunk-gr995e76.js.map +10 -0
  328. package/dist/chunk-grva5cgq.js +4 -0
  329. package/dist/chunk-grva5cgq.js.map +10 -0
  330. package/dist/chunk-gtvgm63z.js +4 -0
  331. package/dist/chunk-gtvgm63z.js.map +10 -0
  332. package/dist/chunk-gwf5xs7m.js +18 -0
  333. package/dist/{chunk-qf6zg7nd.js.map → chunk-gwf5xs7m.js.map} +15 -34
  334. package/dist/chunk-gwnr2ycm.js +5 -0
  335. package/dist/chunk-gwnr2ycm.js.map +10 -0
  336. package/dist/chunk-gyxgxwcc.js +4 -0
  337. package/dist/chunk-gyxgxwcc.js.map +10 -0
  338. package/dist/chunk-h25tw54p.js +4 -0
  339. package/dist/chunk-h25tw54p.js.map +10 -0
  340. package/dist/chunk-h3tskj7j.js +4 -0
  341. package/dist/chunk-h3tskj7j.js.map +10 -0
  342. package/dist/chunk-hh62xvjr.js +4 -0
  343. package/dist/chunk-hh62xvjr.js.map +10 -0
  344. package/dist/chunk-hk1q1ep4.js +4 -0
  345. package/dist/chunk-hk1q1ep4.js.map +10 -0
  346. package/dist/chunk-hqhrt4re.js +5 -0
  347. package/dist/chunk-hqhrt4re.js.map +10 -0
  348. package/dist/chunk-hvk0d1ww.js +4 -0
  349. package/dist/chunk-hvk0d1ww.js.map +10 -0
  350. package/dist/chunk-j19xcy0f.js +4 -0
  351. package/dist/chunk-j19xcy0f.js.map +10 -0
  352. package/dist/chunk-j20akbzn.js +4 -0
  353. package/dist/chunk-j20akbzn.js.map +10 -0
  354. package/dist/chunk-j4xa9v2b.js +4 -0
  355. package/dist/chunk-j4xa9v2b.js.map +10 -0
  356. package/dist/chunk-jaywwzjq.js +4 -0
  357. package/dist/chunk-jaywwzjq.js.map +10 -0
  358. package/dist/chunk-jc7ftaka.js +4 -0
  359. package/dist/{chunk-ckds5kj4.js.map → chunk-jc7ftaka.js.map} +2 -2
  360. package/dist/chunk-jcs320db.js +4 -0
  361. package/dist/chunk-jcs320db.js.map +10 -0
  362. package/dist/chunk-jd1v2z6g.js +4 -0
  363. package/dist/chunk-jd1v2z6g.js.map +10 -0
  364. package/dist/chunk-jfrvg24q.js +4 -0
  365. package/dist/chunk-jfrvg24q.js.map +10 -0
  366. package/dist/chunk-jhxnydm7.js +5 -0
  367. package/dist/chunk-jhxnydm7.js.map +10 -0
  368. package/dist/chunk-jjt3mqyj.js +4 -0
  369. package/dist/chunk-jjt3mqyj.js.map +10 -0
  370. package/dist/chunk-jmv6j1ma.js +4 -0
  371. package/dist/chunk-jmv6j1ma.js.map +10 -0
  372. package/dist/chunk-jrg0k6fy.js +4 -0
  373. package/dist/chunk-jrg0k6fy.js.map +10 -0
  374. package/dist/chunk-k1gr1y2n.js +4 -0
  375. package/dist/chunk-k1gr1y2n.js.map +10 -0
  376. package/dist/chunk-k5903r56.js +4 -0
  377. package/dist/chunk-k5903r56.js.map +10 -0
  378. package/dist/chunk-k7er8zn9.js +5 -0
  379. package/dist/chunk-k7er8zn9.js.map +10 -0
  380. package/dist/chunk-k7seyqnj.js +5 -0
  381. package/dist/chunk-k7seyqnj.js.map +10 -0
  382. package/dist/chunk-keqxzdm8.js +4 -0
  383. package/dist/chunk-keqxzdm8.js.map +10 -0
  384. package/dist/chunk-kj73phvd.js +4 -0
  385. package/dist/chunk-kj73phvd.js.map +10 -0
  386. package/dist/chunk-kttqecab.js +4 -0
  387. package/dist/chunk-kttqecab.js.map +20 -0
  388. package/dist/chunk-kv6jab20.js +4 -0
  389. package/dist/chunk-kv6jab20.js.map +10 -0
  390. package/dist/chunk-m10rw8zf.js +4 -0
  391. package/dist/chunk-m10rw8zf.js.map +10 -0
  392. package/dist/chunk-m3x7ehjz.js +4 -0
  393. package/dist/chunk-m3x7ehjz.js.map +10 -0
  394. package/dist/chunk-m4ywwfhj.js +4 -0
  395. package/dist/chunk-m4ywwfhj.js.map +10 -0
  396. package/dist/chunk-m9xdm31a.js +5 -0
  397. package/dist/chunk-m9xdm31a.js.map +10 -0
  398. package/dist/chunk-mb5me03r.js +4 -0
  399. package/dist/chunk-mb5me03r.js.map +10 -0
  400. package/dist/chunk-mbhvesxn.js +4 -0
  401. package/dist/chunk-mbhvesxn.js.map +10 -0
  402. package/dist/chunk-md05dm8y.js +4 -0
  403. package/dist/{chunk-wfc30gdx.js.map → chunk-md05dm8y.js.map} +2 -2
  404. package/dist/chunk-mdwc3caf.js +4 -0
  405. package/dist/{chunk-en5bya0k.js.map → chunk-mdwc3caf.js.map} +2 -2
  406. package/dist/chunk-mq4xa8g0.js +4 -0
  407. package/dist/chunk-mq4xa8g0.js.map +10 -0
  408. package/dist/chunk-msarsnba.js +4 -0
  409. package/dist/chunk-msarsnba.js.map +10 -0
  410. package/dist/chunk-mtt5kfk0.js +4 -0
  411. package/dist/chunk-mtt5kfk0.js.map +10 -0
  412. package/dist/chunk-mtvvnps3.js +4 -0
  413. package/dist/chunk-mtvvnps3.js.map +10 -0
  414. package/dist/chunk-mww3xsh5.js +4 -0
  415. package/dist/chunk-mww3xsh5.js.map +10 -0
  416. package/dist/chunk-n0yg50tm.js +4 -0
  417. package/dist/chunk-n0yg50tm.js.map +10 -0
  418. package/dist/chunk-n15vbtzw.js +4 -0
  419. package/dist/chunk-n15vbtzw.js.map +10 -0
  420. package/dist/chunk-n1x0b75g.js +4 -0
  421. package/dist/chunk-n1x0b75g.js.map +10 -0
  422. package/dist/chunk-n6eekz6f.js +4 -0
  423. package/dist/chunk-n6eekz6f.js.map +10 -0
  424. package/dist/chunk-ng4pttb5.js +4 -0
  425. package/dist/chunk-ng4pttb5.js.map +10 -0
  426. package/dist/chunk-ngpkbmcy.js +4 -0
  427. package/dist/chunk-ngpkbmcy.js.map +10 -0
  428. package/dist/chunk-np64fgdg.js +4 -0
  429. package/dist/chunk-np64fgdg.js.map +10 -0
  430. package/dist/chunk-nshtq1ys.js +4 -0
  431. package/dist/chunk-nshtq1ys.js.map +10 -0
  432. package/dist/chunk-p2a7zrdj.js +4 -0
  433. package/dist/chunk-p2a7zrdj.js.map +10 -0
  434. package/dist/chunk-p7r1931r.js +4 -0
  435. package/dist/{chunk-hjr9ztvj.js.map → chunk-p7r1931r.js.map} +2 -2
  436. package/dist/chunk-pb70nyeg.js +4 -0
  437. package/dist/chunk-pb70nyeg.js.map +10 -0
  438. package/dist/chunk-pbgrf052.js +8 -0
  439. package/dist/chunk-pbgrf052.js.map +53 -0
  440. package/dist/chunk-pebk5hpa.js +4 -0
  441. package/dist/chunk-pebk5hpa.js.map +10 -0
  442. package/dist/chunk-pmtd0cc3.js +4 -0
  443. package/dist/chunk-pmtd0cc3.js.map +10 -0
  444. package/dist/chunk-q0fe3c44.js +4 -0
  445. package/dist/chunk-q0fe3c44.js.map +10 -0
  446. package/dist/chunk-q2btpck1.js +4 -0
  447. package/dist/chunk-q2btpck1.js.map +10 -0
  448. package/dist/chunk-q656e0z8.js +4 -0
  449. package/dist/chunk-q656e0z8.js.map +10 -0
  450. package/dist/chunk-q9q0m0fk.js +4 -0
  451. package/dist/chunk-q9q0m0fk.js.map +10 -0
  452. package/dist/chunk-qepjnnqp.js +4 -0
  453. package/dist/chunk-qepjnnqp.js.map +10 -0
  454. package/dist/chunk-qhxd2v41.js +4 -0
  455. package/dist/chunk-qhxd2v41.js.map +10 -0
  456. package/dist/chunk-qjepp6dz.js +4 -0
  457. package/dist/chunk-qjepp6dz.js.map +10 -0
  458. package/dist/chunk-r015e873.js +4 -0
  459. package/dist/chunk-r015e873.js.map +10 -0
  460. package/dist/chunk-r2wpm2d7.js +4 -0
  461. package/dist/chunk-r2wpm2d7.js.map +10 -0
  462. package/dist/chunk-r70xpzx4.js +4 -0
  463. package/dist/chunk-r70xpzx4.js.map +10 -0
  464. package/dist/chunk-r7qn7nya.js +4 -0
  465. package/dist/chunk-r7qn7nya.js.map +10 -0
  466. package/dist/chunk-r9fb428b.js +4 -0
  467. package/dist/chunk-r9fb428b.js.map +10 -0
  468. package/dist/chunk-raq3khzd.js +4 -0
  469. package/dist/chunk-raq3khzd.js.map +10 -0
  470. package/dist/chunk-rf60qjxw.js +5 -0
  471. package/dist/chunk-rf60qjxw.js.map +14 -0
  472. package/dist/chunk-rjjjt0eg.js +8 -0
  473. package/dist/{chunk-h1xm4rnm.js.map → chunk-rjjjt0eg.js.map} +2 -2
  474. package/dist/chunk-rjzrfj86.js +4 -0
  475. package/dist/chunk-rjzrfj86.js.map +10 -0
  476. package/dist/chunk-rm3pct07.js +4 -0
  477. package/dist/chunk-rm3pct07.js.map +10 -0
  478. package/dist/chunk-rmhs40sh.js +4 -0
  479. package/dist/chunk-rmhs40sh.js.map +10 -0
  480. package/dist/chunk-rqrezesz.js +4 -0
  481. package/dist/chunk-rqrezesz.js.map +10 -0
  482. package/dist/chunk-s0b5gyec.js +5 -0
  483. package/dist/chunk-s0b5gyec.js.map +10 -0
  484. package/dist/chunk-s0g6kddk.js +4 -0
  485. package/dist/chunk-s0g6kddk.js.map +10 -0
  486. package/dist/chunk-s4twrhpt.js +4 -0
  487. package/dist/chunk-s4twrhpt.js.map +10 -0
  488. package/dist/chunk-s5q7xgm7.js +4 -0
  489. package/dist/chunk-s5q7xgm7.js.map +10 -0
  490. package/dist/chunk-s6337cg6.js +4 -0
  491. package/dist/chunk-s6337cg6.js.map +10 -0
  492. package/dist/chunk-sarcnr78.js +5 -0
  493. package/dist/chunk-sarcnr78.js.map +10 -0
  494. package/dist/chunk-sgqzh2eh.js +4 -0
  495. package/dist/chunk-sgqzh2eh.js.map +10 -0
  496. package/dist/chunk-sh7q9p7c.js +4 -0
  497. package/dist/chunk-sh7q9p7c.js.map +10 -0
  498. package/dist/chunk-shvm8xpf.js +4 -0
  499. package/dist/chunk-shvm8xpf.js.map +10 -0
  500. package/dist/chunk-sm4gyh1f.js +4 -0
  501. package/dist/{chunk-dtkvdcf6.js.map → chunk-sm4gyh1f.js.map} +3 -7
  502. package/dist/chunk-sqdy9tjw.js +4 -0
  503. package/dist/chunk-sqdy9tjw.js.map +10 -0
  504. package/dist/chunk-stfzvxzh.js +5 -0
  505. package/dist/chunk-stfzvxzh.js.map +25 -0
  506. package/dist/chunk-sxt20n19.js +4 -0
  507. package/dist/chunk-sxt20n19.js.map +10 -0
  508. package/dist/chunk-t1mdzmvf.js +4 -0
  509. package/dist/{chunk-55xdqqbt.js.map → chunk-t1mdzmvf.js.map} +3 -14
  510. package/dist/chunk-t24w0gem.js +4 -0
  511. package/dist/chunk-t24w0gem.js.map +10 -0
  512. package/dist/chunk-t8pfwzwx.js +4 -0
  513. package/dist/chunk-t8pfwzwx.js.map +10 -0
  514. package/dist/chunk-t9fpc42w.js +4 -0
  515. package/dist/chunk-t9fpc42w.js.map +10 -0
  516. package/dist/chunk-ta1fz9d1.js +5 -0
  517. package/dist/chunk-ta1fz9d1.js.map +10 -0
  518. package/dist/chunk-thdwxt6w.js +4 -0
  519. package/dist/chunk-thdwxt6w.js.map +10 -0
  520. package/dist/chunk-tkgk80b9.js +4 -0
  521. package/dist/chunk-tkgk80b9.js.map +10 -0
  522. package/dist/chunk-twf1wr4h.js +4 -0
  523. package/dist/chunk-twf1wr4h.js.map +10 -0
  524. package/dist/chunk-v9kg2vy4.js +4 -0
  525. package/dist/{chunk-arbx49j6.js.map → chunk-v9kg2vy4.js.map} +5 -5
  526. package/dist/chunk-veamz5d0.js +4 -0
  527. package/dist/chunk-veamz5d0.js.map +10 -0
  528. package/dist/chunk-vf6yxr0r.js +4 -0
  529. package/dist/chunk-vf6yxr0r.js.map +10 -0
  530. package/dist/chunk-vh816yqy.js +4 -0
  531. package/dist/chunk-vh816yqy.js.map +10 -0
  532. package/dist/chunk-vnxja8xq.js +4 -0
  533. package/dist/chunk-vnxja8xq.js.map +10 -0
  534. package/dist/chunk-vpgsy207.js +4 -0
  535. package/dist/chunk-vpgsy207.js.map +10 -0
  536. package/dist/chunk-vqnvrsnc.js +4 -0
  537. package/dist/chunk-vqnvrsnc.js.map +10 -0
  538. package/dist/chunk-vx2ep3d6.js +5 -0
  539. package/dist/chunk-vx2ep3d6.js.map +10 -0
  540. package/dist/chunk-vybrcp16.js +4 -0
  541. package/dist/chunk-vybrcp16.js.map +10 -0
  542. package/dist/chunk-w100wbf2.js +11 -0
  543. package/dist/{chunk-r3qdswng.js.map → chunk-w100wbf2.js.map} +5 -5
  544. package/dist/chunk-w1d1dmx3.js +4 -0
  545. package/dist/chunk-w1d1dmx3.js.map +10 -0
  546. package/dist/chunk-w1nwkvbe.js +4 -0
  547. package/dist/chunk-w1nwkvbe.js.map +10 -0
  548. package/dist/chunk-w1zabjwt.js +4 -0
  549. package/dist/chunk-w1zabjwt.js.map +10 -0
  550. package/dist/chunk-w4hqdtab.js +4 -0
  551. package/dist/chunk-w4hqdtab.js.map +10 -0
  552. package/dist/chunk-w5tgtsfr.js +4 -0
  553. package/dist/chunk-w5tgtsfr.js.map +10 -0
  554. package/dist/chunk-w7ezjfcb.js +4 -0
  555. package/dist/chunk-w7ezjfcb.js.map +10 -0
  556. package/dist/chunk-w7mjxa9e.js +4 -0
  557. package/dist/chunk-w7mjxa9e.js.map +10 -0
  558. package/dist/chunk-w9h179q6.js +5 -0
  559. package/dist/chunk-w9h179q6.js.map +10 -0
  560. package/dist/chunk-wb75jnfp.js +4 -0
  561. package/dist/chunk-wb75jnfp.js.map +10 -0
  562. package/dist/chunk-wd9hmfa8.js +4 -0
  563. package/dist/chunk-wd9hmfa8.js.map +10 -0
  564. package/dist/chunk-wqmd1wv4.js +4 -0
  565. package/dist/chunk-wqmd1wv4.js.map +10 -0
  566. package/dist/chunk-wrz50ar3.js +4 -0
  567. package/dist/chunk-wrz50ar3.js.map +48 -0
  568. package/dist/chunk-wxgcwv7j.js +4 -0
  569. package/dist/chunk-wxgcwv7j.js.map +11 -0
  570. package/dist/chunk-wxw4254w.js +4 -0
  571. package/dist/{chunk-2n21sn7a.js.map → chunk-wxw4254w.js.map} +3 -4
  572. package/dist/chunk-wyc2ab1h.js +4 -0
  573. package/dist/chunk-wyc2ab1h.js.map +10 -0
  574. package/dist/chunk-wzbs51e4.js +4 -0
  575. package/dist/chunk-wzbs51e4.js.map +10 -0
  576. package/dist/chunk-x6248vkg.js +5 -0
  577. package/dist/chunk-x6248vkg.js.map +10 -0
  578. package/dist/{chunk-td079vg9.js → chunk-xajvm5dg.js} +3 -3
  579. package/dist/{chunk-td079vg9.js.map → chunk-xajvm5dg.js.map} +1 -1
  580. package/dist/chunk-xrteffkv.js +4 -0
  581. package/dist/chunk-xrteffkv.js.map +10 -0
  582. package/dist/chunk-xtc3sb35.js +5 -0
  583. package/dist/chunk-xtc3sb35.js.map +10 -0
  584. package/dist/chunk-xvfygk82.js +4 -0
  585. package/dist/{chunk-enc2835j.js.map → chunk-xvfygk82.js.map} +2 -2
  586. package/dist/chunk-xyagccth.js +4 -0
  587. package/dist/chunk-xyagccth.js.map +10 -0
  588. package/dist/chunk-y0msdehj.js +4 -0
  589. package/dist/chunk-y0msdehj.js.map +21 -0
  590. package/dist/chunk-y2zzprr2.js +4 -0
  591. package/dist/chunk-y2zzprr2.js.map +10 -0
  592. package/dist/chunk-y425gbw0.js +4 -0
  593. package/dist/{chunk-11by8vja.js.map → chunk-y425gbw0.js.map} +5 -5
  594. package/dist/chunk-y7q3vx60.js +4 -0
  595. package/dist/chunk-y7q3vx60.js.map +10 -0
  596. package/dist/chunk-y8vm6nhq.js +4 -0
  597. package/dist/chunk-y8vm6nhq.js.map +10 -0
  598. package/dist/chunk-ym3p77cw.js +4 -0
  599. package/dist/chunk-ym3p77cw.js.map +10 -0
  600. package/dist/chunk-yqq2hs5v.js +4 -0
  601. package/dist/chunk-yqq2hs5v.js.map +10 -0
  602. package/dist/chunk-ys2w3w3h.js +4 -0
  603. package/dist/chunk-ys2w3w3h.js.map +10 -0
  604. package/dist/chunk-yx2dstze.js +4 -0
  605. package/dist/chunk-yx2dstze.js.map +10 -0
  606. package/dist/chunk-yxb1tm10.js +5 -0
  607. package/dist/chunk-yxb1tm10.js.map +10 -0
  608. package/dist/chunk-yxngksdn.js +4 -0
  609. package/dist/chunk-yxngksdn.js.map +10 -0
  610. package/dist/chunk-yzf50f27.js +4 -0
  611. package/dist/chunk-yzf50f27.js.map +10 -0
  612. package/dist/chunk-z2536ve8.js +4 -0
  613. package/dist/chunk-z2536ve8.js.map +14 -0
  614. package/dist/chunk-z6d8dyj4.js +4 -0
  615. package/dist/{chunk-b6w0fgxz.js.map → chunk-z6d8dyj4.js.map} +2 -2
  616. package/dist/chunk-z73h9wcv.js +4 -0
  617. package/dist/chunk-z73h9wcv.js.map +10 -0
  618. package/dist/chunk-z744x29v.js +5 -0
  619. package/dist/chunk-z744x29v.js.map +10 -0
  620. package/dist/chunk-zajtvy67.js +4 -0
  621. package/dist/chunk-zajtvy67.js.map +10 -0
  622. package/dist/chunk-zgcwtt7q.js +4 -0
  623. package/dist/chunk-zgcwtt7q.js.map +10 -0
  624. package/dist/chunk-zt083h6w.js +4 -0
  625. package/dist/chunk-zt083h6w.js.map +10 -0
  626. package/dist/email/index.js +2 -2
  627. package/dist/email/index.js.map +26 -5
  628. package/dist/facades/index.js +2 -2
  629. package/dist/facades/index.js.map +2 -2
  630. package/dist/http/ApiRouter.d.ts +5 -0
  631. package/dist/http/ApiRouter.d.ts.map +1 -1
  632. package/dist/http/Controller.d.ts +0 -1
  633. package/dist/http/Controller.d.ts.map +1 -1
  634. package/dist/http/ViewRouter.d.ts.map +1 -1
  635. package/dist/http/index.js +2 -2
  636. package/dist/http/index.js.map +5 -5
  637. package/dist/kernel/index.js +2 -2
  638. package/dist/kernel/index.js.map +2 -2
  639. package/dist/server/index.js +2 -2
  640. package/dist/server/index.js.map +2 -2
  641. package/dist/services/index.js +2 -11
  642. package/dist/services/index.js.map +28 -15
  643. package/dist/vite/{index-Bu4AXBt9.mjs → index-C9AWJ7QP.mjs} +1 -1
  644. package/dist/vite/index.mjs +1 -1
  645. package/dist/vite/{typescript-D69Uqrn5.mjs → typescript-CKrglZ4F.mjs} +56 -48
  646. package/package.json +2 -2
  647. package/dist/chunk-11by8vja.js +0 -4
  648. package/dist/chunk-1gjhrqfe.js +0 -4
  649. package/dist/chunk-2n21sn7a.js +0 -4
  650. package/dist/chunk-55xdqqbt.js +0 -4
  651. package/dist/chunk-6vp2svxg.js +0 -4
  652. package/dist/chunk-6vp2svxg.js.map +0 -13
  653. package/dist/chunk-a67a5vtk.js +0 -4
  654. package/dist/chunk-arbx49j6.js +0 -4
  655. package/dist/chunk-b6w0fgxz.js +0 -4
  656. package/dist/chunk-ckds5kj4.js +0 -4
  657. package/dist/chunk-dtkvdcf6.js +0 -4
  658. package/dist/chunk-ef6dgp5k.js +0 -4
  659. package/dist/chunk-en5bya0k.js +0 -4
  660. package/dist/chunk-enc2835j.js +0 -4
  661. package/dist/chunk-gsrxf3xp.js +0 -5
  662. package/dist/chunk-gsrxf3xp.js.map +0 -64
  663. package/dist/chunk-h1xm4rnm.js +0 -8
  664. package/dist/chunk-hjr9ztvj.js +0 -4
  665. package/dist/chunk-kmfnx43s.js +0 -4
  666. package/dist/chunk-ktwy9nyn.js +0 -4
  667. package/dist/chunk-n7j3s0s0.js +0 -3
  668. package/dist/chunk-n7j3s0s0.js.map +0 -15
  669. package/dist/chunk-p9gc7ke6.js +0 -3
  670. package/dist/chunk-qf6zg7nd.js +0 -20
  671. package/dist/chunk-r3qdswng.js +0 -11
  672. package/dist/chunk-t3g9fdba.js +0 -5
  673. package/dist/chunk-t3g9fdba.js.map +0 -54
  674. package/dist/chunk-wfc30gdx.js +0 -4
  675. package/dist/chunk-z4ha0p3z.js +0 -4
  676. package/dist/chunk-z4ha0p3z.js.map +0 -10
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/extend/index.js", "../../../node_modules/devlop/lib/default.js", "../../../node_modules/hast-util-parse-selector/lib/index.js", "../../../node_modules/hastscript/lib/create-h.js", "../../../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js", "../../../node_modules/hastscript/lib/index.js", "../../../node_modules/vfile-location/lib/index.js", "../../../node_modules/web-namespaces/index.js", "../../../node_modules/hast-util-from-parse5/lib/index.js", "../../../node_modules/parse5/dist/common/unicode.js", "../../../node_modules/parse5/dist/common/error-codes.js", "../../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../../node_modules/parse5/dist/common/token.js", "../../../node_modules/parse5/dist/common/html.js", "../../../node_modules/parse5/dist/tokenizer/index.js", "../../../node_modules/parse5/dist/parser/open-element-stack.js", "../../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../../node_modules/parse5/dist/tree-adapters/default.js", "../../../node_modules/parse5/dist/common/doctype.js", "../../../node_modules/parse5/dist/common/foreign-content.js", "../../../node_modules/parse5/dist/parser/index.js", "../../../node_modules/parse5/dist/serializer/index.js", "../../../node_modules/parse5/dist/index.js", "../../../node_modules/unist-util-stringify-position/lib/index.js", "../../../node_modules/vfile-message/lib/index.js", "../../../node_modules/vfile/lib/minpath.js", "../../../node_modules/vfile/lib/minproc.js", "../../../node_modules/vfile/lib/minurl.js", "../../../node_modules/vfile/lib/minurl.shared.js", "../../../node_modules/vfile/lib/index.js", "../../../node_modules/hast-util-from-html/lib/errors.js", "../../../node_modules/hast-util-from-html/lib/index.js", "../../../node_modules/rehype-parse/lib/index.js", "../../../node_modules/bail/index.js", "../../../node_modules/unified/lib/index.js", "../../../node_modules/is-plain-obj/index.js", "../../../node_modules/trough/lib/index.js", "../../../node_modules/unified/lib/callable-instance.js", "../../../node_modules/rehype/index.js"],
4
+ "sourcesContent": [
5
+ "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n",
6
+ "export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n",
7
+ "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n * Selector type.\n * @template {string} DefaultTagName\n * Default tag name.\n * @typedef {(\n * SimpleSelector extends ''\n * ? DefaultTagName\n * : SimpleSelector extends `${infer TagName}.${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends `${infer TagName}#${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends string\n * ? SimpleSelector\n * : DefaultTagName\n * )} ExtractTagName\n * Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n * Type of selector.\n * @template {string} [DefaultTagName='div']\n * Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n * Simple CSS selector (optional).\n *\n * Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n * Multiple classes are allowed.\n * Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n * Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n * Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n const value = selector || ''\n /** @type {Properties} */\n const props = {}\n let start = 0\n /** @type {string | undefined} */\n let previous\n /** @type {string | undefined} */\n let tagName\n\n while (start < value.length) {\n search.lastIndex = start\n const match = search.exec(value)\n const subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n tagName = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (Array.isArray(props.className)) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {\n type: 'element',\n // @ts-expect-error: tag name is parsed.\n tagName: tagName || defaultTagName || 'div',\n properties: props,\n children: []\n }\n}\n",
8
+ "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n *\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef {Element | Root} Result\n * Result from a `h` (or `s`) call.\n *\n * @typedef {number | string} StyleValue\n * Value for a CSS style field.\n * @typedef {Record<string, StyleValue>} Style\n * Supported value of a `style` prop.\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n * Primitive property value.\n * @typedef {Array<number | string>} ArrayValue\n * List of property values for space- or comma separated values (such as `className`).\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n * Primitive value or list value.\n * @typedef {{[property: string]: PropertyValue | Style}} Properties\n * Acceptable value for element properties.\n *\n * @typedef {number | string | null | undefined} PrimitiveChild\n * Primitive children, either ignored (nullish), or turned into text nodes.\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n * List of children.\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n * List of children (deep).\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n * Acceptable child value.\n */\n\nimport {parse as commas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as spaces} from 'space-separated-tokens'\n\nconst buttonTypes = new Set(['button', 'menu', 'reset', 'submit'])\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Schema} schema\n * Schema to use.\n * @param {string} defaultTagName\n * Default tag name.\n * @param {Array<string> | undefined} [caseSensitive]\n * Case-sensitive tag names (default: `undefined`).\n * @returns\n * `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n const adjust = caseSensitive && createAdjustMap(caseSensitive)\n\n /**\n * Hyperscript compatible DSL for creating virtual hast trees.\n *\n * @overload\n * @param {null | undefined} [selector]\n * @param {...Child} children\n * @returns {Root}\n *\n * @overload\n * @param {string} selector\n * @param {Properties} properties\n * @param {...Child} children\n * @returns {Element}\n *\n * @overload\n * @param {string} selector\n * @param {...Child} children\n * @returns {Element}\n *\n * @param {string | null | undefined} [selector]\n * Selector.\n * @param {Child | Properties | null | undefined} [properties]\n * Properties (or first child) (default: `undefined`).\n * @param {...Child} children\n * Children.\n * @returns {Result}\n * Result.\n */\n function h(selector, properties, ...children) {\n let index = -1\n /** @type {Result} */\n let node\n\n if (selector === undefined || selector === null) {\n node = {type: 'root', children: []}\n // Properties are not supported for roots.\n const child = /** @type {Child} */ (properties)\n children.unshift(child)\n } else {\n node = parseSelector(selector, defaultTagName)\n // Normalize the name.\n node.tagName = node.tagName.toLowerCase()\n if (adjust && own.call(adjust, node.tagName)) {\n node.tagName = adjust[node.tagName]\n }\n\n // Handle props.\n if (isProperties(properties, node.tagName)) {\n /** @type {string} */\n let key\n\n for (key in properties) {\n if (own.call(properties, key)) {\n addProperty(schema, node.properties, key, properties[key])\n }\n }\n } else {\n children.unshift(properties)\n }\n }\n\n // Handle children.\n while (++index < children.length) {\n addChild(node.children, children[index])\n }\n\n if (node.type === 'element' && node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n * Value to check.\n * @param {string} name\n * Tag name.\n * @returns {value is Properties}\n * Whether `value` is a properties object.\n */\nfunction isProperties(value, name) {\n if (\n value === null ||\n value === undefined ||\n typeof value !== 'object' ||\n Array.isArray(value)\n ) {\n return false\n }\n\n if (name === 'input' || !value.type || typeof value.type !== 'string') {\n return true\n }\n\n if ('children' in value && Array.isArray(value.children)) {\n return false\n }\n\n if (name === 'button') {\n return buttonTypes.has(value.type.toLowerCase())\n }\n\n return !('value' in value)\n}\n\n/**\n * @param {Schema} schema\n * Schema.\n * @param {Properties} properties\n * Properties object.\n * @param {string} key\n * Property name.\n * @param {PropertyValue | Style} value\n * Property value.\n * @returns {undefined}\n * Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n const info = find(schema, key)\n let index = -1\n /** @type {PropertyValue} */\n let result\n\n // Ignore nullish and NaN values.\n if (value === undefined || value === null) return\n\n if (typeof value === 'number') {\n // Ignore NaN.\n if (Number.isNaN(value)) return\n\n result = value\n }\n // Booleans.\n else if (typeof value === 'boolean') {\n result = value\n }\n // Handle list values.\n else if (typeof value === 'string') {\n if (info.spaceSeparated) {\n result = spaces(value)\n } else if (info.commaSeparated) {\n result = commas(value)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(value).join(' '))\n } else {\n result = parsePrimitive(info, info.property, value)\n }\n } else if (Array.isArray(value)) {\n result = value.concat()\n } else {\n result = info.property === 'style' ? style(value) : String(value)\n }\n\n if (Array.isArray(result)) {\n /** @type {Array<number | string>} */\n const finalResult = []\n\n while (++index < result.length) {\n // Assume no booleans in array.\n const value = /** @type {number | string} */ (\n parsePrimitive(info, info.property, result[index])\n )\n finalResult[index] = value\n }\n\n result = finalResult\n }\n\n // Class names (which can be added both on the `selector` and here).\n if (info.property === 'className' && Array.isArray(properties.className)) {\n // Assume no booleans in `className`.\n const value = /** @type {number | string} */ (result)\n result = properties.className.concat(value)\n }\n\n properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n * Children.\n * @param {Child} value\n * Child.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChild(nodes, value) {\n let index = -1\n\n if (value === undefined || value === null) {\n // Empty.\n } else if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n } else if (Array.isArray(value)) {\n while (++index < value.length) {\n addChild(nodes, value[index])\n }\n } else if (typeof value === 'object' && 'type' in value) {\n if (value.type === 'root') {\n addChild(nodes, value.children)\n } else {\n nodes.push(value)\n }\n } else {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * Property information.\n * @param {string} name\n * Property name.\n * @param {PrimitiveValue} value\n * Property value.\n * @returns {PrimitiveValue}\n * Property value.\n */\nfunction parsePrimitive(info, name, value) {\n if (typeof value === 'string') {\n if (info.number && value && !Number.isNaN(Number(value))) {\n return Number(value)\n }\n\n if (\n (info.boolean || info.overloadedBoolean) &&\n (value === '' || normalize(value) === normalize(name))\n ) {\n return true\n }\n }\n\n return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} value\n * Style object.\n * @returns {string}\n * CSS string.\n */\nfunction style(value) {\n /** @type {Array<string>} */\n const result = []\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n result.push([key, value[key]].join(': '))\n }\n }\n\n return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {Array<string>} values\n * List of properly cased keys.\n * @returns {Record<string, string>}\n * Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n /** @type {Record<string, string>} */\n const result = {}\n let index = -1\n\n while (++index < values.length) {\n result[values[index].toLowerCase()] = values[index]\n }\n\n return result\n}\n",
9
+ "export const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n",
10
+ "/**\n * @typedef {import('./create-h.js').Child} Child\n * Acceptable child value.\n * @typedef {import('./create-h.js').Properties} Properties\n * Acceptable value for element properties.\n * @typedef {import('./create-h.js').Result} Result\n * Result from a `h` (or `s`) call.\n */\n\n// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n",
11
+ "/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /**\n * List, where each index is a line number (0-based), and each value is the\n * byte index *after* where the line ends.\n *\n * @type {Array<number>}\n */\n const indices = []\n\n return {toOffset, toPoint}\n\n /** @type {Location['toPoint']} */\n function toPoint(offset) {\n if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n let index = 0\n\n while (true) {\n let end = indices[index]\n\n if (end === undefined) {\n const eol = next(value, indices[index - 1])\n end = eol === -1 ? value.length + 1 : eol + 1\n indices[index] = end\n }\n\n if (end > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n\n index++\n }\n }\n }\n\n /** @type {Location['toOffset']} */\n function toOffset(point) {\n if (\n point &&\n typeof point.line === 'number' &&\n typeof point.column === 'number' &&\n !Number.isNaN(point.line) &&\n !Number.isNaN(point.column)\n ) {\n while (indices.length < point.line) {\n const from = indices[indices.length - 1]\n const eol = next(value, from)\n const end = eol === -1 ? value.length + 1 : eol + 1\n if (from === end) break\n indices.push(end)\n }\n\n const offset =\n (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n // The given `column` could not exist on this line.\n if (offset < indices[point.line - 1]) return offset\n }\n }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n const cr = value.indexOf('\\r', from)\n const lf = value.indexOf('\\n', from)\n if (lf === -1) return cr\n if (cr === -1 || cr + 1 === lf) return lf\n return cr < lf ? cr : lf\n}\n",
12
+ "/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n",
13
+ "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementData} ElementData\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n *\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {import('parse5').Token.ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Token.Location} P5Location\n *\n * @typedef {import('property-information').Schema} Schema\n *\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n *\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5DocumentFragment\n * @typedef {DefaultTreeAdapterMap['documentType']} P5DocumentType\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['template']} P5Template\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {Space | null | undefined} [space='html']\n * Which space the document is in (default: `'html'`).\n *\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it.\n * @property {VFile | null | undefined} [file]\n * File used to add positional info to nodes (optional).\n *\n * If given, the file should represent the original HTML source.\n * @property {boolean | null | undefined} [verbose=false]\n * Whether to add extra positional info about starting tags, closing tags,\n * and attributes to elements (default: `false`).\n *\n * > 👉 **Note**: only used when `file` is given.\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean} location\n * Whether location info was found.\n * @property {Schema} schema\n * Current schema.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {P5Node} tree\n * `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {Nodes}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const settings = options || {}\n\n return one(\n {\n file: settings.file || undefined,\n location: false,\n schema: settings.space === 'svg' ? svg : html,\n verbose: settings.verbose || false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} node\n * p5 node.\n * @returns {Nodes}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Nodes} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {P5Comment} */ (node)\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference = /** @type {P5Document | P5DocumentFragment} */ (node)\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const doc = String(state.file)\n const loc = location(doc)\n const start = loc.toPoint(0)\n const end = loc.toPoint(doc.length)\n // Always defined as we give valid input.\n assert(start, 'expected `start`')\n assert(end, 'expected `end`')\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {P5DocumentType} */ (node)\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {P5Text} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {P5Element} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array<P5Node>} nodes\n * Nodes.\n * @returns {Array<RootContent>}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array<RootContent>} */\n const results = []\n\n while (++index < nodes.length) {\n // Assume no roots in `nodes`.\n const result = /** @type {RootContent} */ (one(state, nodes[index]))\n results.push(result)\n }\n\n return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Element} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record<string, string>} */\n const props = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n props[name] = attribute.value\n }\n }\n\n // Build.\n const fn = state.schema.space === 'svg' ? s : h\n const result = fn(node.tagName, props, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {P5Template} */ (node)\n const pos = reference.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n // Root in, root out.\n const content = /** @type {Root} */ (one(state, reference.content))\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} from\n * p5 node.\n * @param {Nodes} to\n * hast node.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Nodes} node\n * hast node.\n * @param {P5ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (state.verbose) {\n /** @type {Record<string, Position | undefined>} */\n const props = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n props[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n assert(location.startTag, 'a start tag should exist')\n const opening = position(location.startTag)\n const closing = location.endTag ? position(location.endTag) : undefined\n /** @type {ElementData['position']} */\n const data = {opening}\n if (closing) data.closing = closing\n data.properties = props\n\n node.data = {position: data}\n }\n }\n\n return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {P5Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n\n // @ts-expect-error: we do use `undefined` for points if one or the other\n // exists.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n",
14
+ "const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n",
15
+ "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n",
16
+ "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n",
17
+ "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n",
18
+ "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n",
19
+ "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n",
20
+ "import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n",
21
+ "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n",
22
+ "import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n",
23
+ "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n",
24
+ "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n",
25
+ "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n",
26
+ "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n",
27
+ "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n",
28
+ "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n",
29
+ "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /* eslint-disable no-unused-expressions */\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n",
30
+ "export {default as minpath} from 'node:path'\n",
31
+ "export {default as minproc} from 'node:process'\n",
32
+ "export {fileURLToPath as urlToPath} from 'node:url'\nexport {isUrl} from './minurl.shared.js'\n",
33
+ "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n",
34
+ "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n",
35
+ "/**\n * @typedef ErrorInfo\n * Info on a `parse5` error.\n * @property {string} reason\n * Reason of error.\n * @property {string} description\n * More info on error.\n * @property {false} [url]\n * Turn off if this is not documented in the html5 spec (optional).\n */\n\nexport const errors = {\n /** @type {ErrorInfo} */\n abandonedHeadElementChild: {\n reason: 'Unexpected metadata element after head',\n description:\n 'Unexpected element after head. Expected the element before `</head>`',\n url: false\n },\n /** @type {ErrorInfo} */\n abruptClosingOfEmptyComment: {\n reason: 'Unexpected abruptly closed empty comment',\n description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n },\n /** @type {ErrorInfo} */\n abruptDoctypePublicIdentifier: {\n reason: 'Unexpected abruptly closed public identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n },\n /** @type {ErrorInfo} */\n abruptDoctypeSystemIdentifier: {\n reason: 'Unexpected abruptly closed system identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n },\n /** @type {ErrorInfo} */\n absenceOfDigitsInNumericCharacterReference: {\n reason: 'Unexpected non-digit at start of numeric character reference',\n description:\n 'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n },\n /** @type {ErrorInfo} */\n cdataInHtmlContent: {\n reason: 'Unexpected CDATA section in HTML',\n description:\n 'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n },\n /** @type {ErrorInfo} */\n characterReferenceOutsideUnicodeRange: {\n reason: 'Unexpected too big numeric character reference',\n description:\n 'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n },\n /** @type {ErrorInfo} */\n closingOfElementWithOpenChildElements: {\n reason: 'Unexpected closing tag with open child elements',\n description:\n 'Unexpectedly closing tag. Expected other tags to be closed first',\n url: false\n },\n /** @type {ErrorInfo} */\n controlCharacterInInputStream: {\n reason: 'Unexpected control character',\n description:\n 'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n controlCharacterReference: {\n reason: 'Unexpected control character reference',\n description:\n 'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n disallowedContentInNoscriptInHead: {\n reason: 'Disallowed content inside `<noscript>` in `<head>`',\n description:\n 'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n url: false\n },\n /** @type {ErrorInfo} */\n duplicateAttribute: {\n reason: 'Unexpected duplicate attribute',\n description:\n 'Unexpectedly double attribute. Expected attributes to occur only once'\n },\n /** @type {ErrorInfo} */\n endTagWithAttributes: {\n reason: 'Unexpected attribute on closing tag',\n description: 'Unexpected attribute. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithTrailingSolidus: {\n reason: 'Unexpected slash at end of closing tag',\n description: 'Unexpected `%c-1`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithoutMatchingOpenElement: {\n reason: 'Unexpected unopened end tag',\n description: 'Unexpected end tag. Expected no end tag or another end tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofBeforeTagName: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected tag name instead'\n },\n /** @type {ErrorInfo} */\n eofInCdata: {\n reason: 'Unexpected end of file in CDATA',\n description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n },\n /** @type {ErrorInfo} */\n eofInComment: {\n reason: 'Unexpected end of file in comment',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInDoctype: {\n reason: 'Unexpected end of file in doctype',\n description:\n 'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n },\n /** @type {ErrorInfo} */\n eofInElementThatCanContainOnlyText: {\n reason: 'Unexpected end of file in element that can only contain text',\n description: 'Unexpected end of file. Expected text or a closing tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofInScriptHtmlCommentLikeText: {\n reason: 'Unexpected end of file in comment inside script',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInTag: {\n reason: 'Unexpected end of file in tag',\n description: 'Unexpected end of file. Expected `>` to close the tag'\n },\n /** @type {ErrorInfo} */\n incorrectlyClosedComment: {\n reason: 'Incorrectly closed comment',\n description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n incorrectlyOpenedComment: {\n reason: 'Incorrectly opened comment',\n description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n },\n /** @type {ErrorInfo} */\n invalidCharacterSequenceAfterDoctypeName: {\n reason: 'Invalid sequence after doctype name',\n description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n },\n /** @type {ErrorInfo} */\n invalidFirstCharacterOfTagName: {\n reason: 'Invalid first character in tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n misplacedDoctype: {\n reason: 'Misplaced doctype',\n description: 'Unexpected doctype. Expected doctype before head',\n url: false\n },\n /** @type {ErrorInfo} */\n misplacedStartTagForHeadElement: {\n reason: 'Misplaced `<head>` start tag',\n description:\n 'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n url: false\n },\n /** @type {ErrorInfo} */\n missingAttributeValue: {\n reason: 'Missing attribute value',\n description:\n 'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctype: {\n reason: 'Missing doctype before other content',\n description: 'Expected a `<!doctype html>` before anything else',\n url: false\n },\n /** @type {ErrorInfo} */\n missingDoctypeName: {\n reason: 'Missing doctype name',\n description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypePublicIdentifier: {\n reason: 'Missing public identifier in doctype',\n description: 'Unexpected `%c`. Expected identifier for `public` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypeSystemIdentifier: {\n reason: 'Missing system identifier in doctype',\n description:\n 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n },\n /** @type {ErrorInfo} */\n missingEndTagName: {\n reason: 'Missing name in end tag',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypePublicIdentifier: {\n reason: 'Missing quote before public identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypeSystemIdentifier: {\n reason: 'Missing quote before system identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingSemicolonAfterCharacterReference: {\n reason: 'Missing semicolon after character reference',\n description: 'Unexpected `%c`. Expected `;` instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypePublicKeyword: {\n reason: 'Missing whitespace after public identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypeSystemKeyword: {\n reason: 'Missing whitespace after system identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBeforeDoctypeName: {\n reason: 'Missing whitespace before doctype name',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenAttributes: {\n reason: 'Missing whitespace between attributes',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n reason:\n 'Missing whitespace between public and system identifiers in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n nestedComment: {\n reason: 'Unexpected nested comment',\n description: 'Unexpected `<!--`. Expected `-->`'\n },\n /** @type {ErrorInfo} */\n nestedNoscriptInHead: {\n reason: 'Unexpected nested `<noscript>` in `<head>`',\n description:\n 'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n url: false\n },\n /** @type {ErrorInfo} */\n nonConformingDoctype: {\n reason: 'Unexpected non-conforming doctype declaration',\n description:\n 'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n url: false\n },\n /** @type {ErrorInfo} */\n nonVoidHtmlElementStartTagWithTrailingSolidus: {\n reason: 'Unexpected trailing slash on start tag of non-void element',\n description: 'Unexpected `/`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n noncharacterCharacterReference: {\n reason:\n 'Unexpected noncharacter code point referenced by character reference',\n description: 'Unexpected code point. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n noncharacterInInputStream: {\n reason: 'Unexpected noncharacter character',\n description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n nullCharacterReference: {\n reason: 'Unexpected NULL character referenced by character reference',\n description: 'Unexpected code point. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n openElementsLeftAfterEof: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected closing tag instead',\n url: false\n },\n /** @type {ErrorInfo} */\n surrogateCharacterReference: {\n reason: 'Unexpected surrogate character referenced by character reference',\n description:\n 'Unexpected code point. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n surrogateInInputStream: {\n reason: 'Unexpected surrogate character',\n description:\n 'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterAfterDoctypeSystemIdentifier: {\n reason: 'Invalid character after system identifier in doctype',\n description: 'Unexpected character at `%c`. Expected `>`'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInAttributeName: {\n reason: 'Unexpected character in attribute name',\n description:\n 'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInUnquotedAttributeValue: {\n reason: 'Unexpected character in unquoted attribute value',\n description: 'Unexpected `%c`. Quote the attribute value to include it'\n },\n /** @type {ErrorInfo} */\n unexpectedEqualsSignBeforeAttributeName: {\n reason: 'Unexpected equals sign before attribute name',\n description: 'Unexpected `%c`. Add an attribute name before it'\n },\n /** @type {ErrorInfo} */\n unexpectedNullCharacter: {\n reason: 'Unexpected NULL character',\n description:\n 'Unexpected code point `%x`. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedQuestionMarkInsteadOfTagName: {\n reason: 'Unexpected question mark instead of tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n unexpectedSolidusInTag: {\n reason: 'Unexpected slash in tag',\n description:\n 'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n },\n /** @type {ErrorInfo} */\n unknownNamedCharacterReference: {\n reason: 'Unexpected unknown named character reference',\n description:\n 'Unexpected character reference. Expected known named character references'\n }\n}\n",
36
+ "/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {parse, parseFragment} from 'parse5'\nimport {VFile} from 'vfile'\nimport {VFileMessage} from 'vfile-message'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n * Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {Root}\n * Tree.\n */\nexport function fromHtml(value, options) {\n const settings = options || emptyOptions\n const onerror = settings.onerror\n const file = value instanceof VFile ? value : new VFile(value)\n const parseFunction = settings.fragment ? parseFragment : parse\n const document = String(file)\n const p5Document = parseFunction(document, {\n sourceCodeLocationInfo: true,\n // Note `parse5` types currently do not allow `undefined`.\n onParseError: settings.onerror ? internalOnerror : null,\n scriptingEnabled: false\n })\n\n // `parse5` returns document which are always mapped to roots.\n return /** @type {Root} */ (\n fromParse5(p5Document, {\n file,\n space: settings.space,\n verbose: settings.verbose\n })\n )\n\n /**\n * Handle a parse error.\n *\n * @param {ParserError} error\n * Parse5 error.\n * @returns {undefined}\n * Nothing.\n */\n function internalOnerror(error) {\n const code = error.code\n const name = camelcase(code)\n const setting = settings[name]\n const config = setting === null || setting === undefined ? true : setting\n const level = typeof config === 'number' ? config : config ? 1 : 0\n\n if (level) {\n const info = errors[name]\n assert(info, 'expected known error from `parse5`')\n\n const message = new VFileMessage(format(info.reason), {\n place: {\n start: {\n line: error.startLine,\n column: error.startCol,\n offset: error.startOffset\n },\n end: {\n line: error.endLine,\n column: error.endCol,\n offset: error.endOffset\n }\n },\n ruleId: code,\n source: 'hast-util-from-html'\n })\n\n if (file.path) {\n message.file = file.path\n message.name = file.path + ':' + message.name\n }\n\n message.fatal = fatalities[level]\n message.note = format(info.description)\n message.url = info.url === false ? undefined : base + code\n\n assert(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n onerror(message)\n }\n\n /**\n * Format a human readable string about an error.\n *\n * @param {string} value\n * Value to format.\n * @returns {string}\n * Formatted.\n */\n function format(value) {\n return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n /**\n * Format the character.\n *\n * @param {string} _\n * Match.\n * @param {string} $1\n * Sign (`-` or `+`, optional).\n * @param {string} $2\n * Offset.\n * @returns {string}\n * Formatted.\n */\n function formatC(_, $1, $2) {\n const offset =\n ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n const char = document.charAt(error.startOffset + offset)\n return visualizeCharacter(char)\n }\n\n /**\n * Format the character code.\n *\n * @returns {string}\n * Formatted.\n */\n function formatX() {\n return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n }\n }\n }\n}\n\n/**\n * @param {string} value\n * Error code in dash case.\n * @returns {ErrorCode}\n * Error code in camelcase.\n */\nfunction camelcase(value) {\n // This should match an error code.\n return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n * Match.\n * @returns {string}\n * Camelcased.\n */\nfunction dashToCamel($0) {\n return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n * Character.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacter(char) {\n return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n * Character code.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n return '0x' + charCode.toString(16).toUpperCase()\n}\n",
37
+ "/**\n * @import {Root} from 'hast'\n * @import {Options as FromHtmlOptions} from 'hast-util-from-html'\n * @import {Parser, Processor} from 'unified'\n */\n\n/**\n * @typedef {Omit<FromHtmlOptions, 'onerror'> & RehypeParseFields} Options\n * Configuration.\n *\n * @typedef RehypeParseFields\n * Extra fields.\n * @property {boolean | null | undefined} [emitParseErrors=false]\n * Whether to emit parse errors while parsing (default: `false`).\n *\n * > 👉 **Note**: parse errors are currently being added to HTML.\n * > Not all errors emitted by parse5 (or us) are specced yet.\n * > Some documentation may still be missing.\n */\n\nimport {fromHtml} from 'hast-util-from-html'\n\n/**\n * Plugin to add support for parsing from HTML.\n *\n * > 👉 **Note**: this is not an XML parser.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG files might break but fragments of modern SVG should be fine.\n * > Use [`xast-util-from-xml`][xast-util-from-xml] to parse XML.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function rehypeParse(options) {\n /** @type {Processor<Root>} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n const {emitParseErrors, ...settings} = {...self.data('settings'), ...options}\n\n self.parser = parser\n\n /**\n * @type {Parser<Root>}\n */\n function parser(document, file) {\n return fromHtml(document, {\n ...settings,\n onerror: emitParseErrors\n ? function (message) {\n if (file.path) {\n message.name = file.path + ':' + message.name\n message.file = file.path\n }\n\n file.messages.push(message)\n }\n : undefined\n })\n }\n}\n",
38
+ "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n",
39
+ "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise<undefined>` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n",
40
+ "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n",
41
+ "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n",
42
+ "export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n",
43
+ "// Note: types exposed from `index.d.ts`\nimport rehypeParse from 'rehype-parse'\nimport rehypeStringify from 'rehype-stringify'\nimport {unified} from 'unified'\n\n/**\n * Create a new unified processor that already uses `rehype-parse` and\n * `rehype-stringify`.\n */\nexport const rehype = unified().use(rehypeParse).use(rehypeStringify).freeze()\n"
44
+ ],
45
+ "mappings": "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",
46
+ "debugId": "A7B2BB26A8B4931A64756E2164756E21",
47
+ "names": []
48
+ }