UNPKG

6.38 kBTypeScriptView Raw
1import {
2 Metadata,
3 PhoneNumber,
4 E164Number,
5 CountryCallingCode,
6 CountryCode,
7 CarrierCode,
8 NationalNumber,
9 Extension,
10 ParseError,
11 NumberFoundLegacy,
12 NumberFound,
13 NumberType,
14 NumberFormat
15} from './types';
16
17export {
18 Metadata,
19 PhoneNumber,
20 E164Number,
21 CountryCallingCode,
22 CountryCode,
23 CarrierCode,
24 NationalNumber,
25 Extension,
26 ParseError,
27 NumberFoundLegacy,
28 NumberFound,
29 NumberFormat,
30 NumberType
31};
32
33type FormatExtension = (number: string, extension: string, metadata: Metadata) => string
34
35type FormatNumberOptionsWithoutIDD = {
36 v2?: boolean;
37 formatExtension?: FormatExtension;
38};
39
40export type FormatNumberOptions = {
41 v2?: boolean;
42 fromCountry?: CountryCode;
43 humanReadable?: boolean;
44 formatExtension?: FormatExtension
45};
46
47// Legacy.
48export type ParseNumberOptions = {
49 defaultCountry?: CountryCode;
50 extended?: boolean;
51};
52
53export interface ParsedNumber {
54 countryCallingCode?: CountryCallingCode,
55 country: CountryCode,
56 phone: NationalNumber,
57 ext?: Extension,
58 possible?: boolean,
59 valid?: boolean
60}
61
62// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.
63export function parsePhoneNumber(text: string, defaultCountry?: CountryCode): PhoneNumber;
64export function parsePhoneNumberWithError(text: string, defaultCountry?: CountryCode): PhoneNumber;
65
66// `parsePhoneNumberFromString()` named export is now considered legacy:
67// it has been promoted to a default export due to being too verbose.
68export function parsePhoneNumberFromString(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): PhoneNumber | undefined;
69
70export default parsePhoneNumberFromString;
71
72// `parse()` and `parseCustom` are deprecated.
73// Use `fparseNumber()` and `parseNumberCustom()` instead.
74export function parse(text: string, options?: CountryCode | ParseNumberOptions): ParsedNumber;
75
76export function parseNumber(text: string, options?: CountryCode | ParseNumberOptions): ParsedNumber | {};
77
78// `format()` and `formatCustom` are deprecated.
79// Use `formatNumber()` and `formatNumberCustom()` instead.
80export function format(parsedNumber: ParsedNumber, format: NumberFormat): string;
81export function format(phone: NationalNumber, format: NumberFormat): string;
82export function format(phone: NationalNumber, country: CountryCode, format: NumberFormat): string;
83
84export function formatNumber(parsedNumber: ParsedNumber, format: NumberFormat, options?: FormatNumberOptions): string;
85export function formatNumber(phone: NationalNumber, format: NumberFormat, options?: FormatNumberOptions): string;
86export function formatNumber(phone: NationalNumber, country: CountryCode, format: NumberFormat, options?: FormatNumberOptions): string;
87
88export function getNumberType(parsedNumber: ParsedNumber): NumberType;
89export function getNumberType(phone: NationalNumber, country?: CountryCode): NumberType;
90
91export function getExampleNumber(country: CountryCode, examples: { [country in CountryCode]: NationalNumber }): PhoneNumber | undefined;
92
93export function isPossibleNumber(parsedNumber: ParsedNumber): boolean;
94export function isPossibleNumber(phone: NationalNumber, country?: CountryCode): boolean;
95
96export function isValidNumber(parsedNumber: ParsedNumber): boolean;
97export function isValidNumber(phone: NationalNumber, country?: CountryCode): boolean;
98
99export function isValidNumberForRegion(phone: NationalNumber, country: CountryCode): boolean;
100
101// Deprecated.
102export function findParsedNumbers(text: string, options?: CountryCode | { defaultCountry?: CountryCode }): NumberFoundLegacy[];
103export function searchParsedNumbers(text: string, options?: CountryCode | { defaultCountry?: CountryCode }): IterableIterator<NumberFoundLegacy>;
104
105// Deprecated.
106export class ParsedNumberSearch {
107 constructor(text: string, options?: { defaultCountry?: CountryCode });
108 hasNext(): boolean;
109 next(): NumberFoundLegacy | undefined;
110}
111
112export function findNumbers(text: string, options?: CountryCode): NumberFoundLegacy[];
113export function searchNumbers(text: string, options?: CountryCode): IterableIterator<NumberFoundLegacy>;
114
115export function findNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): NumberFound[];
116export function searchNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): IterableIterator<NumberFound>;
117
118export function findPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): NumberFound[];
119export function searchPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): IterableIterator<NumberFound>;
120
121export class PhoneNumberMatcher {
122 constructor(text: string, options?: { defaultCountry?: CountryCode, v2: true });
123 hasNext(): boolean;
124 next(): NumberFound | undefined;
125}
126
127export function getCountries(): CountryCode[];
128export function getCountryCallingCode(countryCode: CountryCode): CountryCallingCode;
129// Deprecated.
130export function getPhoneCode(countryCode: CountryCode): CountryCallingCode;
131export function getExtPrefix(countryCode: CountryCode): string;
132export function isSupportedCountry(countryCode: string): boolean;
133
134export function formatIncompletePhoneNumber(number: string, countryCode?: CountryCode): string;
135export function parseIncompletePhoneNumber(text: string): string;
136export function parsePhoneNumberCharacter(character: string): string;
137export function parseDigits(character: string): string;
138
139export class AsYouType {
140 constructor(defaultCountryCode?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string });
141 input(text: string): string;
142 reset(): void;
143 country: CountryCode | undefined;
144 getNumber(): PhoneNumber | undefined;
145 getNationalNumber(): string;
146 getChars(): string;
147 getTemplate(): string;
148}
149
150// The exported `Metadata` name is already used for exporting the "raw" JSON metadata type.
151// Then, `Metadata` class has become exported, but its name is already taken, so TypeScript users seem to be unable to use the `Metadata` class.
152// If someone knows a solution then they could propose it in an issue.
153// export class Metadata {
154// ...
155// }
\No newline at end of file