caa 10.0.4 → 11.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.
Files changed (3) hide show
  1. package/dist/index.d.ts +16 -14
  2. package/dist/index.js +1564 -92
  3. package/package.json +15 -16
package/dist/index.js CHANGED
@@ -1,110 +1,1582 @@
1
1
  import { getServers } from "node:dns";
2
2
  import { promisify } from "node:util";
3
3
  import dnsSocket from "dns-socket";
4
- const tlds = /* @__PURE__ */ JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');
4
+
5
+ //#region node_modules/.pnpm/tlds@1.261.0/node_modules/tlds/index.json
6
+ var tlds_default = [
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
+ "goo",
495
+ "goodyear",
496
+ "goog",
497
+ "google",
498
+ "gop",
499
+ "got",
500
+ "gov",
501
+ "gp",
502
+ "gq",
503
+ "gr",
504
+ "grainger",
505
+ "graphics",
506
+ "gratis",
507
+ "green",
508
+ "gripe",
509
+ "grocery",
510
+ "group",
511
+ "gs",
512
+ "gt",
513
+ "gu",
514
+ "gucci",
515
+ "guge",
516
+ "guide",
517
+ "guitars",
518
+ "guru",
519
+ "gw",
520
+ "gy",
521
+ "hair",
522
+ "hamburg",
523
+ "hangout",
524
+ "haus",
525
+ "hbo",
526
+ "hdfc",
527
+ "hdfcbank",
528
+ "health",
529
+ "healthcare",
530
+ "help",
531
+ "helsinki",
532
+ "here",
533
+ "hermes",
534
+ "hiphop",
535
+ "hisamitsu",
536
+ "hitachi",
537
+ "hiv",
538
+ "hk",
539
+ "hkt",
540
+ "hm",
541
+ "hn",
542
+ "hockey",
543
+ "holdings",
544
+ "holiday",
545
+ "homedepot",
546
+ "homegoods",
547
+ "homes",
548
+ "homesense",
549
+ "honda",
550
+ "horse",
551
+ "hospital",
552
+ "host",
553
+ "hosting",
554
+ "hot",
555
+ "hotels",
556
+ "hotmail",
557
+ "house",
558
+ "how",
559
+ "hr",
560
+ "hsbc",
561
+ "ht",
562
+ "hu",
563
+ "hughes",
564
+ "hyatt",
565
+ "hyundai",
566
+ "ibm",
567
+ "icbc",
568
+ "ice",
569
+ "icu",
570
+ "id",
571
+ "ie",
572
+ "ieee",
573
+ "ifm",
574
+ "ikano",
575
+ "il",
576
+ "im",
577
+ "imamat",
578
+ "imdb",
579
+ "immo",
580
+ "immobilien",
581
+ "in",
582
+ "inc",
583
+ "industries",
584
+ "infiniti",
585
+ "info",
586
+ "ing",
587
+ "ink",
588
+ "institute",
589
+ "insurance",
590
+ "insure",
591
+ "int",
592
+ "international",
593
+ "intuit",
594
+ "investments",
595
+ "io",
596
+ "ipiranga",
597
+ "iq",
598
+ "ir",
599
+ "irish",
600
+ "is",
601
+ "ismaili",
602
+ "ist",
603
+ "istanbul",
604
+ "it",
605
+ "itau",
606
+ "itv",
607
+ "jaguar",
608
+ "java",
609
+ "jcb",
610
+ "je",
611
+ "jeep",
612
+ "jetzt",
613
+ "jewelry",
614
+ "jio",
615
+ "jll",
616
+ "jm",
617
+ "jmp",
618
+ "jnj",
619
+ "jo",
620
+ "jobs",
621
+ "joburg",
622
+ "jot",
623
+ "joy",
624
+ "jp",
625
+ "jpmorgan",
626
+ "jprs",
627
+ "juegos",
628
+ "juniper",
629
+ "kaufen",
630
+ "kddi",
631
+ "ke",
632
+ "kerryhotels",
633
+ "kerryproperties",
634
+ "kfh",
635
+ "kg",
636
+ "kh",
637
+ "ki",
638
+ "kia",
639
+ "kids",
640
+ "kim",
641
+ "kindle",
642
+ "kitchen",
643
+ "kiwi",
644
+ "km",
645
+ "kn",
646
+ "koeln",
647
+ "komatsu",
648
+ "kosher",
649
+ "kp",
650
+ "kpmg",
651
+ "kpn",
652
+ "kr",
653
+ "krd",
654
+ "kred",
655
+ "kuokgroup",
656
+ "kw",
657
+ "ky",
658
+ "kyoto",
659
+ "kz",
660
+ "la",
661
+ "lacaixa",
662
+ "lamborghini",
663
+ "lamer",
664
+ "land",
665
+ "landrover",
666
+ "lanxess",
667
+ "lasalle",
668
+ "lat",
669
+ "latino",
670
+ "latrobe",
671
+ "law",
672
+ "lawyer",
673
+ "lb",
674
+ "lc",
675
+ "lds",
676
+ "lease",
677
+ "leclerc",
678
+ "lefrak",
679
+ "legal",
680
+ "lego",
681
+ "lexus",
682
+ "lgbt",
683
+ "li",
684
+ "lidl",
685
+ "life",
686
+ "lifeinsurance",
687
+ "lifestyle",
688
+ "lighting",
689
+ "like",
690
+ "lilly",
691
+ "limited",
692
+ "limo",
693
+ "lincoln",
694
+ "link",
695
+ "live",
696
+ "living",
697
+ "lk",
698
+ "llc",
699
+ "llp",
700
+ "loan",
701
+ "loans",
702
+ "locker",
703
+ "locus",
704
+ "lol",
705
+ "london",
706
+ "lotte",
707
+ "lotto",
708
+ "love",
709
+ "lpl",
710
+ "lplfinancial",
711
+ "lr",
712
+ "ls",
713
+ "lt",
714
+ "ltd",
715
+ "ltda",
716
+ "lu",
717
+ "lundbeck",
718
+ "luxe",
719
+ "luxury",
720
+ "lv",
721
+ "ly",
722
+ "ma",
723
+ "madrid",
724
+ "maif",
725
+ "maison",
726
+ "makeup",
727
+ "man",
728
+ "management",
729
+ "mango",
730
+ "map",
731
+ "market",
732
+ "marketing",
733
+ "markets",
734
+ "marriott",
735
+ "marshalls",
736
+ "mattel",
737
+ "mba",
738
+ "mc",
739
+ "mckinsey",
740
+ "md",
741
+ "me",
742
+ "med",
743
+ "media",
744
+ "meet",
745
+ "melbourne",
746
+ "meme",
747
+ "memorial",
748
+ "men",
749
+ "menu",
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
+ "vermögensberater",
1208
+ "vermögensberatung",
1209
+ "versicherung",
1210
+ "vet",
1211
+ "vg",
1212
+ "vi",
1213
+ "viajes",
1214
+ "video",
1215
+ "vig",
1216
+ "viking",
1217
+ "villas",
1218
+ "vin",
1219
+ "vip",
1220
+ "virgin",
1221
+ "visa",
1222
+ "vision",
1223
+ "viva",
1224
+ "vivo",
1225
+ "vlaanderen",
1226
+ "vn",
1227
+ "vodka",
1228
+ "volvo",
1229
+ "vote",
1230
+ "voting",
1231
+ "voto",
1232
+ "voyage",
1233
+ "vu",
1234
+ "wales",
1235
+ "walmart",
1236
+ "walter",
1237
+ "wang",
1238
+ "wanggou",
1239
+ "watch",
1240
+ "watches",
1241
+ "weather",
1242
+ "weatherchannel",
1243
+ "webcam",
1244
+ "weber",
1245
+ "website",
1246
+ "wed",
1247
+ "wedding",
1248
+ "weibo",
1249
+ "weir",
1250
+ "wf",
1251
+ "whoswho",
1252
+ "wien",
1253
+ "wiki",
1254
+ "williamhill",
1255
+ "win",
1256
+ "windows",
1257
+ "wine",
1258
+ "winners",
1259
+ "wme",
1260
+ "wolterskluwer",
1261
+ "woodside",
1262
+ "work",
1263
+ "works",
1264
+ "world",
1265
+ "wow",
1266
+ "ws",
1267
+ "wtc",
1268
+ "wtf",
1269
+ "xbox",
1270
+ "xerox",
1271
+ "xihuan",
1272
+ "xin",
1273
+ "xxx",
1274
+ "xyz",
1275
+ "yachts",
1276
+ "yahoo",
1277
+ "yamaxun",
1278
+ "yandex",
1279
+ "ye",
1280
+ "yodobashi",
1281
+ "yoga",
1282
+ "yokohama",
1283
+ "you",
1284
+ "youtube",
1285
+ "yt",
1286
+ "yun",
1287
+ "za",
1288
+ "zappos",
1289
+ "zara",
1290
+ "zero",
1291
+ "zip",
1292
+ "zm",
1293
+ "zone",
1294
+ "zuerich",
1295
+ "zw",
1296
+ "ελ",
1297
+ "ευ",
1298
+ "бг",
1299
+ "бел",
1300
+ "дети",
1301
+ "ею",
1302
+ "католик",
1303
+ "ком",
1304
+ "мкд",
1305
+ "мон",
1306
+ "москва",
1307
+ "онлайн",
1308
+ "орг",
1309
+ "рус",
1310
+ "рф",
1311
+ "сайт",
1312
+ "срб",
1313
+ "укр",
1314
+ "қаз",
1315
+ "հայ",
1316
+ "ישראל",
1317
+ "קום",
1318
+ "ابوظبي",
1319
+ "ارامكو",
1320
+ "الاردن",
1321
+ "البحرين",
1322
+ "الجزائر",
1323
+ "السعودية",
1324
+ "العليان",
1325
+ "المغرب",
1326
+ "امارات",
1327
+ "ایران",
1328
+ "بارت",
1329
+ "بازار",
1330
+ "بيتك",
1331
+ "بھارت",
1332
+ "تونس",
1333
+ "سودان",
1334
+ "سورية",
1335
+ "شبكة",
1336
+ "عراق",
1337
+ "عرب",
1338
+ "عمان",
1339
+ "فلسطين",
1340
+ "قطر",
1341
+ "كاثوليك",
1342
+ "كوم",
1343
+ "مصر",
1344
+ "مليسيا",
1345
+ "موريتانيا",
1346
+ "موقع",
1347
+ "همراه",
1348
+ "پاکستان",
1349
+ "ڀارت",
1350
+ "कॉम",
1351
+ "नेट",
1352
+ "भारत",
1353
+ "भारतम्",
1354
+ "भारोत",
1355
+ "संगठन",
1356
+ "বাংলা",
1357
+ "ভারত",
1358
+ "ভাৰত",
1359
+ "ਭਾਰਤ",
1360
+ "ભારત",
1361
+ "ଭାରତ",
1362
+ "இந்தியா",
1363
+ "இலங்கை",
1364
+ "சிங்கப்பூர்",
1365
+ "భారత్",
1366
+ "ಭಾರತ",
1367
+ "ഭാരതം",
1368
+ "ලංකා",
1369
+ "คอม",
1370
+ "ไทย",
1371
+ "ລາວ",
1372
+ "გე",
1373
+ "みんな",
1374
+ "アマゾン",
1375
+ "クラウド",
1376
+ "グーグル",
1377
+ "コム",
1378
+ "ストア",
1379
+ "セール",
1380
+ "ファッション",
1381
+ "ポイント",
1382
+ "世界",
1383
+ "中信",
1384
+ "中国",
1385
+ "中國",
1386
+ "中文网",
1387
+ "亚马逊",
1388
+ "企业",
1389
+ "佛山",
1390
+ "信息",
1391
+ "健康",
1392
+ "八卦",
1393
+ "公司",
1394
+ "公益",
1395
+ "台湾",
1396
+ "台灣",
1397
+ "商城",
1398
+ "商店",
1399
+ "商标",
1400
+ "嘉里",
1401
+ "嘉里大酒店",
1402
+ "在线",
1403
+ "大拿",
1404
+ "天主教",
1405
+ "娱乐",
1406
+ "家電",
1407
+ "广东",
1408
+ "微博",
1409
+ "慈善",
1410
+ "我爱你",
1411
+ "手机",
1412
+ "招聘",
1413
+ "政务",
1414
+ "政府",
1415
+ "新加坡",
1416
+ "新闻",
1417
+ "时尚",
1418
+ "書籍",
1419
+ "机构",
1420
+ "淡马锡",
1421
+ "游戏",
1422
+ "澳門",
1423
+ "点看",
1424
+ "移动",
1425
+ "组织机构",
1426
+ "网址",
1427
+ "网店",
1428
+ "网站",
1429
+ "网络",
1430
+ "联通",
1431
+ "谷歌",
1432
+ "购物",
1433
+ "通販",
1434
+ "集团",
1435
+ "電訊盈科",
1436
+ "飞利浦",
1437
+ "食品",
1438
+ "餐厅",
1439
+ "香格里拉",
1440
+ "香港",
1441
+ "닷넷",
1442
+ "닷컴",
1443
+ "삼성",
1444
+ "한국"
1445
+ ];
1446
+
1447
+ //#endregion
1448
+ //#region index.ts
5
1449
  const defaults = {
6
- ignoreTLDs: false,
7
- recursions: 50,
8
- retries: 12,
9
- port: 53,
10
- servers: ["8.8.8.8", "8.8.4.4"],
11
- // these are only used as fallback to system's servers
12
- dnsSocket: void 0
1450
+ ignoreTLDs: false,
1451
+ recursions: 50,
1452
+ retries: 12,
1453
+ port: 53,
1454
+ servers: ["8.8.8.8", "8.8.4.4"],
1455
+ dnsSocket: void 0
13
1456
  };
