unicode-escaper 1.0.0 → 1.0.1

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,591 @@
1
+ // src/formats.ts
2
+ function toHex(codePoint, minLength, uppercase) {
3
+ const hex = codePoint.toString(16);
4
+ const padded = hex.padStart(minLength, "0");
5
+ return uppercase ? padded.toUpperCase() : padded.toLowerCase();
6
+ }
7
+ function toSurrogatePair(codePoint) {
8
+ const offset = codePoint - 65536;
9
+ const highSurrogate = 55296 + (offset >> 10);
10
+ const lowSurrogate = 56320 + (offset & 1023);
11
+ return [highSurrogate, lowSurrogate];
12
+ }
13
+ var formatters = {
14
+ /**
15
+ * Unicode escape: \uXXXX for BMP, surrogate pairs for non-BMP
16
+ */
17
+ unicode: (codePoint, uppercase) => {
18
+ if (codePoint <= 65535) {
19
+ return `\\u${toHex(codePoint, 4, uppercase)}`;
20
+ }
21
+ const [high, low] = toSurrogatePair(codePoint);
22
+ return `\\u${toHex(high, 4, uppercase)}\\u${toHex(low, 4, uppercase)}`;
23
+ },
24
+ /**
25
+ * ES6 Unicode escape: \u{XXXXX} - supports full Unicode range
26
+ */
27
+ "unicode-es6": (codePoint, uppercase) => {
28
+ return `\\u{${toHex(codePoint, 1, uppercase)}}`;
29
+ },
30
+ /**
31
+ * Hex escape: \xNN - only valid for 0x00-0xFF
32
+ */
33
+ hex: (codePoint, uppercase) => {
34
+ if (codePoint > 255) {
35
+ return formatters.unicode(codePoint, uppercase);
36
+ }
37
+ return `\\x${toHex(codePoint, 2, uppercase)}`;
38
+ },
39
+ /**
40
+ * HTML hex entity: &#xNNNN;
41
+ */
42
+ "html-hex": (codePoint, uppercase) => {
43
+ return `&#x${toHex(codePoint, 1, uppercase)};`;
44
+ },
45
+ /**
46
+ * HTML decimal entity: &#NNNN;
47
+ */
48
+ "html-decimal": (codePoint, _uppercase) => {
49
+ return `&#${codePoint};`;
50
+ },
51
+ /**
52
+ * Code point notation: U+XXXX
53
+ */
54
+ codepoint: (codePoint, uppercase) => {
55
+ return `U+${toHex(codePoint, 4, uppercase)}`;
56
+ }
57
+ };
58
+ var unescapePatterns = {
59
+ // Matches \uXXXX including surrogate pairs
60
+ unicode: /\\u([0-9A-Fa-f]{4})/g,
61
+ // Matches \u{X} to \u{XXXXXX}
62
+ "unicode-es6": /\\u\{([0-9A-Fa-f]{1,6})\}/g,
63
+ // Matches \xNN
64
+ hex: /\\x([0-9A-Fa-f]{2})/g,
65
+ // Matches &#xNNNN;
66
+ "html-hex": /&#x([0-9A-Fa-f]+);/gi,
67
+ // Matches &#NNNN;
68
+ "html-decimal": /&#(\d+);/g,
69
+ // Matches U+XXXX
70
+ codepoint: /U\+([0-9A-Fa-f]{4,6})/gi
71
+ };
72
+ var combinedUnescapePattern = /\\u\{([0-9A-Fa-f]{1,6})\}|\\u([0-9A-Fa-f]{4})|\\x([0-9A-Fa-f]{2})|&#x([0-9A-Fa-f]+);|&#(\d+);|U\+([0-9A-Fa-f]{4,6})/gi;
73
+ var surrogatePairPattern = /\\u([Dd][89AaBb][0-9A-Fa-f]{2})\\u([Dd][CcDdEeFf][0-9A-Fa-f]{2})/g;
74
+ function isValidCodePoint(codePoint) {
75
+ return codePoint >= 0 && codePoint <= 1114111;
76
+ }
77
+ function isSurrogateCodePoint(codePoint) {
78
+ return codePoint >= 55296 && codePoint <= 57343;
79
+ }
80
+ function surrogateToCodePoint(high, low) {
81
+ return (high - 55296 << 10) + (low - 56320) + 65536;
82
+ }
83
+
84
+ // src/filters.ts
85
+ var ASCII_MAX = 127;
86
+ var LATIN1_MAX = 255;
87
+ var BMP_MAX = 65535;
88
+ var SURROGATE_HIGH_START = 55296;
89
+ var SURROGATE_HIGH_END = 56319;
90
+ var SURROGATE_LOW_START = 56320;
91
+ var SURROGATE_LOW_END = 57343;
92
+ var isAscii = (_char, codePoint) => {
93
+ return codePoint <= ASCII_MAX;
94
+ };
95
+ var isNotAscii = (_char, codePoint) => {
96
+ return codePoint > ASCII_MAX;
97
+ };
98
+ var isLatin1 = (_char, codePoint) => {
99
+ return codePoint <= LATIN1_MAX;
100
+ };
101
+ var isNotLatin1 = (_char, codePoint) => {
102
+ return codePoint > LATIN1_MAX;
103
+ };
104
+ var isBmp = (_char, codePoint) => {
105
+ return codePoint <= BMP_MAX;
106
+ };
107
+ var isNotBmp = (_char, codePoint) => {
108
+ return codePoint > BMP_MAX;
109
+ };
110
+ var isHighSurrogate = (_char, codePoint) => {
111
+ return codePoint >= SURROGATE_HIGH_START && codePoint <= SURROGATE_HIGH_END;
112
+ };
113
+ var isLowSurrogate = (_char, codePoint) => {
114
+ return codePoint >= SURROGATE_LOW_START && codePoint <= SURROGATE_LOW_END;
115
+ };
116
+ var isSurrogate = (_char, codePoint) => {
117
+ return codePoint >= SURROGATE_HIGH_START && codePoint <= SURROGATE_LOW_END;
118
+ };
119
+ var isPrintableAscii = (_char, codePoint) => {
120
+ return codePoint >= 32 && codePoint <= 126;
121
+ };
122
+ var isNotPrintableAscii = (_char, codePoint) => {
123
+ return codePoint < 32 || codePoint > 126;
124
+ };
125
+ var isControl = (_char, codePoint) => {
126
+ return codePoint <= 31 || codePoint === 127;
127
+ };
128
+ var isWhitespace = (char, _codePoint) => {
129
+ return /\s/.test(char);
130
+ };
131
+ function inRange(start, end) {
132
+ return (_char, codePoint) => {
133
+ return codePoint >= start && codePoint <= end;
134
+ };
135
+ }
136
+ function notInRange(start, end) {
137
+ return (_char, codePoint) => {
138
+ return codePoint < start || codePoint > end;
139
+ };
140
+ }
141
+ function oneOf(chars) {
142
+ const charSet = /* @__PURE__ */ new Set([...chars]);
143
+ return (char, _codePoint) => {
144
+ return charSet.has(char);
145
+ };
146
+ }
147
+ function noneOf(chars) {
148
+ const charSet = /* @__PURE__ */ new Set([...chars]);
149
+ return (char, _codePoint) => {
150
+ return !charSet.has(char);
151
+ };
152
+ }
153
+ function and(...filters) {
154
+ return (char, codePoint) => {
155
+ return filters.every((filter) => filter(char, codePoint));
156
+ };
157
+ }
158
+ function or(...filters) {
159
+ return (char, codePoint) => {
160
+ return filters.some((filter) => filter(char, codePoint));
161
+ };
162
+ }
163
+ function not(filter) {
164
+ return (char, codePoint) => {
165
+ return !filter(char, codePoint);
166
+ };
167
+ }
168
+ var all = () => true;
169
+ var none = () => false;
170
+
171
+ // src/escape.ts
172
+ var DEFAULT_OPTIONS = {
173
+ format: "unicode",
174
+ uppercase: true
175
+ };
176
+ function createPreserveFilter(options) {
177
+ const { preserveAscii = true, preserveLatin1 = false } = options;
178
+ if (preserveLatin1) {
179
+ return isNotLatin1;
180
+ }
181
+ if (preserveAscii) {
182
+ return isNotAscii;
183
+ }
184
+ return () => true;
185
+ }
186
+ function escape(input, options = {}) {
187
+ if (typeof input !== "string") {
188
+ throw new TypeError(`Expected string, got ${typeof input}`);
189
+ }
190
+ if (input.length === 0) {
191
+ return "";
192
+ }
193
+ const format = options.format ?? DEFAULT_OPTIONS.format;
194
+ const uppercase = options.uppercase ?? DEFAULT_OPTIONS.uppercase;
195
+ const formatter = formatters[format];
196
+ if (!formatter) {
197
+ throw new Error(`Unknown escape format: ${format}`);
198
+ }
199
+ const filter = options.filter ?? createPreserveFilter(options);
200
+ const result = [];
201
+ for (const char of input) {
202
+ const codePoint = char.codePointAt(0);
203
+ if (codePoint === void 0) {
204
+ result.push(char);
205
+ continue;
206
+ }
207
+ if (filter(char, codePoint)) {
208
+ result.push(formatter(codePoint, uppercase));
209
+ } else {
210
+ result.push(char);
211
+ }
212
+ }
213
+ return result.join("");
214
+ }
215
+ function escapeWithInfo(input, options = {}) {
216
+ if (typeof input !== "string") {
217
+ throw new TypeError(`Expected string, got ${typeof input}`);
218
+ }
219
+ if (input.length === 0) {
220
+ return {
221
+ escaped: "",
222
+ escapedCount: 0,
223
+ preservedCount: 0,
224
+ totalCount: 0
225
+ };
226
+ }
227
+ const format = options.format ?? DEFAULT_OPTIONS.format;
228
+ const uppercase = options.uppercase ?? DEFAULT_OPTIONS.uppercase;
229
+ const formatter = formatters[format];
230
+ if (!formatter) {
231
+ throw new Error(`Unknown escape format: ${format}`);
232
+ }
233
+ const filter = options.filter ?? createPreserveFilter(options);
234
+ const result = [];
235
+ let escapedCount = 0;
236
+ let preservedCount = 0;
237
+ for (const char of input) {
238
+ const codePoint = char.codePointAt(0);
239
+ if (codePoint === void 0) {
240
+ result.push(char);
241
+ preservedCount++;
242
+ continue;
243
+ }
244
+ if (filter(char, codePoint)) {
245
+ result.push(formatter(codePoint, uppercase));
246
+ escapedCount++;
247
+ } else {
248
+ result.push(char);
249
+ preservedCount++;
250
+ }
251
+ }
252
+ return {
253
+ escaped: result.join(""),
254
+ escapedCount,
255
+ preservedCount,
256
+ totalCount: escapedCount + preservedCount
257
+ };
258
+ }
259
+ function escapeToUnicode(input, options = {}) {
260
+ return escape(input, { ...options, format: "unicode" });
261
+ }
262
+ function escapeToUnicodeES6(input, options = {}) {
263
+ return escape(input, { ...options, format: "unicode-es6" });
264
+ }
265
+ function escapeToHex(input, options = {}) {
266
+ return escape(input, { ...options, format: "hex" });
267
+ }
268
+ function escapeToHtmlHex(input, options = {}) {
269
+ return escape(input, { ...options, format: "html-hex" });
270
+ }
271
+ function escapeToHtmlDecimal(input, options = {}) {
272
+ return escape(input, { ...options, format: "html-decimal" });
273
+ }
274
+ function escapeToCodePoint(input, options = {}) {
275
+ return escape(input, { ...options, format: "codepoint" });
276
+ }
277
+ function escapeAll(input, options = {}) {
278
+ return escape(input, { ...options, filter: () => true });
279
+ }
280
+ function escapeNonPrintable(input, options = {}) {
281
+ return escape(input, {
282
+ ...options,
283
+ filter: (_char, codePoint) => {
284
+ return codePoint < 32 || codePoint === 127 || codePoint > 126;
285
+ }
286
+ });
287
+ }
288
+
289
+ // src/unescape.ts
290
+ var DEFAULT_OPTIONS2 = {
291
+ formats: ["unicode", "unicode-es6", "hex", "html-hex", "html-decimal", "codepoint"],
292
+ lenient: true
293
+ };
294
+ function hexToCodePoint(hex, lenient) {
295
+ const codePoint = parseInt(hex, 16);
296
+ if (isNaN(codePoint)) {
297
+ if (lenient) return null;
298
+ throw new Error(`Invalid hex value: ${hex}`);
299
+ }
300
+ if (!isValidCodePoint(codePoint)) {
301
+ if (lenient) return null;
302
+ throw new Error(`Invalid code point: U+${hex.toUpperCase()}`);
303
+ }
304
+ return codePoint;
305
+ }
306
+ function decimalToCodePoint(decimal, lenient) {
307
+ const codePoint = parseInt(decimal, 10);
308
+ if (isNaN(codePoint)) {
309
+ if (lenient) return null;
310
+ throw new Error(`Invalid decimal value: ${decimal}`);
311
+ }
312
+ if (!isValidCodePoint(codePoint)) {
313
+ if (lenient) return null;
314
+ throw new Error(`Invalid code point: ${codePoint}`);
315
+ }
316
+ return codePoint;
317
+ }
318
+ function codePointToChar(codePoint) {
319
+ return String.fromCodePoint(codePoint);
320
+ }
321
+ function unescape(input, options = {}) {
322
+ if (typeof input !== "string") {
323
+ throw new TypeError(`Expected string, got ${typeof input}`);
324
+ }
325
+ if (input.length === 0) {
326
+ return "";
327
+ }
328
+ const lenient = options.lenient ?? DEFAULT_OPTIONS2.lenient;
329
+ const formats = options.formats ?? DEFAULT_OPTIONS2.formats;
330
+ let result = input;
331
+ if (formats.includes("unicode")) {
332
+ const pairPattern = new RegExp(surrogatePairPattern.source, surrogatePairPattern.flags);
333
+ result = result.replace(pairPattern, (match, highHex, lowHex) => {
334
+ const high = hexToCodePoint(highHex, lenient);
335
+ const low = hexToCodePoint(lowHex, lenient);
336
+ if (high === null || low === null) {
337
+ return match;
338
+ }
339
+ const codePoint = surrogateToCodePoint(high, low);
340
+ return codePointToChar(codePoint);
341
+ });
342
+ }
343
+ for (const format of formats) {
344
+ const pattern = unescapePatterns[format];
345
+ if (!pattern) continue;
346
+ const regex = new RegExp(pattern.source, pattern.flags);
347
+ result = result.replace(regex, (match, captured) => {
348
+ let codePoint;
349
+ if (format === "html-decimal") {
350
+ codePoint = decimalToCodePoint(captured, lenient);
351
+ } else {
352
+ codePoint = hexToCodePoint(captured, lenient);
353
+ }
354
+ if (codePoint === null) {
355
+ return match;
356
+ }
357
+ if (isSurrogateCodePoint(codePoint)) {
358
+ if (lenient) {
359
+ return match;
360
+ }
361
+ throw new Error(`Standalone surrogate not allowed: U+${codePoint.toString(16).toUpperCase()}`);
362
+ }
363
+ return codePointToChar(codePoint);
364
+ });
365
+ }
366
+ return result;
367
+ }
368
+ function unescapeUnicode(input, options = {}) {
369
+ return unescape(input, { ...options, formats: ["unicode"] });
370
+ }
371
+ function unescapeUnicodeES6(input, options = {}) {
372
+ return unescape(input, { ...options, formats: ["unicode-es6"] });
373
+ }
374
+ function unescapeHex(input, options = {}) {
375
+ return unescape(input, { ...options, formats: ["hex"] });
376
+ }
377
+ function unescapeHtmlHex(input, options = {}) {
378
+ return unescape(input, { ...options, formats: ["html-hex"] });
379
+ }
380
+ function unescapeHtmlDecimal(input, options = {}) {
381
+ return unescape(input, { ...options, formats: ["html-decimal"] });
382
+ }
383
+ function unescapeCodePoint(input, options = {}) {
384
+ return unescape(input, { ...options, formats: ["codepoint"] });
385
+ }
386
+ function unescapeHtml(input, options = {}) {
387
+ return unescape(input, { ...options, formats: ["html-hex", "html-decimal"] });
388
+ }
389
+ function unescapeJs(input, options = {}) {
390
+ return unescape(input, { ...options, formats: ["unicode", "unicode-es6", "hex"] });
391
+ }
392
+ function hasEscapeSequences(input, formats) {
393
+ if (typeof input !== "string" || input.length === 0) {
394
+ return false;
395
+ }
396
+ if (formats) {
397
+ return formats.some((format) => {
398
+ const pattern = unescapePatterns[format];
399
+ if (!pattern) return false;
400
+ return new RegExp(pattern.source, pattern.flags.replace("g", "")).test(input);
401
+ });
402
+ }
403
+ return new RegExp(combinedUnescapePattern.source, "i").test(input);
404
+ }
405
+ function countEscapeSequences(input, formats) {
406
+ if (typeof input !== "string" || input.length === 0) {
407
+ return 0;
408
+ }
409
+ let count = 0;
410
+ if (formats) {
411
+ for (const format of formats) {
412
+ const pattern = unescapePatterns[format];
413
+ if (!pattern) continue;
414
+ const matches = input.match(new RegExp(pattern.source, pattern.flags));
415
+ count += matches?.length ?? 0;
416
+ }
417
+ } else {
418
+ const matches = input.match(new RegExp(combinedUnescapePattern.source, combinedUnescapePattern.flags));
419
+ count = matches?.length ?? 0;
420
+ }
421
+ return count;
422
+ }
423
+
424
+ // src/utils.ts
425
+ function getCodePoint(char) {
426
+ if (typeof char !== "string" || char.length === 0) {
427
+ return void 0;
428
+ }
429
+ return char.codePointAt(0);
430
+ }
431
+ function fromCodePoint(codePoint) {
432
+ if (typeof codePoint !== "number" || !Number.isInteger(codePoint)) {
433
+ throw new TypeError("Code point must be an integer");
434
+ }
435
+ if (codePoint < 0 || codePoint > 1114111) {
436
+ throw new RangeError(`Invalid code point: ${codePoint}`);
437
+ }
438
+ return String.fromCodePoint(codePoint);
439
+ }
440
+ function isAscii2(char) {
441
+ const codePoint = getCodePoint(char);
442
+ return codePoint !== void 0 && codePoint <= 127;
443
+ }
444
+ function isLatin12(char) {
445
+ const codePoint = getCodePoint(char);
446
+ return codePoint !== void 0 && codePoint <= 255;
447
+ }
448
+ function isBmp2(char) {
449
+ const codePoint = getCodePoint(char);
450
+ return codePoint !== void 0 && codePoint <= 65535;
451
+ }
452
+ function isHighSurrogate2(codePoint) {
453
+ return codePoint >= 55296 && codePoint <= 56319;
454
+ }
455
+ function isLowSurrogate2(codePoint) {
456
+ return codePoint >= 56320 && codePoint <= 57343;
457
+ }
458
+ function isSurrogate2(codePoint) {
459
+ return codePoint >= 55296 && codePoint <= 57343;
460
+ }
461
+ function getCharInfo(char) {
462
+ const codePoint = getCodePoint(char);
463
+ if (codePoint === void 0) {
464
+ return void 0;
465
+ }
466
+ return {
467
+ char,
468
+ codePoint,
469
+ hex: codePoint.toString(16).toUpperCase().padStart(4, "0"),
470
+ isAscii: codePoint <= 127,
471
+ isBmp: codePoint <= 65535,
472
+ isLatin1: codePoint <= 255,
473
+ isHighSurrogate: codePoint >= 55296 && codePoint <= 56319,
474
+ isLowSurrogate: codePoint >= 56320 && codePoint <= 57343,
475
+ utf16Length: char.length
476
+ };
477
+ }
478
+ function* iterateCodePoints(input) {
479
+ let index = 0;
480
+ for (const char of input) {
481
+ const codePoint = char.codePointAt(0);
482
+ if (codePoint !== void 0) {
483
+ yield { char, codePoint, index };
484
+ }
485
+ index++;
486
+ }
487
+ }
488
+ function toCodePoints(input) {
489
+ const codePoints = [];
490
+ for (const char of input) {
491
+ const codePoint = char.codePointAt(0);
492
+ if (codePoint !== void 0) {
493
+ codePoints.push(codePoint);
494
+ }
495
+ }
496
+ return codePoints;
497
+ }
498
+ function fromCodePoints(codePoints) {
499
+ return String.fromCodePoint(...codePoints);
500
+ }
501
+ function codePointLength(input) {
502
+ return [...input].length;
503
+ }
504
+ function toHex2(codePoint, options = {}) {
505
+ const { prefix = "", minLength = 4, uppercase = true } = options;
506
+ let hex = codePoint.toString(16);
507
+ hex = hex.padStart(minLength, "0");
508
+ hex = uppercase ? hex.toUpperCase() : hex.toLowerCase();
509
+ return prefix + hex;
510
+ }
511
+ function parseHex(hex) {
512
+ const cleaned = hex.replace(/^(0x|U\+|\\u\{?|&#x)/i, "").replace(/[}\;]$/, "");
513
+ const codePoint = parseInt(cleaned, 16);
514
+ if (isNaN(codePoint) || codePoint < 0 || codePoint > 1114111) {
515
+ return void 0;
516
+ }
517
+ return codePoint;
518
+ }
519
+ function isValidUnicode(input) {
520
+ for (let i = 0; i < input.length; i++) {
521
+ const code = input.charCodeAt(i);
522
+ if (isHighSurrogate2(code)) {
523
+ if (i + 1 >= input.length || !isLowSurrogate2(input.charCodeAt(i + 1))) {
524
+ return false;
525
+ }
526
+ i++;
527
+ } else if (isLowSurrogate2(code)) {
528
+ return false;
529
+ }
530
+ }
531
+ return true;
532
+ }
533
+ function normalizeNFC(input) {
534
+ return input.normalize("NFC");
535
+ }
536
+ function normalizeNFD(input) {
537
+ return input.normalize("NFD");
538
+ }
539
+ function unicodeEquals(a, b) {
540
+ return normalizeNFC(a) === normalizeNFC(b);
541
+ }
542
+
543
+ // src/stream.browser.ts
544
+ function createWebEscapeStream(options = {}) {
545
+ let buffer = "";
546
+ return new TransformStream({
547
+ transform(chunk, controller) {
548
+ buffer += chunk;
549
+ const lastChar = buffer.charCodeAt(buffer.length - 1);
550
+ const isHighSurrogate3 = lastChar >= 55296 && lastChar <= 56319;
551
+ if (isHighSurrogate3) {
552
+ const toProcess = buffer.slice(0, -1);
553
+ buffer = buffer.slice(-1);
554
+ if (toProcess.length > 0) {
555
+ controller.enqueue(escape(toProcess, options));
556
+ }
557
+ } else {
558
+ controller.enqueue(escape(buffer, options));
559
+ buffer = "";
560
+ }
561
+ },
562
+ flush(controller) {
563
+ if (buffer.length > 0) {
564
+ controller.enqueue(escape(buffer, options));
565
+ }
566
+ }
567
+ });
568
+ }
569
+ function createWebUnescapeStream(options = {}) {
570
+ let buffer = "";
571
+ const maxLookback = 12;
572
+ return new TransformStream({
573
+ transform(chunk, controller) {
574
+ buffer += chunk;
575
+ if (buffer.length > maxLookback) {
576
+ const toProcess = buffer.slice(0, -maxLookback);
577
+ buffer = buffer.slice(-maxLookback);
578
+ controller.enqueue(unescape(toProcess, options));
579
+ }
580
+ },
581
+ flush(controller) {
582
+ if (buffer.length > 0) {
583
+ controller.enqueue(unescape(buffer, options));
584
+ }
585
+ }
586
+ });
587
+ }
588
+
589
+ export { all, and, codePointLength, countEscapeSequences, createWebEscapeStream, createWebUnescapeStream, escape, escapeAll, escapeNonPrintable, escapeToCodePoint, escapeToHex, escapeToHtmlDecimal, escapeToHtmlHex, escapeToUnicode, escapeToUnicodeES6, escapeWithInfo, formatters, fromCodePoint, fromCodePoints, getCharInfo, getCodePoint, hasEscapeSequences, inRange, isAscii, isAscii2 as isAsciiChar, isBmp, isBmp2 as isBmpChar, isControl, isHighSurrogate, isHighSurrogate2 as isHighSurrogateCode, isLatin1, isLatin12 as isLatin1Char, isLowSurrogate, isLowSurrogate2 as isLowSurrogateCode, isNotAscii, isNotBmp, isNotLatin1, isNotPrintableAscii, isPrintableAscii, isSurrogate, isSurrogate2 as isSurrogateCode, isSurrogateCodePoint, isValidCodePoint, isValidUnicode, isWhitespace, iterateCodePoints, none, noneOf, normalizeNFC, normalizeNFD, not, notInRange, oneOf, or, parseHex, surrogateToCodePoint, toCodePoints, toHex2 as toHex, unescape, unescapeCodePoint, unescapeHex, unescapeHtml, unescapeHtmlDecimal, unescapeHtmlHex, unescapeJs, unescapePatterns, unescapeUnicode, unescapeUnicodeES6, unicodeEquals };
590
+ //# sourceMappingURL=index.browser.js.map
591
+ //# sourceMappingURL=index.browser.js.map