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.
- package/dist/tutuca-cli.js +164 -742
- package/dist/tutuca-dev.js +160 -655
- package/dist/tutuca-dev.min.js +2 -2
- package/package.json +2 -2
package/dist/tutuca-cli.js
CHANGED
|
@@ -2066,405 +2066,37 @@ var init_components = __esm(() => {
|
|
|
2066
2066
|
init_attribute();
|
|
2067
2067
|
});
|
|
2068
2068
|
|
|
2069
|
-
//
|
|
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 ===
|
|
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 ===
|
|
2074
|
+
return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
|
|
2435
2075
|
}
|
|
2436
2076
|
function isASCIIAlpha(c) {
|
|
2437
|
-
return c >=
|
|
2077
|
+
return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ;
|
|
2438
2078
|
}
|
|
2439
2079
|
|
|
2440
|
-
class
|
|
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.
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 !==
|
|
2591
|
-
this.sequenceIndex = Number(c ===
|
|
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.
|
|
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 ===
|
|
2266
|
+
this.sequenceIndex = Number(c === CharCodes.Lt);
|
|
2643
2267
|
}
|
|
2644
2268
|
}
|
|
2645
2269
|
stateBeforeTagName(c) {
|
|
2646
|
-
if (c ===
|
|
2270
|
+
if (c === CharCodes.ExclamationMark) {
|
|
2647
2271
|
this.state = State.BeforeDeclaration;
|
|
2648
2272
|
this.sectionStart = this.index + 1;
|
|
2649
|
-
} else if (c ===
|
|
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 ===
|
|
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) {
|
|
2310
|
+
if (!this.xmlMode) {
|
|
2687
2311
|
this.state = State.InSpecialComment;
|
|
2688
2312
|
this.sectionStart = this.index;
|
|
2689
2313
|
}
|
|
2690
|
-
} else if (c ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
2375
|
+
if (c === CharCodes.Eq) {
|
|
2752
2376
|
this.state = State.BeforeAttributeValue;
|
|
2753
|
-
} else if (c ===
|
|
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 ===
|
|
2389
|
+
if (c === CharCodes.DoubleQuote) {
|
|
2766
2390
|
this.state = State.InAttributeValueDq;
|
|
2767
2391
|
this.sectionStart = this.index + 1;
|
|
2768
|
-
} else if (c ===
|
|
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 ||
|
|
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 ===
|
|
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,
|
|
2410
|
+
this.handleInAttributeValue(c, CharCodes.DoubleQuote);
|
|
2789
2411
|
}
|
|
2790
2412
|
stateInAttributeValueSingleQuotes(c) {
|
|
2791
|
-
this.handleInAttributeValue(c,
|
|
2413
|
+
this.handleInAttributeValue(c, CharCodes.SingleQuote);
|
|
2792
2414
|
}
|
|
2793
2415
|
stateInAttributeValueNoQuotes(c) {
|
|
2794
|
-
if (isWhitespace(c) || c ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
2466
|
+
if (c === CharCodes.Questionmark) {
|
|
2847
2467
|
this.sequenceIndex = 1;
|
|
2848
|
-
} else if (c ===
|
|
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(
|
|
2474
|
+
this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark));
|
|
2855
2475
|
}
|
|
2856
2476
|
}
|
|
2857
2477
|
stateBeforeComment(c) {
|
|
2858
|
-
if (c ===
|
|
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 ===
|
|
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 ===
|
|
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
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
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
|
-
|
|
3213
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
5141
|
-
super(document2,
|
|
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
|
|
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,
|
|
10479
|
+
super(document2, Text, Comment);
|
|
11058
10480
|
}
|
|
11059
10481
|
}
|
|
11060
10482
|
|
|
11061
10483
|
class HeadlessLintParseContext extends LintParseContext {
|
|
11062
10484
|
constructor() {
|
|
11063
|
-
super(document2,
|
|
10485
|
+
super(document2, Text, Comment);
|
|
11064
10486
|
}
|
|
11065
10487
|
}
|
|
11066
10488
|
return {
|