14
- const tldSet = new Set(tlds);
1457
+ const tldSet = new Set(tlds_default);
15
1458
  const isTLD = (name) => tldSet.has(name);
16
1459
  const isWildcard = (name) => name.includes("*");
17
1460
  const parent = (name) => name.split(".").splice(1).join(".");
18
1461
  function selectServer(servers, retries, tries) {
19
- return servers[(tries - retries) % servers.length];
1462
+ return servers[(tries - retries) % servers.length];
20
1463
  }
21
1464
  function normalizeName(name = "") {
22
- name = name.toLowerCase();
23
- return name.endsWith(".") && name.length > 1 ? name.substring(0, name.length - 1) : name;
1465
+ name = name.toLowerCase();
1466
+ return name.endsWith(".") && name.length > 1 ? name.substring(0, name.length - 1) : name;
24
1467
  }
25
1468
  const resolve = async ({ name, query, servers, port, recursions, retries, tries, ignoreTLDs }) => {
26
- name = normalizeName(name);
27
- if (!name) return [];
28
- if (ignoreTLDs && isTLD(name)) return [];
29
- if (recursions <= 0 || retries <= 0) return [];
30
- name = name.replace(/^\*\./, "");
31
- let res;
32
- try {
33
- res = await query({ questions: [{ name, type: "CAA" }] }, port, selectServer(servers, retries, tries));
34
- } catch {
35
- if (retries <= 0) return [];
36
- retries -= 1;
37
- return await resolve({ name, query, servers, port, recursions, retries, tries, ignoreTLDs });
38
- }
39
- if (!res || !res.answers && !["NXDOMAIN", "NOERROR"].includes(res.rcode)) {
40
- if (retries <= 0) return [];
41
- retries -= 1;
42
- return await resolve({ name, query, servers, port, recursions, retries, tries, ignoreTLDs });
43
- }
44
- const records = {};
45
- if (res?.answers?.length) {
46
- for (const { name: name2, type, data } of res.answers || {}) {
47
- if (!name2 || !type || !data) continue;
48
- if (!records[type]) records[type] = [];
49
- records[type].push({ name: name2, data });
50
- }
51
- }
52
- if (records.CAA?.length) {
53
- const caas = records.CAA.filter((record) => record.name === name).map((record) => record.data);
54
- if (caas.length) return caas;
55
- }
56
- let alias;
57
- if (records.CNAME?.length) {
58
- const dest = records.CNAME.find((record) => record.name === name);
59
- if (dest) alias = dest.data;
60
- } else if (records.DNAME?.length) {
61
- const dest = records.DNAME.find((record) => record.name === name);
62
- if (dest) alias = name.replace(dest.name, dest.data);
63
- }
64
- if (alias && records.CAA?.length) {
65
- return records.CAA.filter((record) => record.name === alias && record.data).map((record) => record.data);
66
- }
67
- if (!isTLD(name)) {
68
- recursions -= 1;
69
- return await resolve({ name: parent(name), query, servers, port, recursions, retries, tries, ignoreTLDs });
70
- } else {
71
- return [];
72
- }
1469
+ name = normalizeName(name);
1470
+ if (!name) return [];
1471
+ if (ignoreTLDs && isTLD(name)) return [];
1472
+ if (recursions <= 0 || retries <= 0) return [];
1473
+ name = name.replace(/^\*\./, "");
1474
+ let res;
1475
+ try {
1476
+ res = await query({ questions: [{
1477
+ name,
1478
+ type: "CAA"
1479
+ }] }, port, selectServer(servers, retries, tries));
1480
+ } catch {
1481
+ if (retries <= 0) return [];
1482
+ retries -= 1;
1483
+ return await resolve({
1484
+ name,
1485
+ query,
1486
+ servers,
1487
+ port,
1488
+ recursions,
1489
+ retries,
1490
+ tries,
1491
+ ignoreTLDs
1492
+ });
1493
+ }
1494
+ if (!res || !res.answers && !["NXDOMAIN", "NOERROR"].includes(res.rcode)) {
1495
+ if (retries <= 0) return [];
1496
+ retries -= 1;
1497
+ return await resolve({
1498
+ name,
1499
+ query,
1500
+ servers,
1501
+ port,
1502
+ recursions,
1503
+ retries,
1504
+ tries,
1505
+ ignoreTLDs
1506
+ });
1507
+ }
1508
+ const records = {};
1509
+ if (res?.answers?.length) for (const { name, type, data } of res.answers || {}) {
1510
+ if (!name || !type || !data) continue;
1511
+ if (!records[type]) records[type] = [];
1512
+ records[type].push({
1513
+ name,
1514
+ data
1515
+ });
1516
+ }
1517
+ if (records.CAA?.length) {
1518
+ const caas = records.CAA.filter((record) => record.name === name).map((record) => record.data);
1519
+ if (caas.length) return caas;
1520
+ }
1521
+ let alias;
1522
+ if (records.CNAME?.length) {
1523
+ const dest = records.CNAME.find((record) => record.name === name);
1524
+ if (dest) alias = dest.data;
1525
+ } else if (records.DNAME?.length) {
1526
+ const dest = records.DNAME.find((record) => record.name === name);
1527
+ if (dest) alias = name.replace(dest.name, dest.data);
1528
+ }
1529
+ if (alias && records.CAA?.length) return records.CAA.filter((record) => record.name === alias && record.data).map((record) => record.data);
1530
+ if (!isTLD(name)) {
1531
+ recursions -= 1;
1532
+ return await resolve({
1533
+ name: parent(name),
1534
+ query,
1535
+ servers,
1536
+ port,
1537
+ recursions,
1538
+ retries,
1539
+ tries,
1540
+ ignoreTLDs
1541
+ });
1542
+ } else return [];
73
1543
  };
74
1544
  async function caa(name, opts = {}) {
75
- name = normalizeName(name);
76
- if (!opts.servers) {
77
- const systemServers = getServers();
78
- opts.servers = systemServers?.length ? systemServers : defaults.servers;
79
- }
80
- opts = { ...defaults, ...opts };
81
- const socket = opts.dnsSocket || dnsSocket();
82
- const query = promisify(socket.query.bind(socket));
83
- const caa2 = await resolve({
84
- name,
85
- query,
86
- servers: opts.servers,
87
- port: opts.port,
88
- recursions: opts.recursions,
89
- retries: opts.retries,
90
- tries: opts.retries,
91
- ignoreTLDs: opts.ignoreTLDs
92
- });
93
- if (!opts.dnsSocket) socket.destroy();
94
- return caa2 || [];
1545
+ name = normalizeName(name);
1546
+ if (!opts.servers) {
1547
+ const systemServers = getServers();
1548
+ opts.servers = systemServers?.length ? systemServers : defaults.servers;
1549
+ }
1550
+ opts = {
1551
+ ...defaults,
1552
+ ...opts
1553
+ };
1554
+ const socket = opts.dnsSocket || dnsSocket();
1555
+ const query = promisify(socket.query.bind(socket));
1556
+ const caa = await resolve({
1557
+ name,
1558
+ query,
1559
+ servers: opts.servers,
1560
+ port: opts.port,
1561
+ recursions: opts.recursions,
1562
+ retries: opts.retries,
1563
+ tries: opts.retries,
1564
+ ignoreTLDs: opts.ignoreTLDs
1565
+ });
1566
+ if (!opts.dnsSocket) socket.destroy();
1567
+ return caa || [];
95
1568
  }
96
1569
  async function caaMatches(name, ca, opts = {}) {
97
- name = normalizeName(name);
98
- ca = normalizeName(ca);
99
- const caas = await caa(name, opts);
100
- if (!caas.length) return true;
101
- const issueNames = caas.filter((caa2) => caa2?.tag === "issue").map((name2) => normalizeName(name2.value.split(";")[0].trim()));
102
- const issueWildNames = caas.filter((caa2) => caa2?.tag === "issuewild").map((name2) => normalizeName(name2.value.split(";")[0].trim()));
103
- const names = isWildcard(name) ? issueWildNames.length ? issueWildNames : issueNames : issueNames;
104
- if (names.includes(";")) return false;
105
- return !names.length || names.includes(ca);
1570
+ name = normalizeName(name);
1571
+ ca = normalizeName(ca);
1572
+ const caas = await caa(name, opts);
1573
+ if (!caas.length) return true;
1574
+ const issueNames = caas.filter((caa) => caa?.tag === "issue").map((name) => normalizeName(name.value.split(";")[0].trim()));
1575
+ const issueWildNames = caas.filter((caa) => caa?.tag === "issuewild").map((name) => normalizeName(name.value.split(";")[0].trim()));
1576
+ const names = isWildcard(name) ? issueWildNames.length ? issueWildNames : issueNames : issueNames;
1577
+ if (names.includes(";")) return false;
1578
+ return !names.length || names.includes(ca);
106
1579
  }
107
- export {
108
- caa,
109
- caaMatches
110
- };
1580
+
1581
+ //#endregion
1582
+ export { caa, caaMatches };