Convert libphonenumber utilities to TypeScript, removing unused ones

This commit is contained in:
Evan Hahn 2022-06-01 17:48:16 +00:00 committed by GitHub
parent 9c8fd2a714
commit ab9a50357b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 83 additions and 340 deletions

View file

@ -0,0 +1,51 @@
// Copyright 2014-2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import {
instance as libphonenumber,
PhoneNumberFormat,
} from './libphonenumberInstance';
const FALLBACK_REGION_CODE = 'ZZ';
export function getRegionCodeForNumber(number: string): string {
try {
const parsedNumber = libphonenumber.parse(number);
return (
libphonenumber.getRegionCodeForNumber(parsedNumber) ||
FALLBACK_REGION_CODE
);
} catch (e) {
return FALLBACK_REGION_CODE;
}
}
export function parseNumber(
number: string,
defaultRegionCode?: string
):
| { isValidNumber: false; error: unknown }
| {
isValidNumber: true;
regionCode: undefined | string;
countryCode: undefined | string;
e164: string;
} {
try {
const parsedNumber = libphonenumber.parse(number, defaultRegionCode);
const isValidNumber = libphonenumber.isValidNumber(parsedNumber);
if (!isValidNumber) {
return { error: new Error('Invalid phone number'), isValidNumber: false };
}
return {
isValidNumber: true,
regionCode: libphonenumber.getRegionCodeForNumber(parsedNumber),
countryCode: parsedNumber.getCountryCode()?.toString(),
e164: libphonenumber.format(parsedNumber, PhoneNumberFormat.E164),
};
} catch (error) {
return { error, isValidNumber: false };
}
}