// Copyright 2018-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import libphonenumber from 'google-libphonenumber'; import type { PhoneNumber } from 'google-libphonenumber'; const instance = libphonenumber.PhoneNumberUtil.getInstance(); const { PhoneNumberFormat } = libphonenumber; export { instance, PhoneNumberFormat }; export type ParsedE164Type = Readonly<{ isValid: boolean; userInput: string; e164: string; }>; export function parseAndFormatPhoneNumber( str: string, regionCode: string | undefined, format = PhoneNumberFormat.E164 ): ParsedE164Type | undefined { let result: PhoneNumber; try { result = instance.parse(str, regionCode); } catch (err) { return undefined; } return { isValid: instance.isValidNumber(result), userInput: str, e164: instance.format(result, format), }; }