make the tld non-linear-searchy

This commit is contained in:
Deven Joshi
2022-01-04 14:37:34 +05:30
parent 504e72deca
commit 631ab68990
@@ -1,12 +1,16 @@
/// Extension on String adding utilities checking TLD validity. /// Extension on String adding utilities checking TLD validity.
extension TLDString on String { extension TLDString on String {
/// Returns true if the string is a valid TLD. /// Returns true if the string is a valid TLD.
bool isValidTLD() => tlds.contains(toUpperCase()); bool isValidTLD() =>
isNotEmpty &&
tlds.containsKey(this[0].toUpperCase()) &&
tlds[this[0].toUpperCase()]!.contains(toUpperCase());
} }
/// List of valid TLDs. /// List of valid TLDs.
/// https://data.iana.org/TLD/tlds-alpha-by-domain.txt /// https://data.iana.org/TLD/tlds-alpha-by-domain.txt
const tlds = [ const tlds = {
'A': [
'AAA', 'AAA',
'AARP', 'AARP',
'ABARTH', 'ABARTH',
@@ -103,6 +107,8 @@ const tlds = [
'AXA', 'AXA',
'AZ', 'AZ',
'AZURE', 'AZURE',
],
'B': [
'BA', 'BA',
'BABY', 'BABY',
'BAIDU', 'BAIDU',
@@ -196,6 +202,8 @@ const tlds = [
'BY', 'BY',
'BZ', 'BZ',
'BZH', 'BZH',
],
'C': [
'CA', 'CA',
'CAB', 'CAB',
'CAFE', 'CAFE',
@@ -318,6 +326,8 @@ const tlds = [
'CYMRU', 'CYMRU',
'CYOU', 'CYOU',
'CZ', 'CZ',
],
'D': [
'DABUR', 'DABUR',
'DAD', 'DAD',
'DANCE', 'DANCE',
@@ -373,6 +383,8 @@ const tlds = [
'DVAG', 'DVAG',
'DVR', 'DVR',
'DZ', 'DZ',
],
'E': [
'EARTH', 'EARTH',
'EAT', 'EAT',
'EC', 'EC',
@@ -407,6 +419,8 @@ const tlds = [
'EXPOSED', 'EXPOSED',
'EXPRESS', 'EXPRESS',
'EXTRASPACE', 'EXTRASPACE',
],
'F': [
'FAGE', 'FAGE',
'FAIL', 'FAIL',
'FAIRWINDS', 'FAIRWINDS',
@@ -471,6 +485,8 @@ const tlds = [
'FURNITURE', 'FURNITURE',
'FUTBOL', 'FUTBOL',
'FYI', 'FYI',
],
'G': [
'GA', 'GA',
'GAL', 'GAL',
'GALLERY', 'GALLERY',
@@ -542,6 +558,8 @@ const tlds = [
'GURU', 'GURU',
'GW', 'GW',
'GY', 'GY',
],
'H': [
'HAIR', 'HAIR',
'HAMBURG', 'HAMBURG',
'HANGOUT', 'HANGOUT',
@@ -589,6 +607,8 @@ const tlds = [
'HUGHES', 'HUGHES',
'HYATT', 'HYATT',
'HYUNDAI', 'HYUNDAI',
],
'I': [
'IBM', 'IBM',
'ICBC', 'ICBC',
'ICE', 'ICE',
@@ -630,6 +650,8 @@ const tlds = [
'IT', 'IT',
'ITAU', 'ITAU',
'ITV', 'ITV',
],
'J': [
'JAGUAR', 'JAGUAR',
'JAVA', 'JAVA',
'JCB', 'JCB',
@@ -652,6 +674,8 @@ const tlds = [
'JPRS', 'JPRS',
'JUEGOS', 'JUEGOS',
'JUNIPER', 'JUNIPER',
],
'K': [
'KAUFEN', 'KAUFEN',
'KDDI', 'KDDI',
'KE', 'KE',
@@ -684,6 +708,8 @@ const tlds = [
'KY', 'KY',
'KYOTO', 'KYOTO',
'KZ', 'KZ',
],
'L': [
'LA', 'LA',
'LACAIXA', 'LACAIXA',
'LAMBORGHINI', 'LAMBORGHINI',
@@ -751,6 +777,8 @@ const tlds = [
'LUXURY', 'LUXURY',
'LV', 'LV',
'LY', 'LY',
],
'M': [
'MA', 'MA',
'MACYS', 'MACYS',
'MADRID', 'MADRID',
@@ -832,6 +860,8 @@ const tlds = [
'MX', 'MX',
'MY', 'MY',
'MZ', 'MZ',
],
'N': [
'NA', 'NA',
'NAB', 'NAB',
'NAGOYA', 'NAGOYA',
@@ -880,6 +910,8 @@ const tlds = [
'NU', 'NU',
'NYC', 'NYC',
'NZ', 'NZ',
],
'O': [
'OBI', 'OBI',
'OBSERVER', 'OBSERVER',
'OFFICE', 'OFFICE',
@@ -905,6 +937,8 @@ const tlds = [
'OTSUKA', 'OTSUKA',
'OTT', 'OTT',
'OVH', 'OVH',
],
'P': [
'PA', 'PA',
'PAGE', 'PAGE',
'PANASONIC', 'PANASONIC',
@@ -976,10 +1010,14 @@ const tlds = [
'PW', 'PW',
'PWC', 'PWC',
'PY', 'PY',
],
'Q': [
'QA', 'QA',
'QPON', 'QPON',
'QUEBEC', 'QUEBEC',
'QUEST', 'QUEST',
],
'R': [
'RACING', 'RACING',
'RADIO', 'RADIO',
'RE', 'RE',
@@ -1028,6 +1066,8 @@ const tlds = [
'RW', 'RW',
'RWE', 'RWE',
'RYUKYU', 'RYUKYU',
],
'S': [
'SA', 'SA',
'SAARLAND', 'SAARLAND',
'SAFE', 'SAFE',
@@ -1156,6 +1196,8 @@ const tlds = [
'SYDNEY', 'SYDNEY',
'SYSTEMS', 'SYSTEMS',
'SZ', 'SZ',
],
'T': [
'TAB', 'TAB',
'TAIPEI', 'TAIPEI',
'TALK', 'TALK',
@@ -1230,6 +1272,8 @@ const tlds = [
'TVS', 'TVS',
'TW', 'TW',
'TZ', 'TZ',
],
'U': [
'UA', 'UA',
'UBANK', 'UBANK',
'UBS', 'UBS',
@@ -1243,6 +1287,8 @@ const tlds = [
'US', 'US',
'UY', 'UY',
'UZ', 'UZ',
],
'V': [
'VA', 'VA',
'VACATIONS', 'VACATIONS',
'VANA', 'VANA',
@@ -1279,6 +1325,8 @@ const tlds = [
'VOYAGE', 'VOYAGE',
'VU', 'VU',
'VUELOS', 'VUELOS',
],
'W': [
'WALES', 'WALES',
'WALMART', 'WALMART',
'WALTER', 'WALTER',
@@ -1314,6 +1362,8 @@ const tlds = [
'WS', 'WS',
'WTC', 'WTC',
'WTF', 'WTF',
],
'X': [
'XBOX', 'XBOX',
'XEROX', 'XEROX',
'XFINITY', 'XFINITY',
@@ -1474,6 +1524,8 @@ const tlds = [
'XN--ZFR164B', 'XN--ZFR164B',
'XXX', 'XXX',
'XYZ', 'XYZ',
],
'Y': [
'YACHTS', 'YACHTS',
'YAHOO', 'YAHOO',
'YAMAXUN', 'YAMAXUN',
@@ -1486,6 +1538,8 @@ const tlds = [
'YOUTUBE', 'YOUTUBE',
'YT', 'YT',
'YUN', 'YUN',
],
'Z': [
'ZA', 'ZA',
'ZAPPOS', 'ZAPPOS',
'ZARA', 'ZARA',
@@ -1495,4 +1549,5 @@ const tlds = [
'ZONE', 'ZONE',
'ZUERICH', 'ZUERICH',
'ZW', 'ZW',
]; ],
};