UNPKG

libphonenumber-js

Version:

A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript

73 lines (56 loc) 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = getCountryByCallingCode; var _metadata = _interopRequireDefault(require("../metadata")); var _getNumberType = _interopRequireDefault(require("./getNumberType")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) { /* istanbul ignore if */ if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { if (metadata.isNonGeographicCallingCode(callingCode)) { return '001'; } } // Is always non-empty, because `callingCode` is always valid var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode); if (!possibleCountries) { return; } // If there's just one country corresponding to the country code, // then just return it, without further phone number digits validation. if (possibleCountries.length === 1) { return possibleCountries[0]; } return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata); } function selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) { // Re-create `metadata` because it will be selecting a `country`. metadata = new _metadata["default"](metadata); for (var _iterator = possibleCountries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var country = _ref; metadata.country(country); // Leading digits check would be the simplest one if (metadata.leadingDigits()) { if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) { return country; } } // Else perform full validation with all of those // fixed-line/mobile/etc regular expressions. else if ((0, _getNumberType["default"])({ phone: nationalPhoneNumber, country: country }, undefined, metadata.metadata)) { return country; } } } //# sourceMappingURL=getCountryByCallingCode.js.map