signal-desktop/ts/util/libphonenumberInstance.ts

36 lines
857 B
TypeScript
Raw Normal View History

2023-01-03 19:55:46 +00:00
// Copyright 2018 Signal Messenger, LLC
2020-10-30 20:34:04 +00:00
// 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),
};
}