mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2025-02-17 00:21:20 -05:00
1119 lines
19 KiB
JavaScript
1119 lines
19 KiB
JavaScript
module.exports = {};
|
|
|
|
// only used to determine the subdivisions/states/provinces within a given country
|
|
const isoCountryRawData = module.exports.data = require('iso-3166-2').data;
|
|
|
|
// sorted array of countries and their data.
|
|
// This is our main, static country list. Each item is an object with at least:
|
|
// code: two-character iso-3166 country code, used to provide country to other libraries
|
|
// name: the version of the country name that we use in our data everywhere, for consistency
|
|
// display (optional): a different version of the country name to display to users,
|
|
// if different from "name"
|
|
const countryInfo = module.exports.countryInfo = [
|
|
{
|
|
name: 'Afghanistan',
|
|
code: 'af'
|
|
},
|
|
{
|
|
name: 'Aland Islands',
|
|
display: 'Åland Islands',
|
|
code: 'ax'
|
|
},
|
|
{
|
|
name: 'Albania',
|
|
code: 'al'
|
|
},
|
|
{
|
|
name: 'Algeria',
|
|
code: 'dz'
|
|
},
|
|
{
|
|
name: 'American Samoa',
|
|
code: 'as'
|
|
},
|
|
{
|
|
name: 'Andorra',
|
|
code: 'ad'
|
|
},
|
|
{
|
|
name: 'Angola',
|
|
code: 'ao'
|
|
},
|
|
{
|
|
name: 'Anguilla',
|
|
code: 'ai'
|
|
},
|
|
{
|
|
name: 'Antarctica',
|
|
code: 'aq'
|
|
},
|
|
{
|
|
name: 'Antigua and Barbuda',
|
|
code: 'ag'
|
|
},
|
|
{
|
|
name: 'Argentina',
|
|
code: 'ar'
|
|
},
|
|
{
|
|
name: 'Armenia',
|
|
code: 'am'
|
|
},
|
|
{
|
|
name: 'Aruba',
|
|
code: 'aw'
|
|
},
|
|
{
|
|
name: 'Australia',
|
|
code: 'au'
|
|
},
|
|
{
|
|
name: 'Austria',
|
|
code: 'at'
|
|
},
|
|
{
|
|
name: 'Azerbaijan',
|
|
code: 'az'
|
|
},
|
|
{
|
|
name: 'Bahamas',
|
|
code: 'bs'
|
|
},
|
|
{
|
|
name: 'Bahrain',
|
|
code: 'bh'
|
|
},
|
|
{
|
|
name: 'Bangladesh',
|
|
code: 'bd'
|
|
},
|
|
{
|
|
name: 'Barbados',
|
|
code: 'bb'
|
|
},
|
|
{
|
|
name: 'Belarus',
|
|
code: 'by'
|
|
},
|
|
{
|
|
name: 'Belgium',
|
|
code: 'be'
|
|
},
|
|
{
|
|
name: 'Belize',
|
|
code: 'bz'
|
|
},
|
|
{
|
|
name: 'Benin',
|
|
code: 'bj'
|
|
},
|
|
{
|
|
name: 'Bermuda',
|
|
code: 'bm'
|
|
},
|
|
{
|
|
name: 'Bhutan',
|
|
code: 'bt'
|
|
},
|
|
{
|
|
name: 'Bolivia',
|
|
code: 'bo'
|
|
},
|
|
{
|
|
name: 'Bonaire, Sint Eustatius and Saba',
|
|
code: 'bq'
|
|
},
|
|
{
|
|
name: 'Bosnia and Herzegovina',
|
|
code: 'ba'
|
|
},
|
|
{
|
|
name: 'Botswana',
|
|
code: 'bw'
|
|
},
|
|
{
|
|
name: 'Bouvet Island',
|
|
code: 'bv'
|
|
},
|
|
{
|
|
name: 'Brazil',
|
|
code: 'br'
|
|
},
|
|
{
|
|
name: 'British Indian Ocean Territory',
|
|
code: 'io'
|
|
},
|
|
{
|
|
name: 'Brunei',
|
|
display: 'Brunei Darussalami',
|
|
code: 'bn'
|
|
},
|
|
{
|
|
name: 'Bulgaria',
|
|
code: 'bg'
|
|
},
|
|
{
|
|
name: 'Burkina Faso',
|
|
code: 'bf'
|
|
},
|
|
{
|
|
name: 'Burundi',
|
|
code: 'bi'
|
|
},
|
|
{
|
|
name: 'Cambodia',
|
|
code: 'kh'
|
|
},
|
|
{
|
|
name: 'Cameroon',
|
|
code: 'cm'
|
|
},
|
|
{
|
|
name: 'Canada',
|
|
code: 'ca'
|
|
},
|
|
{
|
|
name: 'Cape Verde',
|
|
code: 'cv'
|
|
},
|
|
{
|
|
name: 'Cayman Islands',
|
|
code: 'ky'
|
|
},
|
|
{
|
|
name: 'Central African Republic',
|
|
code: 'cf'
|
|
},
|
|
{
|
|
name: 'Chad',
|
|
code: 'td'
|
|
},
|
|
{
|
|
name: 'Chile',
|
|
code: 'cl'
|
|
},
|
|
{
|
|
name: 'China',
|
|
code: 'cn'
|
|
},
|
|
{
|
|
name: 'Christmas Island',
|
|
code: 'cx'
|
|
},
|
|
{
|
|
name: 'Cocos (Keeling) Islands',
|
|
code: 'cc'
|
|
},
|
|
{
|
|
name: 'Colombia',
|
|
code: 'co'
|
|
},
|
|
{
|
|
name: 'Comoros',
|
|
code: 'km'
|
|
},
|
|
{
|
|
name: 'Congo',
|
|
code: 'cg'
|
|
},
|
|
{
|
|
name: 'Congo, The Democratic Republic of the',
|
|
code: 'cd'
|
|
},
|
|
{
|
|
name: 'Cook Islands',
|
|
code: 'ck'
|
|
},
|
|
{
|
|
name: 'Costa Rica',
|
|
code: 'cr'
|
|
},
|
|
{
|
|
name: 'Cote d\'Ivoire',
|
|
display: 'Côte d\'Ivoire',
|
|
code: 'ci'
|
|
},
|
|
{
|
|
name: 'Croatia',
|
|
code: 'hr'
|
|
},
|
|
{
|
|
name: 'Cuba',
|
|
code: 'cu'
|
|
},
|
|
{
|
|
name: 'Curacao',
|
|
display: 'Curaçao',
|
|
code: 'cw'
|
|
},
|
|
{
|
|
name: 'Cyprus',
|
|
code: 'cy'
|
|
},
|
|
{
|
|
name: 'Czech Republic',
|
|
code: 'cz'
|
|
},
|
|
{
|
|
name: 'Denmark',
|
|
code: 'dk'
|
|
},
|
|
{
|
|
name: 'Djibouti',
|
|
code: 'dj'
|
|
},
|
|
{
|
|
name: 'Dominica',
|
|
code: 'dm'
|
|
},
|
|
{
|
|
name: 'Dominican Republic',
|
|
code: 'do'
|
|
},
|
|
{
|
|
name: 'Ecuador',
|
|
code: 'ec'
|
|
},
|
|
{
|
|
name: 'Egypt',
|
|
code: 'eg'
|
|
},
|
|
{
|
|
name: 'El Salvador',
|
|
code: 'sv'
|
|
},
|
|
{
|
|
name: 'Equatorial Guinea',
|
|
code: 'gq'
|
|
},
|
|
{
|
|
name: 'Eritrea',
|
|
code: 'er'
|
|
},
|
|
{
|
|
name: 'Estonia',
|
|
code: 'ee'
|
|
},
|
|
{
|
|
name: 'Swaziland',
|
|
display: 'Eswatini',
|
|
code: 'sz'
|
|
},
|
|
{
|
|
name: 'Ethiopia',
|
|
code: 'et'
|
|
},
|
|
{
|
|
name: 'Falkland Islands (Malvinas)',
|
|
code: 'fk'
|
|
},
|
|
{
|
|
name: 'Faroe Islands',
|
|
code: 'fo'
|
|
},
|
|
{
|
|
name: 'Fiji',
|
|
code: 'fj'
|
|
},
|
|
{
|
|
name: 'Finland',
|
|
code: 'fi'
|
|
},
|
|
{
|
|
name: 'France',
|
|
code: 'fr'
|
|
},
|
|
{
|
|
name: 'French Guiana',
|
|
code: 'gf'
|
|
},
|
|
{
|
|
name: 'French Polynesia',
|
|
code: 'pf'
|
|
},
|
|
{
|
|
name: 'French Southern Territories',
|
|
code: 'tf'
|
|
},
|
|
{
|
|
name: 'Gabon',
|
|
code: 'ga'
|
|
},
|
|
{
|
|
name: 'Gambia',
|
|
code: 'gm'
|
|
},
|
|
{
|
|
name: 'Georgia',
|
|
code: 'ge'
|
|
},
|
|
{
|
|
name: 'Germany',
|
|
code: 'de'
|
|
},
|
|
{
|
|
name: 'Ghana',
|
|
code: 'gh'
|
|
},
|
|
{
|
|
name: 'Gibraltar',
|
|
code: 'gi'
|
|
},
|
|
{
|
|
name: 'Greece',
|
|
code: 'gr'
|
|
},
|
|
{
|
|
name: 'Greenland',
|
|
code: 'gl'
|
|
},
|
|
{
|
|
name: 'Grenada',
|
|
code: 'gd'
|
|
},
|
|
{
|
|
name: 'Guadeloupe',
|
|
code: 'gp'
|
|
},
|
|
{
|
|
name: 'Guam',
|
|
code: 'gu'
|
|
},
|
|
{
|
|
name: 'Guatemala',
|
|
code: 'gt'
|
|
},
|
|
{
|
|
name: 'Guernsey',
|
|
code: 'gg'
|
|
},
|
|
{
|
|
name: 'Guinea',
|
|
code: 'gn'
|
|
},
|
|
{
|
|
name: 'Guinea-Bissau',
|
|
code: 'gw'
|
|
},
|
|
{
|
|
name: 'Guyana',
|
|
code: 'gy'
|
|
},
|
|
{
|
|
name: 'Haiti',
|
|
code: 'ht'
|
|
},
|
|
{
|
|
name: 'Heard Island and McDonald Islands',
|
|
code: 'hm'
|
|
},
|
|
{
|
|
name: 'Honduras',
|
|
code: 'hn'
|
|
},
|
|
{
|
|
name: 'Hong Kong',
|
|
code: 'hk'
|
|
},
|
|
{
|
|
name: 'Hungary',
|
|
code: 'hu'
|
|
},
|
|
{
|
|
name: 'Iceland',
|
|
code: 'is'
|
|
},
|
|
{
|
|
name: 'India',
|
|
code: 'in'
|
|
},
|
|
{
|
|
name: 'Indonesia',
|
|
code: 'id'
|
|
},
|
|
{
|
|
name: 'Iran',
|
|
code: 'ir'
|
|
},
|
|
{
|
|
name: 'Iraq',
|
|
code: 'iq'
|
|
},
|
|
{
|
|
name: 'Ireland',
|
|
code: 'ie'
|
|
},
|
|
{
|
|
name: 'Isle of Man',
|
|
code: 'im'
|
|
},
|
|
{
|
|
name: 'Israel',
|
|
code: 'il'
|
|
},
|
|
{
|
|
name: 'Italy',
|
|
code: 'it'
|
|
},
|
|
{
|
|
name: 'Jamaica',
|
|
code: 'jm'
|
|
},
|
|
{
|
|
name: 'Japan',
|
|
code: 'jp'
|
|
},
|
|
{
|
|
name: 'Jersey',
|
|
code: 'je'
|
|
},
|
|
{
|
|
name: 'Jordan',
|
|
code: 'jo'
|
|
},
|
|
{
|
|
name: 'Kazakhstan',
|
|
code: 'kz'
|
|
},
|
|
{
|
|
name: 'Kenya',
|
|
code: 'ke'
|
|
},
|
|
{
|
|
name: 'Kiribati',
|
|
code: 'ki'
|
|
},
|
|
{
|
|
name: 'North Korea',
|
|
display: 'Korea, Democratic People\'s Republic of',
|
|
code: 'kp'
|
|
},
|
|
{
|
|
name: 'South Korea',
|
|
display: 'Korea, Republic of',
|
|
code: 'kr'
|
|
},
|
|
{
|
|
name: 'Kosovo',
|
|
code: 'xk'
|
|
},
|
|
{
|
|
name: 'Kuwait',
|
|
code: 'kw'
|
|
},
|
|
{
|
|
name: 'Kyrgyzstan',
|
|
code: 'kg'
|
|
},
|
|
{
|
|
name: 'Laos',
|
|
code: 'la'
|
|
},
|
|
{
|
|
name: 'Latvia',
|
|
code: 'lv'
|
|
},
|
|
{
|
|
name: 'Lebanon',
|
|
code: 'lb'
|
|
},
|
|
{
|
|
name: 'Lesotho',
|
|
code: 'ls'
|
|
},
|
|
{
|
|
name: 'Liberia',
|
|
code: 'lr'
|
|
},
|
|
{
|
|
name: 'Libya',
|
|
code: 'ly'
|
|
},
|
|
{
|
|
name: 'Liechtenstein',
|
|
code: 'li'
|
|
},
|
|
{
|
|
name: 'Lithuania',
|
|
code: 'lt'
|
|
},
|
|
{
|
|
name: 'Luxembourg',
|
|
code: 'lu'
|
|
},
|
|
{
|
|
name: 'Macao',
|
|
code: 'mo'
|
|
},
|
|
{
|
|
name: 'Madagascar',
|
|
code: 'mg'
|
|
},
|
|
{
|
|
name: 'Malawi',
|
|
code: 'mw'
|
|
},
|
|
{
|
|
name: 'Malaysia',
|
|
code: 'my'
|
|
},
|
|
{
|
|
name: 'Maldives',
|
|
code: 'mv'
|
|
},
|
|
{
|
|
name: 'Mali',
|
|
code: 'ml'
|
|
},
|
|
{
|
|
name: 'Malta',
|
|
code: 'mt'
|
|
},
|
|
{
|
|
name: 'Marshall Islands',
|
|
code: 'mh'
|
|
},
|
|
{
|
|
name: 'Martinique',
|
|
code: 'mq'
|
|
},
|
|
{
|
|
name: 'Mauritania',
|
|
code: 'mr'
|
|
},
|
|
{
|
|
name: 'Mauritius',
|
|
code: 'mu'
|
|
},
|
|
{
|
|
name: 'Mayotte',
|
|
code: 'yt'
|
|
},
|
|
{
|
|
name: 'Mexico',
|
|
code: 'mx'
|
|
},
|
|
{
|
|
name: 'Micronesia, Federated States of',
|
|
code: 'fm'
|
|
},
|
|
{
|
|
name: 'Moldova',
|
|
code: 'md'
|
|
},
|
|
{
|
|
name: 'Monaco',
|
|
code: 'mc'
|
|
},
|
|
{
|
|
name: 'Mongolia',
|
|
code: 'mn'
|
|
},
|
|
{
|
|
name: 'Montenegro',
|
|
code: 'me'
|
|
},
|
|
{
|
|
name: 'Montserrat',
|
|
code: 'ms'
|
|
},
|
|
{
|
|
name: 'Morocco',
|
|
code: 'ma'
|
|
},
|
|
{
|
|
name: 'Mozambique',
|
|
code: 'mz'
|
|
},
|
|
{
|
|
name: 'Myanmar',
|
|
code: 'mm'
|
|
},
|
|
{
|
|
name: 'Namibia',
|
|
code: 'na'
|
|
},
|
|
{
|
|
name: 'Nauru',
|
|
code: 'nr'
|
|
},
|
|
{
|
|
name: 'Nepal',
|
|
code: 'np'
|
|
},
|
|
{
|
|
name: 'Netherlands',
|
|
code: 'nl'
|
|
},
|
|
{
|
|
name: 'Netherlands Antilles',
|
|
code: 'an'
|
|
},
|
|
{
|
|
name: 'New Caledonia',
|
|
code: 'nc'
|
|
},
|
|
{
|
|
name: 'New Zealand',
|
|
code: 'nz'
|
|
},
|
|
{
|
|
name: 'Nicaragua',
|
|
code: 'ni'
|
|
},
|
|
{
|
|
name: 'Niger',
|
|
code: 'ne'
|
|
},
|
|
{
|
|
name: 'Nigeria',
|
|
code: 'ng'
|
|
},
|
|
{
|
|
name: 'Niue',
|
|
code: 'nu'
|
|
},
|
|
{
|
|
name: 'Norfolk Island',
|
|
code: 'nf'
|
|
},
|
|
{
|
|
name: 'Macedonia, The Former Yugoslav Republic of',
|
|
display: 'North Macedonia',
|
|
code: 'mk'
|
|
},
|
|
{
|
|
name: 'Northern Mariana Islands',
|
|
code: 'mp'
|
|
},
|
|
{
|
|
name: 'Norway',
|
|
code: 'no'
|
|
},
|
|
{
|
|
name: 'Oman',
|
|
code: 'om'
|
|
},
|
|
{
|
|
name: 'Pakistan',
|
|
code: 'pk'
|
|
},
|
|
{
|
|
name: 'Palau',
|
|
code: 'pw'
|
|
},
|
|
{
|
|
name: 'Palestine, State of',
|
|
code: 'ps'
|
|
},
|
|
{
|
|
name: 'Panama',
|
|
code: 'pa'
|
|
},
|
|
{
|
|
name: 'Papua New Guinea',
|
|
code: 'pg'
|
|
},
|
|
{
|
|
name: 'Paraguay',
|
|
code: 'py'
|
|
},
|
|
{
|
|
name: 'Peru',
|
|
code: 'pe'
|
|
},
|
|
{
|
|
name: 'Philippines',
|
|
code: 'ph'
|
|
},
|
|
{
|
|
name: 'Pitcairn',
|
|
code: 'pn'
|
|
},
|
|
{
|
|
name: 'Poland',
|
|
code: 'pl'
|
|
},
|
|
{
|
|
name: 'Portugal',
|
|
code: 'pt'
|
|
},
|
|
{
|
|
name: 'Puerto Rico',
|
|
code: 'pr'
|
|
},
|
|
{
|
|
name: 'Qatar',
|
|
code: 'qa'
|
|
},
|
|
{
|
|
name: 'Reunion',
|
|
code: 're'
|
|
},
|
|
{
|
|
name: 'Romania',
|
|
code: 'ro'
|
|
},
|
|
{
|
|
name: 'Russia',
|
|
code: 'ru'
|
|
},
|
|
{
|
|
name: 'Rwanda',
|
|
code: 'rw'
|
|
},
|
|
{
|
|
name: 'Saint Barthelemy',
|
|
display: 'Saint Barthélemy',
|
|
code: 'bl'
|
|
},
|
|
{
|
|
name: 'Saint Helena',
|
|
display: 'Saint Helena, Ascension and Tristan Da Cunha',
|
|
code: 'sh'
|
|
},
|
|
{
|
|
name: 'Saint Kitts and Nevis',
|
|
code: 'kn'
|
|
},
|
|
{
|
|
name: 'Saint Lucia',
|
|
code: 'lc'
|
|
},
|
|
{
|
|
name: 'Saint Martin',
|
|
code: 'mf'
|
|
},
|
|
{
|
|
name: 'Saint Pierre and Miquelon',
|
|
code: 'pm'
|
|
},
|
|
{
|
|
name: 'Saint Vincent and the Grenadines',
|
|
code: 'vc'
|
|
},
|
|
{
|
|
name: 'Samoa',
|
|
code: 'ws'
|
|
},
|
|
{
|
|
name: 'San Marino',
|
|
code: 'sm'
|
|
},
|
|
{
|
|
name: 'Sao Tome and Principe',
|
|
code: 'st'
|
|
},
|
|
{
|
|
name: 'Saudi Arabia',
|
|
code: 'sa'
|
|
},
|
|
{
|
|
name: 'Senegal',
|
|
code: 'sn'
|
|
},
|
|
{
|
|
name: 'Serbia',
|
|
code: 'rs'
|
|
},
|
|
{
|
|
name: 'Seychelles',
|
|
code: 'sc'
|
|
},
|
|
{
|
|
name: 'Sierra Leone',
|
|
code: 'sl'
|
|
},
|
|
{
|
|
name: 'Singapore',
|
|
code: 'sg'
|
|
},
|
|
{
|
|
name: 'Sint Maarten',
|
|
code: 'sx'
|
|
},
|
|
{
|
|
name: 'Slovakia',
|
|
code: 'sk'
|
|
},
|
|
{
|
|
name: 'Slovenia',
|
|
code: 'si'
|
|
},
|
|
{
|
|
name: 'Solomon Islands',
|
|
code: 'sb'
|
|
},
|
|
{
|
|
name: 'Somalia',
|
|
code: 'so'
|
|
},
|
|
{
|
|
name: 'South Africa',
|
|
code: 'za'
|
|
},
|
|
{
|
|
name: 'South Georgia and the South Sandwich Islands',
|
|
code: 'gs'
|
|
},
|
|
{
|
|
name: 'South Sudan',
|
|
code: 'ss'
|
|
},
|
|
{
|
|
name: 'Spain',
|
|
code: 'es'
|
|
},
|
|
{
|
|
name: 'Sri Lanka',
|
|
code: 'lk'
|
|
},
|
|
{
|
|
name: 'Sudan',
|
|
code: 'sd'
|
|
},
|
|
{
|
|
name: 'Suriname',
|
|
code: 'sr'
|
|
},
|
|
{
|
|
name: 'Svalbard and Jan Mayen',
|
|
code: 'sj'
|
|
},
|
|
{
|
|
name: 'Sweden',
|
|
code: 'se'
|
|
},
|
|
{
|
|
name: 'Switzerland',
|
|
code: 'ch'
|
|
},
|
|
{
|
|
name: 'Syria',
|
|
code: 'sy'
|
|
},
|
|
{
|
|
name: 'Taiwan',
|
|
code: 'tw'
|
|
},
|
|
{
|
|
name: 'Tajikistan',
|
|
code: 'tj'
|
|
},
|
|
{
|
|
name: 'Tanzania',
|
|
code: 'tz'
|
|
},
|
|
{
|
|
name: 'Thailand',
|
|
code: 'th'
|
|
},
|
|
{
|
|
name: 'Timor-Leste',
|
|
code: 'tl'
|
|
},
|
|
{
|
|
name: 'Togo',
|
|
code: 'tg'
|
|
},
|
|
{
|
|
name: 'Tokelau',
|
|
code: 'tk'
|
|
},
|
|
{
|
|
name: 'Tonga',
|
|
code: 'to'
|
|
},
|
|
{
|
|
name: 'Trinidad and Tobago',
|
|
code: 'tt'
|
|
},
|
|
{
|
|
name: 'Tunisia',
|
|
code: 'tn'
|
|
},
|
|
{
|
|
name: 'Turkey',
|
|
code: 'tr'
|
|
},
|
|
{
|
|
name: 'Turkmenistan',
|
|
code: 'tm'
|
|
},
|
|
{
|
|
name: 'Turks and Caicos Islands',
|
|
code: 'tc'
|
|
},
|
|
{
|
|
name: 'Tuvalu',
|
|
code: 'tv'
|
|
},
|
|
{
|
|
name: 'Uganda',
|
|
code: 'ug'
|
|
},
|
|
{
|
|
name: 'Ukraine',
|
|
code: 'ua'
|
|
},
|
|
{
|
|
name: 'United Arab Emirates',
|
|
code: 'ae'
|
|
},
|
|
{
|
|
name: 'United Kingdom',
|
|
code: 'gb'
|
|
},
|
|
{
|
|
name: 'United States',
|
|
display: 'United States of America',
|
|
code: 'us'
|
|
},
|
|
{
|
|
name: 'United States Minor Outlying Islands',
|
|
code: 'um'
|
|
},
|
|
{
|
|
name: 'Uruguay',
|
|
code: 'uy'
|
|
},
|
|
{
|
|
name: 'Uzbekistan',
|
|
code: 'uz'
|
|
},
|
|
{
|
|
name: 'Vanuatu',
|
|
code: 'vu'
|
|
},
|
|
{
|
|
name: 'Vatican City',
|
|
code: 'va'
|
|
},
|
|
{
|
|
name: 'Venezuela',
|
|
code: 've'
|
|
},
|
|
{
|
|
name: 'Vietnam',
|
|
code: 'vn'
|
|
},
|
|
{
|
|
name: 'Virgin Islands, British',
|
|
code: 'vg'
|
|
},
|
|
{
|
|
name: 'Virgin Islands, U.S.',
|
|
code: 'vi'
|
|
},
|
|
{
|
|
name: 'Wallis and Futuna',
|
|
code: 'wf'
|
|
},
|
|
{
|
|
name: 'Western Sahara',
|
|
code: 'eh'
|
|
},
|
|
{
|
|
name: 'Yemen',
|
|
code: 'ye'
|
|
},
|
|
{
|
|
name: 'Zambia',
|
|
code: 'zm'
|
|
},
|
|
{
|
|
name: 'Zimbabwe',
|
|
code: 'zw'
|
|
}
|
|
];
|
|
|
|
const countryOptions = module.exports.countryOptions = (startingCountryInfo, valueField) => (
|
|
startingCountryInfo.map(thisCountryInfo => (
|
|
{
|
|
value: thisCountryInfo[valueField],
|
|
label: thisCountryInfo.display ? thisCountryInfo.display : thisCountryInfo.name
|
|
}
|
|
))
|
|
);
|
|
|
|
module.exports.lookupCountryInfo = countryCode => (
|
|
countryInfo.find(country => country.code === countryCode)
|
|
);
|
|
|
|
/**
|
|
* Function dupeCommonCountries():
|
|
* takes startingCountryInfo, and duplicates any number of its country labels
|
|
* at the beginning of the array.
|
|
* E.g., to have "Germany" and "Italy" at the top of the list, use:
|
|
* dupeCommonCountries(['de', 'it')
|
|
* @param {array} startingCountryInfo array of country objects
|
|
* like [{value: 'ca', label: 'Canada'}, ...]
|
|
* @param {array} commonCountryCodes array of country codes we should duplicate
|
|
* @returns {array} revised array of country objects, with duplicates inserted at beginning
|
|
*/
|
|
const dupeCommonCountries = module.exports.dupeCommonCountries = (startingCountryInfo, commonCountryCodes) => {
|
|
const commonCountriesInfo = commonCountryCodes.map(commonCountryCode => (
|
|
startingCountryInfo.find(country => country.code === commonCountryCode.toLowerCase())
|
|
));
|
|
return [...commonCountriesInfo, ...startingCountryInfo];
|
|
};
|
|
|
|
/*
|
|
* registrationCountryNameOptions is the result of taking the standard countryInfo,
|
|
* setting a 'value' key and a 'label' key both to the country data's 'name' value,
|
|
* but using the 'display' value for 'label' instead of 'name' if 'display' exists;
|
|
* then duplicating 'United States of America' and 'United Kingdom' at the top of the list.
|
|
* The result is an array like:
|
|
* [
|
|
* {value: 'United States', label: 'United States of America'},
|
|
* {value: 'United Kingdom', label: 'United Kingdom'},
|
|
* {value: 'Afghanistan', label: 'Afghanistan'},
|
|
* ...
|
|
* {value: 'United Arab Emirates', label: 'United Arab Emirates'},
|
|
* {value: 'United States', label: 'United States of America'},
|
|
* {value: 'United Kingdom', label: 'United Kingdom'},
|
|
* {value: 'Uzbekistan', label: 'Uzbekistan'},
|
|
* ...
|
|
* {value: 'Zimbabwe', label: 'Zimbabwe'}
|
|
* ]
|
|
*/
|
|
module.exports.registrationCountryNameOptions =
|
|
countryOptions(dupeCommonCountries(countryInfo, ['us', 'gb']), 'name');
|
|
// use country code for value, instead of country name:
|
|
module.exports.registrationCountryCodeOptions =
|
|
countryOptions(dupeCommonCountries(countryInfo, ['us', 'gb']), 'code');
|
|
|
|
/* subdivisionOptions uses iso-3166 data to produce an array like:
|
|
* [
|
|
* {'ad':
|
|
* [
|
|
* {'value': 'ad-07', 'label': 'Andorra la Vella', 'type': 'Parish'},
|
|
* {'value': 'ad-02', 'label': 'Canillo', 'type': 'Parish'},
|
|
* ...
|
|
* ]
|
|
* },
|
|
* ...
|
|
* {'zw':
|
|
* [
|
|
* {'value': 'zw-bu', 'label': 'Bulawayo', 'type': 'Province'},
|
|
* {'value': 'zw-ma', 'label': 'Manicaland', 'type': 'Province'},
|
|
* ...
|
|
* ]
|
|
* },
|
|
* ...
|
|
* ]
|
|
*/
|
|
module.exports.subdivisionOptions = Object.keys(isoCountryRawData).reduce((subByCountry, code) => {
|
|
subByCountry[code.toLowerCase()] = Object.keys(isoCountryRawData[code].sub).map(subCode => ({
|
|
value: subCode.toLowerCase(),
|
|
label: isoCountryRawData[code].sub[subCode].name,
|
|
type: isoCountryRawData[code].sub[subCode].type
|
|
}))
|
|
.sort((a, b) => {
|
|
if (a.label < b.label) {
|
|
return -1;
|
|
}
|
|
return 1;
|
|
});
|
|
return subByCountry;
|
|
}, {});
|