tutuca 0.9.37 → 0.9.38

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.
@@ -2066,405 +2066,37 @@ var init_components = __esm(() => {
2066
2066
  init_attribute();
2067
2067
  });
2068
2068
 
2069
- // node_modules/entities/dist/decode-codepoint.js
2070
- function replaceCodePoint(codePoint) {
2071
- if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
2072
- return 65533;
2073
- }
2074
- return decodeMap.get(codePoint) ?? codePoint;
2075
- }
2076
- var decodeMap;
2077
- var init_decode_codepoint = __esm(() => {
2078
- decodeMap = new Map([
2079
- [0, 65533],
2080
- [128, 8364],
2081
- [130, 8218],
2082
- [131, 402],
2083
- [132, 8222],
2084
- [133, 8230],
2085
- [134, 8224],
2086
- [135, 8225],
2087
- [136, 710],
2088
- [137, 8240],
2089
- [138, 352],
2090
- [139, 8249],
2091
- [140, 338],
2092
- [142, 381],
2093
- [145, 8216],
2094
- [146, 8217],
2095
- [147, 8220],
2096
- [148, 8221],
2097
- [149, 8226],
2098
- [150, 8211],
2099
- [151, 8212],
2100
- [152, 732],
2101
- [153, 8482],
2102
- [154, 353],
2103
- [155, 8250],
2104
- [156, 339],
2105
- [158, 382],
2106
- [159, 376]
2107
- ]);
2108
- });
2109
-
2110
- // node_modules/entities/dist/internal/decode-shared.js
2111
- function decodeBase64(input) {
2112
- const binary = atob(input);
2113
- const evenLength = binary.length & ~1;
2114
- const out = new Uint16Array(evenLength / 2);
2115
- for (let index = 0, outIndex = 0;index < evenLength; index += 2) {
2116
- const lo = binary.charCodeAt(index);
2117
- const hi = binary.charCodeAt(index + 1);
2118
- out[outIndex++] = lo | hi << 8;
2119
- }
2120
- return out;
2121
- }
2122
-
2123
- // node_modules/entities/dist/generated/decode-data-html.js
2124
- var htmlDecodeTree;
2125
- var init_decode_data_html = __esm(() => {
2126
- htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
2127
- });
2128
-
2129
- // node_modules/entities/dist/generated/decode-data-xml.js
2130
- var xmlDecodeTree;
2131
- var init_decode_data_xml = __esm(() => {
2132
- xmlDecodeTree = /* @__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
2133
- });
2134
-
2135
- // node_modules/entities/dist/internal/bin-trie-flags.js
2136
- var BinTrieFlags;
2137
- var init_bin_trie_flags = __esm(() => {
2138
- (function(BinTrieFlags2) {
2139
- BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
2140
- BinTrieFlags2[BinTrieFlags2["FLAG13"] = 8192] = "FLAG13";
2141
- BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
2142
- BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
2143
- })(BinTrieFlags || (BinTrieFlags = {}));
2144
- });
2145
-
2146
- // node_modules/entities/dist/decode.js
2147
- function isNumber(code) {
2148
- return code >= CharCodes.ZERO && code <= CharCodes.NINE;
2149
- }
2150
- function isHexadecimalCharacter(code) {
2151
- return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F;
2152
- }
2153
- function isAsciiAlphaNumeric(code) {
2154
- return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code);
2155
- }
2156
- function isEntityInAttributeInvalidEnd(code) {
2157
- return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
2158
- }
2159
-
2160
- class EntityDecoder {
2161
- decodeTree;
2162
- emitCodePoint;
2163
- errors;
2164
- constructor(decodeTree, emitCodePoint, errors) {
2165
- this.decodeTree = decodeTree;
2166
- this.emitCodePoint = emitCodePoint;
2167
- this.errors = errors;
2168
- }
2169
- state = EntityDecoderState.EntityStart;
2170
- consumed = 1;
2171
- result = 0;
2172
- treeIndex = 0;
2173
- excess = 1;
2174
- decodeMode = DecodingMode.Strict;
2175
- runConsumed = 0;
2176
- startEntity(decodeMode) {
2177
- this.decodeMode = decodeMode;
2178
- this.state = EntityDecoderState.EntityStart;
2179
- this.result = 0;
2180
- this.treeIndex = 0;
2181
- this.excess = 1;
2182
- this.consumed = 1;
2183
- this.runConsumed = 0;
2184
- }
2185
- write(input, offset) {
2186
- switch (this.state) {
2187
- case EntityDecoderState.EntityStart: {
2188
- if (input.charCodeAt(offset) === CharCodes.NUM) {
2189
- this.state = EntityDecoderState.NumericStart;
2190
- this.consumed += 1;
2191
- return this.stateNumericStart(input, offset + 1);
2192
- }
2193
- this.state = EntityDecoderState.NamedEntity;
2194
- return this.stateNamedEntity(input, offset);
2195
- }
2196
- case EntityDecoderState.NumericStart: {
2197
- return this.stateNumericStart(input, offset);
2198
- }
2199
- case EntityDecoderState.NumericDecimal: {
2200
- return this.stateNumericDecimal(input, offset);
2201
- }
2202
- case EntityDecoderState.NumericHex: {
2203
- return this.stateNumericHex(input, offset);
2204
- }
2205
- case EntityDecoderState.NamedEntity: {
2206
- return this.stateNamedEntity(input, offset);
2207
- }
2208
- }
2209
- }
2210
- stateNumericStart(input, offset) {
2211
- if (offset >= input.length) {
2212
- return -1;
2213
- }
2214
- if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
2215
- this.state = EntityDecoderState.NumericHex;
2216
- this.consumed += 1;
2217
- return this.stateNumericHex(input, offset + 1);
2218
- }
2219
- this.state = EntityDecoderState.NumericDecimal;
2220
- return this.stateNumericDecimal(input, offset);
2221
- }
2222
- stateNumericHex(input, offset) {
2223
- while (offset < input.length) {
2224
- const char = input.charCodeAt(offset);
2225
- if (isNumber(char) || isHexadecimalCharacter(char)) {
2226
- const digit = char <= CharCodes.NINE ? char - CharCodes.ZERO : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
2227
- this.result = this.result * 16 + digit;
2228
- this.consumed++;
2229
- offset++;
2230
- } else {
2231
- return this.emitNumericEntity(char, 3);
2232
- }
2233
- }
2234
- return -1;
2235
- }
2236
- stateNumericDecimal(input, offset) {
2237
- while (offset < input.length) {
2238
- const char = input.charCodeAt(offset);
2239
- if (isNumber(char)) {
2240
- this.result = this.result * 10 + (char - CharCodes.ZERO);
2241
- this.consumed++;
2242
- offset++;
2243
- } else {
2244
- return this.emitNumericEntity(char, 2);
2245
- }
2246
- }
2247
- return -1;
2248
- }
2249
- emitNumericEntity(lastCp, expectedLength) {
2250
- if (this.consumed <= expectedLength) {
2251
- this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
2252
- return 0;
2253
- }
2254
- if (lastCp === CharCodes.SEMI) {
2255
- this.consumed += 1;
2256
- } else if (this.decodeMode === DecodingMode.Strict) {
2257
- return 0;
2258
- }
2259
- this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
2260
- if (this.errors) {
2261
- if (lastCp !== CharCodes.SEMI) {
2262
- this.errors.missingSemicolonAfterCharacterReference();
2263
- }
2264
- this.errors.validateNumericCharacterReference(this.result);
2265
- }
2266
- return this.consumed;
2267
- }
2268
- stateNamedEntity(input, offset) {
2269
- const { decodeTree } = this;
2270
- let current = decodeTree[this.treeIndex];
2271
- let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
2272
- while (offset < input.length) {
2273
- if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
2274
- const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
2275
- if (this.runConsumed === 0) {
2276
- const firstChar = current & BinTrieFlags.JUMP_TABLE;
2277
- if (input.charCodeAt(offset) !== firstChar) {
2278
- return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
2279
- }
2280
- offset++;
2281
- this.excess++;
2282
- this.runConsumed++;
2283
- }
2284
- while (this.runConsumed < runLength) {
2285
- if (offset >= input.length) {
2286
- return -1;
2287
- }
2288
- const charIndexInPacked = this.runConsumed - 1;
2289
- const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
2290
- const expectedChar = charIndexInPacked % 2 === 0 ? packedWord & 255 : packedWord >> 8 & 255;
2291
- if (input.charCodeAt(offset) !== expectedChar) {
2292
- this.runConsumed = 0;
2293
- return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
2294
- }
2295
- offset++;
2296
- this.excess++;
2297
- this.runConsumed++;
2298
- }
2299
- this.runConsumed = 0;
2300
- this.treeIndex += 1 + (runLength >> 1);
2301
- current = decodeTree[this.treeIndex];
2302
- valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
2303
- }
2304
- if (offset >= input.length)
2305
- break;
2306
- const char = input.charCodeAt(offset);
2307
- if (char === CharCodes.SEMI && valueLength !== 0 && (current & BinTrieFlags.FLAG13) !== 0) {
2308
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
2309
- }
2310
- this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
2311
- if (this.treeIndex < 0) {
2312
- return this.result === 0 || this.decodeMode === DecodingMode.Attribute && (valueLength === 0 || isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();
2313
- }
2314
- current = decodeTree[this.treeIndex];
2315
- valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
2316
- if (valueLength !== 0) {
2317
- if (char === CharCodes.SEMI) {
2318
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
2319
- }
2320
- if (this.decodeMode !== DecodingMode.Strict && (current & BinTrieFlags.FLAG13) === 0) {
2321
- this.result = this.treeIndex;
2322
- this.consumed += this.excess;
2323
- this.excess = 0;
2324
- }
2325
- }
2326
- offset++;
2327
- this.excess++;
2328
- }
2329
- return -1;
2330
- }
2331
- emitNotTerminatedNamedEntity() {
2332
- const { result, decodeTree } = this;
2333
- const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
2334
- this.emitNamedEntityData(result, valueLength, this.consumed);
2335
- this.errors?.missingSemicolonAfterCharacterReference();
2336
- return this.consumed;
2337
- }
2338
- emitNamedEntityData(result, valueLength, consumed) {
2339
- const { decodeTree } = this;
2340
- this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13) : decodeTree[result + 1], consumed);
2341
- if (valueLength === 3) {
2342
- this.emitCodePoint(decodeTree[result + 2], consumed);
2343
- }
2344
- return consumed;
2345
- }
2346
- end() {
2347
- switch (this.state) {
2348
- case EntityDecoderState.NamedEntity: {
2349
- return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
2350
- }
2351
- case EntityDecoderState.NumericDecimal: {
2352
- return this.emitNumericEntity(0, 2);
2353
- }
2354
- case EntityDecoderState.NumericHex: {
2355
- return this.emitNumericEntity(0, 3);
2356
- }
2357
- case EntityDecoderState.NumericStart: {
2358
- this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
2359
- return 0;
2360
- }
2361
- case EntityDecoderState.EntityStart: {
2362
- return 0;
2363
- }
2364
- }
2365
- }
2366
- }
2367
- function determineBranch(decodeTree, current, nodeIndex, char) {
2368
- const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
2369
- const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
2370
- if (branchCount === 0) {
2371
- return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
2372
- }
2373
- if (jumpOffset) {
2374
- const value = char - jumpOffset;
2375
- return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1;
2376
- }
2377
- const packedKeySlots = branchCount + 1 >> 1;
2378
- let lo = 0;
2379
- let hi = branchCount - 1;
2380
- while (lo <= hi) {
2381
- const mid = lo + hi >>> 1;
2382
- const slot = mid >> 1;
2383
- const packed = decodeTree[nodeIndex + slot];
2384
- const midKey = packed >> (mid & 1) * 8 & 255;
2385
- if (midKey < char) {
2386
- lo = mid + 1;
2387
- } else if (midKey > char) {
2388
- hi = mid - 1;
2389
- } else {
2390
- return decodeTree[nodeIndex + packedKeySlots + mid];
2391
- }
2392
- }
2393
- return -1;
2394
- }
2395
- var CharCodes, TO_LOWER_BIT = 32, EntityDecoderState, DecodingMode;
2396
- var init_decode = __esm(() => {
2397
- init_decode_codepoint();
2398
- init_bin_trie_flags();
2399
- init_decode_data_html();
2400
- init_decode_data_xml();
2401
- (function(CharCodes2) {
2402
- CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
2403
- CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI";
2404
- CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS";
2405
- CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO";
2406
- CharCodes2[CharCodes2["NINE"] = 57] = "NINE";
2407
- CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A";
2408
- CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F";
2409
- CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X";
2410
- CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z";
2411
- CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A";
2412
- CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F";
2413
- CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z";
2414
- })(CharCodes || (CharCodes = {}));
2415
- (function(EntityDecoderState2) {
2416
- EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
2417
- EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
2418
- EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
2419
- EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
2420
- EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
2421
- })(EntityDecoderState || (EntityDecoderState = {}));
2422
- (function(DecodingMode2) {
2423
- DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
2424
- DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
2425
- DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
2426
- })(DecodingMode || (DecodingMode = {}));
2427
- });
2428
-
2429
- // node_modules/htmlparser2/dist/Tokenizer.js
2069
+ // tools/core/html-tokenizer.js
2430
2070
  function isWhitespace(c) {
2431
- return c === CharCodes2.Space || c === CharCodes2.NewLine || c === CharCodes2.Tab || c === CharCodes2.FormFeed || c === CharCodes2.CarriageReturn;
2071
+ return c === CharCodes.Space || c === CharCodes.NewLine || c === CharCodes.Tab || c === CharCodes.FormFeed || c === CharCodes.CarriageReturn;
2432
2072
  }
2433
2073
  function isEndOfTagSection(c) {
2434
- return c === CharCodes2.Slash || c === CharCodes2.Gt || isWhitespace(c);
2074
+ return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
2435
2075
  }
2436
2076
  function isASCIIAlpha(c) {
2437
- return c >= CharCodes2.LowerA && c <= CharCodes2.LowerZ || c >= CharCodes2.UpperA && c <= CharCodes2.UpperZ;
2077
+ return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ;
2438
2078
  }
2439
2079
 
2440
- class Tokenizer {
2441
- cbs;
2442
- state = State.Text;
2443
- buffer = "";
2444
- sectionStart = 0;
2445
- index = 0;
2446
- entityStart = 0;
2447
- baseState = State.Text;
2448
- isSpecial = false;
2449
- running = true;
2450
- offset = 0;
2451
- xmlMode;
2452
- decodeEntities;
2453
- recognizeSelfClosing;
2454
- entityDecoder;
2455
- constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode }, cbs) {
2080
+ class HtmlTokenizer {
2081
+ constructor({ xmlMode = false, recognizeSelfClosing = xmlMode } = {}, cbs) {
2456
2082
  this.cbs = cbs;
2457
2083
  this.xmlMode = xmlMode;
2458
- this.decodeEntities = decodeEntities;
2459
2084
  this.recognizeSelfClosing = recognizeSelfClosing;
2460
- this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
2085
+ this.state = State.Text;
2086
+ this.buffer = "";
2087
+ this.sectionStart = 0;
2088
+ this.index = 0;
2089
+ this.isSpecial = false;
2090
+ this.running = true;
2091
+ this.offset = 0;
2092
+ this.currentSequence = Sequences.Empty;
2093
+ this.sequenceIndex = 0;
2461
2094
  }
2462
2095
  reset() {
2463
2096
  this.state = State.Text;
2464
2097
  this.buffer = "";
2465
2098
  this.sectionStart = 0;
2466
2099
  this.index = 0;
2467
- this.baseState = State.Text;
2468
2100
  this.isSpecial = false;
2469
2101
  this.currentSequence = Sequences.Empty;
2470
2102
  this.sequenceIndex = 0;
@@ -2490,18 +2122,14 @@ class Tokenizer {
2490
2122
  }
2491
2123
  }
2492
2124
  stateText(c) {
2493
- if (c === CharCodes2.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes2.Lt)) {
2125
+ if (c === CharCodes.Lt || this.fastForwardTo(CharCodes.Lt)) {
2494
2126
  if (this.index > this.sectionStart) {
2495
2127
  this.cbs.ontext(this.sectionStart, this.index);
2496
2128
  }
2497
2129
  this.state = State.BeforeTagName;
2498
2130
  this.sectionStart = this.index;
2499
- } else if (this.decodeEntities && c === CharCodes2.Amp) {
2500
- this.startEntity();
2501
2131
  }
2502
2132
  }
2503
- currentSequence = Sequences.Empty;
2504
- sequenceIndex = 0;
2505
2133
  enterTagBody() {
2506
2134
  if (this.currentSequence === Sequences.Plaintext) {
2507
2135
  this.currentSequence = Sequences.Empty;
@@ -2583,12 +2211,12 @@ class Tokenizer {
2583
2211
  this.state = State.Text;
2584
2212
  }
2585
2213
  stateInCommentLike(c) {
2586
- if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && this.index === this.sectionStart + this.sequenceIndex && c === CharCodes2.Gt) {
2214
+ if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && this.index === this.sectionStart + this.sequenceIndex && c === CharCodes.Gt) {
2587
2215
  this.emitComment(this.sequenceIndex);
2588
- } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes2.Gt) {
2216
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes.Gt) {
2589
2217
  this.emitComment(2);
2590
- } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes2.Gt) {
2591
- this.sequenceIndex = Number(c === CharCodes2.Dash);
2218
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes.Gt) {
2219
+ this.sequenceIndex = Number(c === CharCodes.Dash);
2592
2220
  } else if (c === this.currentSequence[this.sequenceIndex]) {
2593
2221
  if (++this.sequenceIndex === this.currentSequence.length) {
2594
2222
  if (this.currentSequence === Sequences.CdataEnd) {
@@ -2631,22 +2259,18 @@ class Tokenizer {
2631
2259
  if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2632
2260
  this.sequenceIndex += 1;
2633
2261
  } else if (this.sequenceIndex === 0) {
2634
- if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd) {
2635
- if (this.decodeEntities && c === CharCodes2.Amp) {
2636
- this.startEntity();
2637
- }
2638
- } else if (this.fastForwardTo(CharCodes2.Lt)) {
2262
+ if (this.fastForwardTo(CharCodes.Lt)) {
2639
2263
  this.sequenceIndex = 1;
2640
2264
  }
2641
2265
  } else {
2642
- this.sequenceIndex = Number(c === CharCodes2.Lt);
2266
+ this.sequenceIndex = Number(c === CharCodes.Lt);
2643
2267
  }
2644
2268
  }
2645
2269
  stateBeforeTagName(c) {
2646
- if (c === CharCodes2.ExclamationMark) {
2270
+ if (c === CharCodes.ExclamationMark) {
2647
2271
  this.state = State.BeforeDeclaration;
2648
2272
  this.sectionStart = this.index + 1;
2649
- } else if (c === CharCodes2.Questionmark) {
2273
+ } else if (c === CharCodes.Questionmark) {
2650
2274
  if (this.xmlMode) {
2651
2275
  this.state = State.InProcessingInstruction;
2652
2276
  this.sequenceIndex = 0;
@@ -2666,7 +2290,7 @@ class Tokenizer {
2666
2290
  this.sequenceIndex = 3;
2667
2291
  this.state = State.SpecialStartSequence;
2668
2292
  }
2669
- } else if (c === CharCodes2.Slash) {
2293
+ } else if (c === CharCodes.Slash) {
2670
2294
  this.state = State.BeforeClosingTagName;
2671
2295
  } else {
2672
2296
  this.state = State.Text;
@@ -2683,11 +2307,11 @@ class Tokenizer {
2683
2307
  }
2684
2308
  stateBeforeClosingTagName(c) {
2685
2309
  if (isWhitespace(c)) {
2686
- if (this.xmlMode) {} else {
2310
+ if (!this.xmlMode) {
2687
2311
  this.state = State.InSpecialComment;
2688
2312
  this.sectionStart = this.index;
2689
2313
  }
2690
- } else if (c === CharCodes2.Gt) {
2314
+ } else if (c === CharCodes.Gt) {
2691
2315
  this.state = State.Text;
2692
2316
  if (!this.xmlMode) {
2693
2317
  this.sectionStart = this.index + 1;
@@ -2706,17 +2330,17 @@ class Tokenizer {
2706
2330
  }
2707
2331
  }
2708
2332
  stateAfterClosingTagName(c) {
2709
- if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2333
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
2710
2334
  this.state = State.Text;
2711
2335
  this.sectionStart = this.index + 1;
2712
2336
  }
2713
2337
  }
2714
2338
  stateBeforeAttributeName(c) {
2715
- if (c === CharCodes2.Gt) {
2339
+ if (c === CharCodes.Gt) {
2716
2340
  this.cbs.onopentagend(this.index);
2717
2341
  this.enterTagBody();
2718
2342
  this.sectionStart = this.index + 1;
2719
- } else if (c === CharCodes2.Slash) {
2343
+ } else if (c === CharCodes.Slash) {
2720
2344
  this.state = State.InSelfClosingTag;
2721
2345
  } else if (!isWhitespace(c)) {
2722
2346
  this.state = State.InAttributeName;
@@ -2724,7 +2348,7 @@ class Tokenizer {
2724
2348
  }
2725
2349
  }
2726
2350
  stateInSelfClosingTag(c) {
2727
- if (c === CharCodes2.Gt) {
2351
+ if (c === CharCodes.Gt) {
2728
2352
  this.cbs.onselfclosingtag(this.index);
2729
2353
  this.sectionStart = this.index + 1;
2730
2354
  if (!this.recognizeSelfClosing) {
@@ -2740,7 +2364,7 @@ class Tokenizer {
2740
2364
  }
2741
2365
  }
2742
2366
  stateInAttributeName(c) {
2743
- if (c === CharCodes2.Eq || isEndOfTagSection(c)) {
2367
+ if (c === CharCodes.Eq || isEndOfTagSection(c)) {
2744
2368
  this.cbs.onattribname(this.sectionStart, this.index);
2745
2369
  this.sectionStart = this.index;
2746
2370
  this.state = State.AfterAttributeName;
@@ -2748,9 +2372,9 @@ class Tokenizer {
2748
2372
  }
2749
2373
  }
2750
2374
  stateAfterAttributeName(c) {
2751
- if (c === CharCodes2.Eq) {
2375
+ if (c === CharCodes.Eq) {
2752
2376
  this.state = State.BeforeAttributeValue;
2753
- } else if (c === CharCodes2.Slash || c === CharCodes2.Gt) {
2377
+ } else if (c === CharCodes.Slash || c === CharCodes.Gt) {
2754
2378
  this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
2755
2379
  this.sectionStart = -1;
2756
2380
  this.state = State.BeforeAttributeName;
@@ -2762,10 +2386,10 @@ class Tokenizer {
2762
2386
  }
2763
2387
  }
2764
2388
  stateBeforeAttributeValue(c) {
2765
- if (c === CharCodes2.DoubleQuote) {
2389
+ if (c === CharCodes.DoubleQuote) {
2766
2390
  this.state = State.InAttributeValueDq;
2767
2391
  this.sectionStart = this.index + 1;
2768
- } else if (c === CharCodes2.SingleQuote) {
2392
+ } else if (c === CharCodes.SingleQuote) {
2769
2393
  this.state = State.InAttributeValueSq;
2770
2394
  this.sectionStart = this.index + 1;
2771
2395
  } else if (!isWhitespace(c)) {
@@ -2775,47 +2399,43 @@ class Tokenizer {
2775
2399
  }
2776
2400
  }
2777
2401
  handleInAttributeValue(c, quote) {
2778
- if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {
2402
+ if (c === quote || this.fastForwardTo(quote)) {
2779
2403
  this.cbs.onattribdata(this.sectionStart, this.index);
2780
2404
  this.sectionStart = -1;
2781
- this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1);
2405
+ this.cbs.onattribend(quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1);
2782
2406
  this.state = State.BeforeAttributeName;
2783
- } else if (this.decodeEntities && c === CharCodes2.Amp) {
2784
- this.startEntity();
2785
2407
  }
2786
2408
  }
2787
2409
  stateInAttributeValueDoubleQuotes(c) {
2788
- this.handleInAttributeValue(c, CharCodes2.DoubleQuote);
2410
+ this.handleInAttributeValue(c, CharCodes.DoubleQuote);
2789
2411
  }
2790
2412
  stateInAttributeValueSingleQuotes(c) {
2791
- this.handleInAttributeValue(c, CharCodes2.SingleQuote);
2413
+ this.handleInAttributeValue(c, CharCodes.SingleQuote);
2792
2414
  }
2793
2415
  stateInAttributeValueNoQuotes(c) {
2794
- if (isWhitespace(c) || c === CharCodes2.Gt) {
2416
+ if (isWhitespace(c) || c === CharCodes.Gt) {
2795
2417
  this.cbs.onattribdata(this.sectionStart, this.index);
2796
2418
  this.sectionStart = -1;
2797
2419
  this.cbs.onattribend(QuoteType.Unquoted, this.index);
2798
2420
  this.state = State.BeforeAttributeName;
2799
2421
  this.stateBeforeAttributeName(c);
2800
- } else if (this.decodeEntities && c === CharCodes2.Amp) {
2801
- this.startEntity();
2802
2422
  }
2803
2423
  }
2804
2424
  stateBeforeDeclaration(c) {
2805
- if (c === CharCodes2.OpeningSquareBracket) {
2425
+ if (c === CharCodes.OpeningSquareBracket) {
2806
2426
  this.state = State.CDATASequence;
2807
2427
  this.sequenceIndex = 0;
2808
2428
  } else if (this.xmlMode) {
2809
- this.state = c === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration;
2429
+ this.state = c === CharCodes.Dash ? State.BeforeComment : State.InDeclaration;
2810
2430
  } else if ((c | 32) === Sequences.Doctype[0]) {
2811
2431
  this.state = State.DeclarationSequence;
2812
2432
  this.currentSequence = Sequences.Doctype;
2813
2433
  this.sequenceIndex = 1;
2814
- } else if (c === CharCodes2.Gt) {
2434
+ } else if (c === CharCodes.Gt) {
2815
2435
  this.cbs.oncomment(this.sectionStart, this.index, 0);
2816
2436
  this.state = State.Text;
2817
2437
  this.sectionStart = this.index + 1;
2818
- } else if (c === CharCodes2.Dash) {
2438
+ } else if (c === CharCodes.Dash) {
2819
2439
  this.state = State.BeforeComment;
2820
2440
  } else {
2821
2441
  this.state = State.InSpecialComment;
@@ -2827,7 +2447,7 @@ class Tokenizer {
2827
2447
  this.stateInDeclaration(c);
2828
2448
  } else if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2829
2449
  this.sequenceIndex += 1;
2830
- } else if (c === CharCodes2.Gt) {
2450
+ } else if (c === CharCodes.Gt) {
2831
2451
  this.cbs.oncomment(this.sectionStart, this.index, 0);
2832
2452
  this.state = State.Text;
2833
2453
  this.sectionStart = this.index + 1;
@@ -2836,33 +2456,33 @@ class Tokenizer {
2836
2456
  }
2837
2457
  }
2838
2458
  stateInDeclaration(c) {
2839
- if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2459
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
2840
2460
  this.cbs.ondeclaration(this.sectionStart, this.index);
2841
2461
  this.state = State.Text;
2842
2462
  this.sectionStart = this.index + 1;
2843
2463
  }
2844
2464
  }
2845
2465
  stateInProcessingInstruction(c) {
2846
- if (c === CharCodes2.Questionmark) {
2466
+ if (c === CharCodes.Questionmark) {
2847
2467
  this.sequenceIndex = 1;
2848
- } else if (c === CharCodes2.Gt && this.sequenceIndex === 1) {
2468
+ } else if (c === CharCodes.Gt && this.sequenceIndex === 1) {
2849
2469
  this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);
2850
2470
  this.sequenceIndex = 0;
2851
2471
  this.state = State.Text;
2852
2472
  this.sectionStart = this.index + 1;
2853
2473
  } else {
2854
- this.sequenceIndex = Number(this.fastForwardTo(CharCodes2.Questionmark));
2474
+ this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark));
2855
2475
  }
2856
2476
  }
2857
2477
  stateBeforeComment(c) {
2858
- if (c === CharCodes2.Dash) {
2478
+ if (c === CharCodes.Dash) {
2859
2479
  this.state = State.InCommentLike;
2860
2480
  this.currentSequence = Sequences.CommentEnd;
2861
2481
  this.sequenceIndex = 0;
2862
2482
  this.sectionStart = this.index + 1;
2863
2483
  } else if (this.xmlMode) {
2864
2484
  this.state = State.InDeclaration;
2865
- } else if (c === CharCodes2.Gt) {
2485
+ } else if (c === CharCodes.Gt) {
2866
2486
  this.cbs.oncomment(this.sectionStart, this.index, 0);
2867
2487
  this.state = State.Text;
2868
2488
  this.sectionStart = this.index + 1;
@@ -2871,35 +2491,12 @@ class Tokenizer {
2871
2491
  }
2872
2492
  }
2873
2493
  stateInSpecialComment(c) {
2874
- if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2494
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
2875
2495
  this.cbs.oncomment(this.sectionStart, this.index, 0);
2876
2496
  this.state = State.Text;
2877
2497
  this.sectionStart = this.index + 1;
2878
2498
  }
2879
2499
  }
2880
- startEntity() {
2881
- this.baseState = this.state;
2882
- this.state = State.InEntity;
2883
- this.entityStart = this.index;
2884
- this.entityDecoder.startEntity(this.xmlMode ? DecodingMode.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? DecodingMode.Legacy : DecodingMode.Attribute);
2885
- }
2886
- stateInEntity() {
2887
- const indexInBuffer = this.index - this.offset;
2888
- const length = this.entityDecoder.write(this.buffer, indexInBuffer);
2889
- if (length >= 0) {
2890
- this.state = this.baseState;
2891
- if (length === 0) {
2892
- this.index -= 1;
2893
- }
2894
- } else {
2895
- if (indexInBuffer < this.buffer.length && this.buffer.charCodeAt(indexInBuffer) === CharCodes2.Amp) {
2896
- this.state = this.baseState;
2897
- this.index -= 1;
2898
- return;
2899
- }
2900
- this.index = this.offset + this.buffer.length - 1;
2901
- }
2902
- }
2903
2500
  cleanup() {
2904
2501
  if (this.running && this.sectionStart !== this.index) {
2905
2502
  if (this.state === State.Text || this.state === State.InPlainText || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
@@ -2918,127 +2515,93 @@ class Tokenizer {
2918
2515
  while (this.shouldContinue()) {
2919
2516
  const c = this.buffer.charCodeAt(this.index - this.offset);
2920
2517
  switch (this.state) {
2921
- case State.Text: {
2518
+ case State.Text:
2922
2519
  this.stateText(c);
2923
2520
  break;
2924
- }
2925
- case State.InPlainText: {
2521
+ case State.InPlainText:
2926
2522
  this.index = this.buffer.length + this.offset - 1;
2927
2523
  break;
2928
- }
2929
- case State.SpecialStartSequence: {
2524
+ case State.SpecialStartSequence:
2930
2525
  this.stateSpecialStartSequence(c);
2931
2526
  break;
2932
- }
2933
- case State.InSpecialTag: {
2527
+ case State.InSpecialTag:
2934
2528
  this.stateInSpecialTag(c);
2935
2529
  break;
2936
- }
2937
- case State.CDATASequence: {
2530
+ case State.CDATASequence:
2938
2531
  this.stateCDATASequence(c);
2939
2532
  break;
2940
- }
2941
- case State.DeclarationSequence: {
2533
+ case State.DeclarationSequence:
2942
2534
  this.stateDeclarationSequence(c);
2943
2535
  break;
2944
- }
2945
- case State.InAttributeValueDq: {
2536
+ case State.InAttributeValueDq:
2946
2537
  this.stateInAttributeValueDoubleQuotes(c);
2947
2538
  break;
2948
- }
2949
- case State.InAttributeName: {
2539
+ case State.InAttributeName:
2950
2540
  this.stateInAttributeName(c);
2951
2541
  break;
2952
- }
2953
- case State.InCommentLike: {
2542
+ case State.InCommentLike:
2954
2543
  this.stateInCommentLike(c);
2955
2544
  break;
2956
- }
2957
- case State.InSpecialComment: {
2545
+ case State.InSpecialComment:
2958
2546
  this.stateInSpecialComment(c);
2959
2547
  break;
2960
- }
2961
- case State.BeforeAttributeName: {
2548
+ case State.BeforeAttributeName:
2962
2549
  this.stateBeforeAttributeName(c);
2963
2550
  break;
2964
- }
2965
- case State.InTagName: {
2551
+ case State.InTagName:
2966
2552
  this.stateInTagName(c);
2967
2553
  break;
2968
- }
2969
- case State.InClosingTagName: {
2554
+ case State.InClosingTagName:
2970
2555
  this.stateInClosingTagName(c);
2971
2556
  break;
2972
- }
2973
- case State.BeforeTagName: {
2557
+ case State.BeforeTagName:
2974
2558
  this.stateBeforeTagName(c);
2975
2559
  break;
2976
- }
2977
- case State.AfterAttributeName: {
2560
+ case State.AfterAttributeName:
2978
2561
  this.stateAfterAttributeName(c);
2979
2562
  break;
2980
- }
2981
- case State.InAttributeValueSq: {
2563
+ case State.InAttributeValueSq:
2982
2564
  this.stateInAttributeValueSingleQuotes(c);
2983
2565
  break;
2984
- }
2985
- case State.BeforeAttributeValue: {
2566
+ case State.BeforeAttributeValue:
2986
2567
  this.stateBeforeAttributeValue(c);
2987
2568
  break;
2988
- }
2989
- case State.BeforeClosingTagName: {
2569
+ case State.BeforeClosingTagName:
2990
2570
  this.stateBeforeClosingTagName(c);
2991
2571
  break;
2992
- }
2993
- case State.AfterClosingTagName: {
2572
+ case State.AfterClosingTagName:
2994
2573
  this.stateAfterClosingTagName(c);
2995
2574
  break;
2996
- }
2997
- case State.InAttributeValueNq: {
2575
+ case State.InAttributeValueNq:
2998
2576
  this.stateInAttributeValueNoQuotes(c);
2999
2577
  break;
3000
- }
3001
- case State.InSelfClosingTag: {
2578
+ case State.InSelfClosingTag:
3002
2579
  this.stateInSelfClosingTag(c);
3003
2580
  break;
3004
- }
3005
- case State.InDeclaration: {
2581
+ case State.InDeclaration:
3006
2582
  this.stateInDeclaration(c);
3007
2583
  break;
3008
- }
3009
- case State.BeforeDeclaration: {
2584
+ case State.BeforeDeclaration:
3010
2585
  this.stateBeforeDeclaration(c);
3011
2586
  break;
3012
- }
3013
- case State.BeforeComment: {
2587
+ case State.BeforeComment:
3014
2588
  this.stateBeforeComment(c);
3015
2589
  break;
3016
- }
3017
- case State.InProcessingInstruction: {
2590
+ case State.InProcessingInstruction:
3018
2591
  this.stateInProcessingInstruction(c);
3019
2592
  break;
3020
- }
3021
- case State.InEntity: {
3022
- this.stateInEntity();
3023
- break;
3024
- }
3025
2593
  }
3026
2594
  this.index++;
3027
2595
  }
3028
2596
  this.cleanup();
3029
2597
  }
3030
2598
  finish() {
3031
- if (this.state === State.InEntity) {
3032
- this.entityDecoder.end();
3033
- this.state = this.baseState;
3034
- }
3035
2599
  this.handleTrailingData();
3036
2600
  this.cbs.onend();
3037
2601
  }
3038
2602
  handleTrailingCommentLikeData(endIndex) {
3039
- if (this.state !== State.InCommentLike) {
2603
+ if (this.state !== State.InCommentLike)
3040
2604
  return false;
3041
- }
3042
2605
  if (this.currentSequence === Sequences.CdataEnd) {
3043
2606
  if (this.xmlMode) {
3044
2607
  if (this.sectionStart < endIndex) {
@@ -3061,35 +2624,29 @@ class Tokenizer {
3061
2624
  case State.BeforeComment:
3062
2625
  case State.CDATASequence:
3063
2626
  case State.DeclarationSequence:
3064
- case State.InDeclaration: {
2627
+ case State.InDeclaration:
3065
2628
  this.cbs.ontext(this.sectionStart, endIndex);
3066
2629
  return true;
3067
- }
3068
- default: {
2630
+ default:
3069
2631
  return false;
3070
- }
3071
2632
  }
3072
2633
  }
3073
2634
  switch (this.state) {
3074
2635
  case State.BeforeDeclaration:
3075
2636
  case State.InSpecialComment:
3076
2637
  case State.BeforeComment:
3077
- case State.CDATASequence: {
2638
+ case State.CDATASequence:
3078
2639
  this.cbs.oncomment(this.sectionStart, endIndex, 0);
3079
2640
  return true;
3080
- }
3081
- case State.DeclarationSequence: {
2641
+ case State.DeclarationSequence:
3082
2642
  if (this.sequenceIndex !== Sequences.Doctype.length) {
3083
2643
  this.cbs.oncomment(this.sectionStart, endIndex, 0);
3084
2644
  }
3085
2645
  return true;
3086
- }
3087
- case State.InDeclaration: {
2646
+ case State.InDeclaration:
3088
2647
  return true;
3089
- }
3090
- default: {
2648
+ default:
3091
2649
  return false;
3092
- }
3093
2650
  }
3094
2651
  }
3095
2652
  handleTrailingData() {
@@ -3097,9 +2654,8 @@ class Tokenizer {
3097
2654
  if (this.handleTrailingCommentLikeData(endIndex) || this.handleTrailingMarkupDeclaration(endIndex)) {
3098
2655
  return;
3099
2656
  }
3100
- if (this.sectionStart >= endIndex) {
2657
+ if (this.sectionStart >= endIndex)
3101
2658
  return;
3102
- }
3103
2659
  switch (this.state) {
3104
2660
  case State.InTagName:
3105
2661
  case State.BeforeAttributeName:
@@ -3109,98 +2665,76 @@ class Tokenizer {
3109
2665
  case State.InAttributeValueSq:
3110
2666
  case State.InAttributeValueDq:
3111
2667
  case State.InAttributeValueNq:
3112
- case State.InClosingTagName: {
2668
+ case State.InClosingTagName:
3113
2669
  break;
3114
- }
3115
- default: {
2670
+ default:
3116
2671
  this.cbs.ontext(this.sectionStart, endIndex);
3117
- }
3118
2672
  }
3119
2673
  }
3120
- emitCodePoint(cp, consumed) {
3121
- if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
3122
- if (this.sectionStart < this.entityStart) {
3123
- this.cbs.onattribdata(this.sectionStart, this.entityStart);
3124
- }
3125
- this.sectionStart = this.entityStart + consumed;
3126
- this.index = this.sectionStart - 1;
3127
- this.cbs.onattribentity(cp);
3128
- } else {
3129
- if (this.sectionStart < this.entityStart) {
3130
- this.cbs.ontext(this.sectionStart, this.entityStart);
3131
- }
3132
- this.sectionStart = this.entityStart + consumed;
3133
- this.index = this.sectionStart - 1;
3134
- this.cbs.ontextentity(cp, this.sectionStart);
3135
- }
3136
- }
3137
- }
3138
- var CharCodes2, State, QuoteType, Sequences, specialStartSequences;
3139
- var init_Tokenizer = __esm(() => {
3140
- init_decode();
3141
- (function(CharCodes3) {
3142
- CharCodes3[CharCodes3["Tab"] = 9] = "Tab";
3143
- CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine";
3144
- CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed";
3145
- CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn";
3146
- CharCodes3[CharCodes3["Space"] = 32] = "Space";
3147
- CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark";
3148
- CharCodes3[CharCodes3["Number"] = 35] = "Number";
3149
- CharCodes3[CharCodes3["Amp"] = 38] = "Amp";
3150
- CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote";
3151
- CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote";
3152
- CharCodes3[CharCodes3["Dash"] = 45] = "Dash";
3153
- CharCodes3[CharCodes3["Slash"] = 47] = "Slash";
3154
- CharCodes3[CharCodes3["Zero"] = 48] = "Zero";
3155
- CharCodes3[CharCodes3["Nine"] = 57] = "Nine";
3156
- CharCodes3[CharCodes3["Semi"] = 59] = "Semi";
3157
- CharCodes3[CharCodes3["Lt"] = 60] = "Lt";
3158
- CharCodes3[CharCodes3["Eq"] = 61] = "Eq";
3159
- CharCodes3[CharCodes3["Gt"] = 62] = "Gt";
3160
- CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark";
3161
- CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA";
3162
- CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA";
3163
- CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF";
3164
- CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF";
3165
- CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ";
3166
- CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ";
3167
- CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX";
3168
- CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
3169
- })(CharCodes2 || (CharCodes2 = {}));
3170
- (function(State2) {
3171
- State2[State2["Text"] = 1] = "Text";
3172
- State2[State2["BeforeTagName"] = 2] = "BeforeTagName";
3173
- State2[State2["InTagName"] = 3] = "InTagName";
3174
- State2[State2["InSelfClosingTag"] = 4] = "InSelfClosingTag";
3175
- State2[State2["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
3176
- State2[State2["InClosingTagName"] = 6] = "InClosingTagName";
3177
- State2[State2["AfterClosingTagName"] = 7] = "AfterClosingTagName";
3178
- State2[State2["BeforeAttributeName"] = 8] = "BeforeAttributeName";
3179
- State2[State2["InAttributeName"] = 9] = "InAttributeName";
3180
- State2[State2["AfterAttributeName"] = 10] = "AfterAttributeName";
3181
- State2[State2["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
3182
- State2[State2["InAttributeValueDq"] = 12] = "InAttributeValueDq";
3183
- State2[State2["InAttributeValueSq"] = 13] = "InAttributeValueSq";
3184
- State2[State2["InAttributeValueNq"] = 14] = "InAttributeValueNq";
3185
- State2[State2["BeforeDeclaration"] = 15] = "BeforeDeclaration";
3186
- State2[State2["InDeclaration"] = 16] = "InDeclaration";
3187
- State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction";
3188
- State2[State2["BeforeComment"] = 18] = "BeforeComment";
3189
- State2[State2["CDATASequence"] = 19] = "CDATASequence";
3190
- State2[State2["DeclarationSequence"] = 20] = "DeclarationSequence";
3191
- State2[State2["InSpecialComment"] = 21] = "InSpecialComment";
3192
- State2[State2["InCommentLike"] = 22] = "InCommentLike";
3193
- State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
3194
- State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
3195
- State2[State2["InPlainText"] = 25] = "InPlainText";
3196
- State2[State2["InEntity"] = 26] = "InEntity";
3197
- })(State || (State = {}));
3198
- (function(QuoteType2) {
3199
- QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue";
3200
- QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted";
3201
- QuoteType2[QuoteType2["Single"] = 2] = "Single";
3202
- QuoteType2[QuoteType2["Double"] = 3] = "Double";
3203
- })(QuoteType || (QuoteType = {}));
2674
+ }
2675
+ var CharCodes, State, QuoteType, Sequences, specialStartSequences;
2676
+ var init_html_tokenizer = __esm(() => {
2677
+ CharCodes = {
2678
+ Tab: 9,
2679
+ NewLine: 10,
2680
+ FormFeed: 12,
2681
+ CarriageReturn: 13,
2682
+ Space: 32,
2683
+ ExclamationMark: 33,
2684
+ Number: 35,
2685
+ SingleQuote: 39,
2686
+ DoubleQuote: 34,
2687
+ Dash: 45,
2688
+ Slash: 47,
2689
+ Zero: 48,
2690
+ Nine: 57,
2691
+ Semi: 59,
2692
+ Lt: 60,
2693
+ Eq: 61,
2694
+ Gt: 62,
2695
+ Questionmark: 63,
2696
+ UpperA: 65,
2697
+ LowerA: 97,
2698
+ UpperF: 70,
2699
+ LowerF: 102,
2700
+ UpperZ: 90,
2701
+ LowerZ: 122,
2702
+ LowerX: 120,
2703
+ OpeningSquareBracket: 91
2704
+ };
2705
+ State = {
2706
+ Text: 1,
2707
+ BeforeTagName: 2,
2708
+ InTagName: 3,
2709
+ InSelfClosingTag: 4,
2710
+ BeforeClosingTagName: 5,
2711
+ InClosingTagName: 6,
2712
+ AfterClosingTagName: 7,
2713
+ BeforeAttributeName: 8,
2714
+ InAttributeName: 9,
2715
+ AfterAttributeName: 10,
2716
+ BeforeAttributeValue: 11,
2717
+ InAttributeValueDq: 12,
2718
+ InAttributeValueSq: 13,
2719
+ InAttributeValueNq: 14,
2720
+ BeforeDeclaration: 15,
2721
+ InDeclaration: 16,
2722
+ InProcessingInstruction: 17,
2723
+ BeforeComment: 18,
2724
+ CDATASequence: 19,
2725
+ DeclarationSequence: 20,
2726
+ InSpecialComment: 21,
2727
+ InCommentLike: 22,
2728
+ SpecialStartSequence: 23,
2729
+ InSpecialTag: 24,
2730
+ InPlainText: 25
2731
+ };
2732
+ QuoteType = {
2733
+ NoValue: 0,
2734
+ Unquoted: 1,
2735
+ Single: 2,
2736
+ Double: 3
2737
+ };
3204
2738
  Sequences = {
3205
2739
  Empty: new Uint8Array(0),
3206
2740
  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
@@ -3208,57 +2742,13 @@ var init_Tokenizer = __esm(() => {
3208
2742
  CommentEnd: new Uint8Array([45, 45, 33, 62]),
3209
2743
  Doctype: new Uint8Array([100, 111, 99, 116, 121, 112, 101]),
3210
2744
  IframeEnd: new Uint8Array([60, 47, 105, 102, 114, 97, 109, 101]),
3211
- NoembedEnd: new Uint8Array([
3212
- 60,
3213
- 47,
3214
- 110,
3215
- 111,
3216
- 101,
3217
- 109,
3218
- 98,
3219
- 101,
3220
- 100
3221
- ]),
3222
- NoframesEnd: new Uint8Array([
3223
- 60,
3224
- 47,
3225
- 110,
3226
- 111,
3227
- 102,
3228
- 114,
3229
- 97,
3230
- 109,
3231
- 101,
3232
- 115
3233
- ]),
3234
- Plaintext: new Uint8Array([
3235
- 60,
3236
- 47,
3237
- 112,
3238
- 108,
3239
- 97,
3240
- 105,
3241
- 110,
3242
- 116,
3243
- 101,
3244
- 120,
3245
- 116
3246
- ]),
2745
+ NoembedEnd: new Uint8Array([60, 47, 110, 111, 101, 109, 98, 101, 100]),
2746
+ NoframesEnd: new Uint8Array([60, 47, 110, 111, 102, 114, 97, 109, 101, 115]),
2747
+ Plaintext: new Uint8Array([60, 47, 112, 108, 97, 105, 110, 116, 101, 120, 116]),
3247
2748
  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
3248
2749
  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
3249
2750
  TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),
3250
- TextareaEnd: new Uint8Array([
3251
- 60,
3252
- 47,
3253
- 116,
3254
- 101,
3255
- 120,
3256
- 116,
3257
- 97,
3258
- 114,
3259
- 101,
3260
- 97
3261
- ]),
2751
+ TextareaEnd: new Uint8Array([60, 47, 116, 101, 120, 116, 97, 114, 101, 97]),
3262
2752
  XmpEnd: new Uint8Array([60, 47, 120, 109, 112])
3263
2753
  };
3264
2754
  specialStartSequences = new Map([
@@ -3271,75 +2761,6 @@ var init_Tokenizer = __esm(() => {
3271
2761
  ]);
3272
2762
  });
3273
2763
 
3274
- // node_modules/domelementtype/dist/index.js
3275
- var ElementType, Root, Text, Directive, Comment, Script, Style, Tag, CDATA, Doctype;
3276
- var init_dist = __esm(() => {
3277
- (function(ElementType2) {
3278
- ElementType2["Root"] = "root";
3279
- ElementType2["Text"] = "text";
3280
- ElementType2["Directive"] = "directive";
3281
- ElementType2["Comment"] = "comment";
3282
- ElementType2["Script"] = "script";
3283
- ElementType2["Style"] = "style";
3284
- ElementType2["Tag"] = "tag";
3285
- ElementType2["CDATA"] = "cdata";
3286
- ElementType2["Doctype"] = "doctype";
3287
- })(ElementType || (ElementType = {}));
3288
- Root = ElementType.Root;
3289
- Text = ElementType.Text;
3290
- Directive = ElementType.Directive;
3291
- Comment = ElementType.Comment;
3292
- Script = ElementType.Script;
3293
- Style = ElementType.Style;
3294
- Tag = ElementType.Tag;
3295
- CDATA = ElementType.CDATA;
3296
- Doctype = ElementType.Doctype;
3297
- });
3298
-
3299
- // node_modules/domutils/dist/querying.js
3300
- var init_querying = () => {};
3301
-
3302
- // node_modules/domutils/dist/legacy.js
3303
- var init_legacy = () => {};
3304
-
3305
- // node_modules/domutils/dist/stringify.js
3306
- var init_stringify = () => {};
3307
-
3308
- // node_modules/domutils/dist/feeds.js
3309
- var init_feeds = () => {};
3310
-
3311
- // node_modules/domutils/dist/helpers.js
3312
- var DocumentPosition;
3313
- var init_helpers = __esm(() => {
3314
- (function(DocumentPosition2) {
3315
- DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
3316
- DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
3317
- DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
3318
- DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
3319
- DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
3320
- })(DocumentPosition || (DocumentPosition = {}));
3321
- });
3322
-
3323
- // node_modules/domutils/dist/traversal.js
3324
- var init_traversal = () => {};
3325
-
3326
- // node_modules/domutils/dist/index.js
3327
- var init_dist2 = __esm(() => {
3328
- init_feeds();
3329
- init_helpers();
3330
- init_legacy();
3331
- init_querying();
3332
- init_stringify();
3333
- init_traversal();
3334
- });
3335
-
3336
- // node_modules/htmlparser2/dist/index.js
3337
- var init_dist3 = __esm(() => {
3338
- init_dist();
3339
- init_Tokenizer();
3340
- init_dist2();
3341
- });
3342
-
3343
2764
  // tools/core/htmllinter-tables.js
3344
2765
  var VOID_ELEMENTS, RAW_TEXT_ELEMENTS, RCDATA_ELEMENTS, SPECIAL_ELEMENTS, FORMATTING_ELEMENTS, DEFAULT_SCOPE_BOUNDARIES, SCOPE_LIST_ITEM, SCOPE_BUTTON, SCOPE_DEFAULT, SCOPE_TABLE, SCOPE_SELECT, STANDARD_SVG_CAMEL_ELEMENTS, STANDARD_SVG_CAMEL_ATTRS, MATHML_CAMEL_ATTRS, FOREIGN_BREAKOUT_TAGS, MATHML_TEXT_INTEGRATION_POINTS, BLOCK_LEVEL_AUTO_CLOSE_P, SELECT_VALID_CHILDREN, SELECT_BREAKOUT_TAGS, MODES, NS, FRAGMENT_CONTEXT_MODES;
3345
2766
  var init_htmllinter_tables = __esm(() => {
@@ -3711,8 +3132,9 @@ var init_htmllinter_tables = __esm(() => {
3711
3132
 
3712
3133
  // tools/core/htmllinter.js
3713
3134
  function lintHtml(html, onFinding, opts = {}) {
3135
+ const TokenizerClass = opts.TokenizerClass ?? HtmlTokenizer;
3714
3136
  const ctx = new LinterCtx(html, onFinding, opts);
3715
- const tokenizer = new Tokenizer({ xmlMode: false, decodeEntities: false, recognizeSelfClosing: true }, ctx);
3137
+ const tokenizer = new TokenizerClass({ xmlMode: false, decodeEntities: false, recognizeSelfClosing: true }, ctx);
3716
3138
  ctx.tokenizer = tokenizer;
3717
3139
  tokenizer.write(html);
3718
3140
  tokenizer.end();
@@ -4676,7 +4098,7 @@ function offsetToLineCol(lineStarts, offset) {
4676
4098
  }
4677
4099
  var HTML_TAG_NAME_HAS_UPPERCASE = "HTML_TAG_NAME_HAS_UPPERCASE", HTML_SVG_TAG_WILL_LOWERCASE = "HTML_SVG_TAG_WILL_LOWERCASE", HTML_TAG_NOT_ALLOWED_IN_PARENT = "HTML_TAG_NOT_ALLOWED_IN_PARENT", HTML_TEXT_NOT_ALLOWED_IN_PARENT = "HTML_TEXT_NOT_ALLOWED_IN_PARENT", HTML_VOID_ELEMENT_HAS_CLOSE_TAG = "HTML_VOID_ELEMENT_HAS_CLOSE_TAG", HTML_DUPLICATE_FORM = "HTML_DUPLICATE_FORM", HTML_NESTED_INTERACTIVE = "HTML_NESTED_INTERACTIVE", HTML_MISNESTED_FORMATTING = "HTML_MISNESTED_FORMATTING", HTML_UNEXPECTED_END_TAG = "HTML_UNEXPECTED_END_TAG", LEVEL_ERROR = "error", LEVEL_WARN = "warn", TABLE_SCOPE_TAGS, TABLE_BODY_CELL_TAGS;
4678
4100
  var init_htmllinter = __esm(() => {
4679
- init_dist3();
4101
+ init_html_tokenizer();
4680
4102
  init_htmllinter_tables();
4681
4103
  TABLE_SCOPE_TAGS = new Set([
4682
4104
  "caption",
@@ -5137,8 +4559,8 @@ var init_lint_check = __esm(() => {
5137
4559
  PushViewNameNode: { originAttr: "<x push-view>" }
5138
4560
  };
5139
4561
  LintParseContext = class LintParseContext extends ParseContext {
5140
- constructor(document2, Text2, Comment2) {
5141
- super(document2, Text2, Comment2);
4562
+ constructor(document2, Text, Comment) {
4563
+ super(document2, Text, Comment);
5142
4564
  this.attrs = [];
5143
4565
  this.parseIssues = [];
5144
4566
  }
@@ -11049,18 +10471,18 @@ async function createNodeEnv() {
11049
10471
  const dom = new JSDOM("<!DOCTYPE html><html><head></head><body></body></html>", {
11050
10472
  virtualConsole
11051
10473
  });
11052
- const { document: document2, Text: Text2, Comment: Comment2 } = dom.window;
10474
+ const { document: document2, Text, Comment } = dom.window;
11053
10475
  globalThis.document = document2;
11054
10476
 
11055
10477
  class HeadlessParseContext extends ParseContext {
11056
10478
  constructor() {
11057
- super(document2, Text2, Comment2);
10479
+ super(document2, Text, Comment);
11058
10480
  }
11059
10481
  }
11060
10482
 
11061
10483
  class HeadlessLintParseContext extends LintParseContext {
11062
10484
  constructor() {
11063
- super(document2, Text2, Comment2);
10485
+ super(document2, Text, Comment);
11064
10486
  }
11065
10487
  }
11066
10488
  return {