You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					679 lines
				
				21 KiB
			
		
		
			
		
	
	
					679 lines
				
				21 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports["default"] = void 0;
							 | 
						||
| 
								 | 
							
								exports.getCountryCallingCode = getCountryCallingCode;
							 | 
						||
| 
								 | 
							
								exports.getExtPrefix = getExtPrefix;
							 | 
						||
| 
								 | 
							
								exports.isSupportedCountry = isSupportedCountry;
							 | 
						||
| 
								 | 
							
								exports.validateMetadata = validateMetadata;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _semverCompare = _interopRequireDefault(require("./tools/semver-compare.js"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Added "possibleLengths" and renamed
							 | 
						||
| 
								 | 
							
								// "country_phone_code_to_countries" to "country_calling_codes".
							 | 
						||
| 
								 | 
							
								var V2 = '1.0.18'; // Added "idd_prefix" and "default_idd_prefix".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var V3 = '1.2.0'; // Moved `001` country code to "nonGeographic" section of metadata.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var V4 = '1.7.35';
							 | 
						||
| 
								 | 
							
								var DEFAULT_EXT_PREFIX = ' ext. ';
							 | 
						||
| 
								 | 
							
								var CALLING_CODE_REG_EXP = /^\d+$/;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Metadata = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								  function Metadata(metadata) {
							 | 
						||
| 
								 | 
							
								    _classCallCheck(this, Metadata);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    validateMetadata(metadata);
							 | 
						||
| 
								 | 
							
								    this.metadata = metadata;
							 | 
						||
| 
								 | 
							
								    setVersion.call(this, metadata);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _createClass(Metadata, [{
							 | 
						||
| 
								 | 
							
								    key: "getCountries",
							 | 
						||
| 
								 | 
							
								    value: function getCountries() {
							 | 
						||
| 
								 | 
							
								      return Object.keys(this.metadata.countries).filter(function (_) {
							 | 
						||
| 
								 | 
							
								        return _ !== '001';
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "getCountryMetadata",
							 | 
						||
| 
								 | 
							
								    value: function getCountryMetadata(countryCode) {
							 | 
						||
| 
								 | 
							
								      return this.metadata.countries[countryCode];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nonGeographic",
							 | 
						||
| 
								 | 
							
								    value: function nonGeographic() {
							 | 
						||
| 
								 | 
							
								      if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.
							 | 
						||
| 
								 | 
							
								      // It's present in metadata generated from `1.7.35` to `1.7.37`.
							 | 
						||
| 
								 | 
							
								      // The test case could be found by searching for "nonGeographical".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return this.metadata.nonGeographic || this.metadata.nonGeographical;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "hasCountry",
							 | 
						||
| 
								 | 
							
								    value: function hasCountry(country) {
							 | 
						||
| 
								 | 
							
								      return this.getCountryMetadata(country) !== undefined;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "hasCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function hasCallingCode(callingCode) {
							 | 
						||
| 
								 | 
							
								      if (this.getCountryCodesForCallingCode(callingCode)) {
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (this.nonGeographic()) {
							 | 
						||
| 
								 | 
							
								        if (this.nonGeographic()[callingCode]) {
							 | 
						||
| 
								 | 
							
								          return true;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        // A hacky workaround for old custom metadata (generated before V4).
							 | 
						||
| 
								 | 
							
								        var countryCodes = this.countryCallingCodes()[callingCode];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {
							 | 
						||
| 
								 | 
							
								          return true;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "isNonGeographicCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function isNonGeographicCallingCode(callingCode) {
							 | 
						||
| 
								 | 
							
								      if (this.nonGeographic()) {
							 | 
						||
| 
								 | 
							
								        return this.nonGeographic()[callingCode] ? true : false;
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        return this.getCountryCodesForCallingCode(callingCode) ? false : true;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "country",
							 | 
						||
| 
								 | 
							
								    value: function country(countryCode) {
							 | 
						||
| 
								 | 
							
								      return this.selectNumberingPlan(countryCode);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "selectNumberingPlan",
							 | 
						||
| 
								 | 
							
								    value: function selectNumberingPlan(countryCode, callingCode) {
							 | 
						||
| 
								 | 
							
								      // Supports just passing `callingCode` as the first argument.
							 | 
						||
| 
								 | 
							
								      if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {
							 | 
						||
| 
								 | 
							
								        callingCode = countryCode;
							 | 
						||
| 
								 | 
							
								        countryCode = null;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (countryCode && countryCode !== '001') {
							 | 
						||
| 
								 | 
							
								        if (!this.hasCountry(countryCode)) {
							 | 
						||
| 
								 | 
							
								          throw new Error("Unknown country: ".concat(countryCode));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);
							 | 
						||
| 
								 | 
							
								      } else if (callingCode) {
							 | 
						||
| 
								 | 
							
								        if (!this.hasCallingCode(callingCode)) {
							 | 
						||
| 
								 | 
							
								          throw new Error("Unknown calling code: ".concat(callingCode));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        this.numberingPlan = undefined;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "getCountryCodesForCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function getCountryCodesForCallingCode(callingCode) {
							 | 
						||
| 
								 | 
							
								      var countryCodes = this.countryCallingCodes()[callingCode];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (countryCodes) {
							 | 
						||
| 
								 | 
							
								        // Metadata before V4 included "non-geographic entity" calling codes
							 | 
						||
| 
								 | 
							
								        // inside `country_calling_codes` (for example, `"881":["001"]`).
							 | 
						||
| 
								 | 
							
								        // Now the semantics of `country_calling_codes` has changed:
							 | 
						||
| 
								 | 
							
								        // it's specifically for "countries" now.
							 | 
						||
| 
								 | 
							
								        // Older versions of custom metadata will simply skip parsing
							 | 
						||
| 
								 | 
							
								        // "non-geographic entity" phone numbers with new versions
							 | 
						||
| 
								 | 
							
								        // of this library: it's not considered a bug,
							 | 
						||
| 
								 | 
							
								        // because such numbers are extremely rare,
							 | 
						||
| 
								 | 
							
								        // and developers extremely rarely use custom metadata.
							 | 
						||
| 
								 | 
							
								        if (countryCodes.length === 1 && countryCodes[0].length === 3) {
							 | 
						||
| 
								 | 
							
								          return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return countryCodes;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "getCountryCodeForCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function getCountryCodeForCallingCode(callingCode) {
							 | 
						||
| 
								 | 
							
								      var countryCodes = this.getCountryCodesForCallingCode(callingCode);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (countryCodes) {
							 | 
						||
| 
								 | 
							
								        return countryCodes[0];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "getNumberingPlanMetadata",
							 | 
						||
| 
								 | 
							
								    value: function getNumberingPlanMetadata(callingCode) {
							 | 
						||
| 
								 | 
							
								      var countryCode = this.getCountryCodeForCallingCode(callingCode);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (countryCode) {
							 | 
						||
| 
								 | 
							
								        return this.getCountryMetadata(countryCode);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (this.nonGeographic()) {
							 | 
						||
| 
								 | 
							
								        var metadata = this.nonGeographic()[callingCode];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (metadata) {
							 | 
						||
| 
								 | 
							
								          return metadata;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        // A hacky workaround for old custom metadata (generated before V4).
							 | 
						||
| 
								 | 
							
								        // In that metadata, there was no concept of "non-geographic" metadata
							 | 
						||
| 
								 | 
							
								        // so metadata for `001` country code was stored along with other countries.
							 | 
						||
| 
								 | 
							
								        // The test case can be found by searching for:
							 | 
						||
| 
								 | 
							
								        // "should work around `nonGeographic` metadata not existing".
							 | 
						||
| 
								 | 
							
								        var countryCodes = this.countryCallingCodes()[callingCode];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {
							 | 
						||
| 
								 | 
							
								          return this.metadata.countries['001'];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "countryCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function countryCallingCode() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.callingCode();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "IDDPrefix",
							 | 
						||
| 
								 | 
							
								    value: function IDDPrefix() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.IDDPrefix();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "defaultIDDPrefix",
							 | 
						||
| 
								 | 
							
								    value: function defaultIDDPrefix() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.defaultIDDPrefix();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalNumberPattern",
							 | 
						||
| 
								 | 
							
								    value: function nationalNumberPattern() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.nationalNumberPattern();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "possibleLengths",
							 | 
						||
| 
								 | 
							
								    value: function possibleLengths() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.possibleLengths();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "formats",
							 | 
						||
| 
								 | 
							
								    value: function formats() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.formats();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixForParsing",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixForParsing() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.nationalPrefixForParsing();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixTransformRule",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixTransformRule() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.nationalPrefixTransformRule();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "leadingDigits",
							 | 
						||
| 
								 | 
							
								    value: function leadingDigits() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.leadingDigits();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "hasTypes",
							 | 
						||
| 
								 | 
							
								    value: function hasTypes() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.hasTypes();
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "type",
							 | 
						||
| 
								 | 
							
								    value: function type(_type) {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.type(_type);
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "ext",
							 | 
						||
| 
								 | 
							
								    value: function ext() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan.ext();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "countryCallingCodes",
							 | 
						||
| 
								 | 
							
								    value: function countryCallingCodes() {
							 | 
						||
| 
								 | 
							
								      if (this.v1) return this.metadata.country_phone_code_to_countries;
							 | 
						||
| 
								 | 
							
								      return this.metadata.country_calling_codes;
							 | 
						||
| 
								 | 
							
								    } // Deprecated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "chooseCountryByCountryCallingCode",
							 | 
						||
| 
								 | 
							
								    value: function chooseCountryByCountryCallingCode(callingCode) {
							 | 
						||
| 
								 | 
							
								      return this.selectNumberingPlan(callingCode);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "hasSelectedNumberingPlan",
							 | 
						||
| 
								 | 
							
								    value: function hasSelectedNumberingPlan() {
							 | 
						||
| 
								 | 
							
								      return this.numberingPlan !== undefined;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return Metadata;
							 | 
						||
| 
								 | 
							
								}();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports["default"] = Metadata;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var NumberingPlan = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								  function NumberingPlan(metadata, globalMetadataObject) {
							 | 
						||
| 
								 | 
							
								    _classCallCheck(this, NumberingPlan);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    this.globalMetadataObject = globalMetadataObject;
							 | 
						||
| 
								 | 
							
								    this.metadata = metadata;
							 | 
						||
| 
								 | 
							
								    setVersion.call(this, globalMetadataObject.metadata);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _createClass(NumberingPlan, [{
							 | 
						||
| 
								 | 
							
								    key: "callingCode",
							 | 
						||
| 
								 | 
							
								    value: function callingCode() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[0];
							 | 
						||
| 
								 | 
							
								    } // Formatting information for regions which share
							 | 
						||
| 
								 | 
							
								    // a country calling code is contained by only one region
							 | 
						||
| 
								 | 
							
								    // for performance reasons. For example, for NANPA region
							 | 
						||
| 
								 | 
							
								    // ("North American Numbering Plan Administration",
							 | 
						||
| 
								 | 
							
								    //  which includes USA, Canada, Cayman Islands, Bahamas, etc)
							 | 
						||
| 
								 | 
							
								    // it will be contained in the metadata for `US`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "getDefaultCountryMetadataForRegion",
							 | 
						||
| 
								 | 
							
								    value: function getDefaultCountryMetadataForRegion() {
							 | 
						||
| 
								 | 
							
								      return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());
							 | 
						||
| 
								 | 
							
								    } // Is always present.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "IDDPrefix",
							 | 
						||
| 
								 | 
							
								    value: function IDDPrefix() {
							 | 
						||
| 
								 | 
							
								      if (this.v1 || this.v2) return;
							 | 
						||
| 
								 | 
							
								      return this.metadata[1];
							 | 
						||
| 
								 | 
							
								    } // Is only present when a country supports multiple IDD prefixes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "defaultIDDPrefix",
							 | 
						||
| 
								 | 
							
								    value: function defaultIDDPrefix() {
							 | 
						||
| 
								 | 
							
								      if (this.v1 || this.v2) return;
							 | 
						||
| 
								 | 
							
								      return this.metadata[12];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalNumberPattern",
							 | 
						||
| 
								 | 
							
								    value: function nationalNumberPattern() {
							 | 
						||
| 
								 | 
							
								      if (this.v1 || this.v2) return this.metadata[1];
							 | 
						||
| 
								 | 
							
								      return this.metadata[2];
							 | 
						||
| 
								 | 
							
								    } // "possible length" data is always present in Google's metadata.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "possibleLengths",
							 | 
						||
| 
								 | 
							
								    value: function possibleLengths() {
							 | 
						||
| 
								 | 
							
								      if (this.v1) return;
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v2 ? 2 : 3];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_getFormats",
							 | 
						||
| 
								 | 
							
								    value: function _getFormats(metadata) {
							 | 
						||
| 
								 | 
							
								      return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];
							 | 
						||
| 
								 | 
							
								    } // For countries of the same region (e.g. NANPA)
							 | 
						||
| 
								 | 
							
								    // formats are all stored in the "main" country for that region.
							 | 
						||
| 
								 | 
							
								    // E.g. "RU" and "KZ", "US" and "CA".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "formats",
							 | 
						||
| 
								 | 
							
								    value: function formats() {
							 | 
						||
| 
								 | 
							
								      var _this = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];
							 | 
						||
| 
								 | 
							
								      return formats.map(function (_) {
							 | 
						||
| 
								 | 
							
								        return new Format(_, _this);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefix",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefix() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_getNationalPrefixFormattingRule",
							 | 
						||
| 
								 | 
							
								    value: function _getNationalPrefixFormattingRule(metadata) {
							 | 
						||
| 
								 | 
							
								      return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];
							 | 
						||
| 
								 | 
							
								    } // For countries of the same region (e.g. NANPA)
							 | 
						||
| 
								 | 
							
								    // national prefix formatting rule is stored in the "main" country for that region.
							 | 
						||
| 
								 | 
							
								    // E.g. "RU" and "KZ", "US" and "CA".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixFormattingRule",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixFormattingRule() {
							 | 
						||
| 
								 | 
							
								      return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_nationalPrefixForParsing",
							 | 
						||
| 
								 | 
							
								    value: function _nationalPrefixForParsing() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixForParsing",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixForParsing() {
							 | 
						||
| 
								 | 
							
								      // If `national_prefix_for_parsing` is not set explicitly,
							 | 
						||
| 
								 | 
							
								      // then infer it from `national_prefix` (if any)
							 | 
						||
| 
								 | 
							
								      return this._nationalPrefixForParsing() || this.nationalPrefix();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixTransformRule",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixTransformRule() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_getNationalPrefixIsOptionalWhenFormatting",
							 | 
						||
| 
								 | 
							
								    value: function _getNationalPrefixIsOptionalWhenFormatting() {
							 | 
						||
| 
								 | 
							
								      return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];
							 | 
						||
| 
								 | 
							
								    } // For countries of the same region (e.g. NANPA)
							 | 
						||
| 
								 | 
							
								    // "national prefix is optional when formatting" flag is
							 | 
						||
| 
								 | 
							
								    // stored in the "main" country for that region.
							 | 
						||
| 
								 | 
							
								    // E.g. "RU" and "KZ", "US" and "CA".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {
							 | 
						||
| 
								 | 
							
								      return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "leadingDigits",
							 | 
						||
| 
								 | 
							
								    value: function leadingDigits() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "types",
							 | 
						||
| 
								 | 
							
								    value: function types() {
							 | 
						||
| 
								 | 
							
								      return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "hasTypes",
							 | 
						||
| 
								 | 
							
								    value: function hasTypes() {
							 | 
						||
| 
								 | 
							
								      // Versions 1.2.0 - 1.2.4: can be `[]`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      /* istanbul ignore next */
							 | 
						||
| 
								 | 
							
								      if (this.types() && this.types().length === 0) {
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								      } // Versions <= 1.2.4: can be `undefined`.
							 | 
						||
| 
								 | 
							
								      // Version >= 1.2.5: can be `0`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return !!this.types();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "type",
							 | 
						||
| 
								 | 
							
								    value: function type(_type2) {
							 | 
						||
| 
								 | 
							
								      if (this.hasTypes() && getType(this.types(), _type2)) {
							 | 
						||
| 
								 | 
							
								        return new Type(getType(this.types(), _type2), this);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "ext",
							 | 
						||
| 
								 | 
							
								    value: function ext() {
							 | 
						||
| 
								 | 
							
								      if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;
							 | 
						||
| 
								 | 
							
								      return this.metadata[13] || DEFAULT_EXT_PREFIX;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return NumberingPlan;
							 | 
						||
| 
								 | 
							
								}();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Format = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								  function Format(format, metadata) {
							 | 
						||
| 
								 | 
							
								    _classCallCheck(this, Format);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    this._format = format;
							 | 
						||
| 
								 | 
							
								    this.metadata = metadata;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _createClass(Format, [{
							 | 
						||
| 
								 | 
							
								    key: "pattern",
							 | 
						||
| 
								 | 
							
								    value: function pattern() {
							 | 
						||
| 
								 | 
							
								      return this._format[0];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "format",
							 | 
						||
| 
								 | 
							
								    value: function format() {
							 | 
						||
| 
								 | 
							
								      return this._format[1];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "leadingDigitsPatterns",
							 | 
						||
| 
								 | 
							
								    value: function leadingDigitsPatterns() {
							 | 
						||
| 
								 | 
							
								      return this._format[2] || [];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixFormattingRule",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixFormattingRule() {
							 | 
						||
| 
								 | 
							
								      return this._format[3] || this.metadata.nationalPrefixFormattingRule();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {
							 | 
						||
| 
								 | 
							
								      return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "nationalPrefixIsMandatoryWhenFormattingInNationalFormat",
							 | 
						||
| 
								 | 
							
								    value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {
							 | 
						||
| 
								 | 
							
								      // National prefix is omitted if there's no national prefix formatting rule
							 | 
						||
| 
								 | 
							
								      // set for this country, or when the national prefix formatting rule
							 | 
						||
| 
								 | 
							
								      // contains no national prefix itself, or when this rule is set but
							 | 
						||
| 
								 | 
							
								      // national prefix is optional for this phone number format
							 | 
						||
| 
								 | 
							
								      // (and it is not enforced explicitly)
							 | 
						||
| 
								 | 
							
								      return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();
							 | 
						||
| 
								 | 
							
								    } // Checks whether national prefix formatting rule contains national prefix.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "usesNationalPrefix",
							 | 
						||
| 
								 | 
							
								    value: function usesNationalPrefix() {
							 | 
						||
| 
								 | 
							
								      return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a "dummy" one.
							 | 
						||
| 
								 | 
							
								      !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`
							 | 
						||
| 
								 | 
							
								      // when `national_prefix_formatting_rule` is not present.
							 | 
						||
| 
								 | 
							
								      // So, `true` or `false` are returned explicitly here, so that
							 | 
						||
| 
								 | 
							
								      // `0` number isn't returned.
							 | 
						||
| 
								 | 
							
								      ? true : false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "internationalFormat",
							 | 
						||
| 
								 | 
							
								    value: function internationalFormat() {
							 | 
						||
| 
								 | 
							
								      return this._format[5] || this.format();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return Format;
							 | 
						||
| 
								 | 
							
								}();
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A pattern that is used to determine if the national prefix formatting rule
							 | 
						||
| 
								 | 
							
								 * has the first group only, i.e., does not start with the national prefix.
							 | 
						||
| 
								 | 
							
								 * Note that the pattern explicitly allows for unbalanced parentheses.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\(?\$1\)?$/;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Type = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								  function Type(type, metadata) {
							 | 
						||
| 
								 | 
							
								    _classCallCheck(this, Type);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    this.type = type;
							 | 
						||
| 
								 | 
							
								    this.metadata = metadata;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _createClass(Type, [{
							 | 
						||
| 
								 | 
							
								    key: "pattern",
							 | 
						||
| 
								 | 
							
								    value: function pattern() {
							 | 
						||
| 
								 | 
							
								      if (this.metadata.v1) return this.type;
							 | 
						||
| 
								 | 
							
								      return this.type[0];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "possibleLengths",
							 | 
						||
| 
								 | 
							
								    value: function possibleLengths() {
							 | 
						||
| 
								 | 
							
								      if (this.metadata.v1) return;
							 | 
						||
| 
								 | 
							
								      return this.type[1] || this.metadata.possibleLengths();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return Type;
							 | 
						||
| 
								 | 
							
								}();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getType(types, type) {
							 | 
						||
| 
								 | 
							
								  switch (type) {
							 | 
						||
| 
								 | 
							
								    case 'FIXED_LINE':
							 | 
						||
| 
								 | 
							
								      return types[0];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'MOBILE':
							 | 
						||
| 
								 | 
							
								      return types[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'TOLL_FREE':
							 | 
						||
| 
								 | 
							
								      return types[2];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'PREMIUM_RATE':
							 | 
						||
| 
								 | 
							
								      return types[3];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'PERSONAL_NUMBER':
							 | 
						||
| 
								 | 
							
								      return types[4];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'VOICEMAIL':
							 | 
						||
| 
								 | 
							
								      return types[5];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'UAN':
							 | 
						||
| 
								 | 
							
								      return types[6];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'PAGER':
							 | 
						||
| 
								 | 
							
								      return types[7];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'VOIP':
							 | 
						||
| 
								 | 
							
								      return types[8];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'SHARED_COST':
							 | 
						||
| 
								 | 
							
								      return types[9];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function validateMetadata(metadata) {
							 | 
						||
| 
								 | 
							
								  if (!metadata) {
							 | 
						||
| 
								 | 
							
								    throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');
							 | 
						||
| 
								 | 
							
								  } // `country_phone_code_to_countries` was renamed to
							 | 
						||
| 
								 | 
							
								  // `country_calling_codes` in `1.0.18`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!is_object(metadata) || !is_object(metadata.countries)) {
							 | 
						||
| 
								 | 
							
								    throw 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 ".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, "."));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								} // Babel transforms `typeof` into some "branches"
							 | 
						||
| 
								 | 
							
								// so istanbul will show this as "branch not covered".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* istanbul ignore next */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var is_object = function is_object(_) {
							 | 
						||
| 
								 | 
							
								  return _typeof(_) === 'object';
							 | 
						||
| 
								 | 
							
								}; // Babel transforms `typeof` into some "branches"
							 | 
						||
| 
								 | 
							
								// so istanbul will show this as "branch not covered".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* istanbul ignore next */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var type_of = function type_of(_) {
							 | 
						||
| 
								 | 
							
								  return _typeof(_);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns extension prefix for a country.
							 | 
						||
| 
								 | 
							
								 * @param  {string} country
							 | 
						||
| 
								 | 
							
								 * @param  {object} metadata
							 | 
						||
| 
								 | 
							
								 * @return {string?}
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Returns " ext. "
							 | 
						||
| 
								 | 
							
								 * getExtPrefix("US")
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getExtPrefix(country, metadata) {
							 | 
						||
| 
								 | 
							
								  metadata = new Metadata(metadata);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (metadata.hasCountry(country)) {
							 | 
						||
| 
								 | 
							
								    return metadata.country(country).ext();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return DEFAULT_EXT_PREFIX;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns "country calling code" for a country.
							 | 
						||
| 
								 | 
							
								 * Throws an error if the country doesn't exist or isn't supported by this library.
							 | 
						||
| 
								 | 
							
								 * @param  {string} country
							 | 
						||
| 
								 | 
							
								 * @param  {object} metadata
							 | 
						||
| 
								 | 
							
								 * @return {string}
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Returns "44"
							 | 
						||
| 
								 | 
							
								 * getCountryCallingCode("GB")
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getCountryCallingCode(country, metadata) {
							 | 
						||
| 
								 | 
							
								  metadata = new Metadata(metadata);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (metadata.hasCountry(country)) {
							 | 
						||
| 
								 | 
							
								    return metadata.country(country).countryCallingCode();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new Error("Unknown country: ".concat(country));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isSupportedCountry(country, metadata) {
							 | 
						||
| 
								 | 
							
								  // metadata = new Metadata(metadata)
							 | 
						||
| 
								 | 
							
								  // return metadata.hasCountry(country)
							 | 
						||
| 
								 | 
							
								  return metadata.countries[country] !== undefined;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setVersion(metadata) {
							 | 
						||
| 
								 | 
							
								  var version = metadata.version;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof version === 'number') {
							 | 
						||
| 
								 | 
							
								    this.v1 = version === 1;
							 | 
						||
| 
								 | 
							
								    this.v2 = version === 2;
							 | 
						||
| 
								 | 
							
								    this.v3 = version === 3;
							 | 
						||
| 
								 | 
							
								    this.v4 = version === 4;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    if (!version) {
							 | 
						||
| 
								 | 
							
								      this.v1 = true;
							 | 
						||
| 
								 | 
							
								    } else if ((0, _semverCompare["default"])(version, V3) === -1) {
							 | 
						||
| 
								 | 
							
								      this.v2 = true;
							 | 
						||
| 
								 | 
							
								    } else if ((0, _semverCompare["default"])(version, V4) === -1) {
							 | 
						||
| 
								 | 
							
								      this.v3 = true;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      this.v4 = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/
							 | 
						||
| 
								 | 
							
								// function isCountryCode(countryCode) {
							 | 
						||
| 
								 | 
							
								// 	return ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)
							 | 
						||
| 
								 | 
							
								// }
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=metadata.js.map
							 |