@teasel/parser 0.0.6 → 0.0.8

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/README.md CHANGED
@@ -127,9 +127,9 @@ teasel --typescript --scopes file.ts
127
127
  ```
128
128
  cargo build --release
129
129
  cd package
130
- bun run build # the Node addon
131
- bun run build:wasm # the WebAssembly module
132
- bun test.js
130
+ npm run build # the Node addon; tsc 7 on the PATH for the plan types
131
+ npm run build:wasm # the WebAssembly module
132
+ node test.js
133
133
  ```
134
134
 
135
135
  Node resolves `@teasel/parser` to the addon and everything else to the WebAssembly module, with the same API.
package/identifier.js CHANGED
@@ -1,212 +1,38 @@
1
1
  // Generated by scripts/unicode.js from Unicode 17.0.0. Do not edit.
2
2
  // The parser's own identifier tables, so a host tokenizing around embedded JavaScript agrees with
3
- // it whatever Unicode its engine has. Each table is a flat list of inclusive ranges.
4
- const ID_START = [
5
- 0xaa, 0xaa, 0xb5, 0xb5, 0xba, 0xba, 0xc0, 0xd6, 0xd8, 0xf6, 0xf8, 0x2c1, 0x2c6, 0x2d1, 0x2e0, 0x2e4,
6
- 0x2ec, 0x2ec, 0x2ee, 0x2ee, 0x370, 0x374, 0x376, 0x377, 0x37a, 0x37d, 0x37f, 0x37f, 0x386, 0x386, 0x388, 0x38a,
7
- 0x38c, 0x38c, 0x38e, 0x3a1, 0x3a3, 0x3f5, 0x3f7, 0x481, 0x48a, 0x52f, 0x531, 0x556, 0x559, 0x559, 0x560, 0x588,
8
- 0x5d0, 0x5ea, 0x5ef, 0x5f2, 0x620, 0x64a, 0x66e, 0x66f, 0x671, 0x6d3, 0x6d5, 0x6d5, 0x6e5, 0x6e6, 0x6ee, 0x6ef,
9
- 0x6fa, 0x6fc, 0x6ff, 0x6ff, 0x710, 0x710, 0x712, 0x72f, 0x74d, 0x7a5, 0x7b1, 0x7b1, 0x7ca, 0x7ea, 0x7f4, 0x7f5,
10
- 0x7fa, 0x7fa, 0x800, 0x815, 0x81a, 0x81a, 0x824, 0x824, 0x828, 0x828, 0x840, 0x858, 0x860, 0x86a, 0x870, 0x887,
11
- 0x889, 0x88f, 0x8a0, 0x8c9, 0x904, 0x939, 0x93d, 0x93d, 0x950, 0x950, 0x958, 0x961, 0x971, 0x980, 0x985, 0x98c,
12
- 0x98f, 0x990, 0x993, 0x9a8, 0x9aa, 0x9b0, 0x9b2, 0x9b2, 0x9b6, 0x9b9, 0x9bd, 0x9bd, 0x9ce, 0x9ce, 0x9dc, 0x9dd,
13
- 0x9df, 0x9e1, 0x9f0, 0x9f1, 0x9fc, 0x9fc, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28, 0xa2a, 0xa30, 0xa32, 0xa33,
14
- 0xa35, 0xa36, 0xa38, 0xa39, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa72, 0xa74, 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8,
15
- 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabd, 0xabd, 0xad0, 0xad0, 0xae0, 0xae1, 0xaf9, 0xaf9, 0xb05, 0xb0c,
16
- 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33, 0xb35, 0xb39, 0xb3d, 0xb3d, 0xb5c, 0xb5d, 0xb5f, 0xb61,
17
- 0xb71, 0xb71, 0xb83, 0xb83, 0xb85, 0xb8a, 0xb8e, 0xb90, 0xb92, 0xb95, 0xb99, 0xb9a, 0xb9c, 0xb9c, 0xb9e, 0xb9f,
18
- 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbd0, 0xbd0, 0xc05, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28, 0xc2a, 0xc39,
19
- 0xc3d, 0xc3d, 0xc58, 0xc5a, 0xc5c, 0xc5d, 0xc60, 0xc61, 0xc80, 0xc80, 0xc85, 0xc8c, 0xc8e, 0xc90, 0xc92, 0xca8,
20
- 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbd, 0xcbd, 0xcdc, 0xcde, 0xce0, 0xce1, 0xcf1, 0xcf2, 0xd04, 0xd0c, 0xd0e, 0xd10,
21
- 0xd12, 0xd3a, 0xd3d, 0xd3d, 0xd4e, 0xd4e, 0xd54, 0xd56, 0xd5f, 0xd61, 0xd7a, 0xd7f, 0xd85, 0xd96, 0xd9a, 0xdb1,
22
- 0xdb3, 0xdbb, 0xdbd, 0xdbd, 0xdc0, 0xdc6, 0xe01, 0xe30, 0xe32, 0xe33, 0xe40, 0xe46, 0xe81, 0xe82, 0xe84, 0xe84,
23
- 0xe86, 0xe8a, 0xe8c, 0xea3, 0xea5, 0xea5, 0xea7, 0xeb0, 0xeb2, 0xeb3, 0xebd, 0xebd, 0xec0, 0xec4, 0xec6, 0xec6,
24
- 0xedc, 0xedf, 0xf00, 0xf00, 0xf40, 0xf47, 0xf49, 0xf6c, 0xf88, 0xf8c, 0x1000, 0x102a, 0x103f, 0x103f, 0x1050, 0x1055,
25
- 0x105a, 0x105d, 0x1061, 0x1061, 0x1065, 0x1066, 0x106e, 0x1070, 0x1075, 0x1081, 0x108e, 0x108e, 0x10a0, 0x10c5, 0x10c7, 0x10c7,
26
- 0x10cd, 0x10cd, 0x10d0, 0x10fa, 0x10fc, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d, 0x1260, 0x1288,
27
- 0x128a, 0x128d, 0x1290, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310,
28
- 0x1312, 0x1315, 0x1318, 0x135a, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a,
29
- 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x1711, 0x171f, 0x1731, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780, 0x17b3,
30
- 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x1820, 0x1878, 0x1880, 0x18a8, 0x18aa, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1950, 0x196d,
31
- 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a16, 0x1a20, 0x1a54, 0x1aa7, 0x1aa7, 0x1b05, 0x1b33, 0x1b45, 0x1b4c,
32
- 0x1b83, 0x1ba0, 0x1bae, 0x1baf, 0x1bba, 0x1be5, 0x1c00, 0x1c23, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1c80, 0x1c8a, 0x1c90, 0x1cba,
33
- 0x1cbd, 0x1cbf, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1e00, 0x1f15, 0x1f18, 0x1f1d,
34
- 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4,
35
- 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4,
36
- 0x1ff6, 0x1ffc, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115,
37
- 0x2118, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e,
38
- 0x2160, 0x2188, 0x2c00, 0x2ce4, 0x2ceb, 0x2cee, 0x2cf2, 0x2cf3, 0x2d00, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67,
39
- 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce,
40
- 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309b, 0x309f,
41
- 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, 0x31a0, 0x31bf, 0x31f0, 0x31ff, 0x3400, 0x4dbf, 0x4e00, 0xa48c,
42
- 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa67f, 0xa69d, 0xa6a0, 0xa6ef, 0xa717, 0xa71f,
43
- 0xa722, 0xa788, 0xa78b, 0xa7dc, 0xa7f1, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, 0xa840, 0xa873, 0xa882, 0xa8b3,
44
- 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fe, 0xa90a, 0xa925, 0xa930, 0xa946, 0xa960, 0xa97c, 0xa984, 0xa9b2, 0xa9cf, 0xa9cf,
45
- 0xa9e0, 0xa9e4, 0xa9e6, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa28, 0xaa40, 0xaa42, 0xaa44, 0xaa4b, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a,
46
- 0xaa7e, 0xaaaf, 0xaab1, 0xaab1, 0xaab5, 0xaab6, 0xaab9, 0xaabd, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaea,
47
- 0xaaf2, 0xaaf4, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab69,
48
- 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17,
49
- 0xfb1d, 0xfb1d, 0xfb1f, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1,
50
- 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff21, 0xff3a, 0xff41, 0xff5a,
51
- 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a,
52
- 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10140, 0x10174, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f,
53
- 0x1032d, 0x1034a, 0x10350, 0x10375, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, 0x103d1, 0x103d5, 0x10400, 0x1049d, 0x104b0, 0x104d3,
54
- 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x10570, 0x1057a, 0x1057c, 0x1058a, 0x1058c, 0x10592, 0x10594, 0x10595, 0x10597, 0x105a1,
55
- 0x105a3, 0x105b1, 0x105b3, 0x105b9, 0x105bb, 0x105bc, 0x105c0, 0x105f3, 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10780, 0x10785,
56
- 0x10787, 0x107b0, 0x107b2, 0x107ba, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855,
57
- 0x10860, 0x10876, 0x10880, 0x1089e, 0x108e0, 0x108f2, 0x108f4, 0x108f5, 0x10900, 0x10915, 0x10920, 0x10939, 0x10940, 0x10959, 0x10980, 0x109b7,
58
- 0x109be, 0x109bf, 0x10a00, 0x10a00, 0x10a10, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a35, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7,
59
- 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2,
60
- 0x10d00, 0x10d23, 0x10d4a, 0x10d65, 0x10d6f, 0x10d85, 0x10e80, 0x10ea9, 0x10eb0, 0x10eb1, 0x10ec2, 0x10ec7, 0x10f00, 0x10f1c, 0x10f27, 0x10f27,
61
- 0x10f30, 0x10f45, 0x10f70, 0x10f81, 0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11071, 0x11072, 0x11075, 0x11075, 0x11083, 0x110af,
62
- 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11144, 0x11144, 0x11147, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, 0x111c1, 0x111c4,
63
- 0x111da, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x1122b, 0x1123f, 0x11240, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d,
64
- 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112de, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333,
65
- 0x11335, 0x11339, 0x1133d, 0x1133d, 0x11350, 0x11350, 0x1135d, 0x11361, 0x11380, 0x11389, 0x1138b, 0x1138b, 0x1138e, 0x1138e, 0x11390, 0x113b5,
66
- 0x113b7, 0x113b7, 0x113d1, 0x113d1, 0x113d3, 0x113d3, 0x11400, 0x11434, 0x11447, 0x1144a, 0x1145f, 0x11461, 0x11480, 0x114af, 0x114c4, 0x114c5,
67
- 0x114c7, 0x114c7, 0x11580, 0x115ae, 0x115d8, 0x115db, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, 0x116b8, 0x116b8, 0x11700, 0x1171a,
68
- 0x11740, 0x11746, 0x11800, 0x1182b, 0x118a0, 0x118df, 0x118ff, 0x11906, 0x11909, 0x11909, 0x1190c, 0x11913, 0x11915, 0x11916, 0x11918, 0x1192f,
69
- 0x1193f, 0x1193f, 0x11941, 0x11941, 0x119a0, 0x119a7, 0x119aa, 0x119d0, 0x119e1, 0x119e1, 0x119e3, 0x119e3, 0x11a00, 0x11a00, 0x11a0b, 0x11a32,
70
- 0x11a3a, 0x11a3a, 0x11a50, 0x11a50, 0x11a5c, 0x11a89, 0x11a9d, 0x11a9d, 0x11ab0, 0x11af8, 0x11bc0, 0x11be0, 0x11c00, 0x11c08, 0x11c0a, 0x11c2e,
71
- 0x11c40, 0x11c40, 0x11c72, 0x11c8f, 0x11d00, 0x11d06, 0x11d08, 0x11d09, 0x11d0b, 0x11d30, 0x11d46, 0x11d46, 0x11d60, 0x11d65, 0x11d67, 0x11d68,
72
- 0x11d6a, 0x11d89, 0x11d98, 0x11d98, 0x11db0, 0x11ddb, 0x11ee0, 0x11ef2, 0x11f02, 0x11f02, 0x11f04, 0x11f10, 0x11f12, 0x11f33, 0x11fb0, 0x11fb0,
73
- 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, 0x12f90, 0x12ff0, 0x13000, 0x1342f, 0x13441, 0x13446, 0x13460, 0x143fa, 0x14400, 0x14646,
74
- 0x16100, 0x1611d, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a70, 0x16abe, 0x16ad0, 0x16aed, 0x16b00, 0x16b2f, 0x16b40, 0x16b43, 0x16b63, 0x16b77,
75
- 0x16b7d, 0x16b8f, 0x16d40, 0x16d6c, 0x16e40, 0x16e7f, 0x16ea0, 0x16eb8, 0x16ebb, 0x16ed3, 0x16f00, 0x16f4a, 0x16f50, 0x16f50, 0x16f93, 0x16f9f,
76
- 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, 0x16ff2, 0x16ff6, 0x17000, 0x18cd5, 0x18cff, 0x18d1e, 0x18d80, 0x18df2, 0x1aff0, 0x1aff3, 0x1aff5, 0x1affb,
77
- 0x1affd, 0x1affe, 0x1b000, 0x1b122, 0x1b132, 0x1b132, 0x1b150, 0x1b152, 0x1b155, 0x1b155, 0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a,
78
- 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6,
79
- 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c,
80
- 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, 0x1d6a8, 0x1d6c0, 0x1d6c2, 0x1d6da,
81
- 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, 0x1d716, 0x1d734, 0x1d736, 0x1d74e, 0x1d750, 0x1d76e, 0x1d770, 0x1d788, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2,
82
- 0x1d7c4, 0x1d7cb, 0x1df00, 0x1df1e, 0x1df25, 0x1df2a, 0x1e030, 0x1e06d, 0x1e100, 0x1e12c, 0x1e137, 0x1e13d, 0x1e14e, 0x1e14e, 0x1e290, 0x1e2ad,
83
- 0x1e2c0, 0x1e2eb, 0x1e4d0, 0x1e4eb, 0x1e5d0, 0x1e5ed, 0x1e5f0, 0x1e5f0, 0x1e6c0, 0x1e6de, 0x1e6e0, 0x1e6e2, 0x1e6e4, 0x1e6e5, 0x1e6e7, 0x1e6ed,
84
- 0x1e6f0, 0x1e6f4, 0x1e6fe, 0x1e6ff, 0x1e7e0, 0x1e7e6, 0x1e7e8, 0x1e7eb, 0x1e7ed, 0x1e7ee, 0x1e7f0, 0x1e7fe, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943,
85
- 0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee24, 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32, 0x1ee34, 0x1ee37,
86
- 0x1ee39, 0x1ee39, 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49, 0x1ee4b, 0x1ee4b, 0x1ee4d, 0x1ee4f, 0x1ee51, 0x1ee52,
87
- 0x1ee54, 0x1ee54, 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d, 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64,
88
- 0x1ee67, 0x1ee6a, 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77, 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e, 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3,
89
- 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, 0x20000, 0x2a6df, 0x2a700, 0x2b81d, 0x2b820, 0x2cead, 0x2ceb0, 0x2ebe0, 0x2ebf0, 0x2ee5d, 0x2f800, 0x2fa1d,
90
- 0x30000, 0x3134a, 0x31350, 0x33479,
91
- ];
92
- const ID_CONTINUE = [
93
- 0xaa, 0xaa, 0xb5, 0xb5, 0xb7, 0xb7, 0xba, 0xba, 0xc0, 0xd6, 0xd8, 0xf6, 0xf8, 0x2c1, 0x2c6, 0x2d1,
94
- 0x2e0, 0x2e4, 0x2ec, 0x2ec, 0x2ee, 0x2ee, 0x300, 0x374, 0x376, 0x377, 0x37a, 0x37d, 0x37f, 0x37f, 0x386, 0x38a,
95
- 0x38c, 0x38c, 0x38e, 0x3a1, 0x3a3, 0x3f5, 0x3f7, 0x481, 0x483, 0x487, 0x48a, 0x52f, 0x531, 0x556, 0x559, 0x559,
96
- 0x560, 0x588, 0x591, 0x5bd, 0x5bf, 0x5bf, 0x5c1, 0x5c2, 0x5c4, 0x5c5, 0x5c7, 0x5c7, 0x5d0, 0x5ea, 0x5ef, 0x5f2,
97
- 0x610, 0x61a, 0x620, 0x669, 0x66e, 0x6d3, 0x6d5, 0x6dc, 0x6df, 0x6e8, 0x6ea, 0x6fc, 0x6ff, 0x6ff, 0x710, 0x74a,
98
- 0x74d, 0x7b1, 0x7c0, 0x7f5, 0x7fa, 0x7fa, 0x7fd, 0x7fd, 0x800, 0x82d, 0x840, 0x85b, 0x860, 0x86a, 0x870, 0x887,
99
- 0x889, 0x88f, 0x897, 0x8e1, 0x8e3, 0x963, 0x966, 0x96f, 0x971, 0x983, 0x985, 0x98c, 0x98f, 0x990, 0x993, 0x9a8,
100
- 0x9aa, 0x9b0, 0x9b2, 0x9b2, 0x9b6, 0x9b9, 0x9bc, 0x9c4, 0x9c7, 0x9c8, 0x9cb, 0x9ce, 0x9d7, 0x9d7, 0x9dc, 0x9dd,
101
- 0x9df, 0x9e3, 0x9e6, 0x9f1, 0x9fc, 0x9fc, 0x9fe, 0x9fe, 0xa01, 0xa03, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28,
102
- 0xa2a, 0xa30, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, 0xa39, 0xa3c, 0xa3c, 0xa3e, 0xa42, 0xa47, 0xa48, 0xa4b, 0xa4d,
103
- 0xa51, 0xa51, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa66, 0xa75, 0xa81, 0xa83, 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8,
104
- 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabc, 0xac5, 0xac7, 0xac9, 0xacb, 0xacd, 0xad0, 0xad0, 0xae0, 0xae3,
105
- 0xae6, 0xaef, 0xaf9, 0xaff, 0xb01, 0xb03, 0xb05, 0xb0c, 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33,
106
- 0xb35, 0xb39, 0xb3c, 0xb44, 0xb47, 0xb48, 0xb4b, 0xb4d, 0xb55, 0xb57, 0xb5c, 0xb5d, 0xb5f, 0xb63, 0xb66, 0xb6f,
107
- 0xb71, 0xb71, 0xb82, 0xb83, 0xb85, 0xb8a, 0xb8e, 0xb90, 0xb92, 0xb95, 0xb99, 0xb9a, 0xb9c, 0xb9c, 0xb9e, 0xb9f,
108
- 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbbe, 0xbc2, 0xbc6, 0xbc8, 0xbca, 0xbcd, 0xbd0, 0xbd0, 0xbd7, 0xbd7,
109
- 0xbe6, 0xbef, 0xc00, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28, 0xc2a, 0xc39, 0xc3c, 0xc44, 0xc46, 0xc48, 0xc4a, 0xc4d,
110
- 0xc55, 0xc56, 0xc58, 0xc5a, 0xc5c, 0xc5d, 0xc60, 0xc63, 0xc66, 0xc6f, 0xc80, 0xc83, 0xc85, 0xc8c, 0xc8e, 0xc90,
111
- 0xc92, 0xca8, 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbc, 0xcc4, 0xcc6, 0xcc8, 0xcca, 0xccd, 0xcd5, 0xcd6, 0xcdc, 0xcde,
112
- 0xce0, 0xce3, 0xce6, 0xcef, 0xcf1, 0xcf3, 0xd00, 0xd0c, 0xd0e, 0xd10, 0xd12, 0xd44, 0xd46, 0xd48, 0xd4a, 0xd4e,
113
- 0xd54, 0xd57, 0xd5f, 0xd63, 0xd66, 0xd6f, 0xd7a, 0xd7f, 0xd81, 0xd83, 0xd85, 0xd96, 0xd9a, 0xdb1, 0xdb3, 0xdbb,
114
- 0xdbd, 0xdbd, 0xdc0, 0xdc6, 0xdca, 0xdca, 0xdcf, 0xdd4, 0xdd6, 0xdd6, 0xdd8, 0xddf, 0xde6, 0xdef, 0xdf2, 0xdf3,
115
- 0xe01, 0xe3a, 0xe40, 0xe4e, 0xe50, 0xe59, 0xe81, 0xe82, 0xe84, 0xe84, 0xe86, 0xe8a, 0xe8c, 0xea3, 0xea5, 0xea5,
116
- 0xea7, 0xebd, 0xec0, 0xec4, 0xec6, 0xec6, 0xec8, 0xece, 0xed0, 0xed9, 0xedc, 0xedf, 0xf00, 0xf00, 0xf18, 0xf19,
117
- 0xf20, 0xf29, 0xf35, 0xf35, 0xf37, 0xf37, 0xf39, 0xf39, 0xf3e, 0xf47, 0xf49, 0xf6c, 0xf71, 0xf84, 0xf86, 0xf97,
118
- 0xf99, 0xfbc, 0xfc6, 0xfc6, 0x1000, 0x1049, 0x1050, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, 0x10d0, 0x10fa,
119
- 0x10fc, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d, 0x1260, 0x1288, 0x128a, 0x128d, 0x1290, 0x12b0,
120
- 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a,
121
- 0x135d, 0x135f, 0x1369, 0x1371, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a,
122
- 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x1715, 0x171f, 0x1734, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773,
123
- 0x1780, 0x17d3, 0x17d7, 0x17d7, 0x17dc, 0x17dd, 0x17e0, 0x17e9, 0x180b, 0x180d, 0x180f, 0x1819, 0x1820, 0x1878, 0x1880, 0x18aa,
124
- 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1946, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9,
125
- 0x19d0, 0x19da, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abd,
126
- 0x1abf, 0x1add, 0x1ae0, 0x1aeb, 0x1b00, 0x1b4c, 0x1b50, 0x1b59, 0x1b6b, 0x1b73, 0x1b80, 0x1bf3, 0x1c00, 0x1c37, 0x1c40, 0x1c49,
127
- 0x1c4d, 0x1c7d, 0x1c80, 0x1c8a, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1cd0, 0x1cd2, 0x1cd4, 0x1cfa, 0x1d00, 0x1f15, 0x1f18, 0x1f1d,
128
- 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4,
129
- 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4,
130
- 0x1ff6, 0x1ffc, 0x200c, 0x200d, 0x203f, 0x2040, 0x2054, 0x2054, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x20d0, 0x20dc,
131
- 0x20e1, 0x20e1, 0x20e5, 0x20f0, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2118, 0x211d, 0x2124, 0x2124,
132
- 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x2c00, 0x2ce4,
133
- 0x2ceb, 0x2cf3, 0x2d00, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d6f, 0x2d7f, 0x2d96, 0x2da0, 0x2da6,
134
- 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2dff,
135
- 0x3005, 0x3007, 0x3021, 0x302f, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x3099, 0x309f, 0x30a1, 0x30ff, 0x3105, 0x312f,
136
- 0x3131, 0x318e, 0x31a0, 0x31bf, 0x31f0, 0x31ff, 0x3400, 0x4dbf, 0x4e00, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b,
137
- 0xa640, 0xa66f, 0xa674, 0xa67d, 0xa67f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7dc, 0xa7f1, 0xa827, 0xa82c, 0xa82c,
138
- 0xa840, 0xa873, 0xa880, 0xa8c5, 0xa8d0, 0xa8d9, 0xa8e0, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa92d, 0xa930, 0xa953, 0xa960, 0xa97c,
139
- 0xa980, 0xa9c0, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaac2,
140
- 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e,
141
- 0xab30, 0xab5a, 0xab5c, 0xab69, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb,
142
- 0xf900, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e,
143
- 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, 0xfe00, 0xfe0f,
144
- 0xfe20, 0xfe2f, 0xfe33, 0xfe34, 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 0xff21, 0xff3a, 0xff3f, 0xff3f,
145
- 0xff41, 0xff5a, 0xff65, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10000, 0x1000b, 0x1000d, 0x10026,
146
- 0x10028, 0x1003a, 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10140, 0x10174, 0x101fd, 0x101fd, 0x10280, 0x1029c,
147
- 0x102a0, 0x102d0, 0x102e0, 0x102e0, 0x10300, 0x1031f, 0x1032d, 0x1034a, 0x10350, 0x1037a, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf,
148
- 0x103d1, 0x103d5, 0x10400, 0x1049d, 0x104a0, 0x104a9, 0x104b0, 0x104d3, 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x10570, 0x1057a,
149
- 0x1057c, 0x1058a, 0x1058c, 0x10592, 0x10594, 0x10595, 0x10597, 0x105a1, 0x105a3, 0x105b1, 0x105b3, 0x105b9, 0x105bb, 0x105bc, 0x105c0, 0x105f3,
150
- 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10780, 0x10785, 0x10787, 0x107b0, 0x107b2, 0x107ba, 0x10800, 0x10805, 0x10808, 0x10808,
151
- 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855, 0x10860, 0x10876, 0x10880, 0x1089e, 0x108e0, 0x108f2, 0x108f4, 0x108f5,
152
- 0x10900, 0x10915, 0x10920, 0x10939, 0x10940, 0x10959, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13,
153
- 0x10a15, 0x10a17, 0x10a19, 0x10a35, 0x10a38, 0x10a3a, 0x10a3f, 0x10a3f, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae6,
154
- 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27,
155
- 0x10d30, 0x10d39, 0x10d40, 0x10d65, 0x10d69, 0x10d6d, 0x10d6f, 0x10d85, 0x10e80, 0x10ea9, 0x10eab, 0x10eac, 0x10eb0, 0x10eb1, 0x10ec2, 0x10ec7,
156
- 0x10efa, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, 0x10f70, 0x10f85, 0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x11075,
157
- 0x1107f, 0x110ba, 0x110c2, 0x110c2, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, 0x11144, 0x11147, 0x11150, 0x11173,
158
- 0x11176, 0x11176, 0x11180, 0x111c4, 0x111c9, 0x111cc, 0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11237, 0x1123e, 0x11241,
159
- 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11300, 0x11303,
160
- 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133b, 0x11344, 0x11347, 0x11348,
161
- 0x1134b, 0x1134d, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11380, 0x11389, 0x1138b, 0x1138b,
162
- 0x1138e, 0x1138e, 0x11390, 0x113b5, 0x113b7, 0x113c0, 0x113c2, 0x113c2, 0x113c5, 0x113c5, 0x113c7, 0x113ca, 0x113cc, 0x113d3, 0x113e1, 0x113e2,
163
- 0x11400, 0x1144a, 0x11450, 0x11459, 0x1145e, 0x11461, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c0,
164
- 0x115d8, 0x115dd, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b8, 0x116c0, 0x116c9, 0x116d0, 0x116e3, 0x11700, 0x1171a,
165
- 0x1171d, 0x1172b, 0x11730, 0x11739, 0x11740, 0x11746, 0x11800, 0x1183a, 0x118a0, 0x118e9, 0x118ff, 0x11906, 0x11909, 0x11909, 0x1190c, 0x11913,
166
- 0x11915, 0x11916, 0x11918, 0x11935, 0x11937, 0x11938, 0x1193b, 0x11943, 0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e1,
167
- 0x119e3, 0x119e4, 0x11a00, 0x11a3e, 0x11a47, 0x11a47, 0x11a50, 0x11a99, 0x11a9d, 0x11a9d, 0x11ab0, 0x11af8, 0x11b60, 0x11b67, 0x11bc0, 0x11be0,
168
- 0x11bf0, 0x11bf9, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, 0x11c38, 0x11c40, 0x11c50, 0x11c59, 0x11c72, 0x11c8f, 0x11c92, 0x11ca7, 0x11ca9, 0x11cb6,
169
- 0x11d00, 0x11d06, 0x11d08, 0x11d09, 0x11d0b, 0x11d36, 0x11d3a, 0x11d3a, 0x11d3c, 0x11d3d, 0x11d3f, 0x11d47, 0x11d50, 0x11d59, 0x11d60, 0x11d65,
170
- 0x11d67, 0x11d68, 0x11d6a, 0x11d8e, 0x11d90, 0x11d91, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11db0, 0x11ddb, 0x11de0, 0x11de9, 0x11ee0, 0x11ef6,
171
- 0x11f00, 0x11f10, 0x11f12, 0x11f3a, 0x11f3e, 0x11f42, 0x11f50, 0x11f5a, 0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543,
172
- 0x12f90, 0x12ff0, 0x13000, 0x1342f, 0x13440, 0x13455, 0x13460, 0x143fa, 0x14400, 0x14646, 0x16100, 0x16139, 0x16800, 0x16a38, 0x16a40, 0x16a5e,
173
- 0x16a60, 0x16a69, 0x16a70, 0x16abe, 0x16ac0, 0x16ac9, 0x16ad0, 0x16aed, 0x16af0, 0x16af4, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b50, 0x16b59,
174
- 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16d40, 0x16d6c, 0x16d70, 0x16d79, 0x16e40, 0x16e7f, 0x16ea0, 0x16eb8, 0x16ebb, 0x16ed3, 0x16f00, 0x16f4a,
175
- 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe4, 0x16ff0, 0x16ff6, 0x17000, 0x18cd5, 0x18cff, 0x18d1e, 0x18d80, 0x18df2,
176
- 0x1aff0, 0x1aff3, 0x1aff5, 0x1affb, 0x1affd, 0x1affe, 0x1b000, 0x1b122, 0x1b132, 0x1b132, 0x1b150, 0x1b152, 0x1b155, 0x1b155, 0x1b164, 0x1b167,
177
- 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9d, 0x1bc9e, 0x1ccf0, 0x1ccf9, 0x1cf00, 0x1cf2d,
178
- 0x1cf30, 0x1cf46, 0x1d165, 0x1d169, 0x1d16d, 0x1d172, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, 0x1d242, 0x1d244, 0x1d400, 0x1d454,
179
- 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3,
180
- 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546,
181
- 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, 0x1d6a8, 0x1d6c0, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, 0x1d716, 0x1d734, 0x1d736, 0x1d74e,
182
- 0x1d750, 0x1d76e, 0x1d770, 0x1d788, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7cb, 0x1d7ce, 0x1d7ff, 0x1da00, 0x1da36, 0x1da3b, 0x1da6c,
183
- 0x1da75, 0x1da75, 0x1da84, 0x1da84, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1df00, 0x1df1e, 0x1df25, 0x1df2a, 0x1e000, 0x1e006, 0x1e008, 0x1e018,
184
- 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, 0x1e030, 0x1e06d, 0x1e08f, 0x1e08f, 0x1e100, 0x1e12c, 0x1e130, 0x1e13d, 0x1e140, 0x1e149,
185
- 0x1e14e, 0x1e14e, 0x1e290, 0x1e2ae, 0x1e2c0, 0x1e2f9, 0x1e4d0, 0x1e4f9, 0x1e5d0, 0x1e5fa, 0x1e6c0, 0x1e6de, 0x1e6e0, 0x1e6f5, 0x1e6fe, 0x1e6ff,
186
- 0x1e7e0, 0x1e7e6, 0x1e7e8, 0x1e7eb, 0x1e7ed, 0x1e7ee, 0x1e7f0, 0x1e7fe, 0x1e800, 0x1e8c4, 0x1e8d0, 0x1e8d6, 0x1e900, 0x1e94b, 0x1e950, 0x1e959,
187
- 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee24, 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32, 0x1ee34, 0x1ee37, 0x1ee39, 0x1ee39,
188
- 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49, 0x1ee4b, 0x1ee4b, 0x1ee4d, 0x1ee4f, 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee54,
189
- 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d, 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64, 0x1ee67, 0x1ee6a,
190
- 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77, 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e, 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9,
191
- 0x1eeab, 0x1eebb, 0x1fbf0, 0x1fbf9, 0x20000, 0x2a6df, 0x2a700, 0x2b81d, 0x2b820, 0x2cead, 0x2ceb0, 0x2ebe0, 0x2ebf0, 0x2ee5d, 0x2f800, 0x2fa1d,
192
- 0x30000, 0x3134a, 0x31350, 0x33479, 0xe0100, 0xe01ef,
193
- ];
3
+ // it whatever Unicode its engine has. The same three-level trie as src/lexer/unicode.rs, its
4
+ // 64-bit chunks held as pairs of 32-bit words.
5
+ const ID_START = {
6
+ r1: Uint32Array.of(0,0,0,0,0,69207040,4286578687,4286578687,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,262083,20511,0,0,0,3168731136,4294956864,4294967291,4294967295,4290772991,4294967295,4294967295,4294967295,4294967295,4294966275,4294967295,4294967295,4294967295,4294967295,4294901759,41943039,4294967295,511,0,4294901760,493567,0,4294967295,2047,4294885376,4294967295,4294967295,3145727,2617294944,4294770688,65535,4294959104,4294967295,4294967295,131135,4294966272,70256639),
7
+ r2: Uint8Array.of(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,23,25,26,27,28,29,30,31,32,33,34,35,35,35,35,35,36,37,38,39,40,41,42,43,35,35,35,35,35,35,35,35,44,45,46,47,48,49,50,51,52,53,54,55,56,57,3,58,59,60,30,61,62,63,64,65,66,67,68,35,35,35,30,35,35,35,35,69,70,71,72,30,73,74,30,75,76,77,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,35,35,35,78,79,80,81,82,30,30,30,30,30,30,30,30,83,43,84,85,86,35,87,88,30,30,30,30,30,30,30,30,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,30,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,89,90,35,35,35,35,91,92,93,94,95,35,96,97,98,49,99,100,101,102,103,104,105,106,107,108,109,110,35,111,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,112,113,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,35,35,35,35,35,114,35,115,116,117,118,119,35,35,35,35,120,121,122,123,30,124,35,125,126,127,128,129),
8
+ r3: Uint32Array.of(71303167,272,33554431,4294903807,65279,4294967295,1023,0,4294967280,603979775,4278255616,4294836227,4294549473,600178175,2952806400,268632067,4294543328,57540095,1577058304,1835008,4294688736,602799615,65536,33554435,4294549472,602799615,2952790016,131075,3594373096,67094296,65536,0,4294828000,603979263,922746880,3,4294828001,602930687,1879048192,393219,4294828016,671088639,2154840064,4227858435,4236247008,805044223,127,0,4294967294,917503,4294965206,537788335,4026531935,0,1,0,4294967039,8191,7936,0,0,0,4294967295,2147485695,1010761728,4292984930,16387,4294967295,4294910143,4160749567,4294967295,4294967295,1031749119,4294967295,4294917631,2134769663,4286578493,4294967295,4282253311,4294967295,134217727,0,65535,4294967295,4294967295,1061158911,4294967294,4294967295,4294967295,4294942719,134217726,4294967295,4294967295,33540095,2147745791,262143,262143,122879,4294967295,1048575,276824064,0,0,4294967295,4294967295,33554431,4294967295,4294903295,4294967295,4194303,2147483647,0,4294901760,2047999,4294967295,4294905855,8388607,4294967295,2097151,0,0,128,4294967264,1048575,8160,0,4294967288,4227907585,4294967295,63,4294967295,15,4227915776,1073741823,4294903807,3892314111,0,74440192,1061158911,4294967295,2868854591,1073741823,4294967295,1608515583,265232348,534519807,0,2147614720,536805376,0,1060109444,4093640016,17376,4294967295,511,0,4294967295,817183,4294967295,4294910143,4294967295,33023,8388607,2139062143,2139062143,0,224,524157950,4169138175,4294967294,4294967295,4160749567,4294967264,4294901759,32767,4294967295,0,4294901760,8191,0,4294901760,1073741823,4294909951,3072,4294967295,2147516415,1073741823,4294967295,4294967295,65535,4286578688,4294967292,4294965759,4294967295,536870911,4294836224,4294965179,7,4294967292,1048575,0,1761345536,4294966272,4294901823,127,536870911,4294967280,524287,32768,2080440287,4294967295,511,4087,3296722943,4294967295,1046675455,939524101,1837055,8289918,4294934399,4160749567,4294902783,4294967295,7,4294967295,4294901775,4294965375,268435455,4294967295,4294918143,67108863,0,2700607615,1602223615,4294967259,4294967295,4294967295,262143,4294443008,4294967295,4294967295,1073741823,4294901760,4294967295,4294770687,4294967295,255,268369920,0,4292804608,4294967295,536870911,0,134217726,134217726,4294967232,4294967295,2147483647,486341884,0),
9
+ r4: Uint8Array.of(0,1,2,3,4,5,6,7,8,5,9,10,5,11,12,5,7,7,7,7,7,7,7,7,7,7,13,14,15,7,16,17,7,18,7,19,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5),
10
+ r5: Uint8Array.of(0,1,2,3,4,5,4,4,4,4,6,7,8,9,10,11,2,2,12,13,14,15,16,17,2,2,2,2,18,19,20,4,21,22,23,24,25,26,27,4,28,29,30,31,32,33,34,4,2,35,36,36,37,38,39,4,4,4,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,23,57,58,59,60,5,61,62,63,4,4,64,65,62,66,67,4,68,69,4,4,70,4,71,72,73,74,75,76,77,78,79,80,4,4,4,81,82,83,84,4,85,86,87,88,4,4,4,89,90,4,91,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,4,2,64,2,2,2,92,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,93,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,62,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,69,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,96,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,80,97,98,99,62,100,84,4,4,4,4,4,4,101,4,4,4,2,102,103,2,104,105,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,107,23,4,2,36,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,108,2,2,2,2,109,110,2,2,2,2,2,111,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,112,113,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,114,115,116,117,118,2,2,2,2,119,120,121,122,123,124,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,125,4,4,4,126,127,4,4,128,129,4,4,4,4,99,70,4,4,4,4,4,4,4,130,4,4,4,131,4,4,4,132,4,4,4,133,2,2,2,134,2,135,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,136,137,138,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141,2,2,2,2,2,2,2,2,2,96,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,96,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,143,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4),
11
+ r6: Uint32Array.of(4294963199,3087007615,1073692671,0,4294967295,4294967295,4294967295,134217727,0,0,4294967295,2097151,536870911,4294967295,131071,0,4294967295,4294959104,4294903807,4194303,1073741823,4294967295,4128527,0,1073741823,4294901760,4279238655,268435455,4294967295,4294902015,4294967295,4160684047,4290246655,469499899,4294967295,1048575,4294967295,8388607,4194303,255,4294967231,134086655,4294966591,2445279231,4194303,8388607,2147483647,0,0,3670015,4194303,67108863,67108863,0,4294967295,3238002687,4277075969,4194303,0,536870911,536870911,0,4294967039,31,4294967295,4194303,4194303,524287,262143,0,511,0,4294967295,524287,4294967295,15,4294966272,4294934591,63,0,4294967295,197631,252,0,536870911,4294901888,63,4294901760,3,4294901760,31,8388607,4294967288,16777215,0,2490368,4294967288,65535,4294901760,511,4294967288,127,4294901904,4718591,4294967288,524287,335544350,0,4294705151,2147487743,1,0,3221208447,4294902271,4294549472,602799615,3758161920,3,4294921215,12582911,655360,0,2147485568,3,4294967295,65535,176,0,4294967295,32767,251658240,0,16,0,4294967295,16779263,134217727,0,127,0,4294967295,4095,0,4294967295,4294967295,2147483648,4285526655,2147549183,2,0,0,4294966527,131071,10,4294965249,67633151,4026597376,4294967295,536871935,4294901760,4294967295,33554431,4294967295,1,4294966783,32767,1,4294705152,65535,0,4294966143,131071,64,4294966719,16778239,4294901760,268435455,0,0,524287,4294836212,1048575,0,65536,15,0,4294901760,4294967295,4294967295,131071,126,4294967295,1073741823,0,2147483647,4294901760,4294967295,2147483647,4294901760,16383,15,3774873592,4294967295,8191,0,4194303999,1048575,0,67583,0,4294443008,0,0,8126475,4194303,2147483648,0,1877934080,4294967295,262151,2555904,4294902000,4294967295,268435455,4294967295,536807423,67043839,0,4292870143,4294967295,3758096383,3959414372,4294967279,4294967295,3755993023,2080374783,4294835295,4294967295,4294967295,4294967103,4160749565,4160749567,4292870143,4292870143,4294934527,4294934527,4294966783,4294966783,4087,0,2147483647,2016,0,4294901760,4294967295,16383,4294967295,1065361407,16384,0,4294901760,4095,4294901760,81919,2147483647,3223273399,0,2147446655,31,0,2063,0,4294967279,184024726,2862017156,1593309078,268434431,268434414,4294967295,0,4294967295,4294918143,4294967295,4294901761,4294903807,4294967295,4294967295,67108863),
12
+ };
13
+ const ID_CONTINUE = {
14
+ r1: Uint32Array.of(0,0,0,0,0,77595648,4286578687,4286578687,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,262083,20511,4294967295,4294967295,4294967295,3168796671,4294956992,4294967291,4294967295,4290772991,4294967295,4294967295,4294967295,4294967295,4294966523,4294967295,4294967295,4294967295,4294967295,4294901759,41943039,4294967295,4294836735,3221225471,4294901942,493567,134152192,4294967295,4294967295,4294951935,4294967295,4294967295,2683305983,2684354047,4294901760,4294967295,4294961151,4294967295,4294967295,262143,4294967295,608174079),
15
+ r2: Uint8Array.of(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,4,32,33,34,4,4,4,4,4,35,36,37,38,39,40,41,42,4,4,4,4,4,4,4,4,43,44,45,46,47,4,48,49,50,51,52,53,54,55,56,57,58,59,60,4,61,4,62,63,64,65,66,4,4,4,4,4,4,4,4,67,68,69,70,71,72,73,74,75,76,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,4,4,4,79,80,81,82,83,78,78,78,78,78,78,78,78,84,42,85,4,86,4,87,88,78,78,78,78,78,78,78,78,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,78,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,89,90,4,4,4,4,91,92,4,93,94,4,95,96,97,62,4,98,99,100,4,101,102,103,4,104,105,106,4,107,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,108,109,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,4,4,4,4,4,99,4,110,111,112,93,113,4,4,4,4,114,115,116,117,118,119,4,120,121,122,123,124),
16
+ r3: Uint32Array.of(4294967295,16383,268435455,4294903807,4286643967,4294967295,4294967295,4294967291,4294967295,4294967295,4294967295,4294901711,4294549487,4089839103,2961209759,1342439375,4294543342,3547201023,1577204103,4194240,4294688750,4092460543,80831,4261478351,4294549486,4092460543,2967484831,196559,3594373100,3288319768,8469959,65472,4294828031,4093640191,929054175,65487,4294828015,4092591615,1885355487,982991,4294828031,4294967295,2163244511,4227923919,4236247022,805044223,4284449919,851904,4294967294,134217727,67076095,0,4294965206,1073741743,4093607775,0,50331649,3265266687,4294967039,4294844415,4278190047,536870911,64,0,4294902783,4294967295,1073741823,4294967295,4294910143,4160749567,1031749119,4294967295,4294917631,2134769663,4286578493,4294967295,4282253311,4294967295,3892314111,261632,65535,4294967295,4294967295,1061158911,4294967294,4294967295,4294967295,4294942719,134217726,4294967295,4294967295,33540095,2151677951,2097151,1048575,909311,814743551,1023,67090432,4294967295,4294967295,33554431,4294967295,4294903807,4294967295,4194303,2147483647,268374015,4294967232,2047999,4294967295,4294905855,134153215,0,268435455,4294967295,2147483647,2684354559,67044351,3221160064,1073741823,4095,67051519,1046528,4294967295,1048575,4294967295,16777215,4294960127,1073741823,4294903807,3892314111,4294377472,134217727,1061158911,4294967295,2868854591,1073741823,4294967295,1608515583,265232348,534519807,12288,2147483648,1048577,2147614720,536805376,0,536805376,131042,1060109444,4093640016,17376,4294967295,511,0,0,0,4294967295,1046559,4294967295,4294910143,4294967295,2147516671,8388607,2139062143,2139062143,4294967295,224,524222462,4269801471,4294967294,4294967264,4294901759,32767,4294967295,0,4294901760,8191,0,4294901760,1073741823,4294909951,4095,4294967295,3220242431,4294967295,262143,4286578688,4294967292,4294965759,4294967295,536870911,4294836224,4294967295,4351,67043391,3909091327,4294967295,4294918143,1048575,536870911,67076097,2147483647,4294967295,8388607,67059711,4236247039,939524103,8191999,8289918,4294934399,4160749567,4294902783,4294967295,67057663,4294967295,4294901775,4294965375,268435455,67108863,0,3774349439,1602223615,4294967259,4294967295,4294443008,4294967295,4294967295,1073741823,4294901760,4294967295,4294770687,4294967295,255,268369920,65535,1638399,57344,4292804608,4294967295,536870911,67043328,2281701374,134217726,4294967264,4294967295,2147483647,486341884,0),
17
+ r4: Uint8Array.of(0,1,2,3,4,5,6,7,8,5,9,10,11,12,13,14,7,7,7,7,7,7,7,7,7,7,15,16,17,7,18,19,7,20,7,21,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,22,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5),
18
+ r5: Uint8Array.of(0,1,2,3,4,5,4,6,4,4,7,8,9,10,11,12,2,2,13,14,15,16,17,18,2,2,2,2,19,20,21,4,22,23,24,25,26,27,28,4,29,30,31,32,33,34,35,4,2,36,37,37,38,39,40,4,4,4,41,42,43,44,45,46,2,47,3,48,49,50,2,51,52,53,54,55,56,57,58,59,2,60,2,61,4,4,62,63,2,64,65,66,67,68,4,4,3,4,69,70,71,72,73,74,75,76,77,65,4,78,4,79,80,81,82,4,83,84,85,86,4,4,4,87,88,89,90,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,27,4,2,91,2,2,2,92,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,93,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,96,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,68,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,97,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,65,98,75,99,19,100,101,4,4,4,4,4,4,102,4,4,4,2,103,104,2,105,106,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,108,24,4,2,37,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,109,2,2,2,2,110,111,2,2,2,2,2,112,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,113,114,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,115,4,4,4,4,4,4,4,4,116,68,4,4,4,4,4,4,4,117,118,4,4,119,4,4,4,4,4,4,2,120,121,122,123,124,2,2,2,2,125,126,127,128,129,130,4,4,4,4,4,4,4,4,131,132,133,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,134,4,4,4,135,136,137,4,138,139,4,4,4,4,140,97,4,4,4,4,4,4,4,141,4,4,4,142,4,4,4,143,4,4,4,144,2,2,2,145,2,146,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,147,148,149,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,115,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2,2,152,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,152,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,97,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,95,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4),
19
+ r6: Uint32Array.of(4294963199,3087007615,1073692671,0,4294967295,4294967295,4294967295,134217727,0,0,4294967295,2097151,0,536870912,536870911,4294967295,131071,1,4294967295,4294959104,4294903807,134217727,1073741823,4294967295,4128527,0,1073741823,4294902783,4279238655,268435455,4294967295,4294902015,4294967295,4160684047,4290246655,469499899,4294967295,1048575,4294967295,8388607,4194303,255,4294967231,134086655,4294966591,2445279231,4194303,8388607,2147483647,0,0,3670015,4194303,67108863,67108863,0,4294967295,3238002687,4277137519,2269118463,0,536870911,536870911,0,4294967039,127,4294967295,4194303,4194303,524287,262143,0,511,0,4294967295,524287,4294967295,67043583,4294967295,4294950463,63,0,4294967295,203775,252,4227858432,536870911,4294901888,131071,4294901760,63,4294901760,31,8388607,127,2151677888,4294901764,67043839,4294967295,4292870143,4294902000,5242879,402644511,0,4294705151,3238002687,3,0,3221208447,4294902271,4294967295,67045375,4294549487,4226678271,3766565279,2039759,4294921215,4290772991,1046437,6,3288270847,3,67043519,0,4294967295,4282384383,1056964609,0,67043345,0,4294967295,33554431,4294902783,15,3892314111,67047423,127,0,0,4294967295,4294967295,2147484671,4285526655,4190109695,67043343,0,0,4294966527,4244635647,27,4294967295,2147483647,4294901888,4294967295,603979775,4294901760,0,255,4294967295,67043329,4294966783,4286578687,67043329,4294705152,4294770687,8388351,4294966143,3028287487,67043583,4294966719,33259519,4294902783,268435455,1023,0,8388607,4294836223,3355443199,134152199,0,0,65536,4294967295,32767,15,0,4294901760,4294967295,4294967295,131071,4294967295,65535,4194303,4294967295,4294967295,67108863,2147483647,4294902783,4294902783,2047999,67043343,3774873592,65535,0,4294967295,67051519,0,4194303999,1048575,0,4294936575,4294967295,4294934783,0,0,8323099,4194303,2147483648,0,1877934080,4294967295,262151,2555904,4294902000,4294967295,268435455,4294967295,536807423,1677656575,0,0,67043328,4294967295,4294918143,0,4161266656,4071,15360,28,0,4292870143,4294967295,3758096383,3959414372,4294967279,4294967295,3755993023,2080374783,4294835295,4294967295,4294967295,4294967103,4160749565,4160749567,4292870143,4292870143,4294934527,4294934527,4294966783,4294966783,4294954999,4294967295,4294967295,4169138175,4294967295,2105343,4160749584,65534,2147483647,2016,4194303871,4294903771,4294967295,16383,32768,0,4294967295,1073684479,17407,0,4294901760,32767,4294901760,67108863,4294901760,134217727,2147483647,3225419775,0,2147446655,8323103,0,67047423,0,4294967279,184024726,2862017156,1593309078,268434431,268434414,4294967295,0,4294967295,4294901761,1073741823,0,4294903807,4294967295),
20
+ };
194
21
 
