/*! * URI.js - Mutating URLs * Second Level Domain (SLD) Support * * Version: 1.10.0 * * Author: Rodney Rehm * Web: http://medialize.github.com/URI.js/ * * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * GPL v3 http://opensource.org/licenses/GPL-3.0 * */ (function (root, factory) { // https://github.com/umdjs/umd/blob/master/returnExports.js if (typeof exports === 'object') { // Node module.exports = factory(); } else if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(factory); } else { // Browser globals (root is window) root.SecondLevelDomains = factory(); } }(this, function () { "use strict"; var hasOwn = Object.prototype.hasOwnProperty; var SLD = { // list of known Second Level Domains // converted list of SLDs from https://github.com/gavingmiller/second-level-domains // ---- // publicsuffix.org is more current and actually used by a couple of browsers internally. // downside is it also contains domains like "dyndns.org" - which is fine for the security // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js // ---- list: { "ac":"com|gov|mil|net|org", "ae":"ac|co|gov|mil|name|net|org|pro|sch", "af":"com|edu|gov|net|org", "al":"com|edu|gov|mil|net|org", "ao":"co|ed|gv|it|og|pb", "ar":"com|edu|gob|gov|int|mil|net|org|tur", "at":"ac|co|gv|or", "au":"asn|com|csiro|edu|gov|id|net|org", "ba":"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze", "bb":"biz|co|com|edu|gov|info|net|org|store|tv", "bh":"biz|cc|com|edu|gov|info|net|org", "bn":"com|edu|gov|net|org", "bo":"com|edu|gob|gov|int|mil|net|org|tv", "br":"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg", "bs":"com|edu|gov|net|org", "bz":"du|et|om|ov|rg", "ca":"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk", "ck":"biz|co|edu|gen|gov|info|net|org", "cn":"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj", "co":"com|edu|gov|mil|net|nom|org", "cr":"ac|c|co|ed|fi|go|or|sa", "cy":"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm", "do":"art|com|edu|gob|gov|mil|net|org|sld|web", "dz":"art|asso|com|edu|gov|net|org|pol", "ec":"com|edu|fin|gov|info|med|mil|net|org|pro", "eg":"com|edu|eun|gov|mil|name|net|org|sci", "er":"com|edu|gov|ind|mil|net|org|rochest|w", "es":"com|edu|gob|nom|org", "et":"biz|com|edu|gov|info|name|net|org", "fj":"ac|biz|com|info|mil|name|net|org|pro", "fk":"ac|co|gov|net|nom|org", "fr":"asso|com|f|gouv|nom|prd|presse|tm", "gg":"co|net|org", "gh":"com|edu|gov|mil|org", "gn":"ac|com|gov|net|org", "gr":"com|edu|gov|mil|net|org", "gt":"com|edu|gob|ind|mil|net|org", "gu":"com|edu|gov|net|org", "hk":"com|edu|gov|idv|net|org", "id":"ac|co|go|mil|net|or|sch|web", "il":"ac|co|gov|idf|k12|muni|net|org", "in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res", "iq":"com|edu|gov|i|mil|net|org", "ir":"ac|co|dnssec|gov|i|id|net|org|sch", "it":"edu|gov", "je":"co|net|org", "jo":"com|edu|gov|mil|name|net|org|sch", "jp":"ac|ad|co|ed|go|gr|lg|ne|or", "ke":"ac|co|go|info|me|mobi|ne|or|sc", "kh":"com|edu|gov|mil|net|org|per", "ki":"biz|com|de|edu|gov|info|mob|net|org|tel", "km":"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire", "kn":"edu|gov|net|org", "kr":"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan", "kw":"com|edu|gov|net|org", "ky":"com|edu|gov|net|org", "kz":"com|edu|gov|mil|net|org", "lb":"com|edu|gov|net|org", "lk":"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web", "lr":"com|edu|gov|net|org", "lv":"asn|com|conf|edu|gov|id|mil|net|org", "ly":"com|edu|gov|id|med|net|org|plc|sch", "ma":"ac|co|gov|m|net|org|press", "mc":"asso|tm", "me":"ac|co|edu|gov|its|net|org|priv", "mg":"com|edu|gov|mil|nom|org|prd|tm", "mk":"com|edu|gov|inf|name|net|org|pro", "ml":"com|edu|gov|net|org|presse", "mn":"edu|gov|org", "mo":"com|edu|gov|net|org", "mt":"com|edu|gov|net|org", "mv":"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro", "mw":"ac|co|com|coop|edu|gov|int|museum|net|org", "mx":"com|edu|gob|net|org", "my":"com|edu|gov|mil|name|net|org|sch", "nf":"arts|com|firm|info|net|other|per|rec|store|web", "ng":"biz|com|edu|gov|mil|mobi|name|net|org|sch", "ni":"ac|co|com|edu|gob|mil|net|nom|org", "np":"com|edu|gov|mil|net|org", "nr":"biz|com|edu|gov|info|net|org", "om":"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch", "pe":"com|edu|gob|mil|net|nom|org|sld", "ph":"com|edu|gov|i|mil|net|ngo|org", "pk":"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web", "pl":"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora", "pr":"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof", "ps":"com|edu|gov|net|org|plo|sec", "pw":"belau|co|ed|go|ne|or", "ro":"arts|com|firm|info|nom|nt|org|rec|store|tm|www", "rs":"ac|co|edu|gov|in|org", "sb":"com|edu|gov|net|org", "sc":"com|edu|gov|net|org", "sh":"co|com|edu|gov|net|nom|org", "sl":"com|edu|gov|net|org", "st":"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store", "sv":"com|edu|gob|org|red", "sz":"ac|co|org", "tr":"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web", "tt":"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel", "tw":"club|com|ebiz|edu|game|gov|idv|mil|net|org", "mu":"ac|co|com|gov|net|or|org", "mz":"ac|co|edu|gov|org", "na":"co|com", "nz":"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school", "pa":"abo|ac|com|edu|gob|ing|med|net|nom|org|sld", "pt":"com|edu|gov|int|net|nome|org|publ", "py":"com|edu|gov|mil|net|org", "qa":"com|edu|gov|mil|net|org", "re":"asso|com|nom", "ru":"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk", "rw":"ac|co|com|edu|gouv|gov|int|mil|net", "sa":"com|edu|gov|med|net|org|pub|sch", "sd":"com|edu|gov|info|med|net|org|tv", "se":"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z", "sg":"com|edu|gov|idn|net|org|per", "sn":"art|com|edu|gouv|org|perso|univ", "sy":"com|edu|gov|mil|net|news|org", "th":"ac|co|go|in|mi|net|or", "tj":"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web", "tn":"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism", "tz":"ac|co|go|ne|or", "ua":"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt", "ug":"ac|co|go|ne|or|org|sc", "uk":"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc", "us":"dni|fed|isa|kids|nsn", "uy":"com|edu|gub|mil|net|org", "ve":"co|com|edu|gob|info|mil|net|org|web", "vi":"co|com|k12|net|org", "vn":"ac|biz|com|edu|gov|health|info|int|name|net|org|pro", "ye":"co|com|gov|ltd|me|net|org|plc", "yu":"ac|co|edu|gov|org", "za":"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web", "zm":"ac|co|com|edu|gov|net|org|sch" }, // SLD expression for each TLD //expressions: {}, // SLD expression for all TLDs has_expression: null, is_expression: null, // validate domain is a known SLD has: function(domain) { return !!domain.match(SLD.has_expression); }, is: function(domain) { return !!domain.match(SLD.is_expression); }, get: function(domain) { var t = domain.match(SLD.has_expression); return t && t[1] || null; }, init: function() { var t = ''; for (var tld in SLD.list) { if (!hasOwn.call(SLD.list, tld)) { continue; } var expression = '(' + SLD.list[tld] + ')\.' + tld; //SLD.expressions[tld] = new RegExp('\.' + expression + '$', 'i'); t += '|(' + expression + ')'; } SLD.has_expression = new RegExp('\\.(' + t.substr(1) + ')$', 'i'); SLD.is_expression = new RegExp('^(' + t.substr(1) + ')$', 'i'); } }; SLD.init(); return SLD; }));