namespace-guard 0.7.0 → 0.8.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.
package/dist/index.js CHANGED
@@ -143,14 +143,12 @@ function createScrambleStrategy(_pattern) {
143
143
  const candidates = [];
144
144
  const chars = identifier.split("");
145
145
  for (let i = 0; i < chars.length - 1; i++) {
146
- if (chars[i] !== chars[i + 1]) {
147
- const swapped = [...chars];
148
- [swapped[i], swapped[i + 1]] = [swapped[i + 1], swapped[i]];
149
- const candidate = swapped.join("");
150
- if (candidate !== identifier && !seen.has(candidate)) {
151
- seen.add(candidate);
152
- candidates.push(candidate);
153
- }
146
+ const swapped = [...chars];
147
+ [swapped[i], swapped[i + 1]] = [swapped[i + 1], swapped[i]];
148
+ const candidate = swapped.join("");
149
+ if (candidate !== identifier && !seen.has(candidate)) {
150
+ seen.add(candidate);
151
+ candidates.push(candidate);
154
152
  }
155
153
  }
156
154
  return candidates;
@@ -289,39 +287,679 @@ function createProfanityValidator(words, options) {
289
287
  };
290
288
  }
291
289
  var CONFUSABLE_MAP = {
292
- // Cyrillic lowercase → Latin
290
+ // Latin-1 Supplement (2)
291
+ "\xD7": "x",
292
+ "\xFE": "p",
293
+ // Latin Extended-A (1)
294
+ "\u0131": "i",
295
+ // Latin Extended-B (14)
296
+ "\u0184": "b",
297
+ "\u018D": "g",
298
+ "\u0192": "f",
299
+ "\u0196": "l",
300
+ "\u01A6": "r",
301
+ "\u01A7": "2",
302
+ "\u01B7": "3",
303
+ "\u01BC": "5",
304
+ "\u01BD": "s",
305
+ "\u01BF": "p",
306
+ "\u01C0": "l",
307
+ "\u021C": "3",
308
+ "\u0222": "8",
309
+ "\u0223": "8",
310
+ // IPA Extensions (8)
311
+ "\u0251": "a",
312
+ "\u0261": "g",
313
+ "\u0263": "y",
314
+ "\u0269": "i",
315
+ "\u026A": "i",
316
+ "\u026F": "w",
317
+ "\u028B": "u",
318
+ "\u028F": "y",
319
+ // Spacing Modifier Letters (1)
320
+ "\u02DB": "i",
321
+ // Greek and Coptic (35)
322
+ "\u037A": "i",
323
+ "\u037F": "j",
324
+ "\u0391": "a",
325
+ "\u0392": "b",
326
+ "\u0395": "e",
327
+ "\u0396": "z",
328
+ "\u0397": "h",
329
+ "\u0399": "l",
330
+ "\u039A": "k",
331
+ "\u039C": "m",
332
+ "\u039D": "n",
333
+ "\u039F": "o",
334
+ "\u03A1": "p",
335
+ "\u03A4": "t",
336
+ "\u03A5": "y",
337
+ "\u03A7": "x",
338
+ "\u03B1": "a",
339
+ "\u03B3": "y",
340
+ "\u03B9": "i",
341
+ "\u03BD": "v",
342
+ "\u03BF": "o",
343
+ "\u03C1": "p",
344
+ "\u03C3": "o",
345
+ "\u03C5": "u",
346
+ "\u03D2": "y",
347
+ "\u03DC": "f",
348
+ "\u03E8": "2",
349
+ "\u03EC": "6",
350
+ "\u03ED": "o",
351
+ "\u03F1": "p",
352
+ "\u03F2": "c",
353
+ "\u03F3": "j",
354
+ "\u03F8": "p",
355
+ "\u03F9": "c",
356
+ "\u03FA": "m",
357
+ // Cyrillic (40)
358
+ "\u0405": "s",
359
+ "\u0406": "l",
360
+ "\u0408": "j",
361
+ "\u0410": "a",
362
+ "\u0412": "b",
363
+ "\u0415": "e",
364
+ "\u0417": "3",
365
+ "\u041A": "k",
366
+ "\u041C": "m",
367
+ "\u041D": "h",
368
+ "\u041E": "o",
369
+ "\u0420": "p",
370
+ "\u0421": "c",
371
+ "\u0422": "t",
372
+ "\u0423": "y",
373
+ "\u0425": "x",
374
+ "\u042C": "b",
293
375
  "\u0430": "a",
294
- "\u0441": "c",
376
+ "\u0431": "6",
377
+ "\u0433": "r",
295
378
  "\u0435": "e",
296
379
  "\u043E": "o",
297
380
  "\u0440": "p",
298
- "\u0445": "x",
381
+ "\u0441": "c",
299
382
  "\u0443": "y",
300
- "\u0456": "i",
383
+ "\u0445": "x",
384
+ "\u0448": "w",
301
385
  "\u0455": "s",
386
+ "\u0456": "i",
302
387
  "\u0458": "j",
388
+ "\u0461": "w",
389
+ "\u0474": "v",
390
+ "\u0475": "v",
391
+ "\u04AE": "y",
392
+ "\u04AF": "y",
303
393
  "\u04BB": "h",
394
+ "\u04BD": "e",
395
+ "\u04C0": "l",
396
+ "\u04CF": "l",
397
+ "\u04E0": "3",
398
+ // Cyrillic Supplement (5)
399
+ "\u0501": "d",
400
+ "\u050C": "g",
401
+ "\u051B": "q",
402
+ "\u051C": "w",
304
403
  "\u051D": "w",
305
- // Cyrillic uppercase → Latin
306
- "\u0410": "A",
307
- "\u0412": "B",
308
- "\u0421": "C",
309
- "\u0415": "E",
310
- "\u041D": "H",
311
- "\u041A": "K",
312
- "\u041C": "M",
313
- "\u041E": "O",
314
- "\u0420": "P",
315
- "\u0422": "T",
316
- "\u0425": "X",
317
- // Greek lowercase → Latin
318
- "\u03B1": "a",
319
- "\u03BF": "o",
320
- "\u03C1": "p",
321
- "\u03BD": "v",
322
- "\u03C4": "t",
323
- "\u03B9": "i",
324
- "\u03BA": "k"
404
+ // Armenian (14)
405
+ "\u054D": "u",
406
+ "\u054F": "s",
407
+ "\u0555": "o",
408
+ "\u0561": "w",
409
+ "\u0563": "q",
410
+ "\u0566": "q",
411
+ "\u0570": "h",
412
+ "\u0578": "n",
413
+ "\u057C": "n",
414
+ "\u057D": "u",
415
+ "\u0581": "g",
416
+ "\u0582": "i",
417
+ "\u0584": "f",
418
+ "\u0585": "o",
419
+ // Hebrew (5)
420
+ "\u05C0": "l",
421
+ "\u05D5": "l",
422
+ "\u05D8": "v",
423
+ "\u05DF": "l",
424
+ "\u05E1": "o",
425
+ // Arabic (13)
426
+ "\u0627": "l",
427
+ "\u0647": "o",
428
+ "\u0661": "l",
429
+ "\u0665": "o",
430
+ "\u0667": "v",
431
+ "\u06BE": "o",
432
+ "\u06C1": "o",
433
+ "\u06D5": "o",
434
+ "\u06F1": "l",
435
+ "\u06F5": "o",
436
+ "\u06F7": "v",
437
+ "\u07C0": "o",
438
+ "\u07CA": "l",
439
+ // Indic (20)
440
+ "\u0966": "o",
441
+ "\u0969": "3",
442
+ "\u09E6": "o",
443
+ "\u09EA": "8",
444
+ "\u09ED": "9",
445
+ "\u0A66": "o",
446
+ "\u0A67": "9",
447
+ "\u0A6A": "8",
448
+ "\u0AE6": "o",
449
+ "\u0AE9": "3",
450
+ "\u0B03": "8",
451
+ "\u0B20": "o",
452
+ "\u0B66": "o",
453
+ "\u0B68": "9",
454
+ "\u0BE6": "o",
455
+ "\u0C02": "o",
456
+ "\u0C66": "o",
457
+ "\u0C82": "o",
458
+ "\u0CE6": "o",
459
+ "\u0D02": "o",
460
+ // Malayalam / Sinhala (5)
461
+ "\u0D1F": "s",
462
+ "\u0D20": "o",
463
+ "\u0D66": "o",
464
+ "\u0D6D": "9",
465
+ "\u0D82": "o",
466
+ // Thai / Lao (2)
467
+ "\u0E50": "o",
468
+ "\u0ED0": "o",
469
+ // Myanmar (4)
470
+ "\u1004": "c",
471
+ "\u101D": "o",
472
+ "\u1040": "o",
473
+ "\u105A": "c",
474
+ // Georgian (2)
475
+ "\u10E7": "y",
476
+ "\u10FF": "o",
477
+ // Ethiopic (2)
478
+ "\u1200": "u",
479
+ "\u12D0": "o",
480
+ // Cherokee (30)
481
+ "\u13A0": "d",
482
+ "\u13A1": "r",
483
+ "\u13A2": "t",
484
+ "\u13A5": "i",
485
+ "\u13A9": "y",
486
+ "\u13AA": "a",
487
+ "\u13AB": "j",
488
+ "\u13AC": "e",
489
+ "\u13B3": "w",
490
+ "\u13B7": "m",
491
+ "\u13BB": "h",
492
+ "\u13BD": "y",
493
+ "\u13C0": "g",
494
+ "\u13C2": "h",
495
+ "\u13C3": "z",
496
+ "\u13CE": "4",
497
+ "\u13CF": "b",
498
+ "\u13D2": "r",
499
+ "\u13D4": "w",
500
+ "\u13D5": "s",
501
+ "\u13D9": "v",
502
+ "\u13DA": "s",
503
+ "\u13DE": "l",
504
+ "\u13DF": "c",
505
+ "\u13E2": "p",
506
+ "\u13E6": "k",
507
+ "\u13E7": "d",
508
+ "\u13EE": "6",
509
+ "\u13F3": "g",
510
+ "\u13F4": "b",
511
+ // Canadian Aboriginal Syllabics (21)
512
+ "\u142F": "v",
513
+ "\u144C": "u",
514
+ "\u146D": "p",
515
+ "\u146F": "d",
516
+ "\u1472": "b",
517
+ "\u148D": "j",
518
+ "\u14AA": "l",
519
+ "\u14BF": "2",
520
+ "\u1541": "x",
521
+ "\u157C": "h",
522
+ "\u157D": "x",
523
+ "\u1587": "r",
524
+ "\u15AF": "b",
525
+ "\u15B4": "f",
526
+ "\u15C5": "a",
527
+ "\u15DE": "d",
528
+ "\u15EA": "d",
529
+ "\u15F0": "m",
530
+ "\u15F7": "b",
531
+ "\u166D": "x",
532
+ "\u166E": "x",
533
+ // Runic (4)
534
+ "\u16B7": "x",
535
+ "\u16C1": "l",
536
+ "\u16D5": "k",
537
+ "\u16D6": "m",
538
+ // Khmer (1)
539
+ "\u17E0": "o",
540
+ // Phonetic Extensions / Latin Small Capitals (16)
541
+ "\u1D00": "a",
542
+ "\u1D04": "c",
543
+ "\u1D05": "d",
544
+ "\u1D07": "e",
545
+ "\u1D0A": "j",
546
+ "\u1D0B": "k",
547
+ "\u1D0D": "m",
548
+ "\u1D0F": "o",
549
+ "\u1D11": "o",
550
+ "\u1D18": "p",
551
+ "\u1D1B": "t",
552
+ "\u1D1C": "u",
553
+ "\u1D20": "v",
554
+ "\u1D21": "w",
555
+ "\u1D22": "z",
556
+ "\u1D26": "r",
557
+ // Phonetic Extensions Supplement (2)
558
+ "\u1D83": "g",
559
+ "\u1D8C": "y",
560
+ // Latin Extended Additional (2)
561
+ "\u1E9D": "f",
562
+ "\u1EFF": "y",
563
+ // Greek Extended (1)
564
+ "\u1FBE": "i",
565
+ // Letterlike Symbols (2)
566
+ "\u212E": "e",
567
+ "\u213D": "y",
568
+ // Mathematical Operators (7)
569
+ "\u2223": "l",
570
+ "\u2228": "v",
571
+ "\u222A": "u",
572
+ "\u22A4": "t",
573
+ "\u22C1": "v",
574
+ "\u22C3": "u",
575
+ "\u22FF": "e",
576
+ // Miscellaneous Technical (4)
577
+ "\u2373": "i",
578
+ "\u2374": "p",
579
+ "\u237A": "a",
580
+ "\u23FD": "l",
581
+ // Box Drawing (1)
582
+ "\u2573": "x",
583
+ // Miscellaneous Mathematical Symbols (3)
584
+ "\u27D9": "t",
585
+ "\u292B": "x",
586
+ "\u292C": "x",
587
+ // Supplemental Mathematical Operators (1)
588
+ "\u2A2F": "x",
589
+ // Coptic (28)
590
+ "\u2C82": "b",
591
+ "\u2C85": "r",
592
+ "\u2C8E": "h",
593
+ "\u2C92": "l",
594
+ "\u2C93": "i",
595
+ "\u2C94": "k",
596
+ "\u2C98": "m",
597
+ "\u2C9A": "n",
598
+ "\u2C9C": "3",
599
+ "\u2C9E": "o",
600
+ "\u2C9F": "o",
601
+ "\u2CA2": "p",
602
+ "\u2CA3": "p",
603
+ "\u2CA4": "c",
604
+ "\u2CA5": "c",
605
+ "\u2CA6": "t",
606
+ "\u2CA8": "y",
607
+ "\u2CA9": "y",
608
+ "\u2CAC": "x",
609
+ "\u2CBD": "w",
610
+ "\u2CC4": "3",
611
+ "\u2CCA": "9",
612
+ "\u2CCB": "9",
613
+ "\u2CCC": "3",
614
+ "\u2CCE": "p",
615
+ "\u2CCF": "p",
616
+ "\u2CD0": "l",
617
+ "\u2CD2": "6",
618
+ // Coptic Supplement (2)
619
+ "\u2CD3": "6",
620
+ "\u2CDC": "6",
621
+ // Tifinagh (6)
622
+ "\u2D38": "v",
623
+ "\u2D39": "e",
624
+ "\u2D4F": "l",
625
+ "\u2D54": "o",
626
+ "\u2D55": "q",
627
+ "\u2D5D": "x",
628
+ // CJK Symbols (1)
629
+ "\u3007": "o",
630
+ // Lisu (25)
631
+ "\uA4D0": "b",
632
+ "\uA4D1": "p",
633
+ "\uA4D2": "d",
634
+ "\uA4D3": "d",
635
+ "\uA4D4": "t",
636
+ "\uA4D6": "g",
637
+ "\uA4D7": "k",
638
+ "\uA4D9": "j",
639
+ "\uA4DA": "c",
640
+ "\uA4DC": "z",
641
+ "\uA4DD": "f",
642
+ "\uA4DF": "m",
643
+ "\uA4E0": "n",
644
+ "\uA4E1": "l",
645
+ "\uA4E2": "s",
646
+ "\uA4E3": "r",
647
+ "\uA4E6": "v",
648
+ "\uA4E7": "h",
649
+ "\uA4EA": "w",
650
+ "\uA4EB": "x",
651
+ "\uA4EC": "y",
652
+ "\uA4EE": "a",
653
+ "\uA4F0": "e",
654
+ "\uA4F2": "l",
655
+ "\uA4F3": "o",
656
+ "\uA4F4": "u",
657
+ // Cyrillic Extended-B (2)
658
+ "\uA644": "2",
659
+ "\uA647": "i",
660
+ // Bamum (2)
661
+ "\uA6DF": "v",
662
+ "\uA6EF": "2",
663
+ // Latin Extended-D (11)
664
+ "\uA731": "s",
665
+ "\uA75A": "2",
666
+ "\uA76A": "3",
667
+ "\uA76E": "9",
668
+ "\uA798": "f",
669
+ "\uA799": "f",
670
+ "\uA79F": "u",
671
+ "\uA7AB": "3",
672
+ "\uA7B2": "j",
673
+ "\uA7B3": "x",
674
+ "\uA7B4": "b",
675
+ // Latin Extended-E (8)
676
+ "\uAB32": "e",
677
+ "\uAB35": "f",
678
+ "\uAB3D": "o",
679
+ "\uAB47": "r",
680
+ "\uAB48": "r",
681
+ "\uAB4E": "u",
682
+ "\uAB52": "u",
683
+ "\uAB5A": "y",
684
+ // Cherokee Supplement (7)
685
+ "\uAB75": "i",
686
+ "\uAB81": "r",
687
+ "\uAB83": "w",
688
+ "\uAB93": "z",
689
+ "\uABA9": "v",
690
+ "\uABAA": "s",
691
+ "\uABAF": "c",
692
+ // Arabic Presentation Forms (14)
693
+ "\uFBA6": "o",
694
+ "\uFBA7": "o",
695
+ "\uFBA8": "o",
696
+ "\uFBA9": "o",
697
+ "\uFBAA": "o",
698
+ "\uFBAB": "o",
699
+ "\uFBAC": "o",
700
+ "\uFBAD": "o",
701
+ "\uFE8D": "l",
702
+ "\uFE8E": "l",
703
+ "\uFEE9": "o",
704
+ "\uFEEA": "o",
705
+ "\uFEEB": "o",
706
+ "\uFEEC": "o",
707
+ // Halfwidth and Fullwidth Forms (1)
708
+ "\uFFE8": "l",
709
+ // Lycian (9)
710
+ "\u{10282}": "b",
711
+ "\u{10286}": "e",
712
+ "\u{10287}": "f",
713
+ "\u{1028A}": "l",
714
+ "\u{10290}": "x",
715
+ "\u{10292}": "o",
716
+ "\u{10295}": "p",
717
+ "\u{10296}": "s",
718
+ "\u{10297}": "t",
719
+ // Carian (11)
720
+ "\u{102A0}": "a",
721
+ "\u{102A1}": "b",
722
+ "\u{102A2}": "c",
723
+ "\u{102A5}": "f",
724
+ "\u{102AB}": "o",
725
+ "\u{102B0}": "m",
726
+ "\u{102B1}": "t",
727
+ "\u{102B2}": "y",
728
+ "\u{102B4}": "x",
729
+ "\u{102CF}": "h",
730
+ "\u{102F5}": "z",
731
+ // Old Italic (10)
732
+ "\u{10301}": "b",
733
+ "\u{10302}": "c",
734
+ "\u{10309}": "l",
735
+ "\u{10311}": "m",
736
+ "\u{10315}": "t",
737
+ "\u{10317}": "x",
738
+ "\u{1031A}": "8",
739
+ "\u{10320}": "l",
740
+ "\u{10322}": "x",
741
+ // Deseret (7)
742
+ "\u{10404}": "o",
743
+ "\u{10415}": "c",
744
+ "\u{1041B}": "l",
745
+ "\u{10420}": "s",
746
+ "\u{1042C}": "o",
747
+ "\u{1043D}": "c",
748
+ "\u{10448}": "s",
749
+ // Osage (6)
750
+ "\u{104B4}": "r",
751
+ "\u{104C2}": "o",
752
+ "\u{104CE}": "u",
753
+ "\u{104D2}": "7",
754
+ "\u{104EA}": "o",
755
+ "\u{104F6}": "u",
756
+ // Elbasan (8)
757
+ "\u{10513}": "n",
758
+ "\u{10516}": "o",
759
+ "\u{10518}": "k",
760
+ "\u{1051C}": "c",
761
+ "\u{1051D}": "v",
762
+ "\u{10525}": "f",
763
+ "\u{10526}": "l",
764
+ "\u{10527}": "x",
765
+ // Tirhuta (1)
766
+ "\u{114D0}": "o",
767
+ // Ahom (4)
768
+ "\u{11706}": "v",
769
+ "\u{1170A}": "w",
770
+ "\u{1170E}": "w",
771
+ "\u{1170F}": "w",
772
+ // Warang Citi (35)
773
+ "\u{118A0}": "v",
774
+ "\u{118A2}": "f",
775
+ "\u{118A3}": "l",
776
+ "\u{118A4}": "y",
777
+ "\u{118A6}": "e",
778
+ "\u{118A9}": "z",
779
+ "\u{118AC}": "9",
780
+ "\u{118AE}": "e",
781
+ "\u{118AF}": "4",
782
+ "\u{118B2}": "l",
783
+ "\u{118B5}": "o",
784
+ "\u{118B8}": "u",
785
+ "\u{118BB}": "5",
786
+ "\u{118BC}": "t",
787
+ "\u{118C0}": "v",
788
+ "\u{118C1}": "s",
789
+ "\u{118C2}": "f",
790
+ "\u{118C3}": "i",
791
+ "\u{118C4}": "z",
792
+ "\u{118C6}": "7",
793
+ "\u{118C8}": "o",
794
+ "\u{118CA}": "3",
795
+ "\u{118CC}": "9",
796
+ "\u{118D5}": "6",
797
+ "\u{118D6}": "9",
798
+ "\u{118D7}": "o",
799
+ "\u{118D8}": "u",
800
+ "\u{118DC}": "y",
801
+ "\u{118E0}": "o",
802
+ "\u{118E5}": "z",
803
+ "\u{118E6}": "w",
804
+ "\u{118E9}": "c",
805
+ "\u{118EC}": "x",
806
+ "\u{118EF}": "w",
807
+ "\u{118F2}": "c",
808
+ // Masaram Gondi (3)
809
+ "\u{11DDA}": "l",
810
+ "\u{11DE0}": "o",
811
+ "\u{11DE1}": "l",
812
+ // Medefaidrin (2)
813
+ "\u{16EAA}": "l",
814
+ "\u{16EB6}": "b",
815
+ // Miao (12)
816
+ "\u{16F08}": "v",
817
+ "\u{16F0A}": "t",
818
+ "\u{16F16}": "l",
819
+ "\u{16F28}": "l",
820
+ "\u{16F35}": "r",
821
+ "\u{16F3A}": "s",
822
+ "\u{16F3B}": "3",
823
+ "\u{16F40}": "a",
824
+ "\u{16F42}": "u",
825
+ "\u{16F43}": "y",
826
+ // Greek Musical Notation (6)
827
+ "\u{1D206}": "3",
828
+ "\u{1D20D}": "v",
829
+ "\u{1D212}": "7",
830
+ "\u{1D213}": "f",
831
+ "\u{1D216}": "r",
832
+ "\u{1D22A}": "l",
833
+ // Mathematical Alphanumeric Symbols (117)
834
+ "\u{1D6A4}": "i",
835
+ "\u{1D6A8}": "a",
836
+ "\u{1D6A9}": "b",
837
+ "\u{1D6AC}": "e",
838
+ "\u{1D6AD}": "z",
839
+ "\u{1D6AE}": "h",
840
+ "\u{1D6B0}": "l",
841
+ "\u{1D6B1}": "k",
842
+ "\u{1D6B3}": "m",
843
+ "\u{1D6B4}": "n",
844
+ "\u{1D6B6}": "o",
845
+ "\u{1D6B8}": "p",
846
+ "\u{1D6BB}": "t",
847
+ "\u{1D6BC}": "y",
848
+ "\u{1D6BE}": "x",
849
+ "\u{1D6C2}": "a",
850
+ "\u{1D6C4}": "y",
851
+ "\u{1D6CA}": "i",
852
+ "\u{1D6CE}": "v",
853
+ "\u{1D6D0}": "o",
854
+ "\u{1D6D2}": "p",
855
+ "\u{1D6D4}": "o",
856
+ "\u{1D6D6}": "u",
857
+ "\u{1D6E0}": "p",
858
+ "\u{1D6E2}": "a",
859
+ "\u{1D6E3}": "b",
860
+ "\u{1D6E6}": "e",
861
+ "\u{1D6E7}": "z",
862
+ "\u{1D6E8}": "h",
863
+ "\u{1D6EA}": "l",
864
+ "\u{1D6EB}": "k",
865
+ "\u{1D6ED}": "m",
866
+ "\u{1D6EE}": "n",
867
+ "\u{1D6F0}": "o",
868
+ "\u{1D6F2}": "p",
869
+ "\u{1D6F5}": "t",
870
+ "\u{1D6F6}": "y",
871
+ "\u{1D6F8}": "x",
872
+ "\u{1D6FC}": "a",
873
+ "\u{1D6FE}": "y",
874
+ "\u{1D704}": "i",
875
+ "\u{1D708}": "v",
876
+ "\u{1D70A}": "o",
877
+ "\u{1D70C}": "p",
878
+ "\u{1D70E}": "o",
879
+ "\u{1D710}": "u",
880
+ "\u{1D71A}": "p",
881
+ "\u{1D71C}": "a",
882
+ "\u{1D71D}": "b",
883
+ "\u{1D720}": "e",
884
+ "\u{1D721}": "z",
885
+ "\u{1D722}": "h",
886
+ "\u{1D724}": "l",
887
+ "\u{1D725}": "k",
888
+ "\u{1D727}": "m",
889
+ "\u{1D728}": "n",
890
+ "\u{1D72A}": "o",
891
+ "\u{1D72C}": "p",
892
+ "\u{1D72F}": "t",
893
+ "\u{1D730}": "y",
894
+ "\u{1D732}": "x",
895
+ "\u{1D736}": "a",
896
+ "\u{1D738}": "y",
897
+ "\u{1D73E}": "i",
898
+ "\u{1D742}": "v",
899
+ "\u{1D744}": "o",
900
+ "\u{1D746}": "p",
901
+ "\u{1D748}": "o",
902
+ "\u{1D74A}": "u",
903
+ "\u{1D754}": "p",
904
+ "\u{1D756}": "a",
905
+ "\u{1D757}": "b",
906
+ "\u{1D75A}": "e",
907
+ "\u{1D75B}": "z",
908
+ "\u{1D75C}": "h",
909
+ "\u{1D75E}": "l",
910
+ "\u{1D75F}": "k",
911
+ "\u{1D761}": "m",
912
+ "\u{1D762}": "n",
913
+ "\u{1D764}": "o",
914
+ "\u{1D766}": "p",
915
+ "\u{1D769}": "t",
916
+ "\u{1D76A}": "y",
917
+ "\u{1D76C}": "x",
918
+ "\u{1D770}": "a",
919
+ "\u{1D772}": "y",
920
+ "\u{1D778}": "i",
921
+ "\u{1D77C}": "v",
922
+ "\u{1D77E}": "o",
923
+ "\u{1D780}": "p",
924
+ "\u{1D782}": "o",
925
+ "\u{1D784}": "u",
926
+ "\u{1D78E}": "p",
927
+ "\u{1D790}": "a",
928
+ "\u{1D791}": "b",
929
+ "\u{1D794}": "e",
930
+ "\u{1D795}": "z",
931
+ "\u{1D796}": "h",
932
+ "\u{1D798}": "l",
933
+ "\u{1D799}": "k",
934
+ "\u{1D79B}": "m",
935
+ "\u{1D79C}": "n",
936
+ "\u{1D79E}": "o",
937
+ "\u{1D7A0}": "p",
938
+ "\u{1D7A3}": "t",
939
+ "\u{1D7A4}": "y",
940
+ "\u{1D7A6}": "x",
941
+ "\u{1D7AA}": "a",
942
+ "\u{1D7AC}": "y",
943
+ "\u{1D7B2}": "i",
944
+ "\u{1D7B6}": "v",
945
+ "\u{1D7B8}": "o",
946
+ "\u{1D7BA}": "p",
947
+ "\u{1D7BC}": "o",
948
+ "\u{1D7BE}": "u",
949
+ "\u{1D7C8}": "p",
950
+ "\u{1D7CA}": "f",
951
+ // Mende Kikakui (2)
952
+ "\u{1E8C7}": "l",
953
+ "\u{1E8CB}": "8",
954
+ // Arabic Mathematical Alphabetic Symbols (5)
955
+ "\u{1EE00}": "l",
956
+ "\u{1EE24}": "o",
957
+ "\u{1EE64}": "o",
958
+ "\u{1EE80}": "l",
959
+ "\u{1EE84}": "o",
960
+ // Miscellaneous Symbols and Pictographs (2)
961
+ "\u{1F74C}": "c",
962
+ "\u{1F768}": "t"
325
963
  };
326
964
  function createHomoglyphValidator(options) {
327
965
  const message = options?.message ?? "That name contains characters that could be confused with other letters.";
@@ -331,8 +969,10 @@ function createHomoglyphValidator(options) {
331
969
  Object.assign(map, options.additionalMappings);
332
970
  }
333
971
  const confusableChars = Object.keys(map);
334
- const confusableRegex = confusableChars.length > 0 ? new RegExp("[" + confusableChars.join("") + "]") : null;
335
- const cyrillicOrGreekRegex = /[\u0370-\u03FF\u0400-\u04FF\u0500-\u052F]/;
972
+ const confusableRegex = confusableChars.length > 0 ? new RegExp(
973
+ "[" + confusableChars.map((c) => c.replace(/[\\\]^-]/g, "\\$&")).join("") + "]"
974
+ ) : null;
975
+ const nonLatinRegex = /[\u0370-\u03FF\u0400-\u04FF\u0500-\u052F\u0530-\u058F\u0590-\u05FF\u0600-\u074F\u0900-\u0DFF\u0E00-\u0EFF\u1000-\u109F\u10A0-\u10FF\u1200-\u137F\u13A0-\u13FF\u1400-\u167F\u16A0-\u16FF\u1780-\u17FF\u2C80-\u2CFF\u2D30-\u2D7F\uA4D0-\uA4FF\uA6A0-\uA6FF\uAB70-\uABBF]/;
336
976
  const latinRegex = /[a-zA-Z]/;
337
977
  return async (value) => {
338
978
  if (confusableRegex && confusableRegex.test(value)) {
@@ -340,8 +980,8 @@ function createHomoglyphValidator(options) {
340
980
  }
341
981
  if (rejectMixedScript) {
342
982
  const hasLatin = latinRegex.test(value);
343
- const hasCyrillicOrGreek = cyrillicOrGreekRegex.test(value);
344
- if (hasLatin && hasCyrillicOrGreek) {
983
+ const hasNonLatin = nonLatinRegex.test(value);
984
+ if (hasLatin && hasNonLatin) {
345
985
  return { available: false, message };
346
986
  }
347
987
  }
@@ -375,7 +1015,7 @@ function createNamespaceGuard(config, adapter) {
375
1015
  const purelyNumericMsg = configMessages.purelyNumeric ?? "Identifiers cannot be purely numeric.";
376
1016
  const cacheEnabled = !!config.cache;
377
1017
  const cacheTtl = config.cache?.ttl ?? 5e3;
378
- const cacheMaxSize = 1e3;
1018
+ const cacheMaxSize = config.cache?.maxSize ?? 1e3;
379
1019
  const cacheMap = /* @__PURE__ */ new Map();
380
1020
  let cacheHits = 0;
381
1021
  let cacheMisses = 0;