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.
		
		
		
		
		
			
		
			
				
					70 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					70 lines
				
				2.3 KiB
			| 
											3 years ago
										 | import Metadata from './metadata.js'; | ||
|  | import checkNumberLength from './helpers/checkNumberLength.js'; | ||
|  | export default function isPossiblePhoneNumber(input, options, metadata) { | ||
|  |   /* istanbul ignore if */ | ||
|  |   if (options === undefined) { | ||
|  |     options = {}; | ||
|  |   } | ||
|  | 
 | ||
|  |   metadata = new Metadata(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.'); | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | export function isPossibleNumber(nationalNumber, metadata) { | ||
|  |   //, isInternational) {
 | ||
|  |   switch (checkNumberLength(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=isPossibleNumber_.js.map
 |