123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports["default"] = isPossiblePhoneNumber;
- exports.isPossibleNumber = isPossibleNumber;
- var _metadata = _interopRequireDefault(require("./metadata.js"));
- var _checkNumberLength = _interopRequireDefault(require("./helpers/checkNumberLength.js"));
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
- /**
- * Checks if a phone number is "possible" (basically just checks its length).
- *
- * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)
- *
- * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)
- * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)
- *
- * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.
- * @param {object} [options]
- * @param {object} metadata
- * @return {string}
- */
- function isPossiblePhoneNumber(input, options, metadata) {
- /* istanbul ignore if */
- if (options === undefined) {
- options = {};
- }
- metadata = new _metadata["default"](metadata);
- if (options.v2) {
- if (!input.countryCallingCode) {
- throw new Error('Invalid phone number object passed');
- }
- metadata.selectNumberingPlan(input.countryCallingCode);
- } else {
- if (!input.phone) {
- return false;
- }
- if (input.country) {
- if (!metadata.hasCountry(input.country)) {
- throw new Error("Unknown country: ".concat(input.country));
- }
- metadata.country(input.country);
- } else {
- if (!input.countryCallingCode) {
- throw new Error('Invalid phone number object passed');
- }
- metadata.selectNumberingPlan(input.countryCallingCode);
- }
- } // Old metadata (< 1.0.18) had no "possible length" data.
- if (metadata.possibleLengths()) {
- return isPossibleNumber(input.phone || input.nationalNumber, metadata);
- } else {
- // There was a bug between `1.7.35` and `1.7.37` where "possible_lengths"
- // were missing for "non-geographical" numbering plans.
- // Just assume the number is possible in such cases:
- // it's unlikely that anyone generated their custom metadata
- // in that short period of time (one day).
- // This code can be removed in some future major version update.
- if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {
- // "Non-geographic entities" did't have `possibleLengths`
- // due to a bug in metadata generation process.
- return true;
- } else {
- throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.');
- }
- }
- }
- function isPossibleNumber(nationalNumber, metadata) {
- //, isInternational) {
- switch ((0, _checkNumberLength["default"])(nationalNumber, metadata)) {
- case 'IS_POSSIBLE':
- return true;
- // This library ignores "local-only" phone numbers (for simplicity).
- // See the readme for more info on what are "local-only" phone numbers.
- // case 'IS_POSSIBLE_LOCAL_ONLY':
- // return !isInternational
- default:
- return false;
- }
- }
- //# sourceMappingURL=isPossible.js.map
|