195
- /** @param {number[]} table @param {number} code */
196
- function lookup(table, code) {
197
- let lo = 0;
198
- let hi = table.length >> 1;
199
- while (lo < hi) {
200
- const mid = (lo + hi) >> 1;
201
- if (code < table[mid * 2]) hi = mid;
202
- else if (code > table[mid * 2 + 1]) lo = mid + 1;
203
- else return true;
204
- }
205
- return false;
22
+ /** @param {typeof ID_START} t @param {number} c */
23
+ function lookup(t, c) {
24
+ let chunk;
25
+ if (c < 0x800) chunk = c >> 6;
26
+ else if (c < 0x10000) return bit(t.r3, t.r2[(c >> 6) - 32], c);
27
+ else return bit(t.r6, t.r5[(t.r4[(c >> 12) - 16] << 6) | ((c >> 6) & 63)], c);
28
+ return bit(t.r1, chunk, c);
206
29
  }
30
+ /** @param {Uint32Array} chunks @param {number} chunk @param {number} c */
31
+ const bit = (chunks, chunk, c) => ((chunks[chunk * 2 + ((c >> 5) & 1)] >>> (c & 31)) & 1) === 1;
207
32
 
208
33
  /** Whether a code point can start an identifier. @param {number} code */
209
34
  export function isIdentifierStart(code) {
35
+ // compares, not a table: V8 inlines these and a typed-array load measured twice as slow
210
36
  if (code < 128) return (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 36 || code === 95;
211
37
  return lookup(ID_START, code);
212
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teasel/parser",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "A JavaScript and TypeScript parser in Rust. It answers in ESTree.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -17,46 +17,52 @@
17
17
  "default": "./index.js"
18
18
  },
19
19
  "default": {
20
- "types": "./wasm.d.ts",
20
+ "types": "./index.d.ts",
21
21
  "default": "./wasm.js"
22
22
  }
23
23
  },
24
24
  "./wasm": {
25
- "types": "./wasm.d.ts",
25
+ "types": "./index.d.ts",
26
26
  "default": "./wasm.js"
27
27
  },
28
- "./teasel.wasm": "./teasel.wasm"
28
+ "./teasel.wasm": "./teasel.wasm",
29
+ "./plan": {
30
+ "types": "./plan.d.ts",
31
+ "default": "./plan.js"
32
+ }
29
33
  },
30
34
  "files": [
31
35
  "index.js",
32
36
  "index.d.ts",
33
37
  "wasm.js",
34
- "wasm.d.ts",
35
38
  "native.js",
36
39
  "api.js",
37
40
  "decode.js",
38
41
  "identifier.js",
42
+ "plan.js",
43
+ "plan.d.ts",
39
44
  "teasel.wasm"
40
45
  ],
41
46
  "scripts": {
42
- "build": "bun addon.js",
47
+ "build": "npm run build:plan && node addon.js",
48
+ "build:plan": "tsc --ignoreConfig plan.ts --declaration --strict --target es2022 --module esnext --moduleResolution bundler --skipLibCheck",
43
49
  "build:wasm": "cargo build --release -p teasel-wasm --target wasm32-unknown-unknown && cp ../target/wasm32-unknown-unknown/release/teasel_wasm.wasm teasel.wasm",
44
- "test": "bun test.js && bun test.js interpret",
50
+ "test": "node test.js && node test.js interpret",
51
+ "types": "tsc -p tsconfig.json",
45
52
  "check": "node check.js",
46
- "changeset:version": "changeset version && bun versions.js && git add --all"
53
+ "prepublishOnly": "npm run build:plan"
47
54
  },
48
55
  "dependencies": {
49
56
  "@types/estree": "^1.0.6"
50
57
  },
51
58
  "devDependencies": {
52
- "@changesets/changelog-github": "^1.0.0",
53
- "@changesets/cli": "^3.0.1"
59
+ "@types/node": "^26.0.0"
54
60
  },
55
61
  "optionalDependencies": {
56
- "@teasel/parser-linux-x64-gnu": "0.0.6",
57
- "@teasel/parser-linux-arm64-gnu": "0.0.6",
58
- "@teasel/parser-darwin-x64": "0.0.6",
59
- "@teasel/parser-darwin-arm64": "0.0.6",
60
- "@teasel/parser-win32-x64-msvc": "0.0.6"
62
+ "@teasel/parser-linux-x64-gnu": "0.0.8",
63
+ "@teasel/parser-linux-arm64-gnu": "0.0.8",
64
+ "@teasel/parser-darwin-x64": "0.0.8",
65
+ "@teasel/parser-darwin-arm64": "0.0.8",
66
+ "@teasel/parser-win32-x64-msvc": "0.0.8"
61
67
  }
62
68
  }
package/plan.d.ts ADDED
@@ -0,0 +1,238 @@
1
+ declare const out: unique symbol;
2
+ export type JSONValue = null | boolean | number | string | JSONValue[] | {
3
+ [key: string]: JSONValue;
4
+ };
5
+ export type JS = 'expression' | 'assignmentExpression' | 'pattern' | 'bindingIdentifier' | 'identifierReference' | 'params' | 'typeParameters' | 'statement' | 'program';
6
+ export type Mode = 'normal' | 'raw' | 'rcdata' | 'verbatim';
7
+ export type Stop = {
8
+ prefixes: string[];
9
+ } | {
10
+ matchingElement: true;
11
+ } | {
12
+ documentEnd: true;
13
+ };
14
+ export type Reader = {
15
+ kind: 'token';
16
+ text: string;
17
+ gap: 'space*' | 'none';
18
+ word: boolean;
19
+ } | {
20
+ kind: 'space';
21
+ min: number;
22
+ } | {
23
+ kind: 'test';
24
+ value: V<boolean>;
25
+ } | {
26
+ kind: 'rule';
27
+ name: string;
28
+ } | {
29
+ kind: 'javascript';
30
+ entry: JS;
31
+ boundary?: 'last-shared-word';
32
+ } | {
33
+ kind: 'html-single';
34
+ entry: JS;
35
+ } | {
36
+ kind: 'html-attributes';
37
+ mode: 'normal' | 'static';
38
+ } | {
39
+ kind: 'html-attribute-parts';
40
+ } | {
41
+ kind: 'html-children';
42
+ mode: Mode;
43
+ stop: Stop;
44
+ } | {
45
+ kind: 'css-stylesheet';
46
+ };
47
+ export interface V<out T = unknown> {
48
+ readonly [out]: T;
49
+ }
50
+ export type Expr = V & {
51
+ readonly name?: never;
52
+ };
53
+ export interface Slot<out N extends string> extends V<any> {
54
+ readonly name: N;
55
+ }
56
+ export type Schema = Record<string, 'null' | 'omit'>;
57
+ type Names<S extends Schema, L extends readonly string[]> = (keyof S & string) | L[number];
58
+ type Slots<S extends Schema, L extends readonly string[]> = {
59
+ readonly [N in Names<S, L>]: Slot<N>;
60
+ };
61
+ export interface Form<out W = unknown> {
62
+ readonly [out]: W;
63
+ }
64
+ export type Write<N extends string, K extends string> = {
65
+ into: N;
66
+ kind: K;
67
+ };
68
+ type Wrote<Fs extends readonly Form[]> = Form<Fs[number][typeof out]>;
69
+ type Kind<R extends Reader> = R extends {
70
+ kind: 'javascript' | 'html-single';
71
+ entry: infer E;
72
+ } ? E : R['kind'];
73
+ type Bindable<W> = W extends Write<infer N, 'pattern' | 'bindingIdentifier' | 'params' | 'value'> ? N : never;
74
+ export interface Region<out Id extends string, out F extends string> {
75
+ readonly id: Id;
76
+ readonly parent: V;
77
+ readonly kind: 'module' | 'script' | 'fragment' | 'block' | 'function';
78
+ readonly covers: V;
79
+ readonly when?: V<boolean>;
80
+ readonly each?: {
81
+ list: V;
82
+ as: string;
83
+ };
84
+ readonly [out]: F;
85
+ }
86
+ export interface Declare<out N extends string, out R extends string | Expr> {
87
+ readonly patterns: V;
88
+ readonly into: V;
89
+ readonly kind: 'pattern' | 'param';
90
+ readonly [out]: [N, R];
91
+ }
92
+ export interface RuleData {
93
+ readonly type: string;
94
+ readonly fields: Schema;
95
+ readonly locals?: readonly string[];
96
+ form: Form;
97
+ regions?: readonly Region<string, string>[];
98
+ declares?: readonly Declare<string, string | Expr>[];
99
+ span?: 'none' | 'through-next-token-start';
100
+ }
101
+ export type Dispatch = {
102
+ when: V<boolean>;
103
+ rule: string;
104
+ type?: string;
105
+ attributes?: 'static';
106
+ content?: Mode;
107
+ };
108
+ export type Plan = {
109
+ version: 1;
110
+ document: string;
111
+ rules: Record<string, {
112
+ toJSON(): RuleData;
113
+ }>;
114
+ html: {
115
+ delimiters: [string, string];
116
+ attributeInterpolations: boolean;
117
+ attributeComments: 'javascript' | 'none';
118
+ autoclose: boolean;
119
+ trimEnd: boolean;
120
+ void: string[];
121
+ text: string;
122
+ comment: string;
123
+ content: {
124
+ prefix: string;
125
+ rule: string;
126
+ }[];
127
+ attribute: {
128
+ prefix: string;
129
+ rule: string;
130
+ }[];
131
+ plainAttribute: {
132
+ type: string;
133
+ name: string;
134
+ value: string;
135
+ text: string;
136
+ expression: string;
137
+ };
138
+ elements: Dispatch[];
139
+ directiveNames: {
140
+ prefix: string;
141
+ argument: string;
142
+ modifier: string;
143
+ requireArgument: boolean;
144
+ dynamic: [string, string] | null;
145
+ unknown: 'plain-attribute' | 'wildcard-rule';
146
+ };
147
+ directives: {
148
+ name: string;
149
+ rule: string;
150
+ }[];
151
+ };
152
+ };
153
+ export declare const constant: <const T extends JSONValue>(value: T) => V<T>;
154
+ export declare const get: (base: string | V, ...path: (string | number)[]) => V<any>;
155
+ export declare const equal: (left: V, right: V) => V<boolean>;
156
+ export declare const less: (left: V, right: V) => V<boolean>;
157
+ export declare const present: (left: V) => V<boolean>;
158
+ export declare const choose: <A, B>(condition: V<boolean>, yes: V<A>, no: V<B>) => V<A | B>;
159
+ export declare const flatMap: (list: V, as: string, body: V) => V<unknown[]>;
160
+ export declare const length: (list: V) => V<number>;
161
+ export declare const at: (list: V, index: number) => V<any>;
162
+ export declare const array: (...items: V[]) => V<unknown[]>;
163
+ export declare const record: (type: string | null, fields: Record<string, V>, span?: V) => V;
164
+ export declare const not: (p: V<boolean>) => V<boolean>;
165
+ export declare const and: (a: V<boolean>, b: V<boolean>) => V<boolean>;
166
+ export declare const or: (a: V<boolean>, b: V<boolean>) => V<boolean>;
167
+ export declare const filter: (list: V, as: string, predicate: V<boolean>) => V<unknown[]>;
168
+ export declare const map: (list: V, as: string, value: V) => V<unknown[]>;
169
+ export declare const any: (list: V) => V<boolean>;
170
+ export declare const member: (value: V, literals: JSONValue[]) => V<boolean>;
171
+ export declare const concat: (...lists: V[]) => V<unknown[]>;
172
+ export declare const scope: (name: string) => V<any>;
173
+ export declare const incoming: V<any>;
174
+ export declare const isType: (value: V, ...types: string[]) => V<boolean>;
175
+ export declare const attributes: (node: V) => V<unknown[]>;
176
+ export declare const attr: (node: V, name: string) => V<unknown[]>;
177
+ export declare const hasAttribute: (node: V, name: string) => V<boolean>;
178
+ export declare const staticAttribute: (node: V, name: string) => V<any>;
179
+ export declare const seq: <Fs extends readonly Form[]>(...items: Fs) => Wrote<Fs>;
180
+ export declare const choice: <Fs extends readonly Form[]>(...alternatives: Fs) => Wrote<Fs>;
181
+ export declare const optional: <F extends Form>(form: F) => F;
182
+ export declare const read: <R extends Reader, N extends string = never>(reader: R, into?: Slot<N>, input?: V) => Form<Write<N, Kind<R>>>;
183
+ export declare const emit: <N extends string>(into: Slot<N>, value: V) => Form<Write<N, 'value'>>;
184
+ export declare const token: (text: string, tight?: boolean) => Form<Write<never, "token">>;
185
+ export declare const space: () => Form<Write<never, "space">>;
186
+ export declare const test: (value: V<boolean>) => Form<Write<never, "test">>;
187
+ export declare const call: <N extends string = never>(name: string, into?: Slot<N>) => Form<Write<N, "rule">>;
188
+ export declare const js: <E extends JS, N extends string = never>(entry: E, into?: Slot<N>, input?: V, boundary?: 'last-shared-word') => Form<Write<N, E>>;
189
+ export declare const repeat: <N extends string>(build: (r: {
190
+ readonly item: Slot<'item'>;
191
+ }) => Form, into: Slot<N>, value?: V, min?: number, max?: number | null) => Form<Write<N, 'repeat'>>;
192
+ export declare const many: <N extends string>(name: string, into: Slot<N>, min: number, max: number | null) => Form<Write<N, "repeat">>;
193
+ export declare const region: <const Id extends string, F extends string>(id: Id, parent: V, covers: readonly (Slot<F> | Expr)[] | Expr, kind?: Region<Id, F>['kind'], when?: V<boolean>) => Region<Id, F>;
194
+ export declare const declare: <N extends string, const R extends string | Expr>(patterns: readonly Slot<N>[] | Expr, into: R, kind?: 'pattern' | 'param') => Declare<N, R>;
195
+ export declare class Rule<Type extends string, S extends Schema, L extends readonly string[], W, R extends string> {
196
+ #private;
197
+ readonly [out]: {
198
+ type: Type;
199
+ fields: S;
200
+ writes: W;
201
+ };
202
+ constructor(type: Type, fields: S, locals: L);
203
+ form<W2 extends Write<Names<S, L>, string>>(build: (f: Slots<S, L>) => Form<W2>): Rule<Type, S, L, W2, R>;
204
+ regions<const Rs extends readonly Region<string, Names<S, L>>[]>(build: (f: Slots<S, L>) => Rs): Rule<Type, S, L, W, R | Rs[number]['id']>;
205
+ declares(build: (f: Slots<S, L>) => readonly Declare<Bindable<W>, R | 'incoming' | Expr>[]): this;
206
+ span(policy: RuleData['span']): this;
207
+ toJSON(): RuleData;
208
+ }
209
+ export declare const rule: <const Type extends string, const S extends Schema, const L extends readonly string[] = []>(type: Type, fields: S, locals?: L) => Rule<Type, S, L, never, never>;
210
+ interface Nodes {
211
+ expression: import('estree').Expression;
212
+ assignmentExpression: import('estree').Expression;
213
+ pattern: import('estree').Pattern;
214
+ bindingIdentifier: import('estree').Identifier;
215
+ identifierReference: import('estree').Identifier;
216
+ params: import('estree').Pattern[];
217
+ statement: import('estree').Statement;
218
+ program: import('estree').Program;
219
+ }
220
+ type Kinds<W, N> = W extends Write<infer M, infer K> ? ([M] extends [never] ? never : M extends N ? K : never) : never;
221
+ type Node<W, N> = Kinds<W, N> extends infer K ? (K extends keyof Nodes ? Nodes[K] : unknown) : never;
222
+ /** The node a rule produces: `null` fields are required and nullable, `omit` fields optional. */
223
+ export type Infer<Rl extends {
224
+ readonly [out]: {
225
+ type: string;
226
+ fields: Schema;
227
+ writes: unknown;
228
+ };
229
+ }> = {
230
+ type: Rl[typeof out]['type'];
231
+ start: number;
232
+ end: number;
233
+ } & {
234
+ [N in keyof Rl[typeof out]['fields'] as Rl[typeof out]['fields'][N] extends 'null' ? N : never]: Node<Rl[typeof out]['writes'], N> | null;
235
+ } & {
236
+ [N in keyof Rl[typeof out]['fields'] as Rl[typeof out]['fields'][N] extends 'omit' ? N : never]?: Node<Rl[typeof out]['writes'], N>;
237
+ };
238
+ export {};
package/plan.js ADDED
@@ -0,0 +1,83 @@
1
+ // Authoring a host plan: data for `Plan::read` in Rust, typed so that a misuse fails to compile.
2
+ // `plan.js` and `plan.d.ts` are emitted from this file.
3
+ const data = (value) => value;
4
+ // the name rides along for `into`, hidden from JSON because Rust's reader knows only op/base/path
5
+ const slot = (base, name) => data(Object.defineProperty({ op: 'get', base, path: [name] }, 'name', { value: name }));
6
+ const list = (value) => (Array.isArray(value) ? array(...value) : value);
7
+ export const constant = (value) => data({ op: 'constant', value });
8
+ export const get = (base, ...path) => data({ op: 'get', base, path });
9
+ export const equal = (left, right) => data({ op: 'compare', relation: 'equal', left, right });
10
+ export const less = (left, right) => data({ op: 'compare', relation: 'less', left, right });
11
+ export const present = (left) => data({ op: 'compare', relation: 'present', left });
12
+ export const choose = (condition, yes, no) => data({ op: 'choose', condition, yes, no });
13
+ export const flatMap = (list, as, body) => data({ op: 'flatMap', list, as, body });
14
+ export const length = (list) => data({ op: 'length', list });
15
+ export const at = (list, index) => data({ op: 'at', list, index: constant(index) });
16
+ export const array = (...items) => data({ op: 'construct', shape: 'array', items });
17
+ export const record = (type, fields, span = constant(null)) => data({ op: 'construct', shape: 'record', type, fields, span });
18
+ export const not = (p) => choose(p, constant(false), constant(true));
19
+ export const and = (a, b) => choose(a, b, constant(false));
20
+ export const or = (a, b) => choose(a, constant(true), b);
21
+ export const filter = (list, as, predicate) => flatMap(list, as, choose(predicate, array(get(as)), array()));
22
+ export const map = (list, as, value) => flatMap(list, as, array(value));
23
+ export const any = (list) => less(constant(0), length(list));
24
+ export const member = (value, literals) => any(filter(constant(literals), '$candidate', equal(get('$candidate'), value)));
25
+ export const concat = (...lists) => flatMap(array(...lists), '$list', get('$list'));
26
+ export const scope = (name) => get('scopes', name);
27
+ export const incoming = get('incoming');
28
+ export const isType = (value, ...types) => member(get(value, 'type'), types);
29
+ export const attributes = (node) => choose(present(get(node, 'header', 'attributes')), get(node, 'header', 'attributes'), array());
30
+ export const attr = (node, name) => filter(attributes(node), '$attribute', and(equal(get('$attribute', 'kind'), constant('ordinary')), equal(get('$attribute', 'name'), constant(name))));
31
+ export const hasAttribute = (node, name) => any(attr(node, name));
32
+ export const staticAttribute = (node, name) => get(at(attr(node, name), 0), 'staticText');
33
+ export const seq = (...items) => data({ op: 'seq', items });
34
+ export const choice = (...alternatives) => data({ op: 'choice', alternatives });
35
+ export const optional = (form) => data(choice(form, seq()));
36
+ export const read = (reader, into, input) => data({ op: 'read', reader, ...(into && { into: into.name }), ...(input && { input }) });
37
+ export const emit = (into, value) => data({ op: 'emit', into: into.name, value });
38
+ export const token = (text, tight = false) => read({ kind: 'token', text, gap: tight ? 'none' : 'space*', word: /[A-Za-z0-9_]$/.test(text) });
39
+ export const space = () => read({ kind: 'space', min: 1 });
40
+ export const test = (value) => read({ kind: 'test', value });
41
+ export const call = (name, into) => read({ kind: 'rule', name }, into);
42
+ export const js = (entry, into, input, boundary) => read({ kind: 'javascript', entry, ...(boundary && { boundary }) }, into, input);
43
+ const item = slot('iteration', 'item');
44
+ export const repeat = (build, into, value = item, min = 0, max = null) => data({ op: 'repeat', body: build({ item }), min, max, locals: ['item'], yield: value, into: into.name });
45
+ export const many = (name, into, min, max) => repeat((r) => call(name, r.item), into, item, min, max);
46
+ export const region = (id, parent, covers, kind = 'fragment', when) => data({ id, parent, kind, covers: list(covers), ...(when && { when }) });
47
+ export const declare = (patterns, into, kind = 'pattern') => data({
48
+ patterns: list(patterns),
49
+ into: typeof into === 'string' ? (into === 'incoming' ? incoming : scope(into)) : into,
50
+ kind,
51
+ });
52
+ // a chain, not one call with an options object: TypeScript fixes W before a deferred form callback runs
53
+ export class Rule {
54
+ #data;
55
+ #slots;
56
+ constructor(type, fields, locals) {
57
+ this.#data = { type, fields, ...(locals.length && { locals: [...locals] }), form: seq() };
58
+ this.#slots = data(Object.fromEntries([
59
+ ...Object.keys(fields).map((name) => [name, slot('record', name)]),
60
+ ...locals.map((name) => [name, slot('locals', name)]),
61
+ ]));
62
+ }
63
+ form(build) {
64
+ this.#data.form = build(this.#slots);
65
+ return data(this);
66
+ }
67
+ regions(build) {
68
+ this.#data.regions = [...(this.#data.regions ?? []), ...build(this.#slots)];
69
+ return data(this);
70
+ }
71
+ declares(build) {
72
+ this.#data.declares = [...(this.#data.declares ?? []), ...build(this.#slots)];
73
+ return this;
74
+ }
75
+ span(policy) {
76
+ this.#data.span = policy;
77
+ return this;
78
+ }
79
+ toJSON() {
80
+ return this.#data;
81
+ }
82
+ }
83
+ export const rule = (type, fields, locals) => new Rule(type, fields, locals ?? data([]));
package/teasel.wasm CHANGED
Binary file
package/wasm.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './index.js';