import { PhoneNumberUtil, PhoneNumberFormat, PhoneNumber } from 'google-libphonenumber'; const phoneUtil = PhoneNumberUtil.getInstance(); interface PhoneValidationResult { inputPhone: string; isoAlpha2Code: string; countryCode?: number; nationalNumber: string; internationalNumber: string; e164: string; } export function isPhoneValid(phone: string, isoAlpha2Code: string): PhoneValidationResult { const number: PhoneNumber = phoneUtil.parse(phone, isoAlpha2Code); const existPhone: boolean = phoneUtil.isValidNumber(number); if (!existPhone) { throw new Error('Invalid phone'); } return { inputPhone: phone, isoAlpha2Code, countryCode: number.getCountryCode(), nationalNumber: phoneUtil.format(number, PhoneNumberFormat.NATIONAL), internationalNumber: phoneUtil.format(number, PhoneNumberFormat.INTERNATIONAL), e164: phoneUtil.format(number, PhoneNumberFormat.E164).replace('+', ''), }; } export function formatPhone(phone: string, isoAlpha2Code: string): PhoneValidationResult { return isPhoneValid(phone, isoAlpha2Code); }