import { PhoneNumberUtil, PhoneNumberFormat } from "google-libphonenumber"; import type { Phone, E164, CountryISO } from "./groups.types"; const phoneUtil = PhoneNumberUtil.getInstance(); export const enrichPhoneNumber = (e164: string): Phone | null => { try { const phoneNumber = phoneUtil.parse(e164, "ZZ"); if (!phoneUtil.isValidNumber(phoneNumber)) { return null; } const normalizedE164 = phoneUtil.format( phoneNumber, PhoneNumberFormat.E164, ) as E164; const region = phoneUtil.getRegionCodeForNumber(phoneNumber) as CountryISO; const countryCallingCode = phoneNumber.getCountryCode()?.toString(); const national = phoneNumber.getNationalNumber()?.toString(); const ext = phoneNumber.getExtension() || undefined; const formatted = phoneUtil.format( phoneNumber, PhoneNumberFormat.INTERNATIONAL, ); return { e164: normalizedE164, region, countryCallingCode, national, ext, formatted, }; } catch (error) { return null; } }; export const isValidE164 = (e164: string): boolean => { try { const phoneNumber = phoneUtil.parse(e164, "ZZ"); return phoneUtil.isValidNumber(phoneNumber); } catch (error) { return false; } };