Files
itflow/libs/intl-tel-input/js/data.ts
2026-08-26 13:14:32 -04:00

1532 lines
18 KiB
TypeScript

//* Array of country objects for the country list.
// By default, it's sorted in English alphabetical order, on country name.
//* Criteria for the core library to support a given country/territory:
//* - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
//* - It has a flag in the flag-icons project: https://github.com/lipis/flag-icons/tree/main/flags/4x3
//* - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml
//* Criteria for the core library to support area codes for a given country/territory:
//* - The area codes cover all valid numbers for that territory (there are no valid numbers outside of those area codes)
//* - The area codes are exclusive to that territory (i.e. they are not shared with another territory)
//* Each country array has the following information:
//* [
//* iso2 code,
//* International dial code,
//* Priority (if >1 country with same dial code),
//* Area codes (string array), [OPTIONAL]
//* National prefix, [OPTIONAL - only required if using area codes]
//* ]
export const rawCountryData = [
[
"af", // Afghanistan
"93",
0,
null,
"0",
],
[
"ax", // Åland Islands (AKA Aland Islands)
"358",
1,
["18", "4", "50"], // (4 and 50 are mobile ranges shared with FI)
// NOTE: https://en.wikipedia.org/wiki/Telephone%20numbers%20in%20%C3%85land says some 4XXX ranges (e.g. 4570) are specific to AX, but LPN doesn't respect this (https://libphonenumber.appspot.com/phonenumberparser?number=%2B3584570123456 says region=FI) so we won't either. Also it's too much of a maintenance burden to keep track of. Keep the 4 area code range here so that if the user selects AX and types this kind of number, we wont change the flag to FI. Whereas if they type a FI-only range then we will.
"0",
],
[
"al", // Albania
"355",
0,
null,
"0",
],
[
"dz", // Algeria
"213",
0,
null,
"0",
],
[
"as", // American Samoa
"1",
5,
["684"],
"1",
],
[
"ad", // Andorra
"376",
],
[
"ao", // Angola
"244",
],
[
"ai", // Anguilla
"1",
6,
["264"],
"1",
],
[
"ag", // Antigua and Barbuda
"1",
7,
["268"],
"1",
],
[
"ar", // Argentina
"54",
0,
null,
"0",
],
[
"am", // Armenia
"374",
0,
null,
"0",
],
[
"aw", // Aruba
"297",
],
[
"ac", // Ascension Island
"247",
],
[
"au", // Australia
"61",
0,
["4"], // (mobile range shared with CX and CC)
"0",
],
[
"at", // Austria
"43",
0,
null,
"0",
],
[
"az", // Azerbaijan
"994",
0,
null,
"0",
],
[
"bs", // Bahamas
"1",
8,
["242"],
"1",
],
[
"bh", // Bahrain
"973",
],
[
"bd", // Bangladesh
"880",
0,
null,
"0",
],
[
"bb", // Barbados
"1",
9,
["246"],
"1",
],
[
"by", // Belarus
"375",
0,
null,
"8",
],
[
"be", // Belgium
"32",
0,
null,
"0",
],
[
"bz", // Belize
"501",
],
[
"bj", // Benin
"229",
],
[
"bm", // Bermuda
"1",
10,
["441"],
"1",
],
[
"bt", // Bhutan
"975",
],
[
"bo", // Bolivia
"591",
0,
null,
"0",
],
[
"ba", // Bosnia and Herzegovina
"387",
0,
null,
"0",
],
[
"bw", // Botswana
"267",
],
[
"br", // Brazil
"55",
0,
null,
"0",
],
[
"io", // British Indian Ocean Territory
"246",
],
[
"vg", // British Virgin Islands
"1",
11,
["284"],
"1",
],
[
"bn", // Brunei
"673",
],
[
"bg", // Bulgaria
"359",
0,
null,
"0",
],
[
"bf", // Burkina Faso
"226",
],
[
"bi", // Burundi
"257",
],
[
"kh", // Cambodia
"855",
0,
null,
"0",
],
[
"cm", // Cameroon
"237",
],
[
"ca", // Canada
"1",
1,
[
"204",
"226",
"236",
"249",
"250",
"257",
"263",
"289",
"306",
"343",
"354",
"365",
"367",
"368",
"382",
"403",
"416",
"418",
"428",
"431",
"437",
"438",
"450",
"468",
"474",
"506",
"514",
"519",
"548",
"579",
"581",
"584",
"587",
"604",
"613",
"639",
"647",
"672",
"683",
"705",
"709",
"742",
"753",
"778",
"780",
"782",
"807",
"819",
"825",
"867",
"873",
"879",
"902",
"905",
"942",
],
"1",
],
[
"cv", // Cape Verde
"238",
],
[
"bq", // Caribbean Netherlands
"599",
1,
["3", "4", "7"],
],
[
"ky", // Cayman Islands
"1",
12,
["345"],
"1",
],
[
"cf", // Central African Republic
"236",
],
[
"td", // Chad
"235",
],
[
"cl", // Chile
"56",
],
[
"cn", // China
"86",
0,
null,
"0",
],
[
"cx", // Christmas Island
"61",
2,
["4", "89164"], // (4 is a mobile range shared with AU and CC)
"0",
],
[
"cc", // Cocos (Keeling) Islands
"61",
1,
["4", "89162"], // (4 is a mobile range shared with AU and CX)
"0",
],
[
"co", // Colombia
"57",
0,
null,
"0",
],
[
"km", // Comoros
"269",
],
[
"cg", // Congo (Brazzaville)
"242",
],
[
"cd", // Congo (Kinshasa)
"243",
0,
null,
"0",
],
[
"ck", // Cook Islands
"682",
],
[
"cr", // Costa Rica
"506",
],
[
"ci", // Côte d'Ivoire
"225",
],
[
"hr", // Croatia
"385",
0,
null,
"0",
],
[
"cu", // Cuba
"53",
0,
null,
"0",
],
[
"cw", // Curaçao
"599",
0,
],
[
"cy", // Cyprus
"357",
],
[
"cz", // Czech Republic
"420",
],
[
"dk", // Denmark
"45",
],
[
"dj", // Djibouti
"253",
],
[
"dm", // Dominica
"1",
13,
["767"],
"1",
],
[
"do", // Dominican Republic
"1",
2,
["809", "829", "849"],
"1",
],
[
"ec", // Ecuador
"593",
0,
null,
"0",
],
[
"eg", // Egypt
"20",
0,
null,
"0",
],
[
"sv", // El Salvador
"503",
],
[
"gq", // Equatorial Guinea
"240",
],
[
"er", // Eritrea
"291",
0,
null,
"0",
],
[
"ee", // Estonia
"372",
],
[
"sz", // Eswatini
"268",
],
[
"et", // Ethiopia
"251",
0,
null,
"0",
],
[
"fk", // Falkland Islands (Malvinas)
"500",
],
[
"fo", // Faroe Islands
"298",
],
[
"fj", // Fiji
"679",
],
[
"fi", // Finland
"358",
0,
["4", "50"], // (mobile ranges shared with AX)
"0",
],
[
"fr", // France
"33",
0,
null,
"0",
],
[
"gf", // French Guiana
"594",
0,
null,
"0",
],
[
"pf", // French Polynesia
"689",
],
[
"ga", // Gabon
"241",
],
[
"gm", // Gambia
"220",
],
[
"ge", // Georgia
"995",
0,
null,
"0",
],
[
"de", // Germany
"49",
0,
null,
"0",
],
[
"gh", // Ghana
"233",
0,
null,
"0",
],
[
"gi", // Gibraltar
"350",
],
[
"gr", // Greece
"30",
],
[
"gl", // Greenland
"299",
],
[
"gd", // Grenada
"1",
14,
["473"],
"1",
],
[
"gp", // Guadeloupe
"590",
0,
null,
"0",
],
[
"gu", // Guam
"1",
15,
["671"],
"1",
],
[
"gt", // Guatemala
"502",
],
[
"gg", // Guernsey
"44",
1,
//* Only 79111 and 79117 belong to GG - the rest of 7911 is GB (e.g. 79110).
["1481", "7781", "7839", "79111", "79117"],
"0",
],
[
"gn", // Guinea
"224",
],
[
"gw", // Guinea-Bissau
"245",
],
[
"gy", // Guyana
"592",
],
[
"ht", // Haiti
"509",
],
[
"hn", // Honduras
"504",
],
[
"hk", // Hong Kong SAR China
"852",
],
[
"hu", // Hungary
"36",
0,
null,
"06",
],
[
"is", // Iceland
"354",
],
[
"in", // India
"91",
0,
null,
"0",
],
[
"id", // Indonesia
"62",
0,
null,
"0",
],
[
"ir", // Iran
"98",
0,
null,
"0",
],
[
"iq", // Iraq
"964",
0,
null,
"0",
],
[
"ie", // Ireland
"353",
0,
null,
"0",
],
[
"im", // Isle of Man
"44",
2,
["1624", "74576", "7524", "7624", "7924"],
"0",
],
[
"il", // Israel
"972",
0,
null,
"0",
],
[
"it", // Italy
"39",
0,
["3"], // (mobile range shared with VA)
],
[
"jm", // Jamaica
"1",
4,
["658", "876"],
"1",
],
[
"jp", // Japan
"81",
0,
null,
"0",
],
[
"je", // Jersey
"44",
3,
//* Only 77003/77007/77008 belong to JE - the rest of 7700 is GB (e.g. 77001).
["1534", "7509", "77003", "77007", "77008", "7797", "7829", "7937"],
"0",
],
[
"jo", // Jordan
"962",
0,
null,
"0",
],
[
"kz", // Kazakhstan
"7",
1,
["33", "7"], // (33 is shared with RU)
"8",
],
[
"ke", // Kenya
"254",
0,
null,
"0",
],
[
"ki", // Kiribati
"686",
0,
null,
"0",
],
[
"xk", // Kosovo
"383",
0,
null,
"0",
],
[
"kw", // Kuwait
"965",
],
[
"kg", // Kyrgyzstan
"996",
0,
null,
"0",
],
[
"la", // Laos
"856",
0,
null,
"0",
],
[
"lv", // Latvia
"371",
],
[
"lb", // Lebanon
"961",
0,
null,
"0",
],
[
"ls", // Lesotho
"266",
],
[
"lr", // Liberia
"231",
0,
null,
"0",
],
[
"ly", // Libya
"218",
0,
null,
"0",
],
[
"li", // Liechtenstein
"423",
0,
null,
"0",
],
[
"lt", // Lithuania
"370",
0,
null,
"0",
],
[
"lu", // Luxembourg
"352",
],
[
"mo", // Macao SAR China
"853",
],
[
"mg", // Madagascar
"261",
0,
null,
"0",
],
[
"mw", // Malawi
"265",
0,
null,
"0",
],
[
"my", // Malaysia
"60",
0,
null,
"0",
],
[
"mv", // Maldives
"960",
],
[
"ml", // Mali
"223",
],
[
"mt", // Malta
"356",
],
[
"mh", // Marshall Islands
"692",
0,
null,
"1",
],
[
"mq", // Martinique
"596",
0,
null,
"0",
],
[
"mr", // Mauritania
"222",
],
[
"mu", // Mauritius
"230",
],
[
"yt", // Mayotte
"262",
1,
["2689", "269", "639", "7093"],
"0",
],
[
"mx", // Mexico
"52",
],
[
"fm", // Micronesia
"691",
],
[
"md", // Moldova
"373",
0,
null,
"0",
],
[
"mc", // Monaco
"377",
0,
null,
"0",
],
[
"mn", // Mongolia
"976",
0,
null,
"0",
],
[
"me", // Montenegro
"382",
0,
null,
"0",
],
[
"ms", // Montserrat
"1",
16,
["664"],
"1",
],
[
"ma", // Morocco
"212",
0,
["6", "7"], // (mobile ranges shared with EH)
"0",
],
[
"mz", // Mozambique
"258",
],
[
"mm", // Myanmar (Burma)
"95",
0,
null,
"0",
],
[
"na", // Namibia
"264",
0,
null,
"0",
],
[
"nr", // Nauru
"674",
],
[
"np", // Nepal
"977",
0,
null,
"0",
],
[
"nl", // Netherlands
"31",
0,
null,
"0",
],
[
"nc", // New Caledonia
"687",
],
[
"nz", // New Zealand
"64",
0,
null,
"0",
],
[
"ni", // Nicaragua
"505",
],
[
"ne", // Niger
"227",
],
[
"ng", // Nigeria
"234",
0,
null,
"0",
],
[
"nu", // Niue
"683",
],
[
"nf", // Norfolk Island
"672",
],
[
"kp", // North Korea
"850",
0,
null,
"0",
],
[
"mk", // North Macedonia
"389",
0,
null,
"0",
],
[
"mp", // Northern Mariana Islands
"1",
17,
["670"],
"1",
],
[
"no", // Norway
"47",
0,
["4", "9"], // (mobile ranges shared with SJ)
],
[
"om", // Oman
"968",
],
[
"pk", // Pakistan
"92",
0,
null,
"0",
],
[
"pw", // Palau
"680",
],
[
"ps", // Palestinian Territories
"970",
0,
null,
"0",
],
[
"pa", // Panama
"507",
],
[
"pg", // Papua New Guinea
"675",
],
[
"py", // Paraguay
"595",
0,
null,
"0",
],
[
"pe", // Peru
"51",
0,
null,
"0",
],
[
"ph", // Philippines
"63",
0,
null,
"0",
],
[
"pl", // Poland
"48",
],
[
"pt", // Portugal
"351",
],
[
"pr", // Puerto Rico
"1",
3,
["787", "939"],
"1",
],
[
"qa", // Qatar
"974",
],
[
"re", // Réunion
"262",
0,
null,
"0",
],
[
"ro", // Romania
"40",
0,
null,
"0",
],
[
"ru", // Russia
"7",
0,
["33"], // (shared with KZ)
"8",
],
[
"rw", // Rwanda
"250",
0,
null,
"0",
],
[
"ws", // Samoa
"685",
],
[
"sm", // San Marino
"378",
],
[
"st", // São Tomé & Príncipe
"239",
],
[
"sa", // Saudi Arabia
"966",
0,
null,
"0",
],
[
"sn", // Senegal
"221",
],
[
"rs", // Serbia
"381",
0,
null,
"0",
],
[
"sc", // Seychelles
"248",
],
[
"sl", // Sierra Leone
"232",
0,
null,
"0",
],
[
"sg", // Singapore
"65",
],
[
"sx", // Sint Maarten
"1",
21,
["721"],
"1",
],
[
"sk", // Slovakia
"421",
0,
null,
"0",
],
[
"si", // Slovenia
"386",
0,
null,
"0",
],
[
"sb", // Solomon Islands
"677",
],
[
"so", // Somalia
"252",
0,
null,
"0",
],
[
"za", // South Africa
"27",
0,
null,
"0",
],
[
"kr", // South Korea
"82",
0,
null,
"0",
],
[
"ss", // South Sudan
"211",
0,
null,
"0",
],
[
"es", // Spain
"34",
],
[
"lk", // Sri Lanka
"94",
0,
null,
"0",
],
[
"bl", // St. Barthélemy
"590",
1,
null,
"0",
],
[
"sh", // St. Helena
"290",
],
[
"kn", // St. Kitts & Nevis
"1",
18,
["869"],
"1",
],
[
"lc", // St. Lucia
"1",
19,
["758"],
"1",
],
[
"mf", // St. Martin
"590",
2,
null,
"0",
],
[
"pm", // St. Pierre & Miquelon
"508",
0,
null,
"0",
],
[
"vc", // St. Vincent & Grenadines
"1",
20,
["784"],
"1",
],
[
"sd", // Sudan
"249",
0,
null,
"0",
],
[
"sr", // Suriname
"597",
],
[
"sj", // Svalbard & Jan Mayen
"47",
1,
["4", "79", "9"], // (4 and 9 are mobile ranges shared with NO)
],
[
"se", // Sweden
"46",
0,
null,
"0",
],
[
"ch", // Switzerland
"41",
0,
null,
"0",
],
[
"sy", // Syria
"963",
0,
null,
"0",
],
[
"tw", // Taiwan
"886",
0,
null,
"0",
],
[
"tj", // Tajikistan
"992",
],
[
"tz", // Tanzania
"255",
0,
null,
"0",
],
[
"th", // Thailand
"66",
0,
null,
"0",
],
[
"tl", // Timor-Leste
"670",
],
[
"tg", // Togo
"228",
],
[
"tk", // Tokelau
"690",
],
[
"to", // Tonga
"676",
],
[
"tt", // Trinidad & Tobago
"1",
22,
["868"],
"1",
],
[
"tn", // Tunisia
"216",
],
[
"tr", // Turkey
"90",
0,
null,
"0",
],
[
"tm", // Turkmenistan
"993",
0,
null,
"8",
],
[
"tc", // Turks & Caicos Islands
"1",
23,
["649"],
"1",
],
[
"tv", // Tuvalu
"688",
],
[
"vi", // U.S. Virgin Islands
"1",
24,
["340"],
"1",
],
[
"ug", // Uganda
"256",
0,
null,
"0",
],
[
"ua", // Ukraine
"380",
0,
null,
"0",
],
[
"ae", // United Arab Emirates
"971",
0,
null,
"0",
],
[
"gb", // United Kingdom
"44",
0,
null,
"0",
],
[
"us", // United States
"1",
0,
null,
"1",
],
[
"uy", // Uruguay
"598",
0,
null,
"0",
],
[
"uz", // Uzbekistan
"998",
],
[
"vu", // Vanuatu
"678",
],
[
"va", // Vatican City
"39",
1,
["06698", "3"], // (3 is a mobile range shared with IT)
],
[
"ve", // Venezuela
"58",
0,
null,
"0",
],
[
"vn", // Vietnam
"84",
0,
null,
"0",
],
[
"wf", // Wallis & Futuna
"681",
],
[
"eh", // Western Sahara
"212",
1,
["5288", "5289", "6", "7"], // (6 and 7 are mobile ranges shared with MA)
"0",
],
[
"ye", // Yemen
"967",
0,
null,
"0",
],
[
"zm", // Zambia
"260",
0,
null,
"0",
],
[
"zw", // Zimbabwe
"263",
0,
null,
"0",
],
] as const;
export type Iso2 = (typeof rawCountryData)[number][0];
export type Country = {
name: string; // populated in the core library
iso2: Iso2;
dialCode: string;
priority: number;
areaCodes: readonly string[] | null;
nationalPrefix: string | null;
};
const allCountries: Country[] = [];
//* Loop over all of the countries above, restructuring the data to be objects with named keys.
for (const c of rawCountryData) {
allCountries.push({
name: "", // populated in the core library
iso2: c[0],
dialCode: c[1],
priority: c[2] || 0,
areaCodes: c[3] || null,
nationalPrefix: c[4] || null,
});
}
// Shared iso2 validation set (built once, reused across modules)
export const iso2Set: Set<Iso2> = new Set(allCountries.map((c) => c.iso2));
export const isIso2 = (val: string): val is Iso2 => iso2Set.has(val as Iso2);
export default allCountries;