signal-desktop/ts/util/libphonenumberInstance.ts
2022-04-04 17:38:22 -07:00

35 lines
862 B
TypeScript

// 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),
};
}