@jigging/jig 0.0.0 → 0.1.0-alpha.2

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.
@@ -0,0 +1,1975 @@
1
+ // @bun
2
+ // src/json.ts
3
+ var JSON_1_LIMITS = Object.freeze({
4
+ bytes: 16777216,
5
+ depth: 128,
6
+ nodes: 262144,
7
+ containerEntries: 65536,
8
+ stringBytes: 8388608,
9
+ memberNameBytes: 1024,
10
+ numberTokenBytes: 128
11
+ });
12
+ var encoder = new TextEncoder;
13
+ var decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
14
+
15
+ class Json1Error extends Error {
16
+ constructor(message) {
17
+ super(message);
18
+ this.name = "Json1Error";
19
+ }
20
+ }
21
+ function validateJson1(value) {
22
+ visitJson(value, 1, { nodes: 0, encodedBytes: 0, active: new WeakSet }, false);
23
+ }
24
+ function visitJson(value, depth, state, memberName) {
25
+ if (depth > JSON_1_LIMITS.depth)
26
+ throw new Json1Error("maximum value depth exceeded");
27
+ state.nodes += 1;
28
+ if (state.nodes > JSON_1_LIMITS.nodes)
29
+ throw new Json1Error("maximum value nodes exceeded");
30
+ if (value === null) {
31
+ chargeEncodedBytes(state, 4);
32
+ return;
33
+ }
34
+ if (typeof value === "boolean") {
35
+ chargeEncodedBytes(state, value ? 4 : 5);
36
+ return;
37
+ }
38
+ if (typeof value === "number") {
39
+ if (!Number.isFinite(value))
40
+ throw new Json1Error("non-finite number");
41
+ if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
42
+ throw new Json1Error("integral number outside safe range");
43
+ }
44
+ chargeEncodedBytes(state, (Object.is(value, -0) ? "0" : JSON.stringify(value)).length);
45
+ return;
46
+ }
47
+ if (typeof value === "string") {
48
+ validateString(value, memberName ? JSON_1_LIMITS.memberNameBytes : JSON_1_LIMITS.stringBytes);
49
+ chargeEncodedBytes(state, encodedJsonStringBytes(value));
50
+ return;
51
+ }
52
+ if (typeof value !== "object")
53
+ throw new Json1Error("value is not JSON/1");
54
+ if (state.active.has(value))
55
+ throw new Json1Error("cyclic value");
56
+ state.active.add(value);
57
+ try {
58
+ if (Array.isArray(value)) {
59
+ if (value.length > JSON_1_LIMITS.containerEntries) {
60
+ throw new Json1Error("maximum array items exceeded");
61
+ }
62
+ chargeEncodedBytes(state, 2 + Math.max(0, value.length - 1));
63
+ for (const child of value)
64
+ visitJson(child, depth + 1, state, false);
65
+ return;
66
+ }
67
+ const object = value;
68
+ const keys = Object.keys(object);
69
+ if (keys.length > JSON_1_LIMITS.containerEntries) {
70
+ throw new Json1Error("maximum object members exceeded");
71
+ }
72
+ chargeEncodedBytes(state, 2 + keys.length + Math.max(0, keys.length - 1));
73
+ for (const key of keys) {
74
+ validateString(key, JSON_1_LIMITS.memberNameBytes);
75
+ chargeEncodedBytes(state, encodedJsonStringBytes(key));
76
+ visitJson(object[key], depth + 1, state, false);
77
+ }
78
+ } finally {
79
+ state.active.delete(value);
80
+ }
81
+ }
82
+ function chargeEncodedBytes(state, bytes) {
83
+ if (bytes > JSON_1_LIMITS.bytes - state.encodedBytes) {
84
+ throw new Json1Error("maximum encoded bytes exceeded");
85
+ }
86
+ state.encodedBytes += bytes;
87
+ }
88
+ function encodedJsonStringBytes(value) {
89
+ return encoder.encode(JSON.stringify(value)).byteLength;
90
+ }
91
+ function validateString(value, byteLimit) {
92
+ if (encoder.encode(value).byteLength > byteLimit) {
93
+ throw new Json1Error("maximum string bytes exceeded");
94
+ }
95
+ for (let index = 0;index < value.length; index += 1) {
96
+ const code = value.charCodeAt(index);
97
+ if (code >= 55296 && code <= 56319) {
98
+ const next = value.charCodeAt(index + 1);
99
+ if (!(next >= 56320 && next <= 57343))
100
+ throw new Json1Error("lone Unicode surrogate");
101
+ index += 1;
102
+ } else if (code >= 56320 && code <= 57343) {
103
+ throw new Json1Error("lone Unicode surrogate");
104
+ }
105
+ }
106
+ }
107
+
108
+ // src/package/case-fold-15.1.ts
109
+ var CASE_FOLD_15_1 = new Map([
110
+ [65, "a"],
111
+ [66, "b"],
112
+ [67, "c"],
113
+ [68, "d"],
114
+ [69, "e"],
115
+ [70, "f"],
116
+ [71, "g"],
117
+ [72, "h"],
118
+ [73, "i"],
119
+ [74, "j"],
120
+ [75, "k"],
121
+ [76, "l"],
122
+ [77, "m"],
123
+ [78, "n"],
124
+ [79, "o"],
125
+ [80, "p"],
126
+ [81, "q"],
127
+ [82, "r"],
128
+ [83, "s"],
129
+ [84, "t"],
130
+ [85, "u"],
131
+ [86, "v"],
132
+ [87, "w"],
133
+ [88, "x"],
134
+ [89, "y"],
135
+ [90, "z"],
136
+ [181, "\u03BC"],
137
+ [192, "\xE0"],
138
+ [193, "\xE1"],
139
+ [194, "\xE2"],
140
+ [195, "\xE3"],
141
+ [196, "\xE4"],
142
+ [197, "\xE5"],
143
+ [198, "\xE6"],
144
+ [199, "\xE7"],
145
+ [200, "\xE8"],
146
+ [201, "\xE9"],
147
+ [202, "\xEA"],
148
+ [203, "\xEB"],
149
+ [204, "\xEC"],
150
+ [205, "\xED"],
151
+ [206, "\xEE"],
152
+ [207, "\xEF"],
153
+ [208, "\xF0"],
154
+ [209, "\xF1"],
155
+ [210, "\xF2"],
156
+ [211, "\xF3"],
157
+ [212, "\xF4"],
158
+ [213, "\xF5"],
159
+ [214, "\xF6"],
160
+ [216, "\xF8"],
161
+ [217, "\xF9"],
162
+ [218, "\xFA"],
163
+ [219, "\xFB"],
164
+ [220, "\xFC"],
165
+ [221, "\xFD"],
166
+ [222, "\xFE"],
167
+ [223, "ss"],
168
+ [256, "\u0101"],
169
+ [258, "\u0103"],
170
+ [260, "\u0105"],
171
+ [262, "\u0107"],
172
+ [264, "\u0109"],
173
+ [266, "\u010B"],
174
+ [268, "\u010D"],
175
+ [270, "\u010F"],
176
+ [272, "\u0111"],
177
+ [274, "\u0113"],
178
+ [276, "\u0115"],
179
+ [278, "\u0117"],
180
+ [280, "\u0119"],
181
+ [282, "\u011B"],
182
+ [284, "\u011D"],
183
+ [286, "\u011F"],
184
+ [288, "\u0121"],
185
+ [290, "\u0123"],
186
+ [292, "\u0125"],
187
+ [294, "\u0127"],
188
+ [296, "\u0129"],
189
+ [298, "\u012B"],
190
+ [300, "\u012D"],
191
+ [302, "\u012F"],
192
+ [304, "i\u0307"],
193
+ [306, "\u0133"],
194
+ [308, "\u0135"],
195
+ [310, "\u0137"],
196
+ [313, "\u013A"],
197
+ [315, "\u013C"],
198
+ [317, "\u013E"],
199
+ [319, "\u0140"],
200
+ [321, "\u0142"],
201
+ [323, "\u0144"],
202
+ [325, "\u0146"],
203
+ [327, "\u0148"],
204
+ [329, "\u02BCn"],
205
+ [330, "\u014B"],
206
+ [332, "\u014D"],
207
+ [334, "\u014F"],
208
+ [336, "\u0151"],
209
+ [338, "\u0153"],
210
+ [340, "\u0155"],
211
+ [342, "\u0157"],
212
+ [344, "\u0159"],
213
+ [346, "\u015B"],
214
+ [348, "\u015D"],
215
+ [350, "\u015F"],
216
+ [352, "\u0161"],
217
+ [354, "\u0163"],
218
+ [356, "\u0165"],
219
+ [358, "\u0167"],
220
+ [360, "\u0169"],
221
+ [362, "\u016B"],
222
+ [364, "\u016D"],
223
+ [366, "\u016F"],
224
+ [368, "\u0171"],
225
+ [370, "\u0173"],
226
+ [372, "\u0175"],
227
+ [374, "\u0177"],
228
+ [376, "\xFF"],
229
+ [377, "\u017A"],
230
+ [379, "\u017C"],
231
+ [381, "\u017E"],
232
+ [383, "s"],
233
+ [385, "\u0253"],
234
+ [386, "\u0183"],
235
+ [388, "\u0185"],
236
+ [390, "\u0254"],
237
+ [391, "\u0188"],
238
+ [393, "\u0256"],
239
+ [394, "\u0257"],
240
+ [395, "\u018C"],
241
+ [398, "\u01DD"],
242
+ [399, "\u0259"],
243
+ [400, "\u025B"],
244
+ [401, "\u0192"],
245
+ [403, "\u0260"],
246
+ [404, "\u0263"],
247
+ [406, "\u0269"],
248
+ [407, "\u0268"],
249
+ [408, "\u0199"],
250
+ [412, "\u026F"],
251
+ [413, "\u0272"],
252
+ [415, "\u0275"],
253
+ [416, "\u01A1"],
254
+ [418, "\u01A3"],
255
+ [420, "\u01A5"],
256
+ [422, "\u0280"],
257
+ [423, "\u01A8"],
258
+ [425, "\u0283"],
259
+ [428, "\u01AD"],
260
+ [430, "\u0288"],
261
+ [431, "\u01B0"],
262
+ [433, "\u028A"],
263
+ [434, "\u028B"],
264
+ [435, "\u01B4"],
265
+ [437, "\u01B6"],
266
+ [439, "\u0292"],
267
+ [440, "\u01B9"],
268
+ [444, "\u01BD"],
269
+ [452, "\u01C6"],
270
+ [453, "\u01C6"],
271
+ [455, "\u01C9"],
272
+ [456, "\u01C9"],
273
+ [458, "\u01CC"],
274
+ [459, "\u01CC"],
275
+ [461, "\u01CE"],
276
+ [463, "\u01D0"],
277
+ [465, "\u01D2"],
278
+ [467, "\u01D4"],
279
+ [469, "\u01D6"],
280
+ [471, "\u01D8"],
281
+ [473, "\u01DA"],
282
+ [475, "\u01DC"],
283
+ [478, "\u01DF"],
284
+ [480, "\u01E1"],
285
+ [482, "\u01E3"],
286
+ [484, "\u01E5"],
287
+ [486, "\u01E7"],
288
+ [488, "\u01E9"],
289
+ [490, "\u01EB"],
290
+ [492, "\u01ED"],
291
+ [494, "\u01EF"],
292
+ [496, "j\u030C"],
293
+ [497, "\u01F3"],
294
+ [498, "\u01F3"],
295
+ [500, "\u01F5"],
296
+ [502, "\u0195"],
297
+ [503, "\u01BF"],
298
+ [504, "\u01F9"],
299
+ [506, "\u01FB"],
300
+ [508, "\u01FD"],
301
+ [510, "\u01FF"],
302
+ [512, "\u0201"],
303
+ [514, "\u0203"],
304
+ [516, "\u0205"],
305
+ [518, "\u0207"],
306
+ [520, "\u0209"],
307
+ [522, "\u020B"],
308
+ [524, "\u020D"],
309
+ [526, "\u020F"],
310
+ [528, "\u0211"],
311
+ [530, "\u0213"],
312
+ [532, "\u0215"],
313
+ [534, "\u0217"],
314
+ [536, "\u0219"],
315
+ [538, "\u021B"],
316
+ [540, "\u021D"],
317
+ [542, "\u021F"],
318
+ [544, "\u019E"],
319
+ [546, "\u0223"],
320
+ [548, "\u0225"],
321
+ [550, "\u0227"],
322
+ [552, "\u0229"],
323
+ [554, "\u022B"],
324
+ [556, "\u022D"],
325
+ [558, "\u022F"],
326
+ [560, "\u0231"],
327
+ [562, "\u0233"],
328
+ [570, "\u2C65"],
329
+ [571, "\u023C"],
330
+ [573, "\u019A"],
331
+ [574, "\u2C66"],
332
+ [577, "\u0242"],
333
+ [579, "\u0180"],
334
+ [580, "\u0289"],
335
+ [581, "\u028C"],
336
+ [582, "\u0247"],
337
+ [584, "\u0249"],
338
+ [586, "\u024B"],
339
+ [588, "\u024D"],
340
+ [590, "\u024F"],
341
+ [837, "\u03B9"],
342
+ [880, "\u0371"],
343
+ [882, "\u0373"],
344
+ [886, "\u0377"],
345
+ [895, "\u03F3"],
346
+ [902, "\u03AC"],
347
+ [904, "\u03AD"],
348
+ [905, "\u03AE"],
349
+ [906, "\u03AF"],
350
+ [908, "\u03CC"],
351
+ [910, "\u03CD"],
352
+ [911, "\u03CE"],
353
+ [912, "\u03B9\u0308\u0301"],
354
+ [913, "\u03B1"],
355
+ [914, "\u03B2"],
356
+ [915, "\u03B3"],
357
+ [916, "\u03B4"],
358
+ [917, "\u03B5"],
359
+ [918, "\u03B6"],
360
+ [919, "\u03B7"],
361
+ [920, "\u03B8"],
362
+ [921, "\u03B9"],
363
+ [922, "\u03BA"],
364
+ [923, "\u03BB"],
365
+ [924, "\u03BC"],
366
+ [925, "\u03BD"],
367
+ [926, "\u03BE"],
368
+ [927, "\u03BF"],
369
+ [928, "\u03C0"],
370
+ [929, "\u03C1"],
371
+ [931, "\u03C3"],
372
+ [932, "\u03C4"],
373
+ [933, "\u03C5"],
374
+ [934, "\u03C6"],
375
+ [935, "\u03C7"],
376
+ [936, "\u03C8"],
377
+ [937, "\u03C9"],
378
+ [938, "\u03CA"],
379
+ [939, "\u03CB"],
380
+ [944, "\u03C5\u0308\u0301"],
381
+ [962, "\u03C3"],
382
+ [975, "\u03D7"],
383
+ [976, "\u03B2"],
384
+ [977, "\u03B8"],
385
+ [981, "\u03C6"],
386
+ [982, "\u03C0"],
387
+ [984, "\u03D9"],
388
+ [986, "\u03DB"],
389
+ [988, "\u03DD"],
390
+ [990, "\u03DF"],
391
+ [992, "\u03E1"],
392
+ [994, "\u03E3"],
393
+ [996, "\u03E5"],
394
+ [998, "\u03E7"],
395
+ [1000, "\u03E9"],
396
+ [1002, "\u03EB"],
397
+ [1004, "\u03ED"],
398
+ [1006, "\u03EF"],
399
+ [1008, "\u03BA"],
400
+ [1009, "\u03C1"],
401
+ [1012, "\u03B8"],
402
+ [1013, "\u03B5"],
403
+ [1015, "\u03F8"],
404
+ [1017, "\u03F2"],
405
+ [1018, "\u03FB"],
406
+ [1021, "\u037B"],
407
+ [1022, "\u037C"],
408
+ [1023, "\u037D"],
409
+ [1024, "\u0450"],
410
+ [1025, "\u0451"],
411
+ [1026, "\u0452"],
412
+ [1027, "\u0453"],
413
+ [1028, "\u0454"],
414
+ [1029, "\u0455"],
415
+ [1030, "\u0456"],
416
+ [1031, "\u0457"],
417
+ [1032, "\u0458"],
418
+ [1033, "\u0459"],
419
+ [1034, "\u045A"],
420
+ [1035, "\u045B"],
421
+ [1036, "\u045C"],
422
+ [1037, "\u045D"],
423
+ [1038, "\u045E"],
424
+ [1039, "\u045F"],
425
+ [1040, "\u0430"],
426
+ [1041, "\u0431"],
427
+ [1042, "\u0432"],
428
+ [1043, "\u0433"],
429
+ [1044, "\u0434"],
430
+ [1045, "\u0435"],
431
+ [1046, "\u0436"],
432
+ [1047, "\u0437"],
433
+ [1048, "\u0438"],
434
+ [1049, "\u0439"],
435
+ [1050, "\u043A"],
436
+ [1051, "\u043B"],
437
+ [1052, "\u043C"],
438
+ [1053, "\u043D"],
439
+ [1054, "\u043E"],
440
+ [1055, "\u043F"],
441
+ [1056, "\u0440"],
442
+ [1057, "\u0441"],
443
+ [1058, "\u0442"],
444
+ [1059, "\u0443"],
445
+ [1060, "\u0444"],
446
+ [1061, "\u0445"],
447
+ [1062, "\u0446"],
448
+ [1063, "\u0447"],
449
+ [1064, "\u0448"],
450
+ [1065, "\u0449"],
451
+ [1066, "\u044A"],
452
+ [1067, "\u044B"],
453
+ [1068, "\u044C"],
454
+ [1069, "\u044D"],
455
+ [1070, "\u044E"],
456
+ [1071, "\u044F"],
457
+ [1120, "\u0461"],
458
+ [1122, "\u0463"],
459
+ [1124, "\u0465"],
460
+ [1126, "\u0467"],
461
+ [1128, "\u0469"],
462
+ [1130, "\u046B"],
463
+ [1132, "\u046D"],
464
+ [1134, "\u046F"],
465
+ [1136, "\u0471"],
466
+ [1138, "\u0473"],
467
+ [1140, "\u0475"],
468
+ [1142, "\u0477"],
469
+ [1144, "\u0479"],
470
+ [1146, "\u047B"],
471
+ [1148, "\u047D"],
472
+ [1150, "\u047F"],
473
+ [1152, "\u0481"],
474
+ [1162, "\u048B"],
475
+ [1164, "\u048D"],
476
+ [1166, "\u048F"],
477
+ [1168, "\u0491"],
478
+ [1170, "\u0493"],
479
+ [1172, "\u0495"],
480
+ [1174, "\u0497"],
481
+ [1176, "\u0499"],
482
+ [1178, "\u049B"],
483
+ [1180, "\u049D"],
484
+ [1182, "\u049F"],
485
+ [1184, "\u04A1"],
486
+ [1186, "\u04A3"],
487
+ [1188, "\u04A5"],
488
+ [1190, "\u04A7"],
489
+ [1192, "\u04A9"],
490
+ [1194, "\u04AB"],
491
+ [1196, "\u04AD"],
492
+ [1198, "\u04AF"],
493
+ [1200, "\u04B1"],
494
+ [1202, "\u04B3"],
495
+ [1204, "\u04B5"],
496
+ [1206, "\u04B7"],
497
+ [1208, "\u04B9"],
498
+ [1210, "\u04BB"],
499
+ [1212, "\u04BD"],
500
+ [1214, "\u04BF"],
501
+ [1216, "\u04CF"],
502
+ [1217, "\u04C2"],
503
+ [1219, "\u04C4"],
504
+ [1221, "\u04C6"],
505
+ [1223, "\u04C8"],
506
+ [1225, "\u04CA"],
507
+ [1227, "\u04CC"],
508
+ [1229, "\u04CE"],
509
+ [1232, "\u04D1"],
510
+ [1234, "\u04D3"],
511
+ [1236, "\u04D5"],
512
+ [1238, "\u04D7"],
513
+ [1240, "\u04D9"],
514
+ [1242, "\u04DB"],
515
+ [1244, "\u04DD"],
516
+ [1246, "\u04DF"],
517
+ [1248, "\u04E1"],
518
+ [1250, "\u04E3"],
519
+ [1252, "\u04E5"],
520
+ [1254, "\u04E7"],
521
+ [1256, "\u04E9"],
522
+ [1258, "\u04EB"],
523
+ [1260, "\u04ED"],
524
+ [1262, "\u04EF"],
525
+ [1264, "\u04F1"],
526
+ [1266, "\u04F3"],
527
+ [1268, "\u04F5"],
528
+ [1270, "\u04F7"],
529
+ [1272, "\u04F9"],
530
+ [1274, "\u04FB"],
531
+ [1276, "\u04FD"],
532
+ [1278, "\u04FF"],
533
+ [1280, "\u0501"],
534
+ [1282, "\u0503"],
535
+ [1284, "\u0505"],
536
+ [1286, "\u0507"],
537
+ [1288, "\u0509"],
538
+ [1290, "\u050B"],
539
+ [1292, "\u050D"],
540
+ [1294, "\u050F"],
541
+ [1296, "\u0511"],
542
+ [1298, "\u0513"],
543
+ [1300, "\u0515"],
544
+ [1302, "\u0517"],
545
+ [1304, "\u0519"],
546
+ [1306, "\u051B"],
547
+ [1308, "\u051D"],
548
+ [1310, "\u051F"],
549
+ [1312, "\u0521"],
550
+ [1314, "\u0523"],
551
+ [1316, "\u0525"],
552
+ [1318, "\u0527"],
553
+ [1320, "\u0529"],
554
+ [1322, "\u052B"],
555
+ [1324, "\u052D"],
556
+ [1326, "\u052F"],
557
+ [1329, "\u0561"],
558
+ [1330, "\u0562"],
559
+ [1331, "\u0563"],
560
+ [1332, "\u0564"],
561
+ [1333, "\u0565"],
562
+ [1334, "\u0566"],
563
+ [1335, "\u0567"],
564
+ [1336, "\u0568"],
565
+ [1337, "\u0569"],
566
+ [1338, "\u056A"],
567
+ [1339, "\u056B"],
568
+ [1340, "\u056C"],
569
+ [1341, "\u056D"],
570
+ [1342, "\u056E"],
571
+ [1343, "\u056F"],
572
+ [1344, "\u0570"],
573
+ [1345, "\u0571"],
574
+ [1346, "\u0572"],
575
+ [1347, "\u0573"],
576
+ [1348, "\u0574"],
577
+ [1349, "\u0575"],
578
+ [1350, "\u0576"],
579
+ [1351, "\u0577"],
580
+ [1352, "\u0578"],
581
+ [1353, "\u0579"],
582
+ [1354, "\u057A"],
583
+ [1355, "\u057B"],
584
+ [1356, "\u057C"],
585
+ [1357, "\u057D"],
586
+ [1358, "\u057E"],
587
+ [1359, "\u057F"],
588
+ [1360, "\u0580"],
589
+ [1361, "\u0581"],
590
+ [1362, "\u0582"],
591
+ [1363, "\u0583"],
592
+ [1364, "\u0584"],
593
+ [1365, "\u0585"],
594
+ [1366, "\u0586"],
595
+ [1415, "\u0565\u0582"],
596
+ [4256, "\u2D00"],
597
+ [4257, "\u2D01"],
598
+ [4258, "\u2D02"],
599
+ [4259, "\u2D03"],
600
+ [4260, "\u2D04"],
601
+ [4261, "\u2D05"],
602
+ [4262, "\u2D06"],
603
+ [4263, "\u2D07"],
604
+ [4264, "\u2D08"],
605
+ [4265, "\u2D09"],
606
+ [4266, "\u2D0A"],
607
+ [4267, "\u2D0B"],
608
+ [4268, "\u2D0C"],
609
+ [4269, "\u2D0D"],
610
+ [4270, "\u2D0E"],
611
+ [4271, "\u2D0F"],
612
+ [4272, "\u2D10"],
613
+ [4273, "\u2D11"],
614
+ [4274, "\u2D12"],
615
+ [4275, "\u2D13"],
616
+ [4276, "\u2D14"],
617
+ [4277, "\u2D15"],
618
+ [4278, "\u2D16"],
619
+ [4279, "\u2D17"],
620
+ [4280, "\u2D18"],
621
+ [4281, "\u2D19"],
622
+ [4282, "\u2D1A"],
623
+ [4283, "\u2D1B"],
624
+ [4284, "\u2D1C"],
625
+ [4285, "\u2D1D"],
626
+ [4286, "\u2D1E"],
627
+ [4287, "\u2D1F"],
628
+ [4288, "\u2D20"],
629
+ [4289, "\u2D21"],
630
+ [4290, "\u2D22"],
631
+ [4291, "\u2D23"],
632
+ [4292, "\u2D24"],
633
+ [4293, "\u2D25"],
634
+ [4295, "\u2D27"],
635
+ [4301, "\u2D2D"],
636
+ [5112, "\u13F0"],
637
+ [5113, "\u13F1"],
638
+ [5114, "\u13F2"],
639
+ [5115, "\u13F3"],
640
+ [5116, "\u13F4"],
641
+ [5117, "\u13F5"],
642
+ [7296, "\u0432"],
643
+ [7297, "\u0434"],
644
+ [7298, "\u043E"],
645
+ [7299, "\u0441"],
646
+ [7300, "\u0442"],
647
+ [7301, "\u0442"],
648
+ [7302, "\u044A"],
649
+ [7303, "\u0463"],
650
+ [7304, "\uA64B"],
651
+ [7312, "\u10D0"],
652
+ [7313, "\u10D1"],
653
+ [7314, "\u10D2"],
654
+ [7315, "\u10D3"],
655
+ [7316, "\u10D4"],
656
+ [7317, "\u10D5"],
657
+ [7318, "\u10D6"],
658
+ [7319, "\u10D7"],
659
+ [7320, "\u10D8"],
660
+ [7321, "\u10D9"],
661
+ [7322, "\u10DA"],
662
+ [7323, "\u10DB"],
663
+ [7324, "\u10DC"],
664
+ [7325, "\u10DD"],
665
+ [7326, "\u10DE"],
666
+ [7327, "\u10DF"],
667
+ [7328, "\u10E0"],
668
+ [7329, "\u10E1"],
669
+ [7330, "\u10E2"],
670
+ [7331, "\u10E3"],
671
+ [7332, "\u10E4"],
672
+ [7333, "\u10E5"],
673
+ [7334, "\u10E6"],
674
+ [7335, "\u10E7"],
675
+ [7336, "\u10E8"],
676
+ [7337, "\u10E9"],
677
+ [7338, "\u10EA"],
678
+ [7339, "\u10EB"],
679
+ [7340, "\u10EC"],
680
+ [7341, "\u10ED"],
681
+ [7342, "\u10EE"],
682
+ [7343, "\u10EF"],
683
+ [7344, "\u10F0"],
684
+ [7345, "\u10F1"],
685
+ [7346, "\u10F2"],
686
+ [7347, "\u10F3"],
687
+ [7348, "\u10F4"],
688
+ [7349, "\u10F5"],
689
+ [7350, "\u10F6"],
690
+ [7351, "\u10F7"],
691
+ [7352, "\u10F8"],
692
+ [7353, "\u10F9"],
693
+ [7354, "\u10FA"],
694
+ [7357, "\u10FD"],
695
+ [7358, "\u10FE"],
696
+ [7359, "\u10FF"],
697
+ [7680, "\u1E01"],
698
+ [7682, "\u1E03"],
699
+ [7684, "\u1E05"],
700
+ [7686, "\u1E07"],
701
+ [7688, "\u1E09"],
702
+ [7690, "\u1E0B"],
703
+ [7692, "\u1E0D"],
704
+ [7694, "\u1E0F"],
705
+ [7696, "\u1E11"],
706
+ [7698, "\u1E13"],
707
+ [7700, "\u1E15"],
708
+ [7702, "\u1E17"],
709
+ [7704, "\u1E19"],
710
+ [7706, "\u1E1B"],
711
+ [7708, "\u1E1D"],
712
+ [7710, "\u1E1F"],
713
+ [7712, "\u1E21"],
714
+ [7714, "\u1E23"],
715
+ [7716, "\u1E25"],
716
+ [7718, "\u1E27"],
717
+ [7720, "\u1E29"],
718
+ [7722, "\u1E2B"],
719
+ [7724, "\u1E2D"],
720
+ [7726, "\u1E2F"],
721
+ [7728, "\u1E31"],
722
+ [7730, "\u1E33"],
723
+ [7732, "\u1E35"],
724
+ [7734, "\u1E37"],
725
+ [7736, "\u1E39"],
726
+ [7738, "\u1E3B"],
727
+ [7740, "\u1E3D"],
728
+ [7742, "\u1E3F"],
729
+ [7744, "\u1E41"],
730
+ [7746, "\u1E43"],
731
+ [7748, "\u1E45"],
732
+ [7750, "\u1E47"],
733
+ [7752, "\u1E49"],
734
+ [7754, "\u1E4B"],
735
+ [7756, "\u1E4D"],
736
+ [7758, "\u1E4F"],
737
+ [7760, "\u1E51"],
738
+ [7762, "\u1E53"],
739
+ [7764, "\u1E55"],
740
+ [7766, "\u1E57"],
741
+ [7768, "\u1E59"],
742
+ [7770, "\u1E5B"],
743
+ [7772, "\u1E5D"],
744
+ [7774, "\u1E5F"],
745
+ [7776, "\u1E61"],
746
+ [7778, "\u1E63"],
747
+ [7780, "\u1E65"],
748
+ [7782, "\u1E67"],
749
+ [7784, "\u1E69"],
750
+ [7786, "\u1E6B"],
751
+ [7788, "\u1E6D"],
752
+ [7790, "\u1E6F"],
753
+ [7792, "\u1E71"],
754
+ [7794, "\u1E73"],
755
+ [7796, "\u1E75"],
756
+ [7798, "\u1E77"],
757
+ [7800, "\u1E79"],
758
+ [7802, "\u1E7B"],
759
+ [7804, "\u1E7D"],
760
+ [7806, "\u1E7F"],
761
+ [7808, "\u1E81"],
762
+ [7810, "\u1E83"],
763
+ [7812, "\u1E85"],
764
+ [7814, "\u1E87"],
765
+ [7816, "\u1E89"],
766
+ [7818, "\u1E8B"],
767
+ [7820, "\u1E8D"],
768
+ [7822, "\u1E8F"],
769
+ [7824, "\u1E91"],
770
+ [7826, "\u1E93"],
771
+ [7828, "\u1E95"],
772
+ [7830, "h\u0331"],
773
+ [7831, "t\u0308"],
774
+ [7832, "w\u030A"],
775
+ [7833, "y\u030A"],
776
+ [7834, "a\u02BE"],
777
+ [7835, "\u1E61"],
778
+ [7838, "ss"],
779
+ [7840, "\u1EA1"],
780
+ [7842, "\u1EA3"],
781
+ [7844, "\u1EA5"],
782
+ [7846, "\u1EA7"],
783
+ [7848, "\u1EA9"],
784
+ [7850, "\u1EAB"],
785
+ [7852, "\u1EAD"],
786
+ [7854, "\u1EAF"],
787
+ [7856, "\u1EB1"],
788
+ [7858, "\u1EB3"],
789
+ [7860, "\u1EB5"],
790
+ [7862, "\u1EB7"],
791
+ [7864, "\u1EB9"],
792
+ [7866, "\u1EBB"],
793
+ [7868, "\u1EBD"],
794
+ [7870, "\u1EBF"],
795
+ [7872, "\u1EC1"],
796
+ [7874, "\u1EC3"],
797
+ [7876, "\u1EC5"],
798
+ [7878, "\u1EC7"],
799
+ [7880, "\u1EC9"],
800
+ [7882, "\u1ECB"],
801
+ [7884, "\u1ECD"],
802
+ [7886, "\u1ECF"],
803
+ [7888, "\u1ED1"],
804
+ [7890, "\u1ED3"],
805
+ [7892, "\u1ED5"],
806
+ [7894, "\u1ED7"],
807
+ [7896, "\u1ED9"],
808
+ [7898, "\u1EDB"],
809
+ [7900, "\u1EDD"],
810
+ [7902, "\u1EDF"],
811
+ [7904, "\u1EE1"],
812
+ [7906, "\u1EE3"],
813
+ [7908, "\u1EE5"],
814
+ [7910, "\u1EE7"],
815
+ [7912, "\u1EE9"],
816
+ [7914, "\u1EEB"],
817
+ [7916, "\u1EED"],
818
+ [7918, "\u1EEF"],
819
+ [7920, "\u1EF1"],
820
+ [7922, "\u1EF3"],
821
+ [7924, "\u1EF5"],
822
+ [7926, "\u1EF7"],
823
+ [7928, "\u1EF9"],
824
+ [7930, "\u1EFB"],
825
+ [7932, "\u1EFD"],
826
+ [7934, "\u1EFF"],
827
+ [7944, "\u1F00"],
828
+ [7945, "\u1F01"],
829
+ [7946, "\u1F02"],
830
+ [7947, "\u1F03"],
831
+ [7948, "\u1F04"],
832
+ [7949, "\u1F05"],
833
+ [7950, "\u1F06"],
834
+ [7951, "\u1F07"],
835
+ [7960, "\u1F10"],
836
+ [7961, "\u1F11"],
837
+ [7962, "\u1F12"],
838
+ [7963, "\u1F13"],
839
+ [7964, "\u1F14"],
840
+ [7965, "\u1F15"],
841
+ [7976, "\u1F20"],
842
+ [7977, "\u1F21"],
843
+ [7978, "\u1F22"],
844
+ [7979, "\u1F23"],
845
+ [7980, "\u1F24"],
846
+ [7981, "\u1F25"],
847
+ [7982, "\u1F26"],
848
+ [7983, "\u1F27"],
849
+ [7992, "\u1F30"],
850
+ [7993, "\u1F31"],
851
+ [7994, "\u1F32"],
852
+ [7995, "\u1F33"],
853
+ [7996, "\u1F34"],
854
+ [7997, "\u1F35"],
855
+ [7998, "\u1F36"],
856
+ [7999, "\u1F37"],
857
+ [8008, "\u1F40"],
858
+ [8009, "\u1F41"],
859
+ [8010, "\u1F42"],
860
+ [8011, "\u1F43"],
861
+ [8012, "\u1F44"],
862
+ [8013, "\u1F45"],
863
+ [8016, "\u03C5\u0313"],
864
+ [8018, "\u03C5\u0313\u0300"],
865
+ [8020, "\u03C5\u0313\u0301"],
866
+ [8022, "\u03C5\u0313\u0342"],
867
+ [8025, "\u1F51"],
868
+ [8027, "\u1F53"],
869
+ [8029, "\u1F55"],
870
+ [8031, "\u1F57"],
871
+ [8040, "\u1F60"],
872
+ [8041, "\u1F61"],
873
+ [8042, "\u1F62"],
874
+ [8043, "\u1F63"],
875
+ [8044, "\u1F64"],
876
+ [8045, "\u1F65"],
877
+ [8046, "\u1F66"],
878
+ [8047, "\u1F67"],
879
+ [8064, "\u1F00\u03B9"],
880
+ [8065, "\u1F01\u03B9"],
881
+ [8066, "\u1F02\u03B9"],
882
+ [8067, "\u1F03\u03B9"],
883
+ [8068, "\u1F04\u03B9"],
884
+ [8069, "\u1F05\u03B9"],
885
+ [8070, "\u1F06\u03B9"],
886
+ [8071, "\u1F07\u03B9"],
887
+ [8072, "\u1F00\u03B9"],
888
+ [8073, "\u1F01\u03B9"],
889
+ [8074, "\u1F02\u03B9"],
890
+ [8075, "\u1F03\u03B9"],
891
+ [8076, "\u1F04\u03B9"],
892
+ [8077, "\u1F05\u03B9"],
893
+ [8078, "\u1F06\u03B9"],
894
+ [8079, "\u1F07\u03B9"],
895
+ [8080, "\u1F20\u03B9"],
896
+ [8081, "\u1F21\u03B9"],
897
+ [8082, "\u1F22\u03B9"],
898
+ [8083, "\u1F23\u03B9"],
899
+ [8084, "\u1F24\u03B9"],
900
+ [8085, "\u1F25\u03B9"],
901
+ [8086, "\u1F26\u03B9"],
902
+ [8087, "\u1F27\u03B9"],
903
+ [8088, "\u1F20\u03B9"],
904
+ [8089, "\u1F21\u03B9"],
905
+ [8090, "\u1F22\u03B9"],
906
+ [8091, "\u1F23\u03B9"],
907
+ [8092, "\u1F24\u03B9"],
908
+ [8093, "\u1F25\u03B9"],
909
+ [8094, "\u1F26\u03B9"],
910
+ [8095, "\u1F27\u03B9"],
911
+ [8096, "\u1F60\u03B9"],
912
+ [8097, "\u1F61\u03B9"],
913
+ [8098, "\u1F62\u03B9"],
914
+ [8099, "\u1F63\u03B9"],
915
+ [8100, "\u1F64\u03B9"],
916
+ [8101, "\u1F65\u03B9"],
917
+ [8102, "\u1F66\u03B9"],
918
+ [8103, "\u1F67\u03B9"],
919
+ [8104, "\u1F60\u03B9"],
920
+ [8105, "\u1F61\u03B9"],
921
+ [8106, "\u1F62\u03B9"],
922
+ [8107, "\u1F63\u03B9"],
923
+ [8108, "\u1F64\u03B9"],
924
+ [8109, "\u1F65\u03B9"],
925
+ [8110, "\u1F66\u03B9"],
926
+ [8111, "\u1F67\u03B9"],
927
+ [8114, "\u1F70\u03B9"],
928
+ [8115, "\u03B1\u03B9"],
929
+ [8116, "\u03AC\u03B9"],
930
+ [8118, "\u03B1\u0342"],
931
+ [8119, "\u03B1\u0342\u03B9"],
932
+ [8120, "\u1FB0"],
933
+ [8121, "\u1FB1"],
934
+ [8122, "\u1F70"],
935
+ [8123, "\u1F71"],
936
+ [8124, "\u03B1\u03B9"],
937
+ [8126, "\u03B9"],
938
+ [8130, "\u1F74\u03B9"],
939
+ [8131, "\u03B7\u03B9"],
940
+ [8132, "\u03AE\u03B9"],
941
+ [8134, "\u03B7\u0342"],
942
+ [8135, "\u03B7\u0342\u03B9"],
943
+ [8136, "\u1F72"],
944
+ [8137, "\u1F73"],
945
+ [8138, "\u1F74"],
946
+ [8139, "\u1F75"],
947
+ [8140, "\u03B7\u03B9"],
948
+ [8146, "\u03B9\u0308\u0300"],
949
+ [8147, "\u03B9\u0308\u0301"],
950
+ [8150, "\u03B9\u0342"],
951
+ [8151, "\u03B9\u0308\u0342"],
952
+ [8152, "\u1FD0"],
953
+ [8153, "\u1FD1"],
954
+ [8154, "\u1F76"],
955
+ [8155, "\u1F77"],
956
+ [8162, "\u03C5\u0308\u0300"],
957
+ [8163, "\u03C5\u0308\u0301"],
958
+ [8164, "\u03C1\u0313"],
959
+ [8166, "\u03C5\u0342"],
960
+ [8167, "\u03C5\u0308\u0342"],
961
+ [8168, "\u1FE0"],
962
+ [8169, "\u1FE1"],
963
+ [8170, "\u1F7A"],
964
+ [8171, "\u1F7B"],
965
+ [8172, "\u1FE5"],
966
+ [8178, "\u1F7C\u03B9"],
967
+ [8179, "\u03C9\u03B9"],
968
+ [8180, "\u03CE\u03B9"],
969
+ [8182, "\u03C9\u0342"],
970
+ [8183, "\u03C9\u0342\u03B9"],
971
+ [8184, "\u1F78"],
972
+ [8185, "\u1F79"],
973
+ [8186, "\u1F7C"],
974
+ [8187, "\u1F7D"],
975
+ [8188, "\u03C9\u03B9"],
976
+ [8486, "\u03C9"],
977
+ [8490, "k"],
978
+ [8491, "\xE5"],
979
+ [8498, "\u214E"],
980
+ [8544, "\u2170"],
981
+ [8545, "\u2171"],
982
+ [8546, "\u2172"],
983
+ [8547, "\u2173"],
984
+ [8548, "\u2174"],
985
+ [8549, "\u2175"],
986
+ [8550, "\u2176"],
987
+ [8551, "\u2177"],
988
+ [8552, "\u2178"],
989
+ [8553, "\u2179"],
990
+ [8554, "\u217A"],
991
+ [8555, "\u217B"],
992
+ [8556, "\u217C"],
993
+ [8557, "\u217D"],
994
+ [8558, "\u217E"],
995
+ [8559, "\u217F"],
996
+ [8579, "\u2184"],
997
+ [9398, "\u24D0"],
998
+ [9399, "\u24D1"],
999
+ [9400, "\u24D2"],
1000
+ [9401, "\u24D3"],
1001
+ [9402, "\u24D4"],
1002
+ [9403, "\u24D5"],
1003
+ [9404, "\u24D6"],
1004
+ [9405, "\u24D7"],
1005
+ [9406, "\u24D8"],
1006
+ [9407, "\u24D9"],
1007
+ [9408, "\u24DA"],
1008
+ [9409, "\u24DB"],
1009
+ [9410, "\u24DC"],
1010
+ [9411, "\u24DD"],
1011
+ [9412, "\u24DE"],
1012
+ [9413, "\u24DF"],
1013
+ [9414, "\u24E0"],
1014
+ [9415, "\u24E1"],
1015
+ [9416, "\u24E2"],
1016
+ [9417, "\u24E3"],
1017
+ [9418, "\u24E4"],
1018
+ [9419, "\u24E5"],
1019
+ [9420, "\u24E6"],
1020
+ [9421, "\u24E7"],
1021
+ [9422, "\u24E8"],
1022
+ [9423, "\u24E9"],
1023
+ [11264, "\u2C30"],
1024
+ [11265, "\u2C31"],
1025
+ [11266, "\u2C32"],
1026
+ [11267, "\u2C33"],
1027
+ [11268, "\u2C34"],
1028
+ [11269, "\u2C35"],
1029
+ [11270, "\u2C36"],
1030
+ [11271, "\u2C37"],
1031
+ [11272, "\u2C38"],
1032
+ [11273, "\u2C39"],
1033
+ [11274, "\u2C3A"],
1034
+ [11275, "\u2C3B"],
1035
+ [11276, "\u2C3C"],
1036
+ [11277, "\u2C3D"],
1037
+ [11278, "\u2C3E"],
1038
+ [11279, "\u2C3F"],
1039
+ [11280, "\u2C40"],
1040
+ [11281, "\u2C41"],
1041
+ [11282, "\u2C42"],
1042
+ [11283, "\u2C43"],
1043
+ [11284, "\u2C44"],
1044
+ [11285, "\u2C45"],
1045
+ [11286, "\u2C46"],
1046
+ [11287, "\u2C47"],
1047
+ [11288, "\u2C48"],
1048
+ [11289, "\u2C49"],
1049
+ [11290, "\u2C4A"],
1050
+ [11291, "\u2C4B"],
1051
+ [11292, "\u2C4C"],
1052
+ [11293, "\u2C4D"],
1053
+ [11294, "\u2C4E"],
1054
+ [11295, "\u2C4F"],
1055
+ [11296, "\u2C50"],
1056
+ [11297, "\u2C51"],
1057
+ [11298, "\u2C52"],
1058
+ [11299, "\u2C53"],
1059
+ [11300, "\u2C54"],
1060
+ [11301, "\u2C55"],
1061
+ [11302, "\u2C56"],
1062
+ [11303, "\u2C57"],
1063
+ [11304, "\u2C58"],
1064
+ [11305, "\u2C59"],
1065
+ [11306, "\u2C5A"],
1066
+ [11307, "\u2C5B"],
1067
+ [11308, "\u2C5C"],
1068
+ [11309, "\u2C5D"],
1069
+ [11310, "\u2C5E"],
1070
+ [11311, "\u2C5F"],
1071
+ [11360, "\u2C61"],
1072
+ [11362, "\u026B"],
1073
+ [11363, "\u1D7D"],
1074
+ [11364, "\u027D"],
1075
+ [11367, "\u2C68"],
1076
+ [11369, "\u2C6A"],
1077
+ [11371, "\u2C6C"],
1078
+ [11373, "\u0251"],
1079
+ [11374, "\u0271"],
1080
+ [11375, "\u0250"],
1081
+ [11376, "\u0252"],
1082
+ [11378, "\u2C73"],
1083
+ [11381, "\u2C76"],
1084
+ [11390, "\u023F"],
1085
+ [11391, "\u0240"],
1086
+ [11392, "\u2C81"],
1087
+ [11394, "\u2C83"],
1088
+ [11396, "\u2C85"],
1089
+ [11398, "\u2C87"],
1090
+ [11400, "\u2C89"],
1091
+ [11402, "\u2C8B"],
1092
+ [11404, "\u2C8D"],
1093
+ [11406, "\u2C8F"],
1094
+ [11408, "\u2C91"],
1095
+ [11410, "\u2C93"],
1096
+ [11412, "\u2C95"],
1097
+ [11414, "\u2C97"],
1098
+ [11416, "\u2C99"],
1099
+ [11418, "\u2C9B"],
1100
+ [11420, "\u2C9D"],
1101
+ [11422, "\u2C9F"],
1102
+ [11424, "\u2CA1"],
1103
+ [11426, "\u2CA3"],
1104
+ [11428, "\u2CA5"],
1105
+ [11430, "\u2CA7"],
1106
+ [11432, "\u2CA9"],
1107
+ [11434, "\u2CAB"],
1108
+ [11436, "\u2CAD"],
1109
+ [11438, "\u2CAF"],
1110
+ [11440, "\u2CB1"],
1111
+ [11442, "\u2CB3"],
1112
+ [11444, "\u2CB5"],
1113
+ [11446, "\u2CB7"],
1114
+ [11448, "\u2CB9"],
1115
+ [11450, "\u2CBB"],
1116
+ [11452, "\u2CBD"],
1117
+ [11454, "\u2CBF"],
1118
+ [11456, "\u2CC1"],
1119
+ [11458, "\u2CC3"],
1120
+ [11460, "\u2CC5"],
1121
+ [11462, "\u2CC7"],
1122
+ [11464, "\u2CC9"],
1123
+ [11466, "\u2CCB"],
1124
+ [11468, "\u2CCD"],
1125
+ [11470, "\u2CCF"],
1126
+ [11472, "\u2CD1"],
1127
+ [11474, "\u2CD3"],
1128
+ [11476, "\u2CD5"],
1129
+ [11478, "\u2CD7"],
1130
+ [11480, "\u2CD9"],
1131
+ [11482, "\u2CDB"],
1132
+ [11484, "\u2CDD"],
1133
+ [11486, "\u2CDF"],
1134
+ [11488, "\u2CE1"],
1135
+ [11490, "\u2CE3"],
1136
+ [11499, "\u2CEC"],
1137
+ [11501, "\u2CEE"],
1138
+ [11506, "\u2CF3"],
1139
+ [42560, "\uA641"],
1140
+ [42562, "\uA643"],
1141
+ [42564, "\uA645"],
1142
+ [42566, "\uA647"],
1143
+ [42568, "\uA649"],
1144
+ [42570, "\uA64B"],
1145
+ [42572, "\uA64D"],
1146
+ [42574, "\uA64F"],
1147
+ [42576, "\uA651"],
1148
+ [42578, "\uA653"],
1149
+ [42580, "\uA655"],
1150
+ [42582, "\uA657"],
1151
+ [42584, "\uA659"],
1152
+ [42586, "\uA65B"],
1153
+ [42588, "\uA65D"],
1154
+ [42590, "\uA65F"],
1155
+ [42592, "\uA661"],
1156
+ [42594, "\uA663"],
1157
+ [42596, "\uA665"],
1158
+ [42598, "\uA667"],
1159
+ [42600, "\uA669"],
1160
+ [42602, "\uA66B"],
1161
+ [42604, "\uA66D"],
1162
+ [42624, "\uA681"],
1163
+ [42626, "\uA683"],
1164
+ [42628, "\uA685"],
1165
+ [42630, "\uA687"],
1166
+ [42632, "\uA689"],
1167
+ [42634, "\uA68B"],
1168
+ [42636, "\uA68D"],
1169
+ [42638, "\uA68F"],
1170
+ [42640, "\uA691"],
1171
+ [42642, "\uA693"],
1172
+ [42644, "\uA695"],
1173
+ [42646, "\uA697"],
1174
+ [42648, "\uA699"],
1175
+ [42650, "\uA69B"],
1176
+ [42786, "\uA723"],
1177
+ [42788, "\uA725"],
1178
+ [42790, "\uA727"],
1179
+ [42792, "\uA729"],
1180
+ [42794, "\uA72B"],
1181
+ [42796, "\uA72D"],
1182
+ [42798, "\uA72F"],
1183
+ [42802, "\uA733"],
1184
+ [42804, "\uA735"],
1185
+ [42806, "\uA737"],
1186
+ [42808, "\uA739"],
1187
+ [42810, "\uA73B"],
1188
+ [42812, "\uA73D"],
1189
+ [42814, "\uA73F"],
1190
+ [42816, "\uA741"],
1191
+ [42818, "\uA743"],
1192
+ [42820, "\uA745"],
1193
+ [42822, "\uA747"],
1194
+ [42824, "\uA749"],
1195
+ [42826, "\uA74B"],
1196
+ [42828, "\uA74D"],
1197
+ [42830, "\uA74F"],
1198
+ [42832, "\uA751"],
1199
+ [42834, "\uA753"],
1200
+ [42836, "\uA755"],
1201
+ [42838, "\uA757"],
1202
+ [42840, "\uA759"],
1203
+ [42842, "\uA75B"],
1204
+ [42844, "\uA75D"],
1205
+ [42846, "\uA75F"],
1206
+ [42848, "\uA761"],
1207
+ [42850, "\uA763"],
1208
+ [42852, "\uA765"],
1209
+ [42854, "\uA767"],
1210
+ [42856, "\uA769"],
1211
+ [42858, "\uA76B"],
1212
+ [42860, "\uA76D"],
1213
+ [42862, "\uA76F"],
1214
+ [42873, "\uA77A"],
1215
+ [42875, "\uA77C"],
1216
+ [42877, "\u1D79"],
1217
+ [42878, "\uA77F"],
1218
+ [42880, "\uA781"],
1219
+ [42882, "\uA783"],
1220
+ [42884, "\uA785"],
1221
+ [42886, "\uA787"],
1222
+ [42891, "\uA78C"],
1223
+ [42893, "\u0265"],
1224
+ [42896, "\uA791"],
1225
+ [42898, "\uA793"],
1226
+ [42902, "\uA797"],
1227
+ [42904, "\uA799"],
1228
+ [42906, "\uA79B"],
1229
+ [42908, "\uA79D"],
1230
+ [42910, "\uA79F"],
1231
+ [42912, "\uA7A1"],
1232
+ [42914, "\uA7A3"],
1233
+ [42916, "\uA7A5"],
1234
+ [42918, "\uA7A7"],
1235
+ [42920, "\uA7A9"],
1236
+ [42922, "\u0266"],
1237
+ [42923, "\u025C"],
1238
+ [42924, "\u0261"],
1239
+ [42925, "\u026C"],
1240
+ [42926, "\u026A"],
1241
+ [42928, "\u029E"],
1242
+ [42929, "\u0287"],
1243
+ [42930, "\u029D"],
1244
+ [42931, "\uAB53"],
1245
+ [42932, "\uA7B5"],
1246
+ [42934, "\uA7B7"],
1247
+ [42936, "\uA7B9"],
1248
+ [42938, "\uA7BB"],
1249
+ [42940, "\uA7BD"],
1250
+ [42942, "\uA7BF"],
1251
+ [42944, "\uA7C1"],
1252
+ [42946, "\uA7C3"],
1253
+ [42948, "\uA794"],
1254
+ [42949, "\u0282"],
1255
+ [42950, "\u1D8E"],
1256
+ [42951, "\uA7C8"],
1257
+ [42953, "\uA7CA"],
1258
+ [42960, "\uA7D1"],
1259
+ [42966, "\uA7D7"],
1260
+ [42968, "\uA7D9"],
1261
+ [42997, "\uA7F6"],
1262
+ [43888, "\u13A0"],
1263
+ [43889, "\u13A1"],
1264
+ [43890, "\u13A2"],
1265
+ [43891, "\u13A3"],
1266
+ [43892, "\u13A4"],
1267
+ [43893, "\u13A5"],
1268
+ [43894, "\u13A6"],
1269
+ [43895, "\u13A7"],
1270
+ [43896, "\u13A8"],
1271
+ [43897, "\u13A9"],
1272
+ [43898, "\u13AA"],
1273
+ [43899, "\u13AB"],
1274
+ [43900, "\u13AC"],
1275
+ [43901, "\u13AD"],
1276
+ [43902, "\u13AE"],
1277
+ [43903, "\u13AF"],
1278
+ [43904, "\u13B0"],
1279
+ [43905, "\u13B1"],
1280
+ [43906, "\u13B2"],
1281
+ [43907, "\u13B3"],
1282
+ [43908, "\u13B4"],
1283
+ [43909, "\u13B5"],
1284
+ [43910, "\u13B6"],
1285
+ [43911, "\u13B7"],
1286
+ [43912, "\u13B8"],
1287
+ [43913, "\u13B9"],
1288
+ [43914, "\u13BA"],
1289
+ [43915, "\u13BB"],
1290
+ [43916, "\u13BC"],
1291
+ [43917, "\u13BD"],
1292
+ [43918, "\u13BE"],
1293
+ [43919, "\u13BF"],
1294
+ [43920, "\u13C0"],
1295
+ [43921, "\u13C1"],
1296
+ [43922, "\u13C2"],
1297
+ [43923, "\u13C3"],
1298
+ [43924, "\u13C4"],
1299
+ [43925, "\u13C5"],
1300
+ [43926, "\u13C6"],
1301
+ [43927, "\u13C7"],
1302
+ [43928, "\u13C8"],
1303
+ [43929, "\u13C9"],
1304
+ [43930, "\u13CA"],
1305
+ [43931, "\u13CB"],
1306
+ [43932, "\u13CC"],
1307
+ [43933, "\u13CD"],
1308
+ [43934, "\u13CE"],
1309
+ [43935, "\u13CF"],
1310
+ [43936, "\u13D0"],
1311
+ [43937, "\u13D1"],
1312
+ [43938, "\u13D2"],
1313
+ [43939, "\u13D3"],
1314
+ [43940, "\u13D4"],
1315
+ [43941, "\u13D5"],
1316
+ [43942, "\u13D6"],
1317
+ [43943, "\u13D7"],
1318
+ [43944, "\u13D8"],
1319
+ [43945, "\u13D9"],
1320
+ [43946, "\u13DA"],
1321
+ [43947, "\u13DB"],
1322
+ [43948, "\u13DC"],
1323
+ [43949, "\u13DD"],
1324
+ [43950, "\u13DE"],
1325
+ [43951, "\u13DF"],
1326
+ [43952, "\u13E0"],
1327
+ [43953, "\u13E1"],
1328
+ [43954, "\u13E2"],
1329
+ [43955, "\u13E3"],
1330
+ [43956, "\u13E4"],
1331
+ [43957, "\u13E5"],
1332
+ [43958, "\u13E6"],
1333
+ [43959, "\u13E7"],
1334
+ [43960, "\u13E8"],
1335
+ [43961, "\u13E9"],
1336
+ [43962, "\u13EA"],
1337
+ [43963, "\u13EB"],
1338
+ [43964, "\u13EC"],
1339
+ [43965, "\u13ED"],
1340
+ [43966, "\u13EE"],
1341
+ [43967, "\u13EF"],
1342
+ [64256, "ff"],
1343
+ [64257, "fi"],
1344
+ [64258, "fl"],
1345
+ [64259, "ffi"],
1346
+ [64260, "ffl"],
1347
+ [64261, "st"],
1348
+ [64262, "st"],
1349
+ [64275, "\u0574\u0576"],
1350
+ [64276, "\u0574\u0565"],
1351
+ [64277, "\u0574\u056B"],
1352
+ [64278, "\u057E\u0576"],
1353
+ [64279, "\u0574\u056D"],
1354
+ [65313, "\uFF41"],
1355
+ [65314, "\uFF42"],
1356
+ [65315, "\uFF43"],
1357
+ [65316, "\uFF44"],
1358
+ [65317, "\uFF45"],
1359
+ [65318, "\uFF46"],
1360
+ [65319, "\uFF47"],
1361
+ [65320, "\uFF48"],
1362
+ [65321, "\uFF49"],
1363
+ [65322, "\uFF4A"],
1364
+ [65323, "\uFF4B"],
1365
+ [65324, "\uFF4C"],
1366
+ [65325, "\uFF4D"],
1367
+ [65326, "\uFF4E"],
1368
+ [65327, "\uFF4F"],
1369
+ [65328, "\uFF50"],
1370
+ [65329, "\uFF51"],
1371
+ [65330, "\uFF52"],
1372
+ [65331, "\uFF53"],
1373
+ [65332, "\uFF54"],
1374
+ [65333, "\uFF55"],
1375
+ [65334, "\uFF56"],
1376
+ [65335, "\uFF57"],
1377
+ [65336, "\uFF58"],
1378
+ [65337, "\uFF59"],
1379
+ [65338, "\uFF5A"],
1380
+ [66560, "\uD801\uDC28"],
1381
+ [66561, "\uD801\uDC29"],
1382
+ [66562, "\uD801\uDC2A"],
1383
+ [66563, "\uD801\uDC2B"],
1384
+ [66564, "\uD801\uDC2C"],
1385
+ [66565, "\uD801\uDC2D"],
1386
+ [66566, "\uD801\uDC2E"],
1387
+ [66567, "\uD801\uDC2F"],
1388
+ [66568, "\uD801\uDC30"],
1389
+ [66569, "\uD801\uDC31"],
1390
+ [66570, "\uD801\uDC32"],
1391
+ [66571, "\uD801\uDC33"],
1392
+ [66572, "\uD801\uDC34"],
1393
+ [66573, "\uD801\uDC35"],
1394
+ [66574, "\uD801\uDC36"],
1395
+ [66575, "\uD801\uDC37"],
1396
+ [66576, "\uD801\uDC38"],
1397
+ [66577, "\uD801\uDC39"],
1398
+ [66578, "\uD801\uDC3A"],
1399
+ [66579, "\uD801\uDC3B"],
1400
+ [66580, "\uD801\uDC3C"],
1401
+ [66581, "\uD801\uDC3D"],
1402
+ [66582, "\uD801\uDC3E"],
1403
+ [66583, "\uD801\uDC3F"],
1404
+ [66584, "\uD801\uDC40"],
1405
+ [66585, "\uD801\uDC41"],
1406
+ [66586, "\uD801\uDC42"],
1407
+ [66587, "\uD801\uDC43"],
1408
+ [66588, "\uD801\uDC44"],
1409
+ [66589, "\uD801\uDC45"],
1410
+ [66590, "\uD801\uDC46"],
1411
+ [66591, "\uD801\uDC47"],
1412
+ [66592, "\uD801\uDC48"],
1413
+ [66593, "\uD801\uDC49"],
1414
+ [66594, "\uD801\uDC4A"],
1415
+ [66595, "\uD801\uDC4B"],
1416
+ [66596, "\uD801\uDC4C"],
1417
+ [66597, "\uD801\uDC4D"],
1418
+ [66598, "\uD801\uDC4E"],
1419
+ [66599, "\uD801\uDC4F"],
1420
+ [66736, "\uD801\uDCD8"],
1421
+ [66737, "\uD801\uDCD9"],
1422
+ [66738, "\uD801\uDCDA"],
1423
+ [66739, "\uD801\uDCDB"],
1424
+ [66740, "\uD801\uDCDC"],
1425
+ [66741, "\uD801\uDCDD"],
1426
+ [66742, "\uD801\uDCDE"],
1427
+ [66743, "\uD801\uDCDF"],
1428
+ [66744, "\uD801\uDCE0"],
1429
+ [66745, "\uD801\uDCE1"],
1430
+ [66746, "\uD801\uDCE2"],
1431
+ [66747, "\uD801\uDCE3"],
1432
+ [66748, "\uD801\uDCE4"],
1433
+ [66749, "\uD801\uDCE5"],
1434
+ [66750, "\uD801\uDCE6"],
1435
+ [66751, "\uD801\uDCE7"],
1436
+ [66752, "\uD801\uDCE8"],
1437
+ [66753, "\uD801\uDCE9"],
1438
+ [66754, "\uD801\uDCEA"],
1439
+ [66755, "\uD801\uDCEB"],
1440
+ [66756, "\uD801\uDCEC"],
1441
+ [66757, "\uD801\uDCED"],
1442
+ [66758, "\uD801\uDCEE"],
1443
+ [66759, "\uD801\uDCEF"],
1444
+ [66760, "\uD801\uDCF0"],
1445
+ [66761, "\uD801\uDCF1"],
1446
+ [66762, "\uD801\uDCF2"],
1447
+ [66763, "\uD801\uDCF3"],
1448
+ [66764, "\uD801\uDCF4"],
1449
+ [66765, "\uD801\uDCF5"],
1450
+ [66766, "\uD801\uDCF6"],
1451
+ [66767, "\uD801\uDCF7"],
1452
+ [66768, "\uD801\uDCF8"],
1453
+ [66769, "\uD801\uDCF9"],
1454
+ [66770, "\uD801\uDCFA"],
1455
+ [66771, "\uD801\uDCFB"],
1456
+ [66928, "\uD801\uDD97"],
1457
+ [66929, "\uD801\uDD98"],
1458
+ [66930, "\uD801\uDD99"],
1459
+ [66931, "\uD801\uDD9A"],
1460
+ [66932, "\uD801\uDD9B"],
1461
+ [66933, "\uD801\uDD9C"],
1462
+ [66934, "\uD801\uDD9D"],
1463
+ [66935, "\uD801\uDD9E"],
1464
+ [66936, "\uD801\uDD9F"],
1465
+ [66937, "\uD801\uDDA0"],
1466
+ [66938, "\uD801\uDDA1"],
1467
+ [66940, "\uD801\uDDA3"],
1468
+ [66941, "\uD801\uDDA4"],
1469
+ [66942, "\uD801\uDDA5"],
1470
+ [66943, "\uD801\uDDA6"],
1471
+ [66944, "\uD801\uDDA7"],
1472
+ [66945, "\uD801\uDDA8"],
1473
+ [66946, "\uD801\uDDA9"],
1474
+ [66947, "\uD801\uDDAA"],
1475
+ [66948, "\uD801\uDDAB"],
1476
+ [66949, "\uD801\uDDAC"],
1477
+ [66950, "\uD801\uDDAD"],
1478
+ [66951, "\uD801\uDDAE"],
1479
+ [66952, "\uD801\uDDAF"],
1480
+ [66953, "\uD801\uDDB0"],
1481
+ [66954, "\uD801\uDDB1"],
1482
+ [66956, "\uD801\uDDB3"],
1483
+ [66957, "\uD801\uDDB4"],
1484
+ [66958, "\uD801\uDDB5"],
1485
+ [66959, "\uD801\uDDB6"],
1486
+ [66960, "\uD801\uDDB7"],
1487
+ [66961, "\uD801\uDDB8"],
1488
+ [66962, "\uD801\uDDB9"],
1489
+ [66964, "\uD801\uDDBB"],
1490
+ [66965, "\uD801\uDDBC"],
1491
+ [68736, "\uD803\uDCC0"],
1492
+ [68737, "\uD803\uDCC1"],
1493
+ [68738, "\uD803\uDCC2"],
1494
+ [68739, "\uD803\uDCC3"],
1495
+ [68740, "\uD803\uDCC4"],
1496
+ [68741, "\uD803\uDCC5"],
1497
+ [68742, "\uD803\uDCC6"],
1498
+ [68743, "\uD803\uDCC7"],
1499
+ [68744, "\uD803\uDCC8"],
1500
+ [68745, "\uD803\uDCC9"],
1501
+ [68746, "\uD803\uDCCA"],
1502
+ [68747, "\uD803\uDCCB"],
1503
+ [68748, "\uD803\uDCCC"],
1504
+ [68749, "\uD803\uDCCD"],
1505
+ [68750, "\uD803\uDCCE"],
1506
+ [68751, "\uD803\uDCCF"],
1507
+ [68752, "\uD803\uDCD0"],
1508
+ [68753, "\uD803\uDCD1"],
1509
+ [68754, "\uD803\uDCD2"],
1510
+ [68755, "\uD803\uDCD3"],
1511
+ [68756, "\uD803\uDCD4"],
1512
+ [68757, "\uD803\uDCD5"],
1513
+ [68758, "\uD803\uDCD6"],
1514
+ [68759, "\uD803\uDCD7"],
1515
+ [68760, "\uD803\uDCD8"],
1516
+ [68761, "\uD803\uDCD9"],
1517
+ [68762, "\uD803\uDCDA"],
1518
+ [68763, "\uD803\uDCDB"],
1519
+ [68764, "\uD803\uDCDC"],
1520
+ [68765, "\uD803\uDCDD"],
1521
+ [68766, "\uD803\uDCDE"],
1522
+ [68767, "\uD803\uDCDF"],
1523
+ [68768, "\uD803\uDCE0"],
1524
+ [68769, "\uD803\uDCE1"],
1525
+ [68770, "\uD803\uDCE2"],
1526
+ [68771, "\uD803\uDCE3"],
1527
+ [68772, "\uD803\uDCE4"],
1528
+ [68773, "\uD803\uDCE5"],
1529
+ [68774, "\uD803\uDCE6"],
1530
+ [68775, "\uD803\uDCE7"],
1531
+ [68776, "\uD803\uDCE8"],
1532
+ [68777, "\uD803\uDCE9"],
1533
+ [68778, "\uD803\uDCEA"],
1534
+ [68779, "\uD803\uDCEB"],
1535
+ [68780, "\uD803\uDCEC"],
1536
+ [68781, "\uD803\uDCED"],
1537
+ [68782, "\uD803\uDCEE"],
1538
+ [68783, "\uD803\uDCEF"],
1539
+ [68784, "\uD803\uDCF0"],
1540
+ [68785, "\uD803\uDCF1"],
1541
+ [68786, "\uD803\uDCF2"],
1542
+ [71840, "\uD806\uDCC0"],
1543
+ [71841, "\uD806\uDCC1"],
1544
+ [71842, "\uD806\uDCC2"],
1545
+ [71843, "\uD806\uDCC3"],
1546
+ [71844, "\uD806\uDCC4"],
1547
+ [71845, "\uD806\uDCC5"],
1548
+ [71846, "\uD806\uDCC6"],
1549
+ [71847, "\uD806\uDCC7"],
1550
+ [71848, "\uD806\uDCC8"],
1551
+ [71849, "\uD806\uDCC9"],
1552
+ [71850, "\uD806\uDCCA"],
1553
+ [71851, "\uD806\uDCCB"],
1554
+ [71852, "\uD806\uDCCC"],
1555
+ [71853, "\uD806\uDCCD"],
1556
+ [71854, "\uD806\uDCCE"],
1557
+ [71855, "\uD806\uDCCF"],
1558
+ [71856, "\uD806\uDCD0"],
1559
+ [71857, "\uD806\uDCD1"],
1560
+ [71858, "\uD806\uDCD2"],
1561
+ [71859, "\uD806\uDCD3"],
1562
+ [71860, "\uD806\uDCD4"],
1563
+ [71861, "\uD806\uDCD5"],
1564
+ [71862, "\uD806\uDCD6"],
1565
+ [71863, "\uD806\uDCD7"],
1566
+ [71864, "\uD806\uDCD8"],
1567
+ [71865, "\uD806\uDCD9"],
1568
+ [71866, "\uD806\uDCDA"],
1569
+ [71867, "\uD806\uDCDB"],
1570
+ [71868, "\uD806\uDCDC"],
1571
+ [71869, "\uD806\uDCDD"],
1572
+ [71870, "\uD806\uDCDE"],
1573
+ [71871, "\uD806\uDCDF"],
1574
+ [93760, "\uD81B\uDE60"],
1575
+ [93761, "\uD81B\uDE61"],
1576
+ [93762, "\uD81B\uDE62"],
1577
+ [93763, "\uD81B\uDE63"],
1578
+ [93764, "\uD81B\uDE64"],
1579
+ [93765, "\uD81B\uDE65"],
1580
+ [93766, "\uD81B\uDE66"],
1581
+ [93767, "\uD81B\uDE67"],
1582
+ [93768, "\uD81B\uDE68"],
1583
+ [93769, "\uD81B\uDE69"],
1584
+ [93770, "\uD81B\uDE6A"],
1585
+ [93771, "\uD81B\uDE6B"],
1586
+ [93772, "\uD81B\uDE6C"],
1587
+ [93773, "\uD81B\uDE6D"],
1588
+ [93774, "\uD81B\uDE6E"],
1589
+ [93775, "\uD81B\uDE6F"],
1590
+ [93776, "\uD81B\uDE70"],
1591
+ [93777, "\uD81B\uDE71"],
1592
+ [93778, "\uD81B\uDE72"],
1593
+ [93779, "\uD81B\uDE73"],
1594
+ [93780, "\uD81B\uDE74"],
1595
+ [93781, "\uD81B\uDE75"],
1596
+ [93782, "\uD81B\uDE76"],
1597
+ [93783, "\uD81B\uDE77"],
1598
+ [93784, "\uD81B\uDE78"],
1599
+ [93785, "\uD81B\uDE79"],
1600
+ [93786, "\uD81B\uDE7A"],
1601
+ [93787, "\uD81B\uDE7B"],
1602
+ [93788, "\uD81B\uDE7C"],
1603
+ [93789, "\uD81B\uDE7D"],
1604
+ [93790, "\uD81B\uDE7E"],
1605
+ [93791, "\uD81B\uDE7F"],
1606
+ [125184, "\uD83A\uDD22"],
1607
+ [125185, "\uD83A\uDD23"],
1608
+ [125186, "\uD83A\uDD24"],
1609
+ [125187, "\uD83A\uDD25"],
1610
+ [125188, "\uD83A\uDD26"],
1611
+ [125189, "\uD83A\uDD27"],
1612
+ [125190, "\uD83A\uDD28"],
1613
+ [125191, "\uD83A\uDD29"],
1614
+ [125192, "\uD83A\uDD2A"],
1615
+ [125193, "\uD83A\uDD2B"],
1616
+ [125194, "\uD83A\uDD2C"],
1617
+ [125195, "\uD83A\uDD2D"],
1618
+ [125196, "\uD83A\uDD2E"],
1619
+ [125197, "\uD83A\uDD2F"],
1620
+ [125198, "\uD83A\uDD30"],
1621
+ [125199, "\uD83A\uDD31"],
1622
+ [125200, "\uD83A\uDD32"],
1623
+ [125201, "\uD83A\uDD33"],
1624
+ [125202, "\uD83A\uDD34"],
1625
+ [125203, "\uD83A\uDD35"],
1626
+ [125204, "\uD83A\uDD36"],
1627
+ [125205, "\uD83A\uDD37"],
1628
+ [125206, "\uD83A\uDD38"],
1629
+ [125207, "\uD83A\uDD39"],
1630
+ [125208, "\uD83A\uDD3A"],
1631
+ [125209, "\uD83A\uDD3B"],
1632
+ [125210, "\uD83A\uDD3C"],
1633
+ [125211, "\uD83A\uDD3D"],
1634
+ [125212, "\uD83A\uDD3E"],
1635
+ [125213, "\uD83A\uDD3F"],
1636
+ [125214, "\uD83A\uDD40"],
1637
+ [125215, "\uD83A\uDD41"],
1638
+ [125216, "\uD83A\uDD42"],
1639
+ [125217, "\uD83A\uDD43"]
1640
+ ]);
1641
+
1642
+ // src/diagnostics.ts
1643
+ class CheckError extends Error {
1644
+ kind;
1645
+ code;
1646
+ path;
1647
+ pointer;
1648
+ constructor(kind, code, message, path, pointer) {
1649
+ super(message);
1650
+ this.name = "CheckError";
1651
+ this.kind = kind;
1652
+ this.code = code;
1653
+ if (path !== undefined)
1654
+ this.path = path;
1655
+ if (pointer !== undefined)
1656
+ this.pointer = pointer;
1657
+ }
1658
+ }
1659
+ function unavailable(code, message, path, pointer) {
1660
+ throw new CheckError("unavailable", code, message, path, pointer);
1661
+ }
1662
+
1663
+ // src/package/paths.ts
1664
+ var encoder2 = new TextEncoder;
1665
+ var REQUIRED_UNICODE_VERSION = "15.1";
1666
+ function isNfc15_1(value) {
1667
+ const actual = process.versions.unicode;
1668
+ if (actual !== REQUIRED_UNICODE_VERSION) {
1669
+ unavailable("PACKAGE_UNICODE_UNAVAILABLE", `Package/1 requires Unicode ${REQUIRED_UNICODE_VERSION} NFC; host reports ${actual ?? "no Unicode version"}`);
1670
+ }
1671
+ return value === value.normalize("NFC");
1672
+ }
1673
+ function fullCaseFold15_1(value) {
1674
+ let result = "";
1675
+ for (const scalar of value) {
1676
+ result += CASE_FOLD_15_1.get(scalar.codePointAt(0)) ?? scalar;
1677
+ }
1678
+ return result;
1679
+ }
1680
+
1681
+ // src/project/paths.ts
1682
+ var encoder3 = new TextEncoder;
1683
+ var MAX_PROJECT_PATH_BYTES = 1024;
1684
+ var MAX_PROJECT_PATH_SEGMENTS = 64;
1685
+ var MAX_PROJECT_PATH_SEGMENT_BYTES = 255;
1686
+ function normalizeProjectPath(value, label) {
1687
+ if (typeof value !== "string")
1688
+ throw new TypeError(`${label} must be a string`);
1689
+ const path = value.startsWith("./") ? value.slice(2) : value;
1690
+ validateProjectPath(path, label);
1691
+ return path;
1692
+ }
1693
+ function validateProjectPath(path, label) {
1694
+ if (typeof path !== "string")
1695
+ throw new TypeError(`${label} must be a string`);
1696
+ validateJson1(path);
1697
+ if (path.length === 0 || path.startsWith("/") || path.includes("\\") || path.includes("\x00")) {
1698
+ throw new TypeError(`${label} must be a project-relative slash path`);
1699
+ }
1700
+ assertUnicodeScalarString(path, label);
1701
+ if (!isNfc15_1(path))
1702
+ throw new TypeError(`${label} must be Unicode 15.1 NFC`);
1703
+ const segments = path.split("/");
1704
+ if (segments.length > MAX_PROJECT_PATH_SEGMENTS) {
1705
+ throw new TypeError(`${label} exceeds ${MAX_PROJECT_PATH_SEGMENTS} segments`);
1706
+ }
1707
+ if (encoder3.encode(path).byteLength > MAX_PROJECT_PATH_BYTES) {
1708
+ throw new TypeError(`${label} exceeds ${MAX_PROJECT_PATH_BYTES} UTF-8 bytes`);
1709
+ }
1710
+ for (const segment of segments) {
1711
+ if (segment.length === 0 || segment === "." || segment === "..") {
1712
+ throw new TypeError(`${label} contains an invalid path segment`);
1713
+ }
1714
+ if (encoder3.encode(segment).byteLength > MAX_PROJECT_PATH_SEGMENT_BYTES) {
1715
+ throw new TypeError(`${label} has a segment exceeding ${MAX_PROJECT_PATH_SEGMENT_BYTES} UTF-8 bytes`);
1716
+ }
1717
+ }
1718
+ }
1719
+ function assertUnicodeScalarString(value, label) {
1720
+ for (let index = 0;index < value.length; index += 1) {
1721
+ const code = value.charCodeAt(index);
1722
+ if (code >= 55296 && code <= 56319) {
1723
+ const next = value.charCodeAt(index + 1);
1724
+ if (!(next >= 56320 && next <= 57343)) {
1725
+ throw new TypeError(`${label} contains a lone Unicode surrogate`);
1726
+ }
1727
+ index += 1;
1728
+ } else if (code >= 56320 && code <= 57343) {
1729
+ throw new TypeError(`${label} contains a lone Unicode surrogate`);
1730
+ }
1731
+ }
1732
+ }
1733
+ function assertNoProjectPathCollisions(paths, label) {
1734
+ const folded = new Map;
1735
+ for (const path of paths) {
1736
+ validateProjectPath(path, label);
1737
+ const key = fullCaseFold15_1(path);
1738
+ const prior = folded.get(key);
1739
+ if (prior !== undefined)
1740
+ throw new TypeError(`${label} paths collide: ${prior} and ${path}`);
1741
+ folded.set(key, path);
1742
+ }
1743
+ }
1744
+ function compareProjectPaths(left, right) {
1745
+ const leftBytes = encoder3.encode(left);
1746
+ const rightBytes = encoder3.encode(right);
1747
+ const length = Math.min(leftBytes.length, rightBytes.length);
1748
+ for (let index = 0;index < length; index += 1) {
1749
+ const difference = leftBytes[index] - rightBytes[index];
1750
+ if (difference !== 0)
1751
+ return difference;
1752
+ }
1753
+ return leftBytes.length - rightBytes.length;
1754
+ }
1755
+
1756
+ // src/project/author.ts
1757
+ var GLOB_CHARACTERS = /[*?\[\]{}]/;
1758
+ function discover(roots) {
1759
+ const values = typeof roots === "string" ? [roots] : snapshotStringArray(roots, "roots");
1760
+ if (values.length === 0)
1761
+ throw new TypeError("discover() requires at least one root");
1762
+ return record({
1763
+ kind: "discover",
1764
+ roots: normalizeUniquePaths(values, "root", true)
1765
+ });
1766
+ }
1767
+ function defineJig(input) {
1768
+ return normalizeJig(input, false);
1769
+ }
1770
+ function normalizeJig(input, canonical) {
1771
+ const captured = snapshotJsonObject(input, "Jig definition");
1772
+ assertClosedObject(captured, ["flows", "bindings"], "Jig definition");
1773
+ const output = {};
1774
+ if (Object.hasOwn(captured, "flows")) {
1775
+ output.flows = normalizeSource(captured.flows, "flows", canonical);
1776
+ }
1777
+ if (Object.hasOwn(captured, "bindings")) {
1778
+ output.bindings = normalizeSource(captured.bindings, "bindings", canonical);
1779
+ }
1780
+ return record(output);
1781
+ }
1782
+ function defineBinding(input) {
1783
+ return normalizeBinding(input, false);
1784
+ }
1785
+ function normalizeBinding(input, canonical) {
1786
+ const captured = snapshotJsonObject(input, "Binding definition");
1787
+ assertClosedObject(captured, canonical ? ["kind", "package", "settings"] : ["package", "settings"], "Binding definition");
1788
+ if (canonical && captured.kind !== "package") {
1789
+ throw new TypeError("Binding kind must be package");
1790
+ }
1791
+ if (!Object.hasOwn(captured, "package"))
1792
+ throw new TypeError("Binding package is required");
1793
+ const packagePath = normalizeProjectPath(captured.package, "package");
1794
+ const settings = Object.hasOwn(captured, "settings") ? expectJsonObject(captured.settings, "settings") : emptyRecord();
1795
+ return record({ kind: "package", package: packagePath, settings });
1796
+ }
1797
+ function normalizeSource(value, field, canonical) {
1798
+ if (value === undefined)
1799
+ throw new TypeError(`${field} cannot be undefined`);
1800
+ if (isReadonlyArray(value)) {
1801
+ return record({
1802
+ kind: "members",
1803
+ paths: normalizeUniquePaths(snapshotStringArray(value, field), `${field} member`, false)
1804
+ });
1805
+ }
1806
+ if (value.kind === "members") {
1807
+ if (!canonical)
1808
+ throw new TypeError(`${field} source must come from discover()`);
1809
+ const members = value;
1810
+ assertClosedObject(members, ["kind", "paths"], `${field} source`);
1811
+ return record({
1812
+ kind: "members",
1813
+ paths: normalizeUniquePaths(snapshotStringArray(members.paths, `${field} paths`), `${field} member`, false)
1814
+ });
1815
+ }
1816
+ assertClosedObject(value, ["kind", "roots"], `${field} source`);
1817
+ if (value.kind !== "discover")
1818
+ throw new TypeError(`${field} source has an invalid kind`);
1819
+ const roots = normalizeUniquePaths(snapshotStringArray(value.roots, `${field} roots`), `${field} root`, true);
1820
+ if (roots.length === 0)
1821
+ throw new TypeError(`${field} discovery requires at least one root`);
1822
+ return record({ kind: "discover", roots });
1823
+ }
1824
+ function normalizeUniquePaths(values, label, rejectGlob) {
1825
+ if (values.length > JSON_1_LIMITS.containerEntries) {
1826
+ throw new TypeError(`${label} values exceed the JSON/1 container bound`);
1827
+ }
1828
+ const paths = values.map((value) => {
1829
+ const path = normalizeProjectPath(value, label);
1830
+ if (rejectGlob && GLOB_CHARACTERS.test(path)) {
1831
+ throw new TypeError(`${label} cannot contain glob characters`);
1832
+ }
1833
+ return path;
1834
+ });
1835
+ paths.sort(compareProjectPaths);
1836
+ assertNoProjectPathCollisions(paths, label);
1837
+ return Object.freeze(paths);
1838
+ }
1839
+ function snapshotJsonObject(value, label) {
1840
+ const snapshot = snapshotJson(value, label);
1841
+ validateJson1(snapshot);
1842
+ return expectJsonObject(snapshot, label);
1843
+ }
1844
+ function expectJsonObject(value, label) {
1845
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
1846
+ throw new TypeError(`${label} must be an object`);
1847
+ }
1848
+ return value;
1849
+ }
1850
+ function snapshotJson(value, label, active = new WeakSet) {
1851
+ if (value === null || typeof value === "string" || typeof value === "boolean")
1852
+ return value;
1853
+ if (typeof value === "number") {
1854
+ if (!Number.isFinite(value) || Number.isInteger(value) && !Number.isSafeInteger(value)) {
1855
+ throw new TypeError(`${label} contains an invalid JSON/1 number`);
1856
+ }
1857
+ return value;
1858
+ }
1859
+ if (typeof value !== "object")
1860
+ throw new TypeError(`${label} contains a non-JSON value`);
1861
+ if (active.has(value))
1862
+ throw new TypeError(`${label} contains a cycle`);
1863
+ active.add(value);
1864
+ try {
1865
+ const keys = Reflect.ownKeys(value);
1866
+ if (keys.some((key) => typeof key === "symbol")) {
1867
+ throw new TypeError(`${label} contains a symbol property`);
1868
+ }
1869
+ if (Array.isArray(value)) {
1870
+ if (Object.getPrototypeOf(value) !== Array.prototype) {
1871
+ throw new TypeError(`${label} contains an array subclass`);
1872
+ }
1873
+ const lengthDescriptor = Object.getOwnPropertyDescriptor(value, "length");
1874
+ if (lengthDescriptor === undefined || !("value" in lengthDescriptor)) {
1875
+ throw new TypeError(`${label} has an invalid array length`);
1876
+ }
1877
+ const length = lengthDescriptor.value;
1878
+ if (keys.length !== length + 1) {
1879
+ throw new TypeError(`${label} contains a sparse or extended array`);
1880
+ }
1881
+ const output2 = [];
1882
+ for (let index = 0;index < length; index += 1) {
1883
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
1884
+ if (descriptor === undefined || !("value" in descriptor) || !descriptor.enumerable) {
1885
+ throw new TypeError(`${label} contains a sparse or accessor-backed array`);
1886
+ }
1887
+ output2.push(snapshotJson(descriptor.value, label, active));
1888
+ }
1889
+ return Object.freeze(output2);
1890
+ }
1891
+ const prototype = Object.getPrototypeOf(value);
1892
+ if (prototype !== Object.prototype && prototype !== null) {
1893
+ throw new TypeError(`${label} contains a non-plain object`);
1894
+ }
1895
+ const output = Object.create(null);
1896
+ for (const key of keys) {
1897
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
1898
+ if (descriptor === undefined || !("value" in descriptor) || !descriptor.enumerable) {
1899
+ throw new TypeError(`${label} contains an accessor or hidden property`);
1900
+ }
1901
+ Object.defineProperty(output, key, {
1902
+ value: snapshotJson(descriptor.value, label, active),
1903
+ enumerable: true,
1904
+ writable: false,
1905
+ configurable: false
1906
+ });
1907
+ }
1908
+ return Object.freeze(output);
1909
+ } finally {
1910
+ active.delete(value);
1911
+ }
1912
+ }
1913
+ function assertRecord(value, label) {
1914
+ if (value === undefined || value === null || typeof value !== "object" || Array.isArray(value)) {
1915
+ throw new TypeError(`${label} must be an object`);
1916
+ }
1917
+ const prototype = Object.getPrototypeOf(value);
1918
+ if (prototype !== Object.prototype && prototype !== null) {
1919
+ throw new TypeError(`${label} must be a plain object`);
1920
+ }
1921
+ if (Object.getOwnPropertySymbols(value).length !== 0) {
1922
+ throw new TypeError(`${label} cannot contain symbol properties`);
1923
+ }
1924
+ for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(value))) {
1925
+ if (!("value" in descriptor) || !descriptor.enumerable) {
1926
+ throw new TypeError(`${label}.${key} must be an enumerable data property`);
1927
+ }
1928
+ }
1929
+ return value;
1930
+ }
1931
+ function assertClosedObject(value, allowed, label) {
1932
+ const object = assertRecord(value, label);
1933
+ const allowedSet = new Set(allowed);
1934
+ for (const key of Object.keys(object)) {
1935
+ if (!allowedSet.has(key))
1936
+ throw new TypeError(`${label} has unknown field ${key}`);
1937
+ }
1938
+ }
1939
+ function isReadonlyArray(value) {
1940
+ return Array.isArray(value);
1941
+ }
1942
+ function sortedKeys(value) {
1943
+ return Object.keys(value).sort(compareUtf8);
1944
+ }
1945
+ function snapshotStringArray(value, label) {
1946
+ const snapshot = snapshotJson(value, label);
1947
+ validateJson1(snapshot);
1948
+ if (!Array.isArray(snapshot) || snapshot.some((item) => typeof item !== "string")) {
1949
+ throw new TypeError(`${label} must be an array of strings`);
1950
+ }
1951
+ return snapshot;
1952
+ }
1953
+ function emptyRecord() {
1954
+ return Object.freeze(Object.create(null));
1955
+ }
1956
+ function record(value) {
1957
+ const output = Object.create(null);
1958
+ for (const key of sortedKeys(value)) {
1959
+ Object.defineProperty(output, key, {
1960
+ value: value[key],
1961
+ enumerable: true,
1962
+ writable: false,
1963
+ configurable: false
1964
+ });
1965
+ }
1966
+ return Object.freeze(output);
1967
+ }
1968
+ function compareUtf8(left, right) {
1969
+ return compareProjectPaths(left, right);
1970
+ }
1971
+ export {
1972
+ discover,
1973
+ defineJig,
1974
+ defineBinding
1975
+ };