email-tld-validator 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,1578 @@
1
+ 'use strict';
2
+
3
+ var source = "IANA Root Zone Database";
4
+ var updatedAt = "2026-06-13";
5
+ var count = 1437;
6
+ var tlds = [
7
+ "aaa",
8
+ "aarp",
9
+ "abb",
10
+ "abbott",
11
+ "abbvie",
12
+ "abc",
13
+ "able",
14
+ "abogado",
15
+ "abudhabi",
16
+ "ac",
17
+ "academy",
18
+ "accenture",
19
+ "accountant",
20
+ "accountants",
21
+ "aco",
22
+ "actor",
23
+ "ad",
24
+ "ads",
25
+ "adult",
26
+ "ae",
27
+ "aeg",
28
+ "aero",
29
+ "aetna",
30
+ "af",
31
+ "afl",
32
+ "africa",
33
+ "ag",
34
+ "agakhan",
35
+ "agency",
36
+ "ai",
37
+ "aig",
38
+ "airbus",
39
+ "airforce",
40
+ "airtel",
41
+ "akdn",
42
+ "al",
43
+ "alibaba",
44
+ "alipay",
45
+ "allfinanz",
46
+ "allstate",
47
+ "ally",
48
+ "alsace",
49
+ "alstom",
50
+ "am",
51
+ "amazon",
52
+ "americanexpress",
53
+ "americanfamily",
54
+ "amex",
55
+ "amfam",
56
+ "amica",
57
+ "amsterdam",
58
+ "analytics",
59
+ "android",
60
+ "anquan",
61
+ "anz",
62
+ "ao",
63
+ "aol",
64
+ "apartments",
65
+ "app",
66
+ "apple",
67
+ "aq",
68
+ "aquarelle",
69
+ "ar",
70
+ "arab",
71
+ "aramco",
72
+ "archi",
73
+ "army",
74
+ "arpa",
75
+ "art",
76
+ "arte",
77
+ "as",
78
+ "asda",
79
+ "asia",
80
+ "associates",
81
+ "at",
82
+ "athleta",
83
+ "attorney",
84
+ "au",
85
+ "auction",
86
+ "audi",
87
+ "audible",
88
+ "audio",
89
+ "auspost",
90
+ "author",
91
+ "auto",
92
+ "autos",
93
+ "aw",
94
+ "aws",
95
+ "ax",
96
+ "axa",
97
+ "az",
98
+ "azure",
99
+ "ba",
100
+ "baby",
101
+ "baidu",
102
+ "banamex",
103
+ "band",
104
+ "bank",
105
+ "bar",
106
+ "barcelona",
107
+ "barclaycard",
108
+ "barclays",
109
+ "barefoot",
110
+ "bargains",
111
+ "baseball",
112
+ "basketball",
113
+ "bauhaus",
114
+ "bayern",
115
+ "bb",
116
+ "bbc",
117
+ "bbt",
118
+ "bbva",
119
+ "bcg",
120
+ "bcn",
121
+ "bd",
122
+ "be",
123
+ "beats",
124
+ "beauty",
125
+ "beer",
126
+ "berlin",
127
+ "best",
128
+ "bestbuy",
129
+ "bet",
130
+ "bf",
131
+ "bg",
132
+ "bh",
133
+ "bharti",
134
+ "bi",
135
+ "bible",
136
+ "bid",
137
+ "bike",
138
+ "bing",
139
+ "bingo",
140
+ "bio",
141
+ "biz",
142
+ "bj",
143
+ "black",
144
+ "blackfriday",
145
+ "blockbuster",
146
+ "blog",
147
+ "bloomberg",
148
+ "blue",
149
+ "bm",
150
+ "bms",
151
+ "bmw",
152
+ "bn",
153
+ "bnpparibas",
154
+ "bo",
155
+ "boats",
156
+ "boehringer",
157
+ "bofa",
158
+ "bom",
159
+ "bond",
160
+ "boo",
161
+ "book",
162
+ "booking",
163
+ "bosch",
164
+ "bostik",
165
+ "boston",
166
+ "bot",
167
+ "boutique",
168
+ "box",
169
+ "br",
170
+ "bradesco",
171
+ "bridgestone",
172
+ "broadway",
173
+ "broker",
174
+ "brother",
175
+ "brussels",
176
+ "bs",
177
+ "bt",
178
+ "build",
179
+ "builders",
180
+ "business",
181
+ "buy",
182
+ "buzz",
183
+ "bv",
184
+ "bw",
185
+ "by",
186
+ "bz",
187
+ "bzh",
188
+ "ca",
189
+ "cab",
190
+ "cafe",
191
+ "cal",
192
+ "call",
193
+ "calvinklein",
194
+ "cam",
195
+ "camera",
196
+ "camp",
197
+ "canon",
198
+ "capetown",
199
+ "capital",
200
+ "capitalone",
201
+ "car",
202
+ "caravan",
203
+ "cards",
204
+ "care",
205
+ "career",
206
+ "careers",
207
+ "cars",
208
+ "casa",
209
+ "case",
210
+ "cash",
211
+ "casino",
212
+ "cat",
213
+ "catering",
214
+ "catholic",
215
+ "cba",
216
+ "cbn",
217
+ "cbre",
218
+ "cc",
219
+ "cd",
220
+ "center",
221
+ "ceo",
222
+ "cern",
223
+ "cf",
224
+ "cfa",
225
+ "cfd",
226
+ "cg",
227
+ "ch",
228
+ "chanel",
229
+ "channel",
230
+ "charity",
231
+ "chase",
232
+ "chat",
233
+ "cheap",
234
+ "chintai",
235
+ "christmas",
236
+ "chrome",
237
+ "church",
238
+ "ci",
239
+ "cipriani",
240
+ "circle",
241
+ "cisco",
242
+ "citadel",
243
+ "citi",
244
+ "citic",
245
+ "city",
246
+ "ck",
247
+ "cl",
248
+ "claims",
249
+ "cleaning",
250
+ "click",
251
+ "clinic",
252
+ "clinique",
253
+ "clothing",
254
+ "cloud",
255
+ "club",
256
+ "clubmed",
257
+ "cm",
258
+ "cn",
259
+ "co",
260
+ "coach",
261
+ "codes",
262
+ "coffee",
263
+ "college",
264
+ "cologne",
265
+ "com",
266
+ "commbank",
267
+ "community",
268
+ "company",
269
+ "compare",
270
+ "computer",
271
+ "comsec",
272
+ "condos",
273
+ "construction",
274
+ "consulting",
275
+ "contact",
276
+ "contractors",
277
+ "cooking",
278
+ "cool",
279
+ "coop",
280
+ "corsica",
281
+ "country",
282
+ "coupon",
283
+ "coupons",
284
+ "courses",
285
+ "cpa",
286
+ "cr",
287
+ "credit",
288
+ "creditcard",
289
+ "creditunion",
290
+ "cricket",
291
+ "crown",
292
+ "crs",
293
+ "cruise",
294
+ "cruises",
295
+ "cu",
296
+ "cuisinella",
297
+ "cv",
298
+ "cw",
299
+ "cx",
300
+ "cy",
301
+ "cymru",
302
+ "cyou",
303
+ "cz",
304
+ "dad",
305
+ "dance",
306
+ "data",
307
+ "date",
308
+ "dating",
309
+ "datsun",
310
+ "day",
311
+ "dclk",
312
+ "dds",
313
+ "de",
314
+ "deal",
315
+ "dealer",
316
+ "deals",
317
+ "degree",
318
+ "delivery",
319
+ "dell",
320
+ "deloitte",
321
+ "delta",
322
+ "democrat",
323
+ "dental",
324
+ "dentist",
325
+ "desi",
326
+ "design",
327
+ "dev",
328
+ "dhl",
329
+ "diamonds",
330
+ "diet",
331
+ "digital",
332
+ "direct",
333
+ "directory",
334
+ "discount",
335
+ "discover",
336
+ "dish",
337
+ "diy",
338
+ "dj",
339
+ "dk",
340
+ "dm",
341
+ "dnp",
342
+ "do",
343
+ "docs",
344
+ "doctor",
345
+ "dog",
346
+ "domains",
347
+ "dot",
348
+ "download",
349
+ "drive",
350
+ "dtv",
351
+ "dubai",
352
+ "dupont",
353
+ "durban",
354
+ "dvag",
355
+ "dvr",
356
+ "dz",
357
+ "earth",
358
+ "eat",
359
+ "ec",
360
+ "eco",
361
+ "edeka",
362
+ "edu",
363
+ "education",
364
+ "ee",
365
+ "eg",
366
+ "email",
367
+ "emerck",
368
+ "energy",
369
+ "engineer",
370
+ "engineering",
371
+ "enterprises",
372
+ "epson",
373
+ "equipment",
374
+ "er",
375
+ "ericsson",
376
+ "erni",
377
+ "es",
378
+ "esq",
379
+ "estate",
380
+ "et",
381
+ "eu",
382
+ "eurovision",
383
+ "eus",
384
+ "events",
385
+ "exchange",
386
+ "expert",
387
+ "exposed",
388
+ "express",
389
+ "extraspace",
390
+ "fage",
391
+ "fail",
392
+ "fairwinds",
393
+ "faith",
394
+ "family",
395
+ "fan",
396
+ "fans",
397
+ "farm",
398
+ "farmers",
399
+ "fashion",
400
+ "fast",
401
+ "fedex",
402
+ "feedback",
403
+ "ferrari",
404
+ "ferrero",
405
+ "fi",
406
+ "fidelity",
407
+ "fido",
408
+ "film",
409
+ "final",
410
+ "finance",
411
+ "financial",
412
+ "fire",
413
+ "firestone",
414
+ "firmdale",
415
+ "fish",
416
+ "fishing",
417
+ "fit",
418
+ "fitness",
419
+ "fj",
420
+ "fk",
421
+ "flickr",
422
+ "flights",
423
+ "flir",
424
+ "florist",
425
+ "flowers",
426
+ "fly",
427
+ "fm",
428
+ "fo",
429
+ "foo",
430
+ "food",
431
+ "football",
432
+ "ford",
433
+ "forex",
434
+ "forsale",
435
+ "forum",
436
+ "foundation",
437
+ "fox",
438
+ "fr",
439
+ "free",
440
+ "fresenius",
441
+ "frl",
442
+ "frogans",
443
+ "frontier",
444
+ "ftr",
445
+ "fujitsu",
446
+ "fun",
447
+ "fund",
448
+ "furniture",
449
+ "futbol",
450
+ "fyi",
451
+ "ga",
452
+ "gal",
453
+ "gallery",
454
+ "gallo",
455
+ "gallup",
456
+ "game",
457
+ "games",
458
+ "gap",
459
+ "garden",
460
+ "gay",
461
+ "gb",
462
+ "gbiz",
463
+ "gd",
464
+ "gdn",
465
+ "ge",
466
+ "gea",
467
+ "gent",
468
+ "genting",
469
+ "george",
470
+ "gf",
471
+ "gg",
472
+ "ggee",
473
+ "gh",
474
+ "gi",
475
+ "gift",
476
+ "gifts",
477
+ "gives",
478
+ "giving",
479
+ "gl",
480
+ "glass",
481
+ "gle",
482
+ "global",
483
+ "globo",
484
+ "gm",
485
+ "gmail",
486
+ "gmbh",
487
+ "gmo",
488
+ "gmx",
489
+ "gn",
490
+ "godaddy",
491
+ "gold",
492
+ "goldpoint",
493
+ "golf",
494
+ "goodyear",
495
+ "goog",
496
+ "google",
497
+ "gop",
498
+ "got",
499
+ "gov",
500
+ "gp",
501
+ "gq",
502
+ "gr",
503
+ "grainger",
504
+ "graphics",
505
+ "gratis",
506
+ "green",
507
+ "gripe",
508
+ "grocery",
509
+ "group",
510
+ "gs",
511
+ "gt",
512
+ "gu",
513
+ "gucci",
514
+ "guge",
515
+ "guide",
516
+ "guitars",
517
+ "guru",
518
+ "gw",
519
+ "gy",
520
+ "hair",
521
+ "hamburg",
522
+ "hangout",
523
+ "haus",
524
+ "hbo",
525
+ "hdfc",
526
+ "hdfcbank",
527
+ "health",
528
+ "healthcare",
529
+ "help",
530
+ "helsinki",
531
+ "here",
532
+ "hermes",
533
+ "hiphop",
534
+ "hisamitsu",
535
+ "hitachi",
536
+ "hiv",
537
+ "hk",
538
+ "hkt",
539
+ "hm",
540
+ "hn",
541
+ "hockey",
542
+ "holdings",
543
+ "holiday",
544
+ "homedepot",
545
+ "homegoods",
546
+ "homes",
547
+ "homesense",
548
+ "honda",
549
+ "horse",
550
+ "hospital",
551
+ "host",
552
+ "hosting",
553
+ "hot",
554
+ "hotels",
555
+ "hotmail",
556
+ "house",
557
+ "how",
558
+ "hr",
559
+ "hsbc",
560
+ "ht",
561
+ "hu",
562
+ "hughes",
563
+ "hyatt",
564
+ "hyundai",
565
+ "ibm",
566
+ "icbc",
567
+ "ice",
568
+ "icu",
569
+ "id",
570
+ "ie",
571
+ "ieee",
572
+ "ifm",
573
+ "ikano",
574
+ "il",
575
+ "im",
576
+ "imamat",
577
+ "imdb",
578
+ "immo",
579
+ "immobilien",
580
+ "in",
581
+ "inc",
582
+ "industries",
583
+ "infiniti",
584
+ "info",
585
+ "ing",
586
+ "ink",
587
+ "institute",
588
+ "insurance",
589
+ "insure",
590
+ "int",
591
+ "international",
592
+ "intuit",
593
+ "investments",
594
+ "io",
595
+ "ipiranga",
596
+ "iq",
597
+ "ir",
598
+ "irish",
599
+ "is",
600
+ "ismaili",
601
+ "ist",
602
+ "istanbul",
603
+ "it",
604
+ "itau",
605
+ "itv",
606
+ "jaguar",
607
+ "java",
608
+ "jcb",
609
+ "je",
610
+ "jeep",
611
+ "jetzt",
612
+ "jewelry",
613
+ "jio",
614
+ "jll",
615
+ "jm",
616
+ "jmp",
617
+ "jnj",
618
+ "jo",
619
+ "jobs",
620
+ "joburg",
621
+ "jot",
622
+ "joy",
623
+ "jp",
624
+ "jpmorgan",
625
+ "jprs",
626
+ "juegos",
627
+ "juniper",
628
+ "kaufen",
629
+ "kddi",
630
+ "ke",
631
+ "kerryhotels",
632
+ "kerryproperties",
633
+ "kfh",
634
+ "kg",
635
+ "kh",
636
+ "ki",
637
+ "kia",
638
+ "kids",
639
+ "kim",
640
+ "kindle",
641
+ "kitchen",
642
+ "kiwi",
643
+ "km",
644
+ "kn",
645
+ "koeln",
646
+ "komatsu",
647
+ "kosher",
648
+ "kp",
649
+ "kpmg",
650
+ "kpn",
651
+ "kr",
652
+ "krd",
653
+ "kred",
654
+ "kuokgroup",
655
+ "kw",
656
+ "ky",
657
+ "kyoto",
658
+ "kz",
659
+ "la",
660
+ "lacaixa",
661
+ "lamborghini",
662
+ "lamer",
663
+ "land",
664
+ "landrover",
665
+ "lanxess",
666
+ "lasalle",
667
+ "lat",
668
+ "latino",
669
+ "latrobe",
670
+ "law",
671
+ "lawyer",
672
+ "lb",
673
+ "lc",
674
+ "lds",
675
+ "lease",
676
+ "leclerc",
677
+ "lefrak",
678
+ "legal",
679
+ "lego",
680
+ "lexus",
681
+ "lgbt",
682
+ "li",
683
+ "lidl",
684
+ "life",
685
+ "lifeinsurance",
686
+ "lifestyle",
687
+ "lighting",
688
+ "like",
689
+ "lilly",
690
+ "limited",
691
+ "limo",
692
+ "lincoln",
693
+ "link",
694
+ "live",
695
+ "living",
696
+ "lk",
697
+ "llc",
698
+ "llp",
699
+ "loan",
700
+ "loans",
701
+ "locker",
702
+ "locus",
703
+ "lol",
704
+ "london",
705
+ "lotte",
706
+ "lotto",
707
+ "love",
708
+ "lpl",
709
+ "lplfinancial",
710
+ "lr",
711
+ "ls",
712
+ "lt",
713
+ "ltd",
714
+ "ltda",
715
+ "lu",
716
+ "lundbeck",
717
+ "luxe",
718
+ "luxury",
719
+ "lv",
720
+ "ly",
721
+ "ma",
722
+ "madrid",
723
+ "maif",
724
+ "maison",
725
+ "makeup",
726
+ "man",
727
+ "management",
728
+ "mango",
729
+ "map",
730
+ "market",
731
+ "marketing",
732
+ "markets",
733
+ "marriott",
734
+ "marshalls",
735
+ "mattel",
736
+ "mba",
737
+ "mc",
738
+ "mckinsey",
739
+ "md",
740
+ "me",
741
+ "med",
742
+ "media",
743
+ "meet",
744
+ "melbourne",
745
+ "meme",
746
+ "memorial",
747
+ "men",
748
+ "menu",
749
+ "merck",
750
+ "merckmsd",
751
+ "mg",
752
+ "mh",
753
+ "miami",
754
+ "microsoft",
755
+ "mil",
756
+ "mini",
757
+ "mint",
758
+ "mit",
759
+ "mitsubishi",
760
+ "mk",
761
+ "ml",
762
+ "mlb",
763
+ "mls",
764
+ "mm",
765
+ "mma",
766
+ "mn",
767
+ "mo",
768
+ "mobi",
769
+ "mobile",
770
+ "moda",
771
+ "moe",
772
+ "moi",
773
+ "mom",
774
+ "monash",
775
+ "money",
776
+ "monster",
777
+ "mormon",
778
+ "mortgage",
779
+ "moscow",
780
+ "moto",
781
+ "motorcycles",
782
+ "mov",
783
+ "movie",
784
+ "mp",
785
+ "mq",
786
+ "mr",
787
+ "ms",
788
+ "msd",
789
+ "mt",
790
+ "mtn",
791
+ "mtr",
792
+ "mu",
793
+ "museum",
794
+ "music",
795
+ "mv",
796
+ "mw",
797
+ "mx",
798
+ "my",
799
+ "mz",
800
+ "na",
801
+ "nab",
802
+ "nagoya",
803
+ "name",
804
+ "navy",
805
+ "nba",
806
+ "nc",
807
+ "ne",
808
+ "nec",
809
+ "net",
810
+ "netbank",
811
+ "netflix",
812
+ "network",
813
+ "neustar",
814
+ "new",
815
+ "news",
816
+ "next",
817
+ "nextdirect",
818
+ "nexus",
819
+ "nf",
820
+ "nfl",
821
+ "ng",
822
+ "ngo",
823
+ "nhk",
824
+ "ni",
825
+ "nico",
826
+ "nike",
827
+ "nikon",
828
+ "ninja",
829
+ "nissan",
830
+ "nissay",
831
+ "nl",
832
+ "no",
833
+ "nokia",
834
+ "norton",
835
+ "now",
836
+ "nowruz",
837
+ "nowtv",
838
+ "np",
839
+ "nr",
840
+ "nra",
841
+ "nrw",
842
+ "ntt",
843
+ "nu",
844
+ "nyc",
845
+ "nz",
846
+ "obi",
847
+ "observer",
848
+ "office",
849
+ "okinawa",
850
+ "olayan",
851
+ "olayangroup",
852
+ "ollo",
853
+ "om",
854
+ "omega",
855
+ "one",
856
+ "ong",
857
+ "onl",
858
+ "online",
859
+ "ooo",
860
+ "open",
861
+ "oracle",
862
+ "orange",
863
+ "org",
864
+ "organic",
865
+ "origins",
866
+ "osaka",
867
+ "otsuka",
868
+ "ott",
869
+ "ovh",
870
+ "pa",
871
+ "page",
872
+ "panasonic",
873
+ "paris",
874
+ "pars",
875
+ "partners",
876
+ "parts",
877
+ "party",
878
+ "pay",
879
+ "pccw",
880
+ "pe",
881
+ "pet",
882
+ "pf",
883
+ "pfizer",
884
+ "pg",
885
+ "ph",
886
+ "pharmacy",
887
+ "phd",
888
+ "philips",
889
+ "phone",
890
+ "photo",
891
+ "photography",
892
+ "photos",
893
+ "physio",
894
+ "pics",
895
+ "pictet",
896
+ "pictures",
897
+ "pid",
898
+ "pin",
899
+ "ping",
900
+ "pink",
901
+ "pioneer",
902
+ "pizza",
903
+ "pk",
904
+ "pl",
905
+ "place",
906
+ "play",
907
+ "playstation",
908
+ "plumbing",
909
+ "plus",
910
+ "pm",
911
+ "pn",
912
+ "pnc",
913
+ "pohl",
914
+ "poker",
915
+ "politie",
916
+ "porn",
917
+ "post",
918
+ "pr",
919
+ "praxi",
920
+ "press",
921
+ "prime",
922
+ "pro",
923
+ "prod",
924
+ "productions",
925
+ "prof",
926
+ "progressive",
927
+ "promo",
928
+ "properties",
929
+ "property",
930
+ "protection",
931
+ "pru",
932
+ "prudential",
933
+ "ps",
934
+ "pt",
935
+ "pub",
936
+ "pw",
937
+ "pwc",
938
+ "py",
939
+ "qa",
940
+ "qpon",
941
+ "quebec",
942
+ "quest",
943
+ "racing",
944
+ "radio",
945
+ "re",
946
+ "read",
947
+ "realestate",
948
+ "realtor",
949
+ "realty",
950
+ "recipes",
951
+ "red",
952
+ "redumbrella",
953
+ "rehab",
954
+ "reise",
955
+ "reisen",
956
+ "reit",
957
+ "reliance",
958
+ "ren",
959
+ "rent",
960
+ "rentals",
961
+ "repair",
962
+ "report",
963
+ "republican",
964
+ "rest",
965
+ "restaurant",
966
+ "review",
967
+ "reviews",
968
+ "rexroth",
969
+ "rich",
970
+ "richardli",
971
+ "ricoh",
972
+ "ril",
973
+ "rio",
974
+ "rip",
975
+ "ro",
976
+ "rocks",
977
+ "rodeo",
978
+ "rogers",
979
+ "room",
980
+ "rs",
981
+ "rsvp",
982
+ "ru",
983
+ "rugby",
984
+ "ruhr",
985
+ "run",
986
+ "rw",
987
+ "rwe",
988
+ "ryukyu",
989
+ "sa",
990
+ "saarland",
991
+ "safe",
992
+ "safety",
993
+ "sakura",
994
+ "sale",
995
+ "salon",
996
+ "samsclub",
997
+ "samsung",
998
+ "sandvik",
999
+ "sandvikcoromant",
1000
+ "sanofi",
1001
+ "sap",
1002
+ "sarl",
1003
+ "sas",
1004
+ "save",
1005
+ "saxo",
1006
+ "sb",
1007
+ "sbi",
1008
+ "sbs",
1009
+ "sc",
1010
+ "scb",
1011
+ "schaeffler",
1012
+ "schmidt",
1013
+ "scholarships",
1014
+ "school",
1015
+ "schule",
1016
+ "schwarz",
1017
+ "science",
1018
+ "scot",
1019
+ "sd",
1020
+ "se",
1021
+ "search",
1022
+ "seat",
1023
+ "secure",
1024
+ "security",
1025
+ "seek",
1026
+ "select",
1027
+ "sener",
1028
+ "services",
1029
+ "seven",
1030
+ "sew",
1031
+ "sex",
1032
+ "sexy",
1033
+ "sfr",
1034
+ "sg",
1035
+ "sh",
1036
+ "shangrila",
1037
+ "sharp",
1038
+ "shell",
1039
+ "shia",
1040
+ "shiksha",
1041
+ "shoes",
1042
+ "shop",
1043
+ "shopping",
1044
+ "shouji",
1045
+ "show",
1046
+ "si",
1047
+ "silk",
1048
+ "sina",
1049
+ "singles",
1050
+ "site",
1051
+ "sj",
1052
+ "sk",
1053
+ "ski",
1054
+ "skin",
1055
+ "sky",
1056
+ "skype",
1057
+ "sl",
1058
+ "sling",
1059
+ "sm",
1060
+ "smart",
1061
+ "smile",
1062
+ "sn",
1063
+ "sncf",
1064
+ "so",
1065
+ "soccer",
1066
+ "social",
1067
+ "softbank",
1068
+ "software",
1069
+ "sohu",
1070
+ "solar",
1071
+ "solutions",
1072
+ "song",
1073
+ "sony",
1074
+ "soy",
1075
+ "spa",
1076
+ "space",
1077
+ "sport",
1078
+ "spot",
1079
+ "sr",
1080
+ "srl",
1081
+ "ss",
1082
+ "st",
1083
+ "stada",
1084
+ "staples",
1085
+ "star",
1086
+ "statebank",
1087
+ "statefarm",
1088
+ "stc",
1089
+ "stcgroup",
1090
+ "stockholm",
1091
+ "storage",
1092
+ "store",
1093
+ "stream",
1094
+ "studio",
1095
+ "study",
1096
+ "style",
1097
+ "su",
1098
+ "sucks",
1099
+ "supplies",
1100
+ "supply",
1101
+ "support",
1102
+ "surf",
1103
+ "surgery",
1104
+ "suzuki",
1105
+ "sv",
1106
+ "swatch",
1107
+ "swiss",
1108
+ "sx",
1109
+ "sy",
1110
+ "sydney",
1111
+ "systems",
1112
+ "sz",
1113
+ "tab",
1114
+ "taipei",
1115
+ "talk",
1116
+ "taobao",
1117
+ "target",
1118
+ "tatamotors",
1119
+ "tatar",
1120
+ "tattoo",
1121
+ "tax",
1122
+ "taxi",
1123
+ "tc",
1124
+ "tci",
1125
+ "td",
1126
+ "tdk",
1127
+ "team",
1128
+ "tech",
1129
+ "technology",
1130
+ "tel",
1131
+ "temasek",
1132
+ "tennis",
1133
+ "teva",
1134
+ "tf",
1135
+ "tg",
1136
+ "th",
1137
+ "thd",
1138
+ "theater",
1139
+ "theatre",
1140
+ "tiaa",
1141
+ "tickets",
1142
+ "tienda",
1143
+ "tips",
1144
+ "tires",
1145
+ "tirol",
1146
+ "tj",
1147
+ "tjmaxx",
1148
+ "tjx",
1149
+ "tk",
1150
+ "tkmaxx",
1151
+ "tl",
1152
+ "tm",
1153
+ "tmall",
1154
+ "tn",
1155
+ "to",
1156
+ "today",
1157
+ "tokyo",
1158
+ "tools",
1159
+ "top",
1160
+ "toray",
1161
+ "toshiba",
1162
+ "total",
1163
+ "tours",
1164
+ "town",
1165
+ "toyota",
1166
+ "toys",
1167
+ "tr",
1168
+ "trade",
1169
+ "trading",
1170
+ "training",
1171
+ "travel",
1172
+ "travelers",
1173
+ "travelersinsurance",
1174
+ "trust",
1175
+ "trv",
1176
+ "tt",
1177
+ "tube",
1178
+ "tui",
1179
+ "tunes",
1180
+ "tushu",
1181
+ "tv",
1182
+ "tvs",
1183
+ "tw",
1184
+ "tz",
1185
+ "ua",
1186
+ "ubank",
1187
+ "ubs",
1188
+ "ug",
1189
+ "uk",
1190
+ "unicom",
1191
+ "university",
1192
+ "uno",
1193
+ "uol",
1194
+ "ups",
1195
+ "us",
1196
+ "uy",
1197
+ "uz",
1198
+ "va",
1199
+ "vacations",
1200
+ "vana",
1201
+ "vanguard",
1202
+ "vc",
1203
+ "ve",
1204
+ "vegas",
1205
+ "ventures",
1206
+ "verisign",
1207
+ "versicherung",
1208
+ "vet",
1209
+ "vg",
1210
+ "vi",
1211
+ "viajes",
1212
+ "video",
1213
+ "vig",
1214
+ "viking",
1215
+ "villas",
1216
+ "vin",
1217
+ "vip",
1218
+ "virgin",
1219
+ "visa",
1220
+ "vision",
1221
+ "viva",
1222
+ "vivo",
1223
+ "vlaanderen",
1224
+ "vn",
1225
+ "vodka",
1226
+ "volvo",
1227
+ "vote",
1228
+ "voting",
1229
+ "voto",
1230
+ "voyage",
1231
+ "vu",
1232
+ "wales",
1233
+ "walmart",
1234
+ "walter",
1235
+ "wang",
1236
+ "wanggou",
1237
+ "watch",
1238
+ "watches",
1239
+ "weather",
1240
+ "weatherchannel",
1241
+ "webcam",
1242
+ "weber",
1243
+ "website",
1244
+ "wed",
1245
+ "wedding",
1246
+ "weibo",
1247
+ "weir",
1248
+ "wf",
1249
+ "whoswho",
1250
+ "wien",
1251
+ "wiki",
1252
+ "williamhill",
1253
+ "win",
1254
+ "windows",
1255
+ "wine",
1256
+ "winners",
1257
+ "wme",
1258
+ "woodside",
1259
+ "work",
1260
+ "works",
1261
+ "world",
1262
+ "wow",
1263
+ "ws",
1264
+ "wtc",
1265
+ "wtf",
1266
+ "xbox",
1267
+ "xerox",
1268
+ "xihuan",
1269
+ "xin",
1270
+ "xn--11b4c3d",
1271
+ "xn--1ck2e1b",
1272
+ "xn--1qqw23a",
1273
+ "xn--2scrj9c",
1274
+ "xn--30rr7y",
1275
+ "xn--3bst00m",
1276
+ "xn--3ds443g",
1277
+ "xn--3e0b707e",
1278
+ "xn--3hcrj9c",
1279
+ "xn--3pxu8k",
1280
+ "xn--42c2d9a",
1281
+ "xn--45br5cyl",
1282
+ "xn--45brj9c",
1283
+ "xn--45q11c",
1284
+ "xn--4dbrk0ce",
1285
+ "xn--4gbrim",
1286
+ "xn--54b7fta0cc",
1287
+ "xn--55qw42g",
1288
+ "xn--55qx5d",
1289
+ "xn--5su34j936bgsg",
1290
+ "xn--5tzm5g",
1291
+ "xn--6frz82g",
1292
+ "xn--6qq986b3xl",
1293
+ "xn--80adxhks",
1294
+ "xn--80ao21a",
1295
+ "xn--80aqecdr1a",
1296
+ "xn--80asehdb",
1297
+ "xn--80aswg",
1298
+ "xn--8y0a063a",
1299
+ "xn--90a3ac",
1300
+ "xn--90ae",
1301
+ "xn--90ais",
1302
+ "xn--9dbq2a",
1303
+ "xn--9et52u",
1304
+ "xn--9krt00a",
1305
+ "xn--b4w605ferd",
1306
+ "xn--bck1b9a5dre4c",
1307
+ "xn--c1avg",
1308
+ "xn--c2br7g",
1309
+ "xn--cck2b3b",
1310
+ "xn--cckwcxetd",
1311
+ "xn--cg4bki",
1312
+ "xn--clchc0ea0b2g2a9gcd",
1313
+ "xn--czr694b",
1314
+ "xn--czrs0t",
1315
+ "xn--czru2d",
1316
+ "xn--d1acj3b",
1317
+ "xn--d1alf",
1318
+ "xn--e1a4c",
1319
+ "xn--eckvdtc9d",
1320
+ "xn--efvy88h",
1321
+ "xn--fct429k",
1322
+ "xn--fhbei",
1323
+ "xn--fiq228c5hs",
1324
+ "xn--fiq64b",
1325
+ "xn--fiqs8s",
1326
+ "xn--fiqz9s",
1327
+ "xn--fjq720a",
1328
+ "xn--flw351e",
1329
+ "xn--fpcrj9c3d",
1330
+ "xn--fzc2c9e2c",
1331
+ "xn--fzys8d69uvgm",
1332
+ "xn--g2xx48c",
1333
+ "xn--gckr3f0f",
1334
+ "xn--gecrj9c",
1335
+ "xn--gk3at1e",
1336
+ "xn--h2breg3eve",
1337
+ "xn--h2brj9c",
1338
+ "xn--h2brj9c8c",
1339
+ "xn--hxt814e",
1340
+ "xn--i1b6b1a6a2e",
1341
+ "xn--imr513n",
1342
+ "xn--io0a7i",
1343
+ "xn--j1aef",
1344
+ "xn--j1amh",
1345
+ "xn--j6w193g",
1346
+ "xn--jlq480n2rg",
1347
+ "xn--jvr189m",
1348
+ "xn--kcrx77d1x4a",
1349
+ "xn--kprw13d",
1350
+ "xn--kpry57d",
1351
+ "xn--kput3i",
1352
+ "xn--l1acc",
1353
+ "xn--lgbbat1ad8j",
1354
+ "xn--mgb9awbf",
1355
+ "xn--mgba3a3ejt",
1356
+ "xn--mgba3a4f16a",
1357
+ "xn--mgba7c0bbn0a",
1358
+ "xn--mgbaam7a8h",
1359
+ "xn--mgbab2bd",
1360
+ "xn--mgbah1a3hjkrd",
1361
+ "xn--mgbai9azgqp6j",
1362
+ "xn--mgbayh7gpa",
1363
+ "xn--mgbbh1a",
1364
+ "xn--mgbbh1a71e",
1365
+ "xn--mgbc0a9azcg",
1366
+ "xn--mgbca7dzdo",
1367
+ "xn--mgbcpq6gpa1a",
1368
+ "xn--mgberp4a5d4ar",
1369
+ "xn--mgbgu82a",
1370
+ "xn--mgbi4ecexp",
1371
+ "xn--mgbpl2fh",
1372
+ "xn--mgbt3dhd",
1373
+ "xn--mgbtx2b",
1374
+ "xn--mgbx4cd0ab",
1375
+ "xn--mix891f",
1376
+ "xn--mk1bu44c",
1377
+ "xn--mxtq1m",
1378
+ "xn--ngbc5azd",
1379
+ "xn--ngbe9e0a",
1380
+ "xn--ngbrx",
1381
+ "xn--node",
1382
+ "xn--nqv7f",
1383
+ "xn--nqv7fs00ema",
1384
+ "xn--nyqy26a",
1385
+ "xn--o3cw4h",
1386
+ "xn--ogbpf8fl",
1387
+ "xn--otu796d",
1388
+ "xn--p1acf",
1389
+ "xn--p1ai",
1390
+ "xn--pgbs0dh",
1391
+ "xn--pssy2u",
1392
+ "xn--q7ce6a",
1393
+ "xn--q9jyb4c",
1394
+ "xn--qcka1pmc",
1395
+ "xn--qxa6a",
1396
+ "xn--qxam",
1397
+ "xn--rhqv96g",
1398
+ "xn--rovu88b",
1399
+ "xn--rvc1e0am3e",
1400
+ "xn--s9brj9c",
1401
+ "xn--ses554g",
1402
+ "xn--t60b56a",
1403
+ "xn--tckwe",
1404
+ "xn--tiq49xqyj",
1405
+ "xn--unup4y",
1406
+ "xn--vermgensberater-ctb",
1407
+ "xn--vermgensberatung-pwb",
1408
+ "xn--vhquv",
1409
+ "xn--vuq861b",
1410
+ "xn--w4r85el8fhu5dnra",
1411
+ "xn--w4rs40l",
1412
+ "xn--wgbh1c",
1413
+ "xn--wgbl6a",
1414
+ "xn--xhq521b",
1415
+ "xn--xkc2al3hye2a",
1416
+ "xn--xkc2dl3a5ee0h",
1417
+ "xn--y9a3aq",
1418
+ "xn--yfro4i67o",
1419
+ "xn--ygbi2ammx",
1420
+ "xn--zfr164b",
1421
+ "xxx",
1422
+ "xyz",
1423
+ "yachts",
1424
+ "yahoo",
1425
+ "yamaxun",
1426
+ "yandex",
1427
+ "ye",
1428
+ "yodobashi",
1429
+ "yoga",
1430
+ "yokohama",
1431
+ "you",
1432
+ "youtube",
1433
+ "yt",
1434
+ "yun",
1435
+ "za",
1436
+ "zappos",
1437
+ "zara",
1438
+ "zero",
1439
+ "zip",
1440
+ "zm",
1441
+ "zone",
1442
+ "zuerich",
1443
+ "zw"
1444
+ ];
1445
+ var tldData = {
1446
+ source: source,
1447
+ updatedAt: updatedAt,
1448
+ count: count,
1449
+ tlds: tlds
1450
+ };
1451
+
1452
+ const VALID_TLDS = new Set(tldData.tlds);
1453
+
1454
+ /**
1455
+ * Validates the local part (before the @).
1456
+ * Max 64 chars, allowed: a-z A-Z 0-9 . _ % + -
1457
+ * No leading/trailing/consecutive dots.
1458
+ * @param {string} local
1459
+ * @returns {boolean}
1460
+ */
1461
+ function isValidLocal(local) {
1462
+ if (!local || local.length > 64) return false;
1463
+ if (/^\.|\.$/.test(local)) return false;
1464
+ if (/\.\./.test(local)) return false;
1465
+ return /^[a-zA-Z0-9._%+\-]+$/.test(local);
1466
+ }
1467
+
1468
+ /**
1469
+ * Validates the domain part (after the @).
1470
+ * Each label: 1–63 chars, alphanumeric + hyphens, no leading/trailing hyphen.
1471
+ * Total domain max 253 chars, must have at least 2 labels.
1472
+ * @param {string} domain
1473
+ * @returns {boolean}
1474
+ */
1475
+ function isValidDomain(domain) {
1476
+ if (!domain || domain.length > 253) return false;
1477
+ const labels = domain.split('.');
1478
+ if (labels.length < 2) return false;
1479
+ return labels.every(
1480
+ (label) =>
1481
+ label.length >= 1 &&
1482
+ label.length <= 63 &&
1483
+ /^[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?$|^[a-zA-Z0-9]$/.test(label),
1484
+ );
1485
+ }
1486
+
1487
+ /**
1488
+ * Validates an email address against format rules and the IANA TLD whitelist.
1489
+ *
1490
+ * @param {string} email
1491
+ * @returns {{ valid: boolean, reason?: string }}
1492
+ *
1493
+ * @example
1494
+ * validateEmail('user@example.com') // { valid: true }
1495
+ * validateEmail('user@example.invalid') // { valid: false, reason: '"invalid" is not a recognized TLD' }
1496
+ */
1497
+ function validateEmail(email) {
1498
+ if (typeof email !== 'string' || !email.trim()) {
1499
+ return { valid: false, reason: 'Email must be a non-empty string' };
1500
+ }
1501
+
1502
+ const trimmed = email.trim();
1503
+
1504
+ if (trimmed.length > 254) {
1505
+ return { valid: false, reason: 'Email address is too long' };
1506
+ }
1507
+
1508
+ const atIndex = trimmed.lastIndexOf('@');
1509
+ if (atIndex === -1) {
1510
+ return { valid: false, reason: 'Email address must contain @' };
1511
+ }
1512
+
1513
+ const local = trimmed.slice(0, atIndex);
1514
+ const domain = trimmed.slice(atIndex + 1);
1515
+
1516
+ if (!local) {
1517
+ return { valid: false, reason: 'Email address must contain @' };
1518
+ }
1519
+
1520
+ if (!isValidLocal(local)) {
1521
+ return {
1522
+ valid: false,
1523
+ reason: 'Invalid characters or format in local part (before @)',
1524
+ };
1525
+ }
1526
+
1527
+ if (!isValidDomain(domain)) {
1528
+ return { valid: false, reason: 'Invalid domain format' };
1529
+ }
1530
+
1531
+ const tld = domain.split('.').pop().toLowerCase();
1532
+ if (!VALID_TLDS.has(tld)) {
1533
+ return { valid: false, reason: `"${tld}" is not a recognized TLD` };
1534
+ }
1535
+
1536
+ return { valid: true };
1537
+ }
1538
+
1539
+ /**
1540
+ * Returns true if the email passes all validation checks.
1541
+ * Convenience wrapper around validateEmail.
1542
+ *
1543
+ * @param {string} email
1544
+ * @returns {boolean}
1545
+ *
1546
+ * @example
1547
+ * isValidEmail('user@example.com') // true
1548
+ * isValidEmail('bad-email') // false
1549
+ */
1550
+ function isValidEmail(email) {
1551
+ return validateEmail(email).valid;
1552
+ }
1553
+
1554
+ /**
1555
+ * Returns a copy of the internal IANA TLD set.
1556
+ * Useful for inspection or custom filtering.
1557
+ *
1558
+ * @returns {Set<string>}
1559
+ */
1560
+ function getTLDs() {
1561
+ return new Set(VALID_TLDS);
1562
+ }
1563
+
1564
+ /**
1565
+ * Returns TLD metadata from the data file (source, updatedAt, count).
1566
+ *
1567
+ * @returns {{ source: string, updatedAt: string, count: number }}
1568
+ */
1569
+ function getTLDMeta() {
1570
+ const { source, updatedAt, count } = tldData;
1571
+ return { source, updatedAt, count };
1572
+ }
1573
+
1574
+ exports.getTLDMeta = getTLDMeta;
1575
+ exports.getTLDs = getTLDs;
1576
+ exports.isValidEmail = isValidEmail;
1577
+ exports.validateEmail = validateEmail;
1578
+ //# sourceMappingURL=index.cjs.map