@arcblock/is-valid-domain
Version:
Validate domain name
2,014 lines (2,010 loc) • 33.8 kB
JavaScript
const cr$1 = true;
const fr$1 = true;
const iq$1 = true;
const ir$1 = true;
const km$1 = true;
const kr$1 = true;
const ma$1 = true;
const sldMap = {
"com.ac": true,
"net.ac": true,
"gov.ac": true,
"org.ac": true,
"mil.ac": true,
"co.ae": true,
"net.ae": true,
"gov.ae": true,
"ac.ae": true,
"sch.ae": true,
"org.ae": true,
"mil.ae": true,
"pro.ae": true,
"name.ae": true,
"com.af": true,
"edu.af": true,
"gov.af": true,
"net.af": true,
"org.af": true,
"com.al": true,
"edu.al": true,
"gov.al": true,
"mil.al": true,
"net.al": true,
"org.al": true,
"ed.ao": true,
"gv.ao": true,
"og.ao": true,
"co.ao": true,
"pb.ao": true,
"it.ao": true,
"com.ar": true,
"edu.ar": true,
"gob.ar": true,
"gov.ar": true,
"int.ar": true,
"mil.ar": true,
"net.ar": true,
"org.ar": true,
"tur.ar": true,
"gv.at": true,
"ac.at": true,
"co.at": true,
"or.at": true,
"com.au": true,
"net.au": true,
"org.au": true,
"edu.au": true,
"gov.au": true,
"csiro.au": true,
"asn.au": true,
"id.au": true,
"vic.au": true,
"sa.au": true,
"wa.au": true,
"nt.au": true,
"tas.au": true,
"qld.au": true,
"act.au": true,
"conf.au": true,
"oz.au": true,
"org.ba": true,
"net.ba": true,
"edu.ba": true,
"gov.ba": true,
"mil.ba": true,
"unsa.ba": true,
"untz.ba": true,
"unmo.ba": true,
"unbi.ba": true,
"unze.ba": true,
"co.ba": true,
"com.ba": true,
"rs.ba": true,
"co.bb": true,
"com.bb": true,
"net.bb": true,
"org.bb": true,
"gov.bb": true,
"edu.bb": true,
"info.bb": true,
"store.bb": true,
"tv.bb": true,
"biz.bb": true,
"com.bh": true,
"info.bh": true,
"cc.bh": true,
"edu.bh": true,
"biz.bh": true,
"net.bh": true,
"org.bh": true,
"gov.bh": true,
"com.bn": true,
"edu.bn": true,
"gov.bn": true,
"net.bn": true,
"org.bn": true,
"com.bo": true,
"net.bo": true,
"org.bo": true,
"tv.bo": true,
"mil.bo": true,
"int.bo": true,
"gob.bo": true,
"gov.bo": true,
"edu.bo": true,
"adm.br": true,
"adv.br": true,
"agr.br": true,
"am.br": true,
"arq.br": true,
"art.br": true,
"ato.br": true,
"b.br": true,
"bio.br": true,
"blog.br": true,
"bmd.br": true,
"cim.br": true,
"cng.br": true,
"cnt.br": true,
"com.br": true,
"coop.br": true,
"ecn.br": true,
"edu.br": true,
"eng.br": true,
"esp.br": true,
"etc.br": true,
"eti.br": true,
"far.br": true,
"flog.br": true,
"fm.br": true,
"fnd.br": true,
"fot.br": true,
"fst.br": true,
"g12.br": true,
"ggf.br": true,
"gov.br": true,
"imb.br": true,
"ind.br": true,
"inf.br": true,
"jor.br": true,
"jus.br": true,
"lel.br": true,
"mat.br": true,
"med.br": true,
"mil.br": true,
"mus.br": true,
"net.br": true,
"nom.br": true,
"not.br": true,
"ntr.br": true,
"odo.br": true,
"org.br": true,
"ppg.br": true,
"pro.br": true,
"psc.br": true,
"psi.br": true,
"qsl.br": true,
"rec.br": true,
"slg.br": true,
"srv.br": true,
"tmp.br": true,
"trd.br": true,
"tur.br": true,
"tv.br": true,
"vet.br": true,
"vlog.br": true,
"wiki.br": true,
"zlg.br": true,
"com.bs": true,
"net.bs": true,
"org.bs": true,
"edu.bs": true,
"gov.bs": true,
"om.bz": true,
"du.bz": true,
"ov.bz": true,
"et.bz": true,
"rg.bz": true,
"ab.ca": true,
"bc.ca": true,
"mb.ca": true,
"nb.ca": true,
"nf.ca": true,
"nl.ca": true,
"ns.ca": true,
"nt.ca": true,
"nu.ca": true,
"on.ca": true,
"pe.ca": true,
"qc.ca": true,
"sk.ca": true,
"yk.ca": true,
"co.ck": true,
"org.ck": true,
"edu.ck": true,
"gov.ck": true,
"net.ck": true,
"gen.ck": true,
"biz.ck": true,
"info.ck": true,
"ac.cn": true,
"com.cn": true,
"edu.cn": true,
"gov.cn": true,
"mil.cn": true,
"net.cn": true,
"org.cn": true,
"ah.cn": true,
"bj.cn": true,
"cq.cn": true,
"fj.cn": true,
"gd.cn": true,
"gs.cn": true,
"gz.cn": true,
"gx.cn": true,
"ha.cn": true,
"hb.cn": true,
"he.cn": true,
"hi.cn": true,
"hl.cn": true,
"hn.cn": true,
"jl.cn": true,
"js.cn": true,
"jx.cn": true,
"ln.cn": true,
"nm.cn": true,
"nx.cn": true,
"qh.cn": true,
"sc.cn": true,
"sd.cn": true,
"sh.cn": true,
"sn.cn": true,
"sx.cn": true,
"tj.cn": true,
"tw.cn": true,
"xj.cn": true,
"xz.cn": true,
"yn.cn": true,
"zj.cn": true,
"com.co": true,
"org.co": true,
"edu.co": true,
"gov.co": true,
"net.co": true,
"mil.co": true,
"nom.co": true,
"ac.cr": true,
"co.cr": true,
"ed.cr": true,
"fi.cr": true,
"go.cr": true,
"or.cr": true,
"sa.cr": true,
cr: cr$1,
"ac.cy": true,
"net.cy": true,
"gov.cy": true,
"org.cy": true,
"pro.cy": true,
"name.cy": true,
"ekloges.cy": true,
"tm.cy": true,
"ltd.cy": true,
"biz.cy": true,
"press.cy": true,
"parliament.cy": true,
"com.cy": true,
"edu.do": true,
"gob.do": true,
"gov.do": true,
"com.do": true,
"sld.do": true,
"org.do": true,
"net.do": true,
"web.do": true,
"mil.do": true,
"art.do": true,
"com.dz": true,
"org.dz": true,
"net.dz": true,
"gov.dz": true,
"edu.dz": true,
"asso.dz": true,
"pol.dz": true,
"art.dz": true,
"com.ec": true,
"info.ec": true,
"net.ec": true,
"fin.ec": true,
"med.ec": true,
"pro.ec": true,
"org.ec": true,
"edu.ec": true,
"gov.ec": true,
"mil.ec": true,
"com.eg": true,
"edu.eg": true,
"eun.eg": true,
"gov.eg": true,
"mil.eg": true,
"name.eg": true,
"net.eg": true,
"org.eg": true,
"sci.eg": true,
"com.er": true,
"edu.er": true,
"gov.er": true,
"mil.er": true,
"net.er": true,
"org.er": true,
"ind.er": true,
"rochest.er": true,
"w.er": true,
"com.es": true,
"nom.es": true,
"org.es": true,
"gob.es": true,
"edu.es": true,
"com.et": true,
"gov.et": true,
"org.et": true,
"edu.et": true,
"net.et": true,
"biz.et": true,
"name.et": true,
"info.et": true,
"ac.fj": true,
"biz.fj": true,
"com.fj": true,
"info.fj": true,
"mil.fj": true,
"name.fj": true,
"net.fj": true,
"org.fj": true,
"pro.fj": true,
"co.fk": true,
"org.fk": true,
"gov.fk": true,
"ac.fk": true,
"nom.fk": true,
"net.fk": true,
fr: fr$1,
"tm.fr": true,
"asso.fr": true,
"nom.fr": true,
"prd.fr": true,
"presse.fr": true,
"com.fr": true,
"gouv.fr": true,
"co.gg": true,
"net.gg": true,
"org.gg": true,
"com.gh": true,
"edu.gh": true,
"gov.gh": true,
"org.gh": true,
"mil.gh": true,
"co.gl": true,
"com.gl": true,
"edu.gl": true,
"net.gl": true,
"org.gl": true,
"com.gn": true,
"ac.gn": true,
"gov.gn": true,
"org.gn": true,
"net.gn": true,
"com.gr": true,
"edu.gr": true,
"net.gr": true,
"org.gr": true,
"gov.gr": true,
"mil.gr": true,
"com.gt": true,
"edu.gt": true,
"net.gt": true,
"gob.gt": true,
"org.gt": true,
"mil.gt": true,
"ind.gt": true,
"com.gu": true,
"net.gu": true,
"gov.gu": true,
"org.gu": true,
"edu.gu": true,
"com.hk": true,
"edu.hk": true,
"gov.hk": true,
"idv.hk": true,
"net.hk": true,
"org.hk": true,
"2000.hu": true,
"agrar.hu": true,
"bolt.hu": true,
"casino.hu": true,
"city.hu": true,
"co.hu": true,
"erotica.hu": true,
"erotika.hu": true,
"film.hu": true,
"forum.hu": true,
"games.hu": true,
"hotel.hu": true,
"info.hu": true,
"ingatlan.hu": true,
"jogasz.hu": true,
"konyvelo.hu": true,
"lakas.hu": true,
"media.hu": true,
"news.hu": true,
"org.hu": true,
"priv.hu": true,
"reklam.hu": true,
"sex.hu": true,
"shop.hu": true,
"sport.hu": true,
"suli.huv": true,
"szex.hu": true,
"tm.hu": true,
"tozsde.hu": true,
"utazas.hu": true,
"video.hu": true,
"ac.id": true,
"co.id": true,
"net.id": true,
"or.id": true,
"web.id": true,
"sch.id": true,
"mil.id": true,
"go.id": true,
"war.net.id": true,
"my.id": true,
"biz.id": true,
"ac.il": true,
"co.il": true,
"org.il": true,
"net.il": true,
"k12.il": true,
"gov.il": true,
"muni.il": true,
"idf.il": true,
"in": true,
"4fd.in": true,
"co.in": true,
"firm.in": true,
"net.in": true,
"org.in": true,
"gen.in": true,
"ind.in": true,
"ac.in": true,
"edu.in": true,
"res.in": true,
"ernet.in": true,
"gov.in": true,
"mil.in": true,
"nic.in": true,
iq: iq$1,
"gov.iq": true,
"edu.iq": true,
"com.iq": true,
"mil.iq": true,
"org.iq": true,
"net.iq": true,
ir: ir$1,
"ac.ir": true,
"co.ir": true,
"gov.ir": true,
"id.ir": true,
"net.ir": true,
"org.ir": true,
"sch.ir": true,
"dnssec.ir": true,
"gov.it": true,
"edu.it": true,
"co.je": true,
"net.je": true,
"org.je": true,
"com.jo": true,
"net.jo": true,
"gov.jo": true,
"edu.jo": true,
"org.jo": true,
"mil.jo": true,
"name.jo": true,
"sch.jo": true,
"ac.jp": true,
"ad.jp": true,
"co.jp": true,
"ed.jp": true,
"go.jp": true,
"gr.jp": true,
"lg.jp": true,
"ne.jp": true,
"or.jp": true,
"co.ke": true,
"or.ke": true,
"ne.ke": true,
"go.ke": true,
"ac.ke": true,
"sc.ke": true,
"me.ke": true,
"mobi.ke": true,
"info.ke": true,
"per.kh": true,
"com.kh": true,
"edu.kh": true,
"gov.kh": true,
"mil.kh": true,
"net.kh": true,
"org.kh": true,
"com.ki": true,
"biz.ki": true,
"de.ki": true,
"net.ki": true,
"info.ki": true,
"org.ki": true,
"gov.ki": true,
"edu.ki": true,
"mob.ki": true,
"tel.ki": true,
km: km$1,
"com.km": true,
"coop.km": true,
"asso.km": true,
"nom.km": true,
"presse.km": true,
"tm.km": true,
"medecin.km": true,
"notaires.km": true,
"pharmaciens.km": true,
"veterinaire.km": true,
"edu.km": true,
"gouv.km": true,
"mil.km": true,
"net.kn": true,
"org.kn": true,
"edu.kn": true,
"gov.kn": true,
kr: kr$1,
"co.kr": true,
"ne.kr": true,
"or.kr": true,
"re.kr": true,
"pe.kr": true,
"go.kr": true,
"mil.kr": true,
"ac.kr": true,
"hs.kr": true,
"ms.kr": true,
"es.kr": true,
"sc.kr": true,
"kg.kr": true,
"seoul.kr": true,
"busan.kr": true,
"daegu.kr": true,
"incheon.kr": true,
"gwangju.kr": true,
"daejeon.kr": true,
"ulsan.kr": true,
"gyeonggi.kr": true,
"gangwon.kr": true,
"chungbuk.kr": true,
"chungnam.kr": true,
"jeonbuk.kr": true,
"jeonnam.kr": true,
"gyeongbuk.kr": true,
"gyeongnam.kr": true,
"jeju.kr": true,
"edu.kw": true,
"com.kw": true,
"net.kw": true,
"org.kw": true,
"gov.kw": true,
"com.ky": true,
"org.ky": true,
"net.ky": true,
"edu.ky": true,
"gov.ky": true,
"com.kz": true,
"edu.kz": true,
"gov.kz": true,
"mil.kz": true,
"net.kz": true,
"org.kz": true,
"com.lb": true,
"edu.lb": true,
"gov.lb": true,
"net.lb": true,
"org.lb": true,
"gov.lk": true,
"sch.lk": true,
"net.lk": true,
"int.lk": true,
"com.lk": true,
"org.lk": true,
"edu.lk": true,
"ngo.lk": true,
"soc.lk": true,
"web.lk": true,
"ltd.lk": true,
"assn.lk": true,
"grp.lk": true,
"hotel.lk": true,
"com.lr": true,
"edu.lr": true,
"gov.lr": true,
"org.lr": true,
"net.lr": true,
"com.lv": true,
"edu.lv": true,
"gov.lv": true,
"org.lv": true,
"mil.lv": true,
"id.lv": true,
"net.lv": true,
"asn.lv": true,
"conf.lv": true,
"com.ly": true,
"net.ly": true,
"gov.ly": true,
"plc.ly": true,
"edu.ly": true,
"sch.ly": true,
"med.ly": true,
"org.ly": true,
"id.ly": true,
ma: ma$1,
"net.ma": true,
"ac.ma": true,
"org.ma": true,
"gov.ma": true,
"press.ma": true,
"co.ma": true,
"tm.mc": true,
"asso.mc": true,
"co.me": true,
"net.me": true,
"org.me": true,
"edu.me": true,
"ac.me": true,
"gov.me": true,
"its.me": true,
"priv.me": true,
"org.mg": true,
"nom.mg": true,
"gov.mg": true,
"prd.mg": true,
"tm.mg": true,
"edu.mg": true,
"mil.mg": true,
"com.mg": true,
"com.mk": true,
"org.mk": true,
"net.mk": true,
"edu.mk": true,
"gov.mk": true,
"inf.mk": true,
"name.mk": true,
"pro.mk": true,
"com.ml": true,
"net.ml": true,
"org.ml": true,
"edu.ml": true,
"gov.ml": true,
"presse.ml": true,
"gov.mn": true,
"edu.mn": true,
"org.mn": true,
"com.mo": true,
"edu.mo": true,
"gov.mo": true,
"net.mo": true,
"org.mo": true,
"com.mt": true,
"org.mt": true,
"net.mt": true,
"edu.mt": true,
"gov.mt": true,
"aero.mv": true,
"biz.mv": true,
"com.mv": true,
"coop.mv": true,
"edu.mv": true,
"gov.mv": true,
"info.mv": true,
"int.mv": true,
"mil.mv": true,
"museum.mv": true,
"name.mv": true,
"net.mv": true,
"org.mv": true,
"pro.mv": true,
"ac.mw": true,
"co.mw": true,
"com.mw": true,
"coop.mw": true,
"edu.mw": true,
"gov.mw": true,
"int.mw": true,
"museum.mw": true,
"net.mw": true,
"org.mw": true,
"com.mx": true,
"net.mx": true,
"org.mx": true,
"edu.mx": true,
"gob.mx": true,
"com.my": true,
"net.my": true,
"org.my": true,
"gov.my": true,
"edu.my": true,
"sch.my": true,
"mil.my": true,
"name.my": true,
"com.nf": true,
"net.nf": true,
"arts.nf": true,
"store.nf": true,
"web.nf": true,
"firm.nf": true,
"info.nf": true,
"other.nf": true,
"per.nf": true,
"rec.nf": true,
"com.ng": true,
"org.ng": true,
"gov.ng": true,
"edu.ng": true,
"net.ng": true,
"sch.ng": true,
"name.ng": true,
"mobi.ng": true,
"biz.ng": true,
"mil.ng": true,
"gob.ni": true,
"co.ni": true,
"com.ni": true,
"ac.ni": true,
"edu.ni": true,
"org.ni": true,
"nom.ni": true,
"net.ni": true,
"mil.ni": true,
"com.np": true,
"edu.np": true,
"gov.np": true,
"org.np": true,
"mil.np": true,
"net.np": true,
"edu.nr": true,
"gov.nr": true,
"biz.nr": true,
"info.nr": true,
"net.nr": true,
"org.nr": true,
"com.nr": true,
"com.om": true,
"co.om": true,
"edu.om": true,
"ac.om": true,
"sch.om": true,
"gov.om": true,
"net.om": true,
"org.om": true,
"mil.om": true,
"museum.om": true,
"biz.om": true,
"pro.om": true,
"med.om": true,
"edu.pe": true,
"gob.pe": true,
"nom.pe": true,
"mil.pe": true,
"sld.pe": true,
"org.pe": true,
"com.pe": true,
"net.pe": true,
"com.ph": true,
"net.ph": true,
"org.ph": true,
"mil.ph": true,
"ngo.ph": true,
"i.ph": true,
"gov.ph": true,
"edu.ph": true,
"com.pk": true,
"net.pk": true,
"edu.pk": true,
"org.pk": true,
"fam.pk": true,
"biz.pk": true,
"web.pk": true,
"gov.pk": true,
"gob.pk": true,
"gok.pk": true,
"gon.pk": true,
"gop.pk": true,
"gos.pk": true,
"pwr.pl": true,
"com.pl": true,
"biz.pl": true,
"net.pl": true,
"art.pl": true,
"edu.pl": true,
"org.pl": true,
"ngo.pl": true,
"gov.pl": true,
"info.pl": true,
"mil.pl": true,
"waw.pl": true,
"warszawa.pl": true,
"wroc.pl": true,
"wroclaw.pl": true,
"krakow.pl": true,
"katowice.pl": true,
"poznan.pl": true,
"lodz.pl": true,
"gda.pl": true,
"gdansk.pl": true,
"slupsk.pl": true,
"radom.pl": true,
"szczecin.pl": true,
"lublin.pl": true,
"bialystok.pl": true,
"olsztyn.pl": true,
"torun.pl": true,
"gorzow.pl": true,
"zgora.pl": true,
"biz.pr": true,
"com.pr": true,
"edu.pr": true,
"gov.pr": true,
"info.pr": true,
"isla.pr": true,
"name.pr": true,
"net.pr": true,
"org.pr": true,
"pro.pr": true,
"est.pr": true,
"prof.pr": true,
"ac.pr": true,
"com.ps": true,
"net.ps": true,
"org.ps": true,
"edu.ps": true,
"gov.ps": true,
"plo.ps": true,
"sec.ps": true,
"co.pw": true,
"ne.pw": true,
"or.pw": true,
"ed.pw": true,
"go.pw": true,
"belau.pw": true,
"arts.ro": true,
"com.ro": true,
"firm.ro": true,
"info.ro": true,
"nom.ro": true,
"nt.ro": true,
"org.ro": true,
"rec.ro": true,
"store.ro": true,
"tm.ro": true,
"www.ro": true,
"co.rs": true,
"org.rs": true,
"edu.rs": true,
"ac.rs": true,
"gov.rs": true,
"in.rs": true,
"com.sb": true,
"net.sb": true,
"edu.sb": true,
"org.sb": true,
"gov.sb": true,
"com.sc": true,
"net.sc": true,
"edu.sc": true,
"gov.sc": true,
"org.sc": true,
"co.sh": true,
"com.sh": true,
"org.sh": true,
"gov.sh": true,
"edu.sh": true,
"net.sh": true,
"nom.sh": true,
"com.sl": true,
"net.sl": true,
"org.sl": true,
"edu.sl": true,
"gov.sl": true,
"gov.st": true,
"saotome.st": true,
"principe.st": true,
"consulado.st": true,
"embaixada.st": true,
"org.st": true,
"edu.st": true,
"net.st": true,
"com.st": true,
"store.st": true,
"mil.st": true,
"co.st": true,
"edu.sv": true,
"gob.sv": true,
"com.sv": true,
"org.sv": true,
"red.sv": true,
"co.sz": true,
"ac.sz": true,
"org.sz": true,
"com.tr": true,
"gen.tr": true,
"org.tr": true,
"biz.tr": true,
"info.tr": true,
"av.tr": true,
"dr.tr": true,
"pol.tr": true,
"bel.tr": true,
"tsk.tr": true,
"bbs.tr": true,
"k12.tr": true,
"edu.tr": true,
"name.tr": true,
"net.tr": true,
"gov.tr": true,
"web.tr": true,
"tel.tr": true,
"tv.tr": true,
"co.tt": true,
"com.tt": true,
"org.tt": true,
"net.tt": true,
"biz.tt": true,
"info.tt": true,
"pro.tt": true,
"int.tt": true,
"coop.tt": true,
"jobs.tt": true,
"mobi.tt": true,
"travel.tt": true,
"museum.tt": true,
"aero.tt": true,
"cat.tt": true,
"tel.tt": true,
"name.tt": true,
"mil.tt": true,
"edu.tt": true,
"gov.tt": true,
"edu.tw": true,
"gov.tw": true,
"mil.tw": true,
"com.tw": true,
"net.tw": true,
"org.tw": true,
"idv.tw": true,
"game.tw": true,
"ebiz.tw": true,
"club.tw": true,
"com.mu": true,
"gov.mu": true,
"net.mu": true,
"org.mu": true,
"ac.mu": true,
"co.mu": true,
"or.mu": true,
"ac.mz": true,
"co.mz": true,
"edu.mz": true,
"org.mz": true,
"gov.mz": true,
"com.na": true,
"co.na": true,
"ac.nz": true,
"co.nz": true,
"cri.nz": true,
"geek.nz": true,
"gen.nz": true,
"govt.nz": true,
"health.nz": true,
"iwi.nz": true,
"maori.nz": true,
"mil.nz": true,
"net.nz": true,
"org.nz": true,
"parliament.nz": true,
"school.nz": true,
"abo.pa": true,
"ac.pa": true,
"com.pa": true,
"edu.pa": true,
"gob.pa": true,
"ing.pa": true,
"med.pa": true,
"net.pa": true,
"nom.pa": true,
"org.pa": true,
"sld.pa": true,
"com.pt": true,
"edu.pt": true,
"gov.pt": true,
"int.pt": true,
"net.pt": true,
"nome.pt": true,
"org.pt": true,
"publ.pt": true,
"com.py": true,
"edu.py": true,
"gov.py": true,
"mil.py": true,
"net.py": true,
"org.py": true,
"com.qa": true,
"edu.qa": true,
"gov.qa": true,
"mil.qa": true,
"net.qa": true,
"org.qa": true,
"asso.re": true,
"com.re": true,
"nom.re": true,
"ac.ru": true,
"adygeya.ru": true,
"altai.ru": true,
"amur.ru": true,
"arkhangelsk.ru": true,
"astrakhan.ru": true,
"bashkiria.ru": true,
"belgorod.ru": true,
"bir.ru": true,
"bryansk.ru": true,
"buryatia.ru": true,
"cbg.ru": true,
"chel.ru": true,
"chelyabinsk.ru": true,
"chita.ru": true,
"chukotka.ru": true,
"chuvashia.ru": true,
"com.ru": true,
"dagestan.ru": true,
"e-burg.ru": true,
"edu.ru": true,
"gov.ru": true,
"grozny.ru": true,
"int.ru": true,
"irkutsk.ru": true,
"ivanovo.ru": true,
"izhevsk.ru": true,
"jar.ru": true,
"joshkar-ola.ru": true,
"kalmykia.ru": true,
"kaluga.ru": true,
"kamchatka.ru": true,
"karelia.ru": true,
"kazan.ru": true,
"kchr.ru": true,
"kemerovo.ru": true,
"khabarovsk.ru": true,
"khakassia.ru": true,
"khv.ru": true,
"kirov.ru": true,
"koenig.ru": true,
"komi.ru": true,
"kostroma.ru": true,
"kranoyarsk.ru": true,
"kuban.ru": true,
"kurgan.ru": true,
"kursk.ru": true,
"lipetsk.ru": true,
"magadan.ru": true,
"mari.ru": true,
"mari-el.ru": true,
"marine.ru": true,
"mil.ru": true,
"mordovia.ru": true,
"mosreg.ru": true,
"msk.ru": true,
"murmansk.ru": true,
"nalchik.ru": true,
"net.ru": true,
"nnov.ru": true,
"nov.ru": true,
"novosibirsk.ru": true,
"nsk.ru": true,
"omsk.ru": true,
"orenburg.ru": true,
"org.ru": true,
"oryol.ru": true,
"penza.ru": true,
"perm.ru": true,
"pp.ru": true,
"pskov.ru": true,
"ptz.ru": true,
"rnd.ru": true,
"ryazan.ru": true,
"sakhalin.ru": true,
"samara.ru": true,
"saratov.ru": true,
"simbirsk.ru": true,
"smolensk.ru": true,
"spb.ru": true,
"stavropol.ru": true,
"stv.ru": true,
"surgut.ru": true,
"tambov.ru": true,
"tatarstan.ru": true,
"tom.ru": true,
"tomsk.ru": true,
"tsaritsyn.ru": true,
"tsk.ru": true,
"tula.ru": true,
"tuva.ru": true,
"tver.ru": true,
"tyumen.ru": true,
"udm.ru": true,
"udmurtia.ru": true,
"ulan-ude.ru": true,
"vladikavkaz.ru": true,
"vladimir.ru": true,
"vladivostok.ru": true,
"volgograd.ru": true,
"vologda.ru": true,
"voronezh.ru": true,
"vrn.ru": true,
"vyatka.ru": true,
"yakutia.ru": true,
"yamal.ru": true,
"yekaterinburg.ru": true,
"yuzhno-sakhalinsk.ru": true,
"ac.rw": true,
"co.rw": true,
"com.rw": true,
"edu.rw": true,
"gouv.rw": true,
"gov.rw": true,
"int.rw": true,
"mil.rw": true,
"net.rw": true,
"com.sa": true,
"edu.sa": true,
"gov.sa": true,
"med.sa": true,
"net.sa": true,
"org.sa": true,
"pub.sa": true,
"sch.sa": true,
"com.sd": true,
"edu.sd": true,
"gov.sd": true,
"info.sd": true,
"med.sd": true,
"net.sd": true,
"org.sd": true,
"tv.sd": true,
"a.se": true,
"ac.se": true,
"b.se": true,
"bd.se": true,
"c.se": true,
"d.se": true,
"e.se": true,
"f.se": true,
"g.se": true,
"h.se": true,
"i.se": true,
"k.se": true,
"l.se": true,
"m.se": true,
"n.se": true,
"o.se": true,
"org.se": true,
"p.se": true,
"parti.se": true,
"pp.se": true,
"press.se": true,
"r.se": true,
"s.se": true,
"t.se": true,
"tm.se": true,
"u.se": true,
"w.se": true,
"x.se": true,
"y.se": true,
"z.se": true,
"com.sg": true,
"edu.sg": true,
"gov.sg": true,
"idn.sg": true,
"net.sg": true,
"org.sg": true,
"per.sg": true,
"art.sn": true,
"com.sn": true,
"edu.sn": true,
"gouv.sn": true,
"org.sn": true,
"perso.sn": true,
"univ.sn": true,
"com.sy": true,
"edu.sy": true,
"gov.sy": true,
"mil.sy": true,
"net.sy": true,
"news.sy": true,
"org.sy": true,
"ac.th": true,
"co.th": true,
"go.th": true,
"in.th": true,
"mi.th": true,
"net.th": true,
"or.th": true,
"ac.tj": true,
"biz.tj": true,
"co.tj": true,
"com.tj": true,
"edu.tj": true,
"go.tj": true,
"gov.tj": true,
"info.tj": true,
"int.tj": true,
"mil.tj": true,
"name.tj": true,
"net.tj": true,
"nic.tj": true,
"org.tj": true,
"test.tj": true,
"web.tj": true,
"agrinet.tn": true,
"com.tn": true,
"defense.tn": true,
"edunet.tn": true,
"ens.tn": true,
"fin.tn": true,
"gov.tn": true,
"ind.tn": true,
"info.tn": true,
"intl.tn": true,
"mincom.tn": true,
"nat.tn": true,
"net.tn": true,
"org.tn": true,
"perso.tn": true,
"rnrt.tn": true,
"rns.tn": true,
"rnu.tn": true,
"tourism.tn": true,
"ac.tz": true,
"co.tz": true,
"go.tz": true,
"ne.tz": true,
"or.tz": true,
"biz.ua": true,
"cherkassy.ua": true,
"chernigov.ua": true,
"chernovtsy.ua": true,
"ck.ua": true,
"cn.ua": true,
"co.ua": true,
"com.ua": true,
"crimea.ua": true,
"cv.ua": true,
"dn.ua": true,
"dnepropetrovsk.ua": true,
"donetsk.ua": true,
"dp.ua": true,
"edu.ua": true,
"gov.ua": true,
"if.ua": true,
"in.ua": true,
"ivano-frankivsk.ua": true,
"kh.ua": true,
"kharkov.ua": true,
"kherson.ua": true,
"khmelnitskiy.ua": true,
"kiev.ua": true,
"kirovograd.ua": true,
"km.ua": true,
"kr.ua": true,
"ks.ua": true,
"kv.ua": true,
"lg.ua": true,
"lugansk.ua": true,
"lutsk.ua": true,
"lviv.ua": true,
"me.ua": true,
"mk.ua": true,
"net.ua": true,
"nikolaev.ua": true,
"od.ua": true,
"odessa.ua": true,
"org.ua": true,
"pl.ua": true,
"poltava.ua": true,
"pp.ua": true,
"rovno.ua": true,
"rv.ua": true,
"sebastopol.ua": true,
"sumy.ua": true,
"te.ua": true,
"ternopil.ua": true,
"uzhgorod.ua": true,
"vinnica.ua": true,
"vn.ua": true,
"zaporizhzhe.ua": true,
"zhitomir.ua": true,
"zp.ua": true,
"zt.ua": true,
"ac.ug": true,
"co.ug": true,
"go.ug": true,
"ne.ug": true,
"or.ug": true,
"org.ug": true,
"sc.ug": true,
"ac.uk": true,
"bl.uk": true,
"british-library.uk": true,
"co.uk": true,
"cym.uk": true,
"gov.uk": true,
"govt.uk": true,
"icnet.uk": true,
"jet.uk": true,
"lea.uk": true,
"ltd.uk": true,
"me.uk": true,
"mil.uk": true,
"mod.uk": true,
"national-library-scotland.uk": true,
"nel.uk": true,
"net.uk": true,
"nhs.uk": true,
"nic.uk": true,
"nls.uk": true,
"org.uk": true,
"orgn.uk": true,
"parliament.uk": true,
"plc.uk": true,
"police.uk": true,
"sch.uk": true,
"scot.uk": true,
"soc.uk": true,
"4fd.us": true,
"dni.us": true,
"fed.us": true,
"isa.us": true,
"kids.us": true,
"nsn.us": true,
"com.uy": true,
"edu.uy": true,
"gub.uy": true,
"mil.uy": true,
"net.uy": true,
"org.uy": true,
"co.ve": true,
"com.ve": true,
"edu.ve": true,
"gob.ve": true,
"info.ve": true,
"mil.ve": true,
"net.ve": true,
"org.ve": true,
"web.ve": true,
"co.vi": true,
"com.vi": true,
"k12.vi": true,
"net.vi": true,
"org.vi": true,
"ac.vn": true,
"biz.vn": true,
"com.vn": true,
"edu.vn": true,
"gov.vn": true,
"health.vn": true,
"info.vn": true,
"int.vn": true,
"name.vn": true,
"net.vn": true,
"org.vn": true,
"pro.vn": true,
"co.ye": true,
"com.ye": true,
"gov.ye": true,
"ltd.ye": true,
"me.ye": true,
"net.ye": true,
"org.ye": true,
"plc.ye": true,
"ac.yu": true,
"co.yu": true,
"edu.yu": true,
"gov.yu": true,
"org.yu": true,
"ac.za": true,
"agric.za": true,
"alt.za": true,
"bourse.za": true,
"city.za": true,
"co.za": true,
"cybernet.za": true,
"db.za": true,
"ecape.school.za": true,
"edu.za": true,
"fs.school.za": true,
"gov.za": true,
"gp.school.za": true,
"grondar.za": true,
"iaccess.za": true,
"imt.za": true,
"inca.za": true,
"kzn.school.za": true,
"landesign.za": true,
"law.za": true,
"lp.school.za": true,
"mil.za": true,
"mpm.school.za": true,
"ncape.school.za": true,
"net.za": true,
"ngo.za": true,
"nis.za": true,
"nom.za": true,
"nw.school.za": true,
"olivetti.za": true,
"org.za": true,
"pix.za": true,
"school.za": true,
"tm.za": true,
"wcape.school.za": true,
"web.za": true,
"ac.zm": true,
"co.zm": true,
"com.zm": true,
"edu.zm": true,
"gov.zm": true,
"net.zm": true,
"org.zm": true,
"sch.zm": true
};
const ad = true;
const ae = true;
const af = true;
const ag = true;
const ai = true;
const al = true;
const am = true;
const ao = true;
const aq = true;
const ar = true;
const as = true;
const at = true;
const au = true;
const aw = true;
const ax = true;
const az = true;
const ba = true;
const bb = true;
const bd = true;
const be = true;
const bf = true;
const bg = true;
const bh = true;
const bi = true;
const bj = true;
const bl = true;
const bm = true;
const bn = true;
const bo = true;
const bq = true;
const br = true;
const bs = true;
const bt = true;
const bv = true;
const bw = true;
const by = true;
const bz = true;
const ca = true;
const cc = true;
const cd = true;
const cf = true;
const cg = true;
const ch = true;
const ci = true;
const ck = true;
const cl = true;
const cm = true;
const cn = true;
const co = true;
const cr = true;
const cu = true;
const cv = true;
const cw = true;
const cx = true;
const cy = true;
const cz = true;
const de = true;
const dj = true;
const dk = true;
const dm = true;
const dz = true;
const ec = true;
const ee = true;
const eg = true;
const er = true;
const es = true;
const et = true;
const fi = true;
const fj = true;
const fk = true;
const fm = true;
const fo = true;
const fr = true;
const ga = true;
const gd = true;
const ge = true;
const gf = true;
const gg = true;
const gh = true;
const gi = true;
const gl = true;
const gm = true;
const gn = true;
const gp = true;
const gq = true;
const gr = true;
const gs = true;
const gt = true;
const gu = true;
const gw = true;
const gy = true;
const hk = true;
const hm = true;
const hn = true;
const hr = true;
const ht = true;
const hu = true;
const id = true;
const ie = true;
const il = true;
const im = true;
const io = true;
const iq = true;
const ir = true;
const is = true;
const it = true;
const je = true;
const jm = true;
const jo = true;
const jp = true;
const ke = true;
const kg = true;
const kh = true;
const ki = true;
const km = true;
const kn = true;
const kp = true;
const kr = true;
const kw = true;
const ky = true;
const kz = true;
const la = true;
const lb = true;
const lc = true;
const li = true;
const lk = true;
const lr = true;
const ls = true;
const lt = true;
const lu = true;
const lv = true;
const ly = true;
const ma = true;
const mc = true;
const md = true;
const me = true;
const mf = true;
const mg = true;
const mh = true;
const mk = true;
const ml = true;
const mm = true;
const mn = true;
const mo = true;
const mp = true;
const mq = true;
const mr = true;
const ms = true;
const mt = true;
const mu = true;
const mv = true;
const mw = true;
const mx = true;
const my = true;
const mz = true;
const na = true;
const nc = true;
const ne = true;
const nf = true;
const ng = true;
const ni = true;
const nl = true;
const no = true;
const np = true;
const nr = true;
const nu = true;
const nz = true;
const om = true;
const pa = true;
const pe = true;
const pf = true;
const pg = true;
const ph = true;
const pk = true;
const pl = true;
const pm = true;
const pn = true;
const pr = true;
const ps = true;
const pt = true;
const pw = true;
const py = true;
const qa = true;
const re = true;
const ro = true;
const rs = true;
const ru = true;
const rw = true;
const sa = true;
const sb = true;
const sc = true;
const sd = true;
const se = true;
const sg = true;
const sh = true;
const si = true;
const sj = true;
const sk = true;
const sl = true;
const sm = true;
const sn = true;
const so = true;
const sr = true;
const ss = true;
const st = true;
const sv = true;
const sx = true;
const sy = true;
const sz = true;
const tc = true;
const td = true;
const tf = true;
const tg = true;
const th = true;
const tj = true;
const tk = true;
const tl = true;
const tm = true;
const tn = true;
const to = true;
const tr = true;
const tt = true;
const tv = true;
const tw = true;
const tz = true;
const ua = true;
const ug = true;
const us = true;
const uy = true;
const uz = true;
const va = true;
const vc = true;
const ve = true;
const vg = true;
const vi = true;
const vn = true;
const vu = true;
const wf = true;
const ws = true;
const ye = true;
const yt = true;
const za = true;
const zm = true;
const zw = true;
const ccTldMap = {
ad: ad,
ae: ae,
af: af,
ag: ag,
ai: ai,
al: al,
am: am,
ao: ao,
aq: aq,
ar: ar,
as: as,
at: at,
au: au,
aw: aw,
ax: ax,
az: az,
ba: ba,
bb: bb,
bd: bd,
be: be,
bf: bf,
bg: bg,
bh: bh,
bi: bi,
bj: bj,
bl: bl,
bm: bm,
bn: bn,
bo: bo,
bq: bq,
br: br,
bs: bs,
bt: bt,
bv: bv,
bw: bw,
by: by,
bz: bz,
ca: ca,
cc: cc,
cd: cd,
cf: cf,
cg: cg,
ch: ch,
ci: ci,
ck: ck,
cl: cl,
cm: cm,
cn: cn,
co: co,
cr: cr,
cu: cu,
cv: cv,
cw: cw,
cx: cx,
cy: cy,
cz: cz,
de: de,
dj: dj,
dk: dk,
dm: dm,
"do": true,
dz: dz,
ec: ec,
ee: ee,
eg: eg,
er: er,
es: es,
et: et,
fi: fi,
fj: fj,
fk: fk,
fm: fm,
fo: fo,
fr: fr,
ga: ga,
"gb (.uk)": true,
gd: gd,
ge: ge,
gf: gf,
gg: gg,
gh: gh,
gi: gi,
gl: gl,
gm: gm,
gn: gn,
gp: gp,
gq: gq,
gr: gr,
gs: gs,
gt: gt,
gu: gu,
gw: gw,
gy: gy,
hk: hk,
hm: hm,
hn: hn,
hr: hr,
ht: ht,
hu: hu,
id: id,
ie: ie,
il: il,
im: im,
"in": true,
io: io,
iq: iq,
ir: ir,
is: is,
it: it,
je: je,
jm: jm,
jo: jo,
jp: jp,
ke: ke,
kg: kg,
kh: kh,
ki: ki,
km: km,
kn: kn,
kp: kp,
kr: kr,
kw: kw,
ky: ky,
kz: kz,
la: la,
lb: lb,
lc: lc,
li: li,
lk: lk,
lr: lr,
ls: ls,
lt: lt,
lu: lu,
lv: lv,
ly: ly,
ma: ma,
mc: mc,
md: md,
me: me,
mf: mf,
mg: mg,
mh: mh,
mk: mk,
ml: ml,
mm: mm,
mn: mn,
mo: mo,
mp: mp,
mq: mq,
mr: mr,
ms: ms,
mt: mt,
mu: mu,
mv: mv,
mw: mw,
mx: mx,
my: my,
mz: mz,
na: na,
nc: nc,
ne: ne,
nf: nf,
ng: ng,
ni: ni,
nl: nl,
no: no,
np: np,
nr: nr,
nu: nu,
nz: nz,
om: om,
pa: pa,
pe: pe,
pf: pf,
pg: pg,
ph: ph,
pk: pk,
pl: pl,
pm: pm,
pn: pn,
pr: pr,
ps: ps,
pt: pt,
pw: pw,
py: py,
qa: qa,
re: re,
ro: ro,
rs: rs,
ru: ru,
rw: rw,
sa: sa,
sb: sb,
sc: sc,
sd: sd,
se: se,
sg: sg,
sh: sh,
si: si,
sj: sj,
sk: sk,
sl: sl,
sm: sm,
sn: sn,
so: so,
sr: sr,
ss: ss,
st: st,
sv: sv,
sx: sx,
sy: sy,
sz: sz,
tc: tc,
td: td,
tf: tf,
tg: tg,
th: th,
tj: tj,
tk: tk,
tl: tl,
tm: tm,
tn: tn,
to: to,
tr: tr,
tt: tt,
tv: tv,
tw: tw,
tz: tz,
ua: ua,
ug: ug,
us: us,
uy: uy,
uz: uz,
va: va,
vc: vc,
ve: ve,
vg: vg,
vi: vi,
vn: vn,
vu: vu,
wf: wf,
ws: ws,
ye: ye,
yt: yt,
za: za,
zm: zm,
zw: zw
};
const punycode = require("punycode/");
function isValidDomain(value, opts = {}) {
if (typeof value !== "string")
return false;
if (!(opts instanceof Object))
opts = {};
value = value.toLowerCase();
if (value.endsWith(".")) {
value = value.slice(0, value.length - 1);
}
if (opts.allowUnicode) {
value = punycode.toASCII(value);
}
if (value.length > 253) {
return false;
}
const validChars = /^([\u0E00-\u0E7Fa-z0-9-._*]+)$/g;
if (!validChars.test(value)) {
return false;
}
if (opts.topLevel) {
if (ccTldMap[value.replace(/\.$/, "")]) {
return true;
}
}
const sldRegex = /(.*)\.(([\u0E00-\u0E7Fa-z0-9]+)(\.[a-z0-9]+))/;
const matches = value.match(sldRegex);
let tld = null;
let labels = null;
if (matches && matches.length > 2) {
if (sldMap[matches[2]]) {
tld = matches[2];
labels = matches[1].split(".");
}
}
if (!labels) {
labels = value.split(".");
if (labels.length <= 1)
return false;
tld = labels.pop();
const tldRegex = /^(?:xn--)?(?!^\d+$)[\u0E00-\u0E7Fa-z0-9]+$/gi;
if (!tldRegex.test(tld))
return false;
}
if (opts.subdomain === false && labels.length > 1)
return false;
const isValid = labels.every(function(label, index) {
if (opts.wildcard && index === 0 && label === "*" && labels.length > 1) {
return true;
}
let validLabelChars = /^([\u0E00-\u0E7Fa-zA-Z0-9-_]+)$/g;
if (index === labels.length - 1) {
validLabelChars = /^([\u0E00-\u0E7Fa-zA-Z0-9-]+)$/g;
}
const doubleDashCount = (label.match(/--(--)?/g) || []).length;
const xnDashCount = (label.match(/xn--/g) || []).length;
if (index === labels.length - 1 && doubleDashCount !== xnDashCount) {
return false;
}
const isValid2 = validLabelChars.test(label) && label.length < 64 && !label.startsWith("-") && !label.endsWith("-");
return isValid2;
});
return isValid;
}
export { isValidDomain as default };