15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import Metadata from '../metadata.js'
 
/**
 * Returns a list of countries that the phone number could potentially belong to.
 * @param  {string} callingCode — Calling code.
 * @param  {string} nationalNumber — National (significant) number.
 * @param  {object} metadata — Metadata.
 * @return {string[]} A list of possible countries.
 */
export default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {
    const _metadata = new Metadata(metadata)
    let possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)
    if (!possibleCountries) {
        return []
    }
    return possibleCountries.filter((country) => {
        return couldNationalNumberBelongToCountry(nationalNumber, country, metadata)
    })
}
 
function couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {
    const _metadata = new Metadata(metadata)
    _metadata.selectNumberingPlan(country)
    if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {
        return true
    }
    return false
}