{"version":3,"sources":["../source/metadata.js"],"names":["V2","V3","V4","DEFAULT_EXT_PREFIX","Metadata","metadata","validateMetadata","setVersion","call","Object","keys","countries","filter","_","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","undefined","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","length","selectNumberingPlan","hasCountry","Error","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","type","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","test","is_object","join","type_of","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","version","v4"],"mappings":"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","sourcesContent":["import compare from './tools/semver-compare'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\tthis.selectNumberingPlan(null, callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// Previously, `FIRST_GROUP_ONLY_PREFIX_PATTERN` check was instead done via:\r\n\t\t\t// // Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t// this.nationalPrefixFormattingRule() !== '$1' &&\r\n\t\t\t// // Check that national prefix formatting rule actually has national prefix digit(s).\r\n\t\t\t// // Filters out cases like \"($1)\".\r\n\t\t\t// // Is used in place of `libphonenumber`'s `FIRST_GROUP_ONLY_PREFIX_PATTERN_` regexp.\r\n\t\t\t// /\\d/.test(this.nationalPrefixFormattingRule().replace('$1', ''))\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tthis.v1 = !metadata.version\r\n\tthis.v2 = metadata.version !== undefined && compare(metadata.version, V3) === -1\r\n\tthis.v3 = metadata.version !== undefined && compare(metadata.version, V4) === -1\r\n\tthis.v4 = metadata.version !== undefined // && compare(metadata.version, V5) === -1\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }"],"file":"metadata.js"}