{"version":3,"sources":["../src/data.ts","../src/utils.ts"],"names":["countryPhoneCodesMap","reversePhoneCodeMap","acc","countryCode","phoneCode","normalizePhoneCode","code","normalized","hasPlus","getPhoneCode","upperCountryCode","getCountriesByPhoneCode","getAllPhoneCodes","isValidPhoneCode"],"mappings":"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","file":"index.cjs","sourcesContent":["import { CountryPhoneCodeMapData, InternationalPhoneCode, CountryCodeA2, ReversePhoneCodeMap } from './types';\n\n/**\n * Map of ISO 3166-1 alpha-2 country codes to their international phone codes.\n * This dataset is based on ITU-T E.164 assignments.\n */\nexport const countryPhoneCodesMap: Readonly<CountryPhoneCodeMapData> = {\n  // North America (NANP countries)\n  \"US\": \"+1\", // United States\n  \"CA\": \"+1\", // Canada\n  \"AG\": \"+1\", // Antigua and Barbuda \n  \"AI\": \"+1\", // Anguilla\n  \"AS\": \"+1\", // American Samoa\n  \"BB\": \"+1\", // Barbados\n  \"BM\": \"+1\", // Bermuda\n  \"BS\": \"+1\", // Bahamas\n  \"DM\": \"+1\", // Dominica\n  \"DO\": \"+1\", // Dominican Republic\n  \"GD\": \"+1\", // Grenada\n  \"GU\": \"+1\", // Guam\n  \"JM\": \"+1\", // Jamaica\n  \"KN\": \"+1\", // Saint Kitts and Nevis\n  \"KY\": \"+1\", // Cayman Islands\n  \"LC\": \"+1\", // Saint Lucia\n  \"MP\": \"+1\", // Northern Mariana Islands\n  \"MS\": \"+1\", // Montserrat\n  \"PR\": \"+1\", // Puerto Rico\n  \"SX\": \"+1\", // Sint Maarten\n  \"TC\": \"+1\", // Turks and Caicos Islands\n  \"TT\": \"+1\", // Trinidad and Tobago\n  \"VC\": \"+1\", // Saint Vincent and the Grenadines\n  \"VG\": \"+1\", // British Virgin Islands\n  \"VI\": \"+1\", // U.S. Virgin Islands\n\n  // Europe\n  \"AL\": \"+355\", // Albania\n  \"AD\": \"+376\", // Andorra\n  \"AT\": \"+43\", // Austria\n  \"BY\": \"+375\", // Belarus\n  \"BE\": \"+32\", // Belgium\n  \"BA\": \"+387\", // Bosnia and Herzegovina\n  \"BG\": \"+359\", // Bulgaria\n  \"HR\": \"+385\", // Croatia\n  \"CY\": \"+357\", // Cyprus\n  \"CZ\": \"+420\", // Czech Republic\n  \"DK\": \"+45\", // Denmark\n  \"EE\": \"+372\", // Estonia\n  \"FO\": \"+298\", // Faroe Islands\n  \"FI\": \"+358\", // Finland\n  \"FR\": \"+33\", // France\n  \"DE\": \"+49\", // Germany\n  \"GI\": \"+350\", // Gibraltar\n  \"GR\": \"+30\", // Greece\n  \"HU\": \"+36\", // Hungary\n  \"IS\": \"+354\", // Iceland\n  \"IE\": \"+353\", // Ireland\n  \"IM\": \"+44\", // Isle of Man\n  \"IT\": \"+39\", // Italy\n  \"LV\": \"+371\", // Latvia\n  \"LI\": \"+423\", // Liechtenstein\n  \"LT\": \"+370\", // Lithuania\n  \"LU\": \"+352\", // Luxembourg\n  \"MT\": \"+356\", // Malta\n  \"MD\": \"+373\", // Moldova\n  \"MC\": \"+377\", // Monaco\n  \"ME\": \"+382\", // Montenegro\n  \"NL\": \"+31\", // Netherlands\n  \"MK\": \"+389\", // North Macedonia\n  \"NO\": \"+47\", // Norway\n  \"PL\": \"+48\", // Poland\n  \"PT\": \"+351\", // Portugal\n  \"RO\": \"+40\", // Romania\n  \"RU\": \"+7\", // Russia\n  \"SM\": \"+378\", // San Marino\n  \"RS\": \"+381\", // Serbia\n  \"SK\": \"+421\", // Slovakia\n  \"SI\": \"+386\", // Slovenia\n  \"ES\": \"+34\", // Spain\n  \"SE\": \"+46\", // Sweden\n  \"CH\": \"+41\", // Switzerland\n  \"UA\": \"+380\", // Ukraine\n  \"GB\": \"+44\", // United Kingdom\n  \"VA\": \"+39\", // Vatican City (Holy See)\n\n  // Asia\n  \"AF\": \"+93\", // Afghanistan\n  \"AM\": \"+374\", // Armenia\n  \"AZ\": \"+994\", // Azerbaijan\n  \"BH\": \"+973\", // Bahrain\n  \"BD\": \"+880\", // Bangladesh\n  \"BT\": \"+975\", // Bhutan\n  \"BN\": \"+673\", // Brunei\n  \"KH\": \"+855\", // Cambodia\n  \"CN\": \"+86\", // China\n  \"GE\": \"+995\", // Georgia\n  \"IN\": \"+91\", // India\n  \"ID\": \"+62\", // Indonesia\n  \"IR\": \"+98\", // Iran\n  \"IQ\": \"+964\", // Iraq\n  \"IL\": \"+972\", // Israel\n  \"JP\": \"+81\", // Japan\n  \"JO\": \"+962\", // Jordan\n  \"KZ\": \"+7\", // Kazakhstan\n  \"KW\": \"+965\", // Kuwait\n  \"KG\": \"+996\", // Kyrgyzstan\n  \"LA\": \"+856\", // Laos\n  \"LB\": \"+961\", // Lebanon\n  \"MY\": \"+60\", // Malaysia\n  \"MV\": \"+960\", // Maldives\n  \"MN\": \"+976\", // Mongolia\n  \"MM\": \"+95\", // Myanmar (Burma)\n  \"NP\": \"+977\", // Nepal\n  \"KP\": \"+850\", // North Korea\n  \"OM\": \"+968\", // Oman\n  \"PK\": \"+92\", // Pakistan\n  \"PS\": \"+970\", // Palestine\n  \"PH\": \"+63\", // Philippines\n  \"QA\": \"+974\", // Qatar\n  \"SA\": \"+966\", // Saudi Arabia\n  \"SG\": \"+65\", // Singapore\n  \"KR\": \"+82\", // South Korea\n  \"LK\": \"+94\", // Sri Lanka\n  \"SY\": \"+963\", // Syria\n  \"TW\": \"+886\", // Taiwan\n  \"TJ\": \"+992\", // Tajikistan\n  \"TH\": \"+66\", // Thailand\n  \"TR\": \"+90\", // Turkey\n  \"TM\": \"+993\", // Turkmenistan\n  \"AE\": \"+971\", // United Arab Emirates\n  \"UZ\": \"+998\", // Uzbekistan\n  \"VN\": \"+84\", // Vietnam\n  \"YE\": \"+967\", // Yemen\n\n  // Africa\n  \"DZ\": \"+213\", // Algeria\n  \"AO\": \"+244\", // Angola\n  \"BJ\": \"+229\", // Benin\n  \"BW\": \"+267\", // Botswana\n  \"BF\": \"+226\", // Burkina Faso\n  \"BI\": \"+257\", // Burundi\n  \"CM\": \"+237\", // Cameroon\n  \"CV\": \"+238\", // Cape Verde\n  \"CF\": \"+236\", // Central African Republic\n  \"TD\": \"+235\", // Chad\n  \"KM\": \"+269\", // Comoros\n  \"CD\": \"+243\", // Democratic Republic of the Congo\n  \"DJ\": \"+253\", // Djibouti\n  \"EG\": \"+20\", // Egypt\n  \"GQ\": \"+240\", // Equatorial Guinea\n  \"ER\": \"+291\", // Eritrea\n  \"SZ\": \"+268\", // Eswatini (Swaziland)\n  \"ET\": \"+251\", // Ethiopia\n  \"GA\": \"+241\", // Gabon\n  \"GM\": \"+220\", // Gambia\n  \"GH\": \"+233\", // Ghana\n  \"GN\": \"+224\", // Guinea\n  \"GW\": \"+245\", // Guinea-Bissau\n  \"CI\": \"+225\", // Ivory Coast\n  \"KE\": \"+254\", // Kenya\n  \"LS\": \"+266\", // Lesotho\n  \"LR\": \"+231\", // Liberia\n  \"LY\": \"+218\", // Libya\n  \"MG\": \"+261\", // Madagascar\n  \"MW\": \"+265\", // Malawi\n  \"ML\": \"+223\", // Mali\n  \"MR\": \"+222\", // Mauritania\n  \"MU\": \"+230\", // Mauritius\n  \"MA\": \"+212\", // Morocco\n  \"MZ\": \"+258\", // Mozambique\n  \"NA\": \"+264\", // Namibia\n  \"NE\": \"+227\", // Niger\n  \"NG\": \"+234\", // Nigeria\n  \"CG\": \"+242\", // Republic of the Congo\n  \"RW\": \"+250\", // Rwanda\n  \"ST\": \"+239\", // São Tomé and Príncipe\n  \"SN\": \"+221\", // Senegal\n  \"SC\": \"+248\", // Seychelles\n  \"SL\": \"+232\", // Sierra Leone\n  \"SO\": \"+252\", // Somalia\n  \"ZA\": \"+27\", // South Africa\n  \"SS\": \"+211\", // South Sudan\n  \"SD\": \"+249\", // Sudan\n  \"TZ\": \"+255\", // Tanzania\n  \"TG\": \"+228\", // Togo\n  \"TN\": \"+216\", // Tunisia\n  \"UG\": \"+256\", // Uganda\n  \"EH\": \"+212\", // Western Sahara\n  \"ZM\": \"+260\", // Zambia\n  \"ZW\": \"+263\", // Zimbabwe\n\n  // South America\n  \"AR\": \"+54\", // Argentina\n  \"BO\": \"+591\", // Bolivia\n  \"BR\": \"+55\", // Brazil\n  \"CL\": \"+56\", // Chile\n  \"CO\": \"+57\", // Colombia\n  \"EC\": \"+593\", // Ecuador\n  \"FK\": \"+500\", // Falkland Islands\n  \"GF\": \"+594\", // French Guiana\n  \"GY\": \"+592\", // Guyana\n  \"PY\": \"+595\", // Paraguay\n  \"PE\": \"+51\", // Peru\n  \"SR\": \"+597\", // Suriname\n  \"UY\": \"+598\", // Uruguay\n  \"VE\": \"+58\", // Venezuela\n\n  // Oceania\n  \"AU\": \"+61\", // Australia\n  \"CX\": \"+61\", // Christmas Island\n  \"CC\": \"+61\", // Cocos Islands\n  \"CK\": \"+682\", // Cook Islands\n  \"FJ\": \"+679\", // Fiji\n  \"PF\": \"+689\", // French Polynesia\n  \"KI\": \"+686\", // Kiribati\n  \"MH\": \"+692\", // Marshall Islands\n  \"FM\": \"+691\", // Micronesia\n  \"NR\": \"+674\", // Nauru\n  \"NC\": \"+687\", // New Caledonia\n  \"NZ\": \"+64\", // New Zealand\n  \"NU\": \"+683\", // Niue\n  \"NF\": \"+672\", // Norfolk Island\n  \"PW\": \"+680\", // Palau\n  \"PG\": \"+675\", // Papua New Guinea\n  \"WS\": \"+685\", // Samoa\n  \"SB\": \"+677\", // Solomon Islands\n  \"TL\": \"+670\", // Timor-Leste\n  \"TO\": \"+676\", // Tonga\n  \"TV\": \"+688\", // Tuvalu\n  \"VU\": \"+678\", // Vanuatu\n  \"WF\": \"+681\", // Wallis and Futuna\n};\n\n/**\n * Internal reverse map for finding countries by phone code.\n * This is computed once at initialization for efficiency.\n */\nexport const reversePhoneCodeMap: ReversePhoneCodeMap = Object.entries(countryPhoneCodesMap).reduce(\n  (acc, [countryCode, phoneCode]) => {\n    if (!acc[phoneCode]) {\n      acc[phoneCode] = [];\n    }\n    acc[phoneCode].push(countryCode as CountryCodeA2);\n    return acc;\n  },\n  {} as Record<InternationalPhoneCode, CountryCodeA2[]>\n); ","import { CountryCodeA2, InternationalPhoneCode } from './types';\nimport { countryPhoneCodesMap, reversePhoneCodeMap } from './data';\n\n/**\n * Normalizes a phone code to ensure it has the proper format.\n * \n * This function attempts to clean the input by removing common non-digit\n * characters (spaces, hyphens, parentheses), ensuring it starts with a '+',\n * and contains only digits after the '+'.\n * \n * @param code The phone code string to normalize\n * @returns The normalized phone code or undefined if it can't be reasonably normalized\n * \n * @example\n * normalizePhoneCode('1') // returns '+1'\n * normalizePhoneCode('+44') // returns '+44'\n * normalizePhoneCode('(0049) 123') // returns '+49123'\n * normalizePhoneCode('49 123-456') // returns '+49123456'\n * normalizePhoneCode('abc') // returns undefined\n */\nexport function normalizePhoneCode(code: string): InternationalPhoneCode | undefined {\n  if (!code || typeof code !== 'string') {\n    return undefined;\n  }\n\n  // First, remove all non-digit characters, except for a leading '+'\n  let normalized = code.trim();\n  const hasPlus = normalized.startsWith('+');\n  \n  // Remove all non-digit characters\n  normalized = normalized.replace(/[^\\d+]/g, '');\n  \n  // Check for international prefix '00' and remove it\n  if (normalized.startsWith('00')) {\n    normalized = normalized.substring(2);\n  } else if (!hasPlus && normalized.startsWith('0')) {\n    // Remove leading zeros if there was no '+' initially\n    normalized = normalized.replace(/^0+/, '');\n  }\n  \n  // Add '+' if not present\n  if (!normalized.startsWith('+')) {\n    normalized = '+' + normalized;\n  }\n  \n  // Check if we have at least one digit after the '+'\n  if (normalized.length < 2 || normalized === '+') {\n    return undefined;\n  }\n  \n  return normalized;\n}\n\n/**\n * Gets the international phone code for a given country code.\n * \n * @param countryCode ISO 3166-1 alpha-2 country code (case-insensitive)\n * @returns The international phone code or undefined if the country code is not found\n * \n * @example\n * getPhoneCode('US') // returns '+1'\n * getPhoneCode('in') // returns '+91'\n * getPhoneCode('XX') // returns undefined\n */\nexport function getPhoneCode(countryCode: string): InternationalPhoneCode | undefined {\n  if (!countryCode || typeof countryCode !== 'string') {\n    return undefined;\n  }\n  \n  const upperCountryCode = countryCode.toUpperCase();\n  return countryPhoneCodesMap[upperCountryCode];\n}\n\n/**\n * Gets all countries that use a specific phone code.\n * \n * @param phoneCode The international phone code to look up\n * @returns An array of country codes that use this phone code, or an empty array if none\n * \n * @example\n * getCountriesByPhoneCode('+1') // returns ['US', 'CA', 'AG', ...]\n * getCountriesByPhoneCode('44') // returns ['GB', 'IM']\n * getCountriesByPhoneCode('+999') // returns []\n */\nexport function getCountriesByPhoneCode(phoneCode: string): CountryCodeA2[] {\n  if (!phoneCode || typeof phoneCode !== 'string') {\n    return [];\n  }\n  \n  const normalized = normalizePhoneCode(phoneCode);\n  if (!normalized) {\n    return [];\n  }\n  \n  return reversePhoneCodeMap[normalized] || [];\n}\n\n/**\n * Gets an array of all unique international phone codes.\n * \n * @returns Array of all unique phone codes in the dataset\n * \n * @example\n * getAllPhoneCodes() // returns ['+1', '+7', '+20', '+27', ...]\n */\nexport function getAllPhoneCodes(): InternationalPhoneCode[] {\n  return Object.keys(reversePhoneCodeMap);\n}\n\n/**\n * Checks if the provided string is a valid international phone code.\n * \n * @param phoneCode The phone code to validate\n * @returns True if the phone code is valid, false otherwise\n * \n * @example\n * isValidPhoneCode('+1') // returns true\n * isValidPhoneCode('44') // returns true (normalized to '+44')\n * isValidPhoneCode('+999') // returns false\n */\nexport function isValidPhoneCode(phoneCode: string): boolean {\n  if (!phoneCode || typeof phoneCode !== 'string') {\n    return false;\n  }\n  \n  const normalized = normalizePhoneCode(phoneCode);\n  if (!normalized) {\n    return false;\n  }\n  \n  return Object.prototype.hasOwnProperty.call(reversePhoneCodeMap, normalized);\n} "]}