agent-sanitizer 2.0.0
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/LICENSE +202 -0
- package/README.md +217 -0
- package/SECURITY.md +31 -0
- package/THREAT-MODEL.md +173 -0
- package/bin/sanitize-cli.mjs +423 -0
- package/package.json +157 -0
- package/src/cf-charset.mjs +43 -0
- package/src/confusables.mjs +199 -0
- package/src/gates.mjs +71 -0
- package/src/html.mjs +2233 -0
- package/src/index.mjs +166 -0
- package/src/instructions.mjs +530 -0
- package/src/invisible.mjs +976 -0
- package/src/joining-type.mjs +616 -0
- package/src/layer1.mjs +177 -0
- package/src/output.mjs +788 -0
- package/src/prompt.mjs +154 -0
- package/src/rehydrate.mjs +646 -0
- package/src/standardized-variants.mjs +1335 -0
- package/src/view-map.mjs +354 -0
- package/types/cf-charset.d.mts +14 -0
- package/types/confusables.d.mts +85 -0
- package/types/gates.d.mts +37 -0
- package/types/html.d.mts +117 -0
- package/types/index.d.mts +33 -0
- package/types/instructions.d.mts +137 -0
- package/types/invisible.d.mts +98 -0
- package/types/joining-type.d.mts +22 -0
- package/types/layer1.d.mts +35 -0
- package/types/output.d.mts +195 -0
- package/types/prompt.d.mts +28 -0
- package/types/rehydrate.d.mts +54 -0
- package/types/standardized-variants.d.mts +22 -0
- package/types/view-map.d.mts +170 -0
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by scripts/gen-joining-type.mjs from ucd-full@17.0.0 — DO NOT EDIT.
|
|
3
|
+
*
|
|
4
|
+
* Unicode Joining_Type and Indic virama range tables backing the ZWNJ/ZWJ
|
|
5
|
+
* carve-out in invisible.mjs. Regenerate with `pnpm gen:joining-type`;
|
|
6
|
+
* test/joining-type.test.mjs fails if this drifts from the pinned UCD.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const UNICODE_VERSION = "17.0.0";
|
|
10
|
+
|
|
11
|
+
// The two range tables below are GENERATED UCD data, not hand-written logic.
|
|
12
|
+
// Their correctness is pinned by the SSOT round-trip in
|
|
13
|
+
// test/joining-type.test.mjs (re-derive from the vendored slices, then assert
|
|
14
|
+
// every covered code point and range boundary matches) — a far stronger and
|
|
15
|
+
// faster guard than mutation. Mutating ~550 numeric literals is pathologically
|
|
16
|
+
// slow (the shard was cancelled at ~19 min) and redundant, so Stryker skips
|
|
17
|
+
// them; the lookup logic below is still mutated normally.
|
|
18
|
+
// Stryker disable all
|
|
19
|
+
// [start, end, Joining_Type] sorted by start, non-overlapping. Types present:
|
|
20
|
+
// C (join-causing), D (dual), R (right), L (left), T (transparent). Any code
|
|
21
|
+
// point absent here has Joining_Type U (non-joining) — the default.
|
|
22
|
+
/** @type {Array<[number, number, string]>} */
|
|
23
|
+
const JOINING_RANGES = [
|
|
24
|
+
[0xad, 0xad, "T"],
|
|
25
|
+
[0x300, 0x36f, "T"],
|
|
26
|
+
[0x483, 0x489, "T"],
|
|
27
|
+
[0x591, 0x5bd, "T"],
|
|
28
|
+
[0x5bf, 0x5bf, "T"],
|
|
29
|
+
[0x5c1, 0x5c2, "T"],
|
|
30
|
+
[0x5c4, 0x5c5, "T"],
|
|
31
|
+
[0x5c7, 0x5c7, "T"],
|
|
32
|
+
[0x610, 0x61a, "T"],
|
|
33
|
+
[0x61c, 0x61c, "T"],
|
|
34
|
+
[0x620, 0x620, "D"],
|
|
35
|
+
[0x622, 0x625, "R"],
|
|
36
|
+
[0x626, 0x626, "D"],
|
|
37
|
+
[0x627, 0x627, "R"],
|
|
38
|
+
[0x628, 0x628, "D"],
|
|
39
|
+
[0x629, 0x629, "R"],
|
|
40
|
+
[0x62a, 0x62e, "D"],
|
|
41
|
+
[0x62f, 0x632, "R"],
|
|
42
|
+
[0x633, 0x63f, "D"],
|
|
43
|
+
[0x640, 0x640, "C"],
|
|
44
|
+
[0x641, 0x647, "D"],
|
|
45
|
+
[0x648, 0x648, "R"],
|
|
46
|
+
[0x649, 0x64a, "D"],
|
|
47
|
+
[0x64b, 0x65f, "T"],
|
|
48
|
+
[0x66e, 0x66f, "D"],
|
|
49
|
+
[0x670, 0x670, "T"],
|
|
50
|
+
[0x671, 0x673, "R"],
|
|
51
|
+
[0x675, 0x677, "R"],
|
|
52
|
+
[0x678, 0x687, "D"],
|
|
53
|
+
[0x688, 0x699, "R"],
|
|
54
|
+
[0x69a, 0x6bf, "D"],
|
|
55
|
+
[0x6c0, 0x6c0, "R"],
|
|
56
|
+
[0x6c1, 0x6c2, "D"],
|
|
57
|
+
[0x6c3, 0x6cb, "R"],
|
|
58
|
+
[0x6cc, 0x6cc, "D"],
|
|
59
|
+
[0x6cd, 0x6cd, "R"],
|
|
60
|
+
[0x6ce, 0x6ce, "D"],
|
|
61
|
+
[0x6cf, 0x6cf, "R"],
|
|
62
|
+
[0x6d0, 0x6d1, "D"],
|
|
63
|
+
[0x6d2, 0x6d3, "R"],
|
|
64
|
+
[0x6d5, 0x6d5, "R"],
|
|
65
|
+
[0x6d6, 0x6dc, "T"],
|
|
66
|
+
[0x6df, 0x6e4, "T"],
|
|
67
|
+
[0x6e7, 0x6e8, "T"],
|
|
68
|
+
[0x6ea, 0x6ed, "T"],
|
|
69
|
+
[0x6ee, 0x6ef, "R"],
|
|
70
|
+
[0x6fa, 0x6fc, "D"],
|
|
71
|
+
[0x6ff, 0x6ff, "D"],
|
|
72
|
+
[0x70f, 0x70f, "T"],
|
|
73
|
+
[0x710, 0x710, "R"],
|
|
74
|
+
[0x711, 0x711, "T"],
|
|
75
|
+
[0x712, 0x714, "D"],
|
|
76
|
+
[0x715, 0x719, "R"],
|
|
77
|
+
[0x71a, 0x71d, "D"],
|
|
78
|
+
[0x71e, 0x71e, "R"],
|
|
79
|
+
[0x71f, 0x727, "D"],
|
|
80
|
+
[0x728, 0x728, "R"],
|
|
81
|
+
[0x729, 0x729, "D"],
|
|
82
|
+
[0x72a, 0x72a, "R"],
|
|
83
|
+
[0x72b, 0x72b, "D"],
|
|
84
|
+
[0x72c, 0x72c, "R"],
|
|
85
|
+
[0x72d, 0x72e, "D"],
|
|
86
|
+
[0x72f, 0x72f, "R"],
|
|
87
|
+
[0x730, 0x74a, "T"],
|
|
88
|
+
[0x74d, 0x74d, "R"],
|
|
89
|
+
[0x74e, 0x758, "D"],
|
|
90
|
+
[0x759, 0x75b, "R"],
|
|
91
|
+
[0x75c, 0x76a, "D"],
|
|
92
|
+
[0x76b, 0x76c, "R"],
|
|
93
|
+
[0x76d, 0x770, "D"],
|
|
94
|
+
[0x771, 0x771, "R"],
|
|
95
|
+
[0x772, 0x772, "D"],
|
|
96
|
+
[0x773, 0x774, "R"],
|
|
97
|
+
[0x775, 0x777, "D"],
|
|
98
|
+
[0x778, 0x779, "R"],
|
|
99
|
+
[0x77a, 0x77f, "D"],
|
|
100
|
+
[0x7a6, 0x7b0, "T"],
|
|
101
|
+
[0x7ca, 0x7ea, "D"],
|
|
102
|
+
[0x7eb, 0x7f3, "T"],
|
|
103
|
+
[0x7fa, 0x7fa, "C"],
|
|
104
|
+
[0x7fd, 0x7fd, "T"],
|
|
105
|
+
[0x816, 0x819, "T"],
|
|
106
|
+
[0x81b, 0x823, "T"],
|
|
107
|
+
[0x825, 0x827, "T"],
|
|
108
|
+
[0x829, 0x82d, "T"],
|
|
109
|
+
[0x840, 0x840, "R"],
|
|
110
|
+
[0x841, 0x845, "D"],
|
|
111
|
+
[0x846, 0x847, "R"],
|
|
112
|
+
[0x848, 0x848, "D"],
|
|
113
|
+
[0x849, 0x849, "R"],
|
|
114
|
+
[0x84a, 0x853, "D"],
|
|
115
|
+
[0x854, 0x854, "R"],
|
|
116
|
+
[0x855, 0x855, "D"],
|
|
117
|
+
[0x856, 0x858, "R"],
|
|
118
|
+
[0x859, 0x85b, "T"],
|
|
119
|
+
[0x860, 0x860, "D"],
|
|
120
|
+
[0x862, 0x865, "D"],
|
|
121
|
+
[0x867, 0x867, "R"],
|
|
122
|
+
[0x868, 0x868, "D"],
|
|
123
|
+
[0x869, 0x86a, "R"],
|
|
124
|
+
[0x870, 0x882, "R"],
|
|
125
|
+
[0x883, 0x885, "C"],
|
|
126
|
+
[0x886, 0x886, "D"],
|
|
127
|
+
[0x889, 0x88d, "D"],
|
|
128
|
+
[0x88e, 0x88e, "R"],
|
|
129
|
+
[0x897, 0x89f, "T"],
|
|
130
|
+
[0x8a0, 0x8a9, "D"],
|
|
131
|
+
[0x8aa, 0x8ac, "R"],
|
|
132
|
+
[0x8ae, 0x8ae, "R"],
|
|
133
|
+
[0x8af, 0x8b0, "D"],
|
|
134
|
+
[0x8b1, 0x8b2, "R"],
|
|
135
|
+
[0x8b3, 0x8b8, "D"],
|
|
136
|
+
[0x8b9, 0x8b9, "R"],
|
|
137
|
+
[0x8ba, 0x8c8, "D"],
|
|
138
|
+
[0x8ca, 0x8e1, "T"],
|
|
139
|
+
[0x8e3, 0x902, "T"],
|
|
140
|
+
[0x93a, 0x93a, "T"],
|
|
141
|
+
[0x93c, 0x93c, "T"],
|
|
142
|
+
[0x941, 0x948, "T"],
|
|
143
|
+
[0x94d, 0x94d, "T"],
|
|
144
|
+
[0x951, 0x957, "T"],
|
|
145
|
+
[0x962, 0x963, "T"],
|
|
146
|
+
[0x981, 0x981, "T"],
|
|
147
|
+
[0x9bc, 0x9bc, "T"],
|
|
148
|
+
[0x9c1, 0x9c4, "T"],
|
|
149
|
+
[0x9cd, 0x9cd, "T"],
|
|
150
|
+
[0x9e2, 0x9e3, "T"],
|
|
151
|
+
[0x9fe, 0x9fe, "T"],
|
|
152
|
+
[0xa01, 0xa02, "T"],
|
|
153
|
+
[0xa3c, 0xa3c, "T"],
|
|
154
|
+
[0xa41, 0xa42, "T"],
|
|
155
|
+
[0xa47, 0xa48, "T"],
|
|
156
|
+
[0xa4b, 0xa4d, "T"],
|
|
157
|
+
[0xa51, 0xa51, "T"],
|
|
158
|
+
[0xa70, 0xa71, "T"],
|
|
159
|
+
[0xa75, 0xa75, "T"],
|
|
160
|
+
[0xa81, 0xa82, "T"],
|
|
161
|
+
[0xabc, 0xabc, "T"],
|
|
162
|
+
[0xac1, 0xac5, "T"],
|
|
163
|
+
[0xac7, 0xac8, "T"],
|
|
164
|
+
[0xacd, 0xacd, "T"],
|
|
165
|
+
[0xae2, 0xae3, "T"],
|
|
166
|
+
[0xafa, 0xaff, "T"],
|
|
167
|
+
[0xb01, 0xb01, "T"],
|
|
168
|
+
[0xb3c, 0xb3c, "T"],
|
|
169
|
+
[0xb3f, 0xb3f, "T"],
|
|
170
|
+
[0xb41, 0xb44, "T"],
|
|
171
|
+
[0xb4d, 0xb4d, "T"],
|
|
172
|
+
[0xb55, 0xb56, "T"],
|
|
173
|
+
[0xb62, 0xb63, "T"],
|
|
174
|
+
[0xb82, 0xb82, "T"],
|
|
175
|
+
[0xbc0, 0xbc0, "T"],
|
|
176
|
+
[0xbcd, 0xbcd, "T"],
|
|
177
|
+
[0xc00, 0xc00, "T"],
|
|
178
|
+
[0xc04, 0xc04, "T"],
|
|
179
|
+
[0xc3c, 0xc3c, "T"],
|
|
180
|
+
[0xc3e, 0xc40, "T"],
|
|
181
|
+
[0xc46, 0xc48, "T"],
|
|
182
|
+
[0xc4a, 0xc4d, "T"],
|
|
183
|
+
[0xc55, 0xc56, "T"],
|
|
184
|
+
[0xc62, 0xc63, "T"],
|
|
185
|
+
[0xc81, 0xc81, "T"],
|
|
186
|
+
[0xcbc, 0xcbc, "T"],
|
|
187
|
+
[0xcbf, 0xcbf, "T"],
|
|
188
|
+
[0xcc6, 0xcc6, "T"],
|
|
189
|
+
[0xccc, 0xccd, "T"],
|
|
190
|
+
[0xce2, 0xce3, "T"],
|
|
191
|
+
[0xd00, 0xd01, "T"],
|
|
192
|
+
[0xd3b, 0xd3c, "T"],
|
|
193
|
+
[0xd41, 0xd44, "T"],
|
|
194
|
+
[0xd4d, 0xd4d, "T"],
|
|
195
|
+
[0xd62, 0xd63, "T"],
|
|
196
|
+
[0xd81, 0xd81, "T"],
|
|
197
|
+
[0xdca, 0xdca, "T"],
|
|
198
|
+
[0xdd2, 0xdd4, "T"],
|
|
199
|
+
[0xdd6, 0xdd6, "T"],
|
|
200
|
+
[0xe31, 0xe31, "T"],
|
|
201
|
+
[0xe34, 0xe3a, "T"],
|
|
202
|
+
[0xe47, 0xe4e, "T"],
|
|
203
|
+
[0xeb1, 0xeb1, "T"],
|
|
204
|
+
[0xeb4, 0xebc, "T"],
|
|
205
|
+
[0xec8, 0xece, "T"],
|
|
206
|
+
[0xf18, 0xf19, "T"],
|
|
207
|
+
[0xf35, 0xf35, "T"],
|
|
208
|
+
[0xf37, 0xf37, "T"],
|
|
209
|
+
[0xf39, 0xf39, "T"],
|
|
210
|
+
[0xf71, 0xf7e, "T"],
|
|
211
|
+
[0xf80, 0xf84, "T"],
|
|
212
|
+
[0xf86, 0xf87, "T"],
|
|
213
|
+
[0xf8d, 0xf97, "T"],
|
|
214
|
+
[0xf99, 0xfbc, "T"],
|
|
215
|
+
[0xfc6, 0xfc6, "T"],
|
|
216
|
+
[0x102d, 0x1030, "T"],
|
|
217
|
+
[0x1032, 0x1037, "T"],
|
|
218
|
+
[0x1039, 0x103a, "T"],
|
|
219
|
+
[0x103d, 0x103e, "T"],
|
|
220
|
+
[0x1058, 0x1059, "T"],
|
|
221
|
+
[0x105e, 0x1060, "T"],
|
|
222
|
+
[0x1071, 0x1074, "T"],
|
|
223
|
+
[0x1082, 0x1082, "T"],
|
|
224
|
+
[0x1085, 0x1086, "T"],
|
|
225
|
+
[0x108d, 0x108d, "T"],
|
|
226
|
+
[0x109d, 0x109d, "T"],
|
|
227
|
+
[0x135d, 0x135f, "T"],
|
|
228
|
+
[0x1712, 0x1714, "T"],
|
|
229
|
+
[0x1732, 0x1733, "T"],
|
|
230
|
+
[0x1752, 0x1753, "T"],
|
|
231
|
+
[0x1772, 0x1773, "T"],
|
|
232
|
+
[0x17b4, 0x17b5, "T"],
|
|
233
|
+
[0x17b7, 0x17bd, "T"],
|
|
234
|
+
[0x17c6, 0x17c6, "T"],
|
|
235
|
+
[0x17c9, 0x17d3, "T"],
|
|
236
|
+
[0x17dd, 0x17dd, "T"],
|
|
237
|
+
[0x1807, 0x1807, "D"],
|
|
238
|
+
[0x180a, 0x180a, "C"],
|
|
239
|
+
[0x180b, 0x180d, "T"],
|
|
240
|
+
[0x180f, 0x180f, "T"],
|
|
241
|
+
[0x1820, 0x1878, "D"],
|
|
242
|
+
[0x1885, 0x1886, "T"],
|
|
243
|
+
[0x1887, 0x18a8, "D"],
|
|
244
|
+
[0x18a9, 0x18a9, "T"],
|
|
245
|
+
[0x18aa, 0x18aa, "D"],
|
|
246
|
+
[0x1920, 0x1922, "T"],
|
|
247
|
+
[0x1927, 0x1928, "T"],
|
|
248
|
+
[0x1932, 0x1932, "T"],
|
|
249
|
+
[0x1939, 0x193b, "T"],
|
|
250
|
+
[0x1a17, 0x1a18, "T"],
|
|
251
|
+
[0x1a1b, 0x1a1b, "T"],
|
|
252
|
+
[0x1a56, 0x1a56, "T"],
|
|
253
|
+
[0x1a58, 0x1a5e, "T"],
|
|
254
|
+
[0x1a60, 0x1a60, "T"],
|
|
255
|
+
[0x1a62, 0x1a62, "T"],
|
|
256
|
+
[0x1a65, 0x1a6c, "T"],
|
|
257
|
+
[0x1a73, 0x1a7c, "T"],
|
|
258
|
+
[0x1a7f, 0x1a7f, "T"],
|
|
259
|
+
[0x1ab0, 0x1ace, "T"],
|
|
260
|
+
[0x1b00, 0x1b03, "T"],
|
|
261
|
+
[0x1b34, 0x1b34, "T"],
|
|
262
|
+
[0x1b36, 0x1b3a, "T"],
|
|
263
|
+
[0x1b3c, 0x1b3c, "T"],
|
|
264
|
+
[0x1b42, 0x1b42, "T"],
|
|
265
|
+
[0x1b6b, 0x1b73, "T"],
|
|
266
|
+
[0x1b80, 0x1b81, "T"],
|
|
267
|
+
[0x1ba2, 0x1ba5, "T"],
|
|
268
|
+
[0x1ba8, 0x1ba9, "T"],
|
|
269
|
+
[0x1bab, 0x1bad, "T"],
|
|
270
|
+
[0x1be6, 0x1be6, "T"],
|
|
271
|
+
[0x1be8, 0x1be9, "T"],
|
|
272
|
+
[0x1bed, 0x1bed, "T"],
|
|
273
|
+
[0x1bef, 0x1bf1, "T"],
|
|
274
|
+
[0x1c2c, 0x1c33, "T"],
|
|
275
|
+
[0x1c36, 0x1c37, "T"],
|
|
276
|
+
[0x1cd0, 0x1cd2, "T"],
|
|
277
|
+
[0x1cd4, 0x1ce0, "T"],
|
|
278
|
+
[0x1ce2, 0x1ce8, "T"],
|
|
279
|
+
[0x1ced, 0x1ced, "T"],
|
|
280
|
+
[0x1cf4, 0x1cf4, "T"],
|
|
281
|
+
[0x1cf8, 0x1cf9, "T"],
|
|
282
|
+
[0x1dc0, 0x1dff, "T"],
|
|
283
|
+
[0x200b, 0x200b, "T"],
|
|
284
|
+
[0x200d, 0x200d, "C"],
|
|
285
|
+
[0x200e, 0x200f, "T"],
|
|
286
|
+
[0x202a, 0x202e, "T"],
|
|
287
|
+
[0x2060, 0x2064, "T"],
|
|
288
|
+
[0x206a, 0x206f, "T"],
|
|
289
|
+
[0x20d0, 0x20f0, "T"],
|
|
290
|
+
[0x2cef, 0x2cf1, "T"],
|
|
291
|
+
[0x2d7f, 0x2d7f, "T"],
|
|
292
|
+
[0x2de0, 0x2dff, "T"],
|
|
293
|
+
[0x302a, 0x302d, "T"],
|
|
294
|
+
[0x3099, 0x309a, "T"],
|
|
295
|
+
[0xa66f, 0xa672, "T"],
|
|
296
|
+
[0xa674, 0xa67d, "T"],
|
|
297
|
+
[0xa69e, 0xa69f, "T"],
|
|
298
|
+
[0xa6f0, 0xa6f1, "T"],
|
|
299
|
+
[0xa802, 0xa802, "T"],
|
|
300
|
+
[0xa806, 0xa806, "T"],
|
|
301
|
+
[0xa80b, 0xa80b, "T"],
|
|
302
|
+
[0xa825, 0xa826, "T"],
|
|
303
|
+
[0xa82c, 0xa82c, "T"],
|
|
304
|
+
[0xa840, 0xa871, "D"],
|
|
305
|
+
[0xa872, 0xa872, "L"],
|
|
306
|
+
[0xa8c4, 0xa8c5, "T"],
|
|
307
|
+
[0xa8e0, 0xa8f1, "T"],
|
|
308
|
+
[0xa8ff, 0xa8ff, "T"],
|
|
309
|
+
[0xa926, 0xa92d, "T"],
|
|
310
|
+
[0xa947, 0xa951, "T"],
|
|
311
|
+
[0xa980, 0xa982, "T"],
|
|
312
|
+
[0xa9b3, 0xa9b3, "T"],
|
|
313
|
+
[0xa9b6, 0xa9b9, "T"],
|
|
314
|
+
[0xa9bc, 0xa9bd, "T"],
|
|
315
|
+
[0xa9e5, 0xa9e5, "T"],
|
|
316
|
+
[0xaa29, 0xaa2e, "T"],
|
|
317
|
+
[0xaa31, 0xaa32, "T"],
|
|
318
|
+
[0xaa35, 0xaa36, "T"],
|
|
319
|
+
[0xaa43, 0xaa43, "T"],
|
|
320
|
+
[0xaa4c, 0xaa4c, "T"],
|
|
321
|
+
[0xaa7c, 0xaa7c, "T"],
|
|
322
|
+
[0xaab0, 0xaab0, "T"],
|
|
323
|
+
[0xaab2, 0xaab4, "T"],
|
|
324
|
+
[0xaab7, 0xaab8, "T"],
|
|
325
|
+
[0xaabe, 0xaabf, "T"],
|
|
326
|
+
[0xaac1, 0xaac1, "T"],
|
|
327
|
+
[0xaaec, 0xaaed, "T"],
|
|
328
|
+
[0xaaf6, 0xaaf6, "T"],
|
|
329
|
+
[0xabe5, 0xabe5, "T"],
|
|
330
|
+
[0xabe8, 0xabe8, "T"],
|
|
331
|
+
[0xabed, 0xabed, "T"],
|
|
332
|
+
[0xfb1e, 0xfb1e, "T"],
|
|
333
|
+
[0xfe00, 0xfe0f, "T"],
|
|
334
|
+
[0xfe20, 0xfe2f, "T"],
|
|
335
|
+
[0xfeff, 0xfeff, "T"],
|
|
336
|
+
[0xfff9, 0xfffb, "T"],
|
|
337
|
+
[0x101fd, 0x101fd, "T"],
|
|
338
|
+
[0x102e0, 0x102e0, "T"],
|
|
339
|
+
[0x10376, 0x1037a, "T"],
|
|
340
|
+
[0x10a01, 0x10a03, "T"],
|
|
341
|
+
[0x10a05, 0x10a06, "T"],
|
|
342
|
+
[0x10a0c, 0x10a0f, "T"],
|
|
343
|
+
[0x10a38, 0x10a3a, "T"],
|
|
344
|
+
[0x10a3f, 0x10a3f, "T"],
|
|
345
|
+
[0x10ac0, 0x10ac4, "D"],
|
|
346
|
+
[0x10ac5, 0x10ac5, "R"],
|
|
347
|
+
[0x10ac7, 0x10ac7, "R"],
|
|
348
|
+
[0x10ac9, 0x10aca, "R"],
|
|
349
|
+
[0x10acd, 0x10acd, "L"],
|
|
350
|
+
[0x10ace, 0x10ad2, "R"],
|
|
351
|
+
[0x10ad3, 0x10ad6, "D"],
|
|
352
|
+
[0x10ad7, 0x10ad7, "L"],
|
|
353
|
+
[0x10ad8, 0x10adc, "D"],
|
|
354
|
+
[0x10add, 0x10add, "R"],
|
|
355
|
+
[0x10ade, 0x10ae0, "D"],
|
|
356
|
+
[0x10ae1, 0x10ae1, "R"],
|
|
357
|
+
[0x10ae4, 0x10ae4, "R"],
|
|
358
|
+
[0x10ae5, 0x10ae6, "T"],
|
|
359
|
+
[0x10aeb, 0x10aee, "D"],
|
|
360
|
+
[0x10aef, 0x10aef, "R"],
|
|
361
|
+
[0x10b80, 0x10b80, "D"],
|
|
362
|
+
[0x10b81, 0x10b81, "R"],
|
|
363
|
+
[0x10b82, 0x10b82, "D"],
|
|
364
|
+
[0x10b83, 0x10b85, "R"],
|
|
365
|
+
[0x10b86, 0x10b88, "D"],
|
|
366
|
+
[0x10b89, 0x10b89, "R"],
|
|
367
|
+
[0x10b8a, 0x10b8b, "D"],
|
|
368
|
+
[0x10b8c, 0x10b8c, "R"],
|
|
369
|
+
[0x10b8d, 0x10b8d, "D"],
|
|
370
|
+
[0x10b8e, 0x10b8f, "R"],
|
|
371
|
+
[0x10b90, 0x10b90, "D"],
|
|
372
|
+
[0x10b91, 0x10b91, "R"],
|
|
373
|
+
[0x10ba9, 0x10bac, "R"],
|
|
374
|
+
[0x10bad, 0x10bae, "D"],
|
|
375
|
+
[0x10d00, 0x10d00, "L"],
|
|
376
|
+
[0x10d01, 0x10d21, "D"],
|
|
377
|
+
[0x10d22, 0x10d22, "R"],
|
|
378
|
+
[0x10d23, 0x10d23, "D"],
|
|
379
|
+
[0x10d24, 0x10d27, "T"],
|
|
380
|
+
[0x10d69, 0x10d6d, "T"],
|
|
381
|
+
[0x10eab, 0x10eac, "T"],
|
|
382
|
+
[0x10ec2, 0x10ec2, "R"],
|
|
383
|
+
[0x10ec3, 0x10ec4, "D"],
|
|
384
|
+
[0x10efc, 0x10eff, "T"],
|
|
385
|
+
[0x10f30, 0x10f32, "D"],
|
|
386
|
+
[0x10f33, 0x10f33, "R"],
|
|
387
|
+
[0x10f34, 0x10f44, "D"],
|
|
388
|
+
[0x10f46, 0x10f50, "T"],
|
|
389
|
+
[0x10f51, 0x10f53, "D"],
|
|
390
|
+
[0x10f54, 0x10f54, "R"],
|
|
391
|
+
[0x10f70, 0x10f73, "D"],
|
|
392
|
+
[0x10f74, 0x10f75, "R"],
|
|
393
|
+
[0x10f76, 0x10f81, "D"],
|
|
394
|
+
[0x10f82, 0x10f85, "T"],
|
|
395
|
+
[0x10fb0, 0x10fb0, "D"],
|
|
396
|
+
[0x10fb2, 0x10fb3, "D"],
|
|
397
|
+
[0x10fb4, 0x10fb6, "R"],
|
|
398
|
+
[0x10fb8, 0x10fb8, "D"],
|
|
399
|
+
[0x10fb9, 0x10fba, "R"],
|
|
400
|
+
[0x10fbb, 0x10fbc, "D"],
|
|
401
|
+
[0x10fbd, 0x10fbd, "R"],
|
|
402
|
+
[0x10fbe, 0x10fbf, "D"],
|
|
403
|
+
[0x10fc1, 0x10fc1, "D"],
|
|
404
|
+
[0x10fc2, 0x10fc3, "R"],
|
|
405
|
+
[0x10fc4, 0x10fc4, "D"],
|
|
406
|
+
[0x10fc9, 0x10fc9, "R"],
|
|
407
|
+
[0x10fca, 0x10fca, "D"],
|
|
408
|
+
[0x10fcb, 0x10fcb, "L"],
|
|
409
|
+
[0x11001, 0x11001, "T"],
|
|
410
|
+
[0x11038, 0x11046, "T"],
|
|
411
|
+
[0x11070, 0x11070, "T"],
|
|
412
|
+
[0x11073, 0x11074, "T"],
|
|
413
|
+
[0x1107f, 0x11081, "T"],
|
|
414
|
+
[0x110b3, 0x110b6, "T"],
|
|
415
|
+
[0x110b9, 0x110ba, "T"],
|
|
416
|
+
[0x110c2, 0x110c2, "T"],
|
|
417
|
+
[0x11100, 0x11102, "T"],
|
|
418
|
+
[0x11127, 0x1112b, "T"],
|
|
419
|
+
[0x1112d, 0x11134, "T"],
|
|
420
|
+
[0x11173, 0x11173, "T"],
|
|
421
|
+
[0x11180, 0x11181, "T"],
|
|
422
|
+
[0x111b6, 0x111be, "T"],
|
|
423
|
+
[0x111c9, 0x111cc, "T"],
|
|
424
|
+
[0x111cf, 0x111cf, "T"],
|
|
425
|
+
[0x1122f, 0x11231, "T"],
|
|
426
|
+
[0x11234, 0x11234, "T"],
|
|
427
|
+
[0x11236, 0x11237, "T"],
|
|
428
|
+
[0x1123e, 0x1123e, "T"],
|
|
429
|
+
[0x11241, 0x11241, "T"],
|
|
430
|
+
[0x112df, 0x112df, "T"],
|
|
431
|
+
[0x112e3, 0x112ea, "T"],
|
|
432
|
+
[0x11300, 0x11301, "T"],
|
|
433
|
+
[0x1133b, 0x1133c, "T"],
|
|
434
|
+
[0x11340, 0x11340, "T"],
|
|
435
|
+
[0x11366, 0x1136c, "T"],
|
|
436
|
+
[0x11370, 0x11374, "T"],
|
|
437
|
+
[0x113bb, 0x113c0, "T"],
|
|
438
|
+
[0x113ce, 0x113ce, "T"],
|
|
439
|
+
[0x113d0, 0x113d0, "T"],
|
|
440
|
+
[0x113d2, 0x113d2, "T"],
|
|
441
|
+
[0x113e1, 0x113e2, "T"],
|
|
442
|
+
[0x11438, 0x1143f, "T"],
|
|
443
|
+
[0x11442, 0x11444, "T"],
|
|
444
|
+
[0x11446, 0x11446, "T"],
|
|
445
|
+
[0x1145e, 0x1145e, "T"],
|
|
446
|
+
[0x114b3, 0x114b8, "T"],
|
|
447
|
+
[0x114ba, 0x114ba, "T"],
|
|
448
|
+
[0x114bf, 0x114c0, "T"],
|
|
449
|
+
[0x114c2, 0x114c3, "T"],
|
|
450
|
+
[0x115b2, 0x115b5, "T"],
|
|
451
|
+
[0x115bc, 0x115bd, "T"],
|
|
452
|
+
[0x115bf, 0x115c0, "T"],
|
|
453
|
+
[0x115dc, 0x115dd, "T"],
|
|
454
|
+
[0x11633, 0x1163a, "T"],
|
|
455
|
+
[0x1163d, 0x1163d, "T"],
|
|
456
|
+
[0x1163f, 0x11640, "T"],
|
|
457
|
+
[0x116ab, 0x116ab, "T"],
|
|
458
|
+
[0x116ad, 0x116ad, "T"],
|
|
459
|
+
[0x116b0, 0x116b5, "T"],
|
|
460
|
+
[0x116b7, 0x116b7, "T"],
|
|
461
|
+
[0x1171d, 0x1171d, "T"],
|
|
462
|
+
[0x1171f, 0x1171f, "T"],
|
|
463
|
+
[0x11722, 0x11725, "T"],
|
|
464
|
+
[0x11727, 0x1172b, "T"],
|
|
465
|
+
[0x1182f, 0x11837, "T"],
|
|
466
|
+
[0x11839, 0x1183a, "T"],
|
|
467
|
+
[0x1193b, 0x1193c, "T"],
|
|
468
|
+
[0x1193e, 0x1193e, "T"],
|
|
469
|
+
[0x11943, 0x11943, "T"],
|
|
470
|
+
[0x119d4, 0x119d7, "T"],
|
|
471
|
+
[0x119da, 0x119db, "T"],
|
|
472
|
+
[0x119e0, 0x119e0, "T"],
|
|
473
|
+
[0x11a01, 0x11a0a, "T"],
|
|
474
|
+
[0x11a33, 0x11a38, "T"],
|
|
475
|
+
[0x11a3b, 0x11a3e, "T"],
|
|
476
|
+
[0x11a47, 0x11a47, "T"],
|
|
477
|
+
[0x11a51, 0x11a56, "T"],
|
|
478
|
+
[0x11a59, 0x11a5b, "T"],
|
|
479
|
+
[0x11a8a, 0x11a96, "T"],
|
|
480
|
+
[0x11a98, 0x11a99, "T"],
|
|
481
|
+
[0x11c30, 0x11c36, "T"],
|
|
482
|
+
[0x11c38, 0x11c3d, "T"],
|
|
483
|
+
[0x11c3f, 0x11c3f, "T"],
|
|
484
|
+
[0x11c92, 0x11ca7, "T"],
|
|
485
|
+
[0x11caa, 0x11cb0, "T"],
|
|
486
|
+
[0x11cb2, 0x11cb3, "T"],
|
|
487
|
+
[0x11cb5, 0x11cb6, "T"],
|
|
488
|
+
[0x11d31, 0x11d36, "T"],
|
|
489
|
+
[0x11d3a, 0x11d3a, "T"],
|
|
490
|
+
[0x11d3c, 0x11d3d, "T"],
|
|
491
|
+
[0x11d3f, 0x11d45, "T"],
|
|
492
|
+
[0x11d47, 0x11d47, "T"],
|
|
493
|
+
[0x11d90, 0x11d91, "T"],
|
|
494
|
+
[0x11d95, 0x11d95, "T"],
|
|
495
|
+
[0x11d97, 0x11d97, "T"],
|
|
496
|
+
[0x11ef3, 0x11ef4, "T"],
|
|
497
|
+
[0x11f00, 0x11f01, "T"],
|
|
498
|
+
[0x11f36, 0x11f3a, "T"],
|
|
499
|
+
[0x11f40, 0x11f40, "T"],
|
|
500
|
+
[0x11f42, 0x11f42, "T"],
|
|
501
|
+
[0x11f5a, 0x11f5a, "T"],
|
|
502
|
+
[0x13430, 0x13440, "T"],
|
|
503
|
+
[0x13447, 0x13455, "T"],
|
|
504
|
+
[0x1611e, 0x16129, "T"],
|
|
505
|
+
[0x1612d, 0x1612f, "T"],
|
|
506
|
+
[0x16af0, 0x16af4, "T"],
|
|
507
|
+
[0x16b30, 0x16b36, "T"],
|
|
508
|
+
[0x16f4f, 0x16f4f, "T"],
|
|
509
|
+
[0x16f8f, 0x16f92, "T"],
|
|
510
|
+
[0x16fe4, 0x16fe4, "T"],
|
|
511
|
+
[0x1bc9d, 0x1bc9e, "T"],
|
|
512
|
+
[0x1bca0, 0x1bca3, "T"],
|
|
513
|
+
[0x1cf00, 0x1cf2d, "T"],
|
|
514
|
+
[0x1cf30, 0x1cf46, "T"],
|
|
515
|
+
[0x1d167, 0x1d169, "T"],
|
|
516
|
+
[0x1d173, 0x1d182, "T"],
|
|
517
|
+
[0x1d185, 0x1d18b, "T"],
|
|
518
|
+
[0x1d1aa, 0x1d1ad, "T"],
|
|
519
|
+
[0x1d242, 0x1d244, "T"],
|
|
520
|
+
[0x1da00, 0x1da36, "T"],
|
|
521
|
+
[0x1da3b, 0x1da6c, "T"],
|
|
522
|
+
[0x1da75, 0x1da75, "T"],
|
|
523
|
+
[0x1da84, 0x1da84, "T"],
|
|
524
|
+
[0x1da9b, 0x1da9f, "T"],
|
|
525
|
+
[0x1daa1, 0x1daaf, "T"],
|
|
526
|
+
[0x1e000, 0x1e006, "T"],
|
|
527
|
+
[0x1e008, 0x1e018, "T"],
|
|
528
|
+
[0x1e01b, 0x1e021, "T"],
|
|
529
|
+
[0x1e023, 0x1e024, "T"],
|
|
530
|
+
[0x1e026, 0x1e02a, "T"],
|
|
531
|
+
[0x1e08f, 0x1e08f, "T"],
|
|
532
|
+
[0x1e130, 0x1e136, "T"],
|
|
533
|
+
[0x1e2ae, 0x1e2ae, "T"],
|
|
534
|
+
[0x1e2ec, 0x1e2ef, "T"],
|
|
535
|
+
[0x1e4ec, 0x1e4ef, "T"],
|
|
536
|
+
[0x1e5ee, 0x1e5ef, "T"],
|
|
537
|
+
[0x1e8d0, 0x1e8d6, "T"],
|
|
538
|
+
[0x1e900, 0x1e943, "D"],
|
|
539
|
+
[0x1e944, 0x1e94b, "T"],
|
|
540
|
+
[0xe0001, 0xe0001, "T"],
|
|
541
|
+
[0xe0020, 0xe007f, "T"],
|
|
542
|
+
[0xe0100, 0xe01ef, "T"],
|
|
543
|
+
];
|
|
544
|
+
|
|
545
|
+
// [start, end] Indic_Syllabic_Category = Virama ranges, sorted by start.
|
|
546
|
+
/** @type {Array<[number, number]>} */
|
|
547
|
+
const VIRAMA_RANGES = [
|
|
548
|
+
[0x94d, 0x94d],
|
|
549
|
+
[0x9cd, 0x9cd],
|
|
550
|
+
[0xa4d, 0xa4d],
|
|
551
|
+
[0xacd, 0xacd],
|
|
552
|
+
[0xb4d, 0xb4d],
|
|
553
|
+
[0xbcd, 0xbcd],
|
|
554
|
+
[0xc4d, 0xc4d],
|
|
555
|
+
[0xccd, 0xccd],
|
|
556
|
+
[0xd4d, 0xd4d],
|
|
557
|
+
[0xdca, 0xdca],
|
|
558
|
+
[0x1b44, 0x1b44],
|
|
559
|
+
[0xa806, 0xa806],
|
|
560
|
+
[0xa8c4, 0xa8c4],
|
|
561
|
+
[0xa9c0, 0xa9c0],
|
|
562
|
+
[0x11046, 0x11046],
|
|
563
|
+
[0x110b9, 0x110b9],
|
|
564
|
+
[0x111c0, 0x111c0],
|
|
565
|
+
[0x11235, 0x11235],
|
|
566
|
+
[0x1134d, 0x1134d],
|
|
567
|
+
[0x11442, 0x11442],
|
|
568
|
+
[0x114c2, 0x114c2],
|
|
569
|
+
[0x115bf, 0x115bf],
|
|
570
|
+
[0x1163f, 0x1163f],
|
|
571
|
+
[0x116b6, 0x116b6],
|
|
572
|
+
[0x11839, 0x11839],
|
|
573
|
+
[0x119e0, 0x119e0],
|
|
574
|
+
[0x11c3f, 0x11c3f],
|
|
575
|
+
];
|
|
576
|
+
// Stryker restore all
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Binary search: the tag of the range containing `cp`, or `fallback`.
|
|
580
|
+
* @param {Array<[number, number, string?]>} ranges
|
|
581
|
+
* @param {number} cp
|
|
582
|
+
* @param {string|boolean} fallback
|
|
583
|
+
* @returns {string|boolean}
|
|
584
|
+
*/
|
|
585
|
+
function lookup(ranges, cp, fallback) {
|
|
586
|
+
let lo = 0;
|
|
587
|
+
let hi = ranges.length - 1;
|
|
588
|
+
while (lo <= hi) {
|
|
589
|
+
const mid = (lo + hi) >> 1;
|
|
590
|
+
const [start, end, tag] = ranges[mid];
|
|
591
|
+
if (cp < start) hi = mid - 1;
|
|
592
|
+
else if (cp > end) lo = mid + 1;
|
|
593
|
+
else return tag ?? true;
|
|
594
|
+
}
|
|
595
|
+
return fallback;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* The Unicode Joining_Type of a code point: "C", "D", "R", "L", "T", or "U"
|
|
600
|
+
* (the non-joining default) for anything not in the cursive tables.
|
|
601
|
+
* @param {number} cp
|
|
602
|
+
* @returns {string}
|
|
603
|
+
*/
|
|
604
|
+
export function joiningType(cp) {
|
|
605
|
+
return /** @type {string} */ (lookup(JOINING_RANGES, cp, "U"));
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* True when `cp` is an Indic virama (the only position where a ZWNJ/ZWJ is
|
|
610
|
+
* linguistically meaningful in Brahmic scripts).
|
|
611
|
+
* @param {number} cp
|
|
612
|
+
* @returns {boolean}
|
|
613
|
+
*/
|
|
614
|
+
export function isVirama(cp) {
|
|
615
|
+
return /** @type {boolean} */ (lookup(VIRAMA_RANGES, cp, false));
|
|
616
|
+
}
|