mobile-sg-validator 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,118 @@
1
+ # mobile-validation
2
+
3
+ > Type-safe international mobile phone number validation for 200+ countries.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/mobile-validation)](https://www.npmjs.com/package/mobile-validation)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue)](https://www.typescriptlang.org/)
7
+
8
+ Powered by [`libphonenumber-js`](https://github.com/catamphetamine/libphonenumber-js) with an additional per-country regex layer for extra precision.
9
+
10
+ ---
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ npm install @sg/mobile-validator
16
+ ```
17
+
18
+ ---
19
+
20
+ ## Usage
21
+
22
+ ### Simple validation (boolean)
23
+
24
+ ```typescript
25
+ import { validateMobileNumber } from '@sg/mobile-validator';
26
+
27
+ validateMobileNumber('+919876543210'); // true — India
28
+ validateMobileNumber('+447911123456'); // true — United Kingdom
29
+ validateMobileNumber('+1234'); // false — too short
30
+ validateMobileNumber('notanumber'); // false
31
+ ```
32
+
33
+ ### Detailed validation
34
+
35
+ ```typescript
36
+ import { validateMobileNumberDetailed } from '@sg/mobile-validator';
37
+
38
+ const result = validateMobileNumberDetailed('+919876543210');
39
+ // {
40
+ // isValid: true,
41
+ // country: 'IN',
42
+ // formattedNumber: '+919876543210'
43
+ // }
44
+
45
+ const bad = validateMobileNumberDetailed('+123');
46
+ // {
47
+ // isValid: false,
48
+ // error: 'Phone number is not valid'
49
+ // }
50
+ ```
51
+
52
+ ### Access country patterns
53
+
54
+ ```typescript
55
+ import { countryPhonePatterns } from '@sg/mobile-validator';
56
+
57
+ const india = countryPhonePatterns['IN'];
58
+ console.log(india.code); // '+91'
59
+ console.log(india.pattern); // /^(?:\+91|91)?[-\s]?[6-9]\d{9}$/
60
+ ```
61
+
62
+ ---
63
+
64
+ ## API
65
+
66
+ ### `validateMobileNumber(phoneNumber: string): boolean`
67
+
68
+ Returns `true` when the phone number is valid for its detected country.
69
+
70
+ | Parameter | Type | Description |
71
+ | ------------- | -------- | ----------------------------------- |
72
+ | `phoneNumber` | `string` | Phone number in E.164 format |
73
+
74
+ ---
75
+
76
+ ### `validateMobileNumberDetailed(phoneNumber: string): ValidationResult`
77
+
78
+ Returns a detailed result object.
79
+
80
+ ```typescript
81
+ interface ValidationResult {
82
+ isValid: boolean;
83
+ country?: CountryCode; // ISO 3166-1 alpha-2, e.g. 'IN'
84
+ formattedNumber?: string; // E.164 formatted number
85
+ error?: string; // Present when isValid is false
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ### `countryPhonePatterns`
92
+
93
+ A `Readonly<Record<CountryCode, CountryPhonePattern>>` map of all supported countries.
94
+
95
+ ```typescript
96
+ interface CountryPhonePattern {
97
+ code: string; // International dialing code, e.g. '+91'
98
+ pattern: RegExp; // Validation regex for E.164 formatted numbers
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ ### `CountryCode`
105
+
106
+ TypeScript union type of all supported ISO 3166-1 alpha-2 country codes (e.g. `'IN' | 'US' | 'GB' | ...`).
107
+
108
+ ---
109
+
110
+ ## Supported Countries
111
+
112
+ 200+ countries supported, including all major markets: 🇮🇳 India, 🇺🇸 USA, 🇬🇧 UK, 🇨🇳 China, 🇩🇪 Germany, 🇫🇷 France, 🇯🇵 Japan, and many more.
113
+
114
+ ---
115
+
116
+ ## License
117
+
118
+ ISC © Sangram Ghadage
@@ -0,0 +1,7 @@
1
+ import type { CountryCode, CountryPhonePattern } from './types';
2
+ /**
3
+ * A map of ISO 3166-1 alpha-2 country codes to their dialing code and
4
+ * regex pattern for validating E.164 formatted phone numbers.
5
+ */
6
+ export declare const countryPhonePatterns: Readonly<Record<CountryCode, CountryPhonePattern>>;
7
+ //# sourceMappingURL=country.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"country.d.ts","sourceRoot":"","sources":["../src/country.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,CA0MnF,CAAC"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countryPhonePatterns = void 0;
4
+ /**
5
+ * A map of ISO 3166-1 alpha-2 country codes to their dialing code and
6
+ * regex pattern for validating E.164 formatted phone numbers.
7
+ */
8
+ exports.countryPhonePatterns = {
9
+ AC: { code: '+247', pattern: /^(?:\+247|247)?[-\s]?\d{4}$/ }, // Ascension Island
10
+ AD: { code: '+376', pattern: /^(?:\+376|376)?[-\s]?\d{6}$/ }, // Andorra
11
+ AE: { code: '+971', pattern: /^(?:\+971|971)?[-\s]?\d{9}$/ }, // United Arab Emirates
12
+ AF: { code: '+93', pattern: /^(?:\+93|93)?[-\s]?\d{9}$/ }, // Afghanistan
13
+ AG: { code: '+1(268)', pattern: /^(?:\+1\(268\)|1\(268\))?[-\s]?\d{7}$/ }, // Antigua and Barbuda
14
+ AI: { code: '+1(264)', pattern: /^(?:\+1\(264\)|1\(264\))?[-\s]?\d{7}$/ }, // Anguilla
15
+ AL: { code: '+355', pattern: /^(?:\+355|355)?[-\s]?\d{9}$/ }, // Albania
16
+ AM: { code: '+374', pattern: /^(?:\+374|374)?[-\s]?\d{8}$/ }, // Armenia
17
+ AO: { code: '+244', pattern: /^(?:\+244|244)?[-\s]?\d{9}$/ }, // Angola
18
+ AR: { code: '+54', pattern: /^(?:\+54|54)?[-\s]?\d{10}$/ }, // Argentina
19
+ AS: { code: '+1(684)', pattern: /^(?:\+1\(684\)|1\(684\))?[-\s]?\d{7}$/ }, // American Samoa
20
+ AT: { code: '+43', pattern: /^(?:\+43|43)?[-\s]?\d{10}$/ }, // Austria
21
+ AU: { code: '+61', pattern: /^(?:\+61|61)?[-\s]?\d{9}$/ }, // Australia
22
+ AW: { code: '+297', pattern: /^(?:\+297|297)?[-\s]?\d{7}$/ }, // Aruba
23
+ AX: { code: '+358', pattern: /^(?:\+358|358)?[-\s]?\d{6,12}$/ }, // Åland Islands
24
+ AZ: { code: '+994', pattern: /^(?:\+994|994)?[-\s]?\d{9}$/ }, // Azerbaijan
25
+ BA: { code: '+387', pattern: /^(?:\+387|387)?[-\s]?\d{8}$/ }, // Bosnia and Herzegovina
26
+ BB: { code: '+1(246)', pattern: /^(?:\+1\(246\)|1\(246\))?[-\s]?\d{7}$/ }, // Barbados
27
+ BD: { code: '+880', pattern: /^(?:\+880|880)?[-\s]?\d{10}$/ }, // Bangladesh
28
+ BE: { code: '+32', pattern: /^(?:\+32|32)?[-\s]?\d{9}$/ }, // Belgium
29
+ BF: { code: '+226', pattern: /^(?:\+226|226)?[-\s]?\d{8}$/ }, // Burkina Faso
30
+ BG: { code: '+359', pattern: /^(?:\+359|359)?[-\s]?\d{9}$/ }, // Bulgaria
31
+ BH: { code: '+973', pattern: /^(?:\+973|973)?[-\s]?\d{8}$/ }, // Bahrain
32
+ BI: { code: '+257', pattern: /^(?:\+257|257)?[-\s]?\d{8}$/ }, // Burundi
33
+ BJ: { code: '+229', pattern: /^(?:\+229|229)?[-\s]?\d{8}$/ }, // Benin
34
+ BL: { code: '+590', pattern: /^(?:\+590|590)?[-\s]?\d{9}$/ }, // Saint Barthélemy
35
+ BM: { code: '+1(441)', pattern: /^(?:\+1\(441\)|1\(441\))?[-\s]?\d{7}$/ }, // Bermuda
36
+ BN: { code: '+673', pattern: /^(?:\+673|673)?[-\s]?\d{7}$/ }, // Brunei Darussalam
37
+ BO: { code: '+591', pattern: /^(?:\+591|591)?[-\s]?\d{8}$/ }, // Bolivia
38
+ BR: { code: '+55', pattern: /^(?:\+55|55)?[-\s]?\d{10,11}$/ }, // Brazil
39
+ BS: { code: '+1(242)', pattern: /^(?:\+1\(242\)|1\(242\))?[-\s]?\d{7}$/ }, // Bahamas
40
+ BT: { code: '+975', pattern: /^(?:\+975|975)?[-\s]?\d{8}$/ }, // Bhutan
41
+ BW: { code: '+267', pattern: /^(?:\+267|267)?[-\s]?\d{7,8}$/ }, // Botswana
42
+ BY: { code: '+375', pattern: /^(?:\+375|375)?[-\s]?\d{9}$/ }, // Belarus
43
+ BZ: { code: '+501', pattern: /^(?:\+501|501)?[-\s]?\d{7}$/ }, // Belize
44
+ CA: { code: '+1', pattern: /^(?:\+1|1)?[-\s]?\d{10}$/ }, // Canada
45
+ CH: { code: '+41', pattern: /^(?:\+41|41)?[-\s]?\d{9}$/ }, // Switzerland
46
+ CN: { code: '+86', pattern: /^(?:\+86|86)?[-\s]?\d{11}$/ }, // China
47
+ CO: { code: '+57', pattern: /^(?:\+57|57)?[-\s]?\d{10}$/ }, // Colombia
48
+ CR: { code: '+506', pattern: /^(?:\+506|506)?[-\s]?\d{8}$/ }, // Costa Rica
49
+ CU: { code: '+53', pattern: /^(?:\+53|53)?[-\s]?\d{8}$/ }, // Cuba
50
+ CZ: { code: '+420', pattern: /^(?:\+420|420)?[-\s]?\d{9}$/ }, // Czech Republic
51
+ DE: { code: '+49', pattern: /^(?:\+49|49)?[-\s]?\d{10,14}$/ }, // Germany
52
+ DK: { code: '+45', pattern: /^(?:\+45|45)?[-\s]?\d{8}$/ }, // Denmark
53
+ DO: { code: '+1(809|829|849)', pattern: /^(?:\+1\((809|829|849)\)|1\((809|829|849)\))?[-\s]?\d{7}$/ }, // Dominican Republic
54
+ DZ: { code: '+213', pattern: /^(?:\+213|213)?[-\s]?\d{9}$/ }, // Algeria
55
+ EG: { code: '+20', pattern: /^(?:\+20|20)?[-\s]?\d{10}$/ }, // Egypt
56
+ ES: { code: '+34', pattern: /^(?:\+34|34)?[-\s]?\d{9}$/ }, // Spain
57
+ FI: { code: '+358', pattern: /^(?:\+358|358)?[-\s]?\d{6,12}$/ }, // Finland
58
+ FR: { code: '+33', pattern: /^(?:\+33|33)?[-\s]?\d{9}$/ }, // France
59
+ GB: { code: '+44', pattern: /^(?:\+44|44)?[-\s]?\d{10}$/ }, // United Kingdom
60
+ GH: { code: '+233', pattern: /^(?:\+233|233)?[-\s]?\d{9}$/ }, // Ghana
61
+ GM: { code: '+220', pattern: /^(?:\+220|220)?[-\s]?\d{7}$/ }, // Gambia
62
+ GR: { code: '+30', pattern: /^(?:\+30|30)?[-\s]?\d{10}$/ }, // Greece
63
+ GT: { code: '+502', pattern: /^(?:\+502|502)?[-\s]?\d{8}$/ }, // Guatemala
64
+ HK: { code: '+852', pattern: /^(?:\+852|852)?[-\s]?\d{8}$/ }, // Hong Kong
65
+ HN: { code: '+504', pattern: /^(?:\+504|504)?[-\s]?\d{8}$/ }, // Honduras
66
+ HR: { code: '+385', pattern: /^(?:\+385|385)?[-\s]?\d{8,9}$/ }, // Croatia
67
+ HU: { code: '+36', pattern: /^(?:\+36|36)?[-\s]?\d{9}$/ }, // Hungary
68
+ ID: { code: '+62', pattern: /^(?:\+62|62)?[-\s]?\d{9,11}$/ }, // Indonesia
69
+ IE: { code: '+353', pattern: /^(?:\+353|353)?[-\s]?\d{9}$/ }, // Ireland
70
+ IL: { code: '+972', pattern: /^(?:\+972|972)?[-\s]?\d{9}$/ }, // Israel
71
+ IN: { code: '+91', pattern: /^(?:\+91|91)?[-\s]?[6-9]\d{9}$/ }, // India
72
+ IQ: { code: '+964', pattern: /^(?:\+964|964)?[-\s]?\d{10}$/ }, // Iraq
73
+ IR: { code: '+98', pattern: /^(?:\+98|98)?[-\s]?\d{10}$/ }, // Iran
74
+ IS: { code: '+354', pattern: /^(?:\+354|354)?[-\s]?\d{7}$/ }, // Iceland
75
+ IT: { code: '+39', pattern: /^(?:\+39|39)?[-\s]?\d{10}$/ }, // Italy
76
+ JM: { code: '+1(876)', pattern: /^(?:\+1\(876\)|1\(876\))?[-\s]?\d{7}$/ }, // Jamaica
77
+ JO: { code: '+962', pattern: /^(?:\+962|962)?[-\s]?\d{9}$/ }, // Jordan
78
+ JP: { code: '+81', pattern: /^(?:\+81|81)?[-\s]?\d{10}$/ }, // Japan
79
+ KE: { code: '+254', pattern: /^(?:\+254|254)?[-\s]?\d{9}$/ }, // Kenya
80
+ KG: { code: '+996', pattern: /^(?:\+996|996)?[-\s]?\d{9}$/ }, // Kyrgyzstan
81
+ KH: { code: '+855', pattern: /^(?:\+855|855)?[-\s]?\d{9}$/ }, // Cambodia
82
+ KI: { code: '+686', pattern: /^(?:\+686|686)?[-\s]?\d{7}$/ }, // Kiribati
83
+ KM: { code: '+269', pattern: /^(?:\+269|269)?[-\s]?\d{7}$/ }, // Comoros
84
+ KN: { code: '+1(869)', pattern: /^(?:\+1\(869\)|1\(869\))?[-\s]?\d{7}$/ }, // Saint Kitts and Nevis
85
+ KP: { code: '+850', pattern: /^(?:\+850|850)?[-\s]?\d{8}$/ }, // North Korea
86
+ KR: { code: '+82', pattern: /^(?:\+82|82)?[-\s]?\d{10}$/ }, // South Korea
87
+ KW: { code: '+965', pattern: /^(?:\+965|965)?[-\s]?\d{8}$/ }, // Kuwait
88
+ KY: { code: '+1(345)', pattern: /^(?:\+1\(345\)|1\(345\))?[-\s]?\d{7}$/ }, // Cayman Islands
89
+ KZ: { code: '+7', pattern: /^(?:\+7|7)?[-\s]?\d{10}$/ }, // Kazakhstan
90
+ LA: { code: '+856', pattern: /^(?:\+856|856)?[-\s]?\d{8}$/ }, // Laos
91
+ LB: { code: '+961', pattern: /^(?:\+961|961)?[-\s]?\d{8}$/ }, // Lebanon
92
+ LC: { code: '+1(758)', pattern: /^(?:\+1\(758\)|1\(758\))?[-\s]?\d{7}$/ }, // Saint Lucia
93
+ LI: { code: '+423', pattern: /^(?:\+423|423)?[-\s]?\d{8}$/ }, // Liechtenstein
94
+ LK: { code: '+94', pattern: /^(?:\+94|94)?[-\s]?\d{9}$/ }, // Sri Lanka
95
+ LR: { code: '+231', pattern: /^(?:\+231|231)?[-\s]?\d{8}$/ }, // Liberia
96
+ LS: { code: '+266', pattern: /^(?:\+266|266)?[-\s]?\d{8}$/ }, // Lesotho
97
+ LT: { code: '+370', pattern: /^(?:\+370|370)?[-\s]?\d{8}$/ }, // Lithuania
98
+ LU: { code: '+352', pattern: /^(?:\+352|352)?[-\s]?\d{6,9}$/ }, // Luxembourg
99
+ LV: { code: '+371', pattern: /^(?:\+371|371)?[-\s]?\d{8}$/ }, // Latvia
100
+ LY: { code: '+218', pattern: /^(?:\+218|218)?[-\s]?\d{9}$/ }, // Libya
101
+ MA: { code: '+212', pattern: /^(?:\+212|212)?[-\s]?\d{9}$/ }, // Morocco
102
+ MC: { code: '+377', pattern: /^(?:\+377|377)?[-\s]?\d{8}$/ }, // Monaco
103
+ MD: { code: '+373', pattern: /^(?:\+373|373)?[-\s]?\d{8}$/ }, // Moldova
104
+ ME: { code: '+382', pattern: /^(?:\+382|382)?[-\s]?\d{8}$/ }, // Montenegro
105
+ MF: { code: '+590', pattern: /^(?:\+590|590)?[-\s]?\d{9}$/ }, // Saint Martin
106
+ MG: { code: '+261', pattern: /^(?:\+261|261)?[-\s]?\d{9}$/ }, // Madagascar
107
+ MH: { code: '+692', pattern: /^(?:\+692|692)?[-\s]?\d{7}$/ }, // Marshall Islands
108
+ MK: { code: '+389', pattern: /^(?:\+389|389)?[-\s]?\d{8}$/ }, // North Macedonia
109
+ ML: { code: '+223', pattern: /^(?:\+223|223)?[-\s]?\d{8}$/ }, // Mali
110
+ MM: { code: '+95', pattern: /^(?:\+95|95)?[-\s]?\d{9}$/ }, // Myanmar
111
+ MN: { code: '+976', pattern: /^(?:\+976|976)?[-\s]?\d{8}$/ }, // Mongolia
112
+ MO: { code: '+853', pattern: /^(?:\+853|853)?[-\s]?\d{8}$/ }, // Macau
113
+ MP: { code: '+1(670)', pattern: /^(?:\+1\(670\)|1\(670\))?[-\s]?\d{7}$/ }, // Northern Mariana Islands
114
+ MQ: { code: '+596', pattern: /^(?:\+596|596)?[-\s]?\d{9}$/ }, // Martinique
115
+ MR: { code: '+222', pattern: /^(?:\+222|222)?[-\s]?\d{8}$/ }, // Mauritania
116
+ MS: { code: '+1(664)', pattern: /^(?:\+1\(664\)|1\(664\))?[-\s]?\d{7}$/ }, // Montserrat
117
+ MT: { code: '+356', pattern: /^(?:\+356|356)?[-\s]?\d{8}$/ }, // Malta
118
+ MU: { code: '+230', pattern: /^(?:\+230|230)?[-\s]?\d{8}$/ }, // Mauritius
119
+ MV: { code: '+960', pattern: /^(?:\+960|960)?[-\s]?\d{7}$/ }, // Maldives
120
+ MW: { code: '+265', pattern: /^(?:\+265|265)?[-\s]?\d{9}$/ }, // Malawi
121
+ MX: { code: '+52', pattern: /^(?:\+52|52)?[-\s]?\d{10}$/ }, // Mexico
122
+ MY: { code: '+60', pattern: /^(?:\+60|60)?[-\s]?\d{9}$/ }, // Malaysia
123
+ MZ: { code: '+258', pattern: /^(?:\+258|258)?[-\s]?\d{9}$/ }, // Mozambique
124
+ NA: { code: '+264', pattern: /^(?:\+264|264)?[-\s]?\d{8}$/ }, // Namibia
125
+ NC: { code: '+687', pattern: /^(?:\+687|687)?[-\s]?\d{8}$/ }, // New Caledonia
126
+ NE: { code: '+227', pattern: /^(?:\+227|227)?[-\s]?\d{8}$/ }, // Niger
127
+ NF: { code: '+672', pattern: /^(?:\+672|672)?[-\s]?\d{4}$/ }, // Norfolk Island
128
+ NG: { code: '+234', pattern: /^(?:\+234|234)?[-\s]?\d{10}$/ }, // Nigeria
129
+ NI: { code: '+505', pattern: /^(?:\+505|505)?[-\s]?\d{8}$/ }, // Nicaragua
130
+ NL: { code: '+31', pattern: /^(?:\+31|31)?[-\s]?\d{9}$/ }, // Netherlands
131
+ NO: { code: '+47', pattern: /^(?:\+47|47)?[-\s]?\d{8}$/ }, // Norway
132
+ NP: { code: '+977', pattern: /^(?:\+977|977)?[-\s]?\d{10}$/ }, // Nepal
133
+ NR: { code: '+674', pattern: /^(?:\+674|674)?[-\s]?\d{7}$/ }, // Nauru
134
+ NU: { code: '+683', pattern: /^(?:\+683|683)?[-\s]?\d{4}$/ }, // Niue
135
+ NZ: { code: '+64', pattern: /^(?:\+64|64)?[-\s]?\d{9}$/ }, // New Zealand
136
+ OM: { code: '+968', pattern: /^(?:\+968|968)?[-\s]?\d{8}$/ }, // Oman
137
+ PA: { code: '+507', pattern: /^(?:\+507|507)?[-\s]?\d{8}$/ }, // Panama
138
+ PE: { code: '+51', pattern: /^(?:\+51|51)?[-\s]?\d{9}$/ }, // Peru
139
+ PF: { code: '+689', pattern: /^(?:\+689|689)?[-\s]?\d{6}$/ }, // French Polynesia
140
+ PG: { code: '+675', pattern: /^(?:\+675|675)?[-\s]?\d{8}$/ }, // Papua New Guinea
141
+ PH: { code: '+63', pattern: /^(?:\+63|63)?[-\s]?\d{10}$/ }, // Philippines
142
+ PK: { code: '+92', pattern: /^(?:\+92|92)?[-\s]?\d{10}$/ }, // Pakistan
143
+ PL: { code: '+48', pattern: /^(?:\+48|48)?[-\s]?\d{9}$/ }, // Poland
144
+ PM: { code: '+508', pattern: /^(?:\+508|508)?[-\s]?\d{6}$/ }, // Saint Pierre and Miquelon
145
+ PN: { code: '+870', pattern: /^(?:\+870|870)?[-\s]?\d{8}$/ }, // Pitcairn Islands
146
+ PR: { code: '+1(787)', pattern: /^(?:\+1\(787\)|1\(787\))?[-\s]?\d{7}$/ }, // Puerto Rico
147
+ PT: { code: '+351', pattern: /^(?:\+351|351)?[-\s]?\d{9}$/ }, // Portugal
148
+ PW: { code: '+680', pattern: /^(?:\+680|680)?[-\s]?\d{7}$/ }, // Palau
149
+ PY: { code: '+595', pattern: /^(?:\+595|595)?[-\s]?\d{9}$/ }, // Paraguay
150
+ QA: { code: '+974', pattern: /^(?:\+974|974)?[-\s]?\d{8}$/ }, // Qatar
151
+ RE: { code: '+262', pattern: /^(?:\+262|262)?[-\s]?\d{9}$/ }, // Réunion
152
+ RO: { code: '+40', pattern: /^(?:\+40|40)?[-\s]?\d{9}$/ }, // Romania
153
+ RS: { code: '+381', pattern: /^(?:\+381|381)?[-\s]?\d{8}$/ }, // Serbia
154
+ RU: { code: '+7', pattern: /^(?:\+7|7)?[-\s]?\d{10}$/ }, // Russia
155
+ RW: { code: '+250', pattern: /^(?:\+250|250)?[-\s]?\d{9}$/ }, // Rwanda
156
+ SA: { code: '+966', pattern: /^(?:\+966|966)?[-\s]?\d{9}$/ }, // Saudi Arabia
157
+ SB: { code: '+677', pattern: /^(?:\+677|677)?[-\s]?\d{7}$/ }, // Solomon Islands
158
+ SC: { code: '+248', pattern: /^(?:\+248|248)?[-\s]?\d{7}$/ }, // Seychelles
159
+ SD: { code: '+249', pattern: /^(?:\+249|249)?[-\s]?\d{9}$/ }, // Sudan
160
+ SE: { code: '+46', pattern: /^(?:\+46|46)?[-\s]?\d{9}$/ }, // Sweden
161
+ SG: { code: '+65', pattern: /^(?:\+65|65)?[-\s]?\d{8}$/ }, // Singapore
162
+ SH: { code: '+290', pattern: /^(?:\+290|290)?[-\s]?\d{4}$/ }, // Saint Helena
163
+ SI: { code: '+386', pattern: /^(?:\+386|386)?[-\s]?\d{8}$/ }, // Slovenia
164
+ SJ: { code: '+47', pattern: /^(?:\+47|47)?[-\s]?\d{8}$/ }, // Svalbard and Jan Mayen
165
+ SK: { code: '+421', pattern: /^(?:\+421|421)?[-\s]?\d{9}$/ }, // Slovakia
166
+ SL: { code: '+232', pattern: /^(?:\+232|232)?[-\s]?\d{8}$/ }, // Sierra Leone
167
+ SM: { code: '+378', pattern: /^(?:\+378|378)?[-\s]?\d{8}$/ }, // San Marino
168
+ SN: { code: '+221', pattern: /^(?:\+221|221)?[-\s]?\d{9}$/ }, // Senegal
169
+ SO: { code: '+252', pattern: /^(?:\+252|252)?[-\s]?\d{9}$/ }, // Somalia
170
+ SR: { code: '+597', pattern: /^(?:\+597|597)?[-\s]?\d{8}$/ }, // Suriname
171
+ SS: { code: '+211', pattern: /^(?:\+211|211)?[-\s]?\d{9}$/ }, // South Sudan
172
+ ST: { code: '+239', pattern: /^(?:\+239|239)?[-\s]?\d{7}$/ }, // São Tomé and Príncipe
173
+ SV: { code: '+503', pattern: /^(?:\+503|503)?[-\s]?\d{8}$/ }, // El Salvador
174
+ SX: { code: '+1(721)', pattern: /^(?:\+1\(721\)|1\(721\))?[-\s]?\d{7}$/ }, // Sint Maarten
175
+ SY: { code: '+963', pattern: /^(?:\+963|963)?[-\s]?\d{8}$/ }, // Syria
176
+ SZ: { code: '+268', pattern: /^(?:\+268|268)?[-\s]?\d{8}$/ }, // Eswatini
177
+ TC: { code: '+1(649)', pattern: /^(?:\+1\(649\)|1\(649\))?[-\s]?\d{7}$/ }, // Turks and Caicos Islands
178
+ TD: { code: '+235', pattern: /^(?:\+235|235)?[-\s]?\d{8}$/ }, // Chad
179
+ TF: { code: '+262', pattern: /^(?:\+262|262)?[-\s]?\d{9}$/ }, // French Southern Territories
180
+ TG: { code: '+228', pattern: /^(?:\+228|228)?[-\s]?\d{8}$/ }, // Togo
181
+ TH: { code: '+66', pattern: /^(?:\+66|66)?[-\s]?\d{9}$/ }, // Thailand
182
+ TJ: { code: '+992', pattern: /^(?:\+992|992)?[-\s]?\d{9}$/ }, // Tajikistan
183
+ TK: { code: '+690', pattern: /^(?:\+690|690)?[-\s]?\d{4}$/ }, // Tokelau
184
+ TL: { code: '+670', pattern: /^(?:\+670|670)?[-\s]?\d{7}$/ }, // Timor-Leste
185
+ TM: { code: '+993', pattern: /^(?:\+993|993)?[-\s]?\d{8}$/ }, // Turkmenistan
186
+ TN: { code: '+216', pattern: /^(?:\+216|216)?[-\s]?\d{8}$/ }, // Tunisia
187
+ TO: { code: '+676', pattern: /^(?:\+676|676)?[-\s]?\d{4}$/ }, // Tonga
188
+ TR: { code: '+90', pattern: /^(?:\+90|90)?[-\s]?\d{10}$/ }, // Turkey
189
+ TT: { code: '+1(868)', pattern: /^(?:\+1\(868\)|1\(868\))?[-\s]?\d{7}$/ }, // Trinidad and Tobago
190
+ TV: { code: '+688', pattern: /^(?:\+688|688)?[-\s]?\d{4}$/ }, // Tuvalu
191
+ TZ: { code: '+255', pattern: /^(?:\+255|255)?[-\s]?\d{9}$/ }, // Tanzania
192
+ UA: { code: '+380', pattern: /^(?:\+380|380)?[-\s]?\d{9}$/ }, // Ukraine
193
+ UG: { code: '+256', pattern: /^(?:\+256|256)?[-\s]?\d{9}$/ }, // Uganda
194
+ US: { code: '+1', pattern: /^(?:\+1|1)?[-\s]?\d{10}$/ }, // United States
195
+ UY: { code: '+598', pattern: /^(?:\+598|598)?[-\s]?\d{8}$/ }, // Uruguay
196
+ UZ: { code: '+998', pattern: /^(?:\+998|998)?[-\s]?\d{9}$/ }, // Uzbekistan
197
+ VA: { code: '+39', pattern: /^(?:\+39|39)?[-\s]?\d{9}$/ }, // Vatican City
198
+ VC: { code: '+1(784)', pattern: /^(?:\+1\(784\)|1\(784\))?[-\s]?\d{7}$/ }, // Saint Vincent and the Grenadines
199
+ VE: { code: '+58', pattern: /^(?:\+58|58)?[-\s]?\d{10}$/ }, // Venezuela
200
+ VG: { code: '+1(284)', pattern: /^(?:\+1\(284\)|1\(284\))?[-\s]?\d{7}$/ }, // British Virgin Islands
201
+ VI: { code: '+1(340)', pattern: /^(?:\+1\(340\)|1\(340\))?[-\s]?\d{7}$/ }, // U.S. Virgin Islands
202
+ VN: { code: '+84', pattern: /^(?:\+84|84)?[-\s]?\d{9}$/ }, // Vietnam
203
+ VU: { code: '+678', pattern: /^(?:\+678|678)?[-\s]?\d{7}$/ }, // Vanuatu
204
+ WF: { code: '+681', pattern: /^(?:\+681|681)?[-\s]?\d{6}$/ }, // Wallis and Futuna
205
+ WS: { code: '+685', pattern: /^(?:\+685|685)?[-\s]?\d{5}$/ }, // Samoa
206
+ YE: { code: '+967', pattern: /^(?:\+967|967)?[-\s]?\d{9}$/ }, // Yemen
207
+ ZA: { code: '+27', pattern: /^(?:\+27|27)?[-\s]?\d{9}$/ }, // South Africa
208
+ ZM: { code: '+260', pattern: /^(?:\+260|260)?[-\s]?\d{9}$/ }, // Zambia
209
+ ZW: { code: '+263', pattern: /^(?:\+263|263)?[-\s]?\d{9}$/ }, // Zimbabwe
210
+ };
211
+ //# sourceMappingURL=country.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"country.js","sourceRoot":"","sources":["../src/country.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * mobile-validation — Type-safe international mobile number validation
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import { validateMobileNumber, validateMobileNumberDetailed } from 'mobile-validation';
8
+ *
9
+ * // Simple boolean check
10
+ * validateMobileNumber('+919876543210'); // true
11
+ *
12
+ * // Detailed result
13
+ * const result = validateMobileNumberDetailed('+447911123456');
14
+ * // { isValid: true, country: 'GB', formattedNumber: '+447911123456' }
15
+ * ```
16
+ */
17
+ export { validateMobileNumber, validateMobileNumberDetailed } from './validator';
18
+ export { countryPhonePatterns } from './country';
19
+ export type { CountryCode, CountryPhonePattern, ValidationResult } from './types';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGjD,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * @packageDocumentation
4
+ * mobile-validation — Type-safe international mobile number validation
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { validateMobileNumber, validateMobileNumberDetailed } from 'mobile-validation';
9
+ *
10
+ * // Simple boolean check
11
+ * validateMobileNumber('+919876543210'); // true
12
+ *
13
+ * // Detailed result
14
+ * const result = validateMobileNumberDetailed('+447911123456');
15
+ * // { isValid: true, country: 'GB', formattedNumber: '+447911123456' }
16
+ * ```
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.countryPhonePatterns = exports.validateMobileNumberDetailed = exports.validateMobileNumber = void 0;
20
+ // Public API — functions
21
+ var validator_1 = require("./validator");
22
+ Object.defineProperty(exports, "validateMobileNumber", { enumerable: true, get: function () { return validator_1.validateMobileNumber; } });
23
+ Object.defineProperty(exports, "validateMobileNumberDetailed", { enumerable: true, get: function () { return validator_1.validateMobileNumberDetailed; } });
24
+ // Public API — data
25
+ var country_1 = require("./country");
26
+ Object.defineProperty(exports, "countryPhonePatterns", { enumerable: true, get: function () { return country_1.countryPhonePatterns; } });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,yBAAyB;AACzB,yCAAiF;AAAxE,iHAAA,oBAAoB,OAAA;AAAE,yHAAA,4BAA4B,OAAA;AAE3D,oBAAoB;AACpB,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ISO 3166-1 alpha-2 country codes supported for mobile validation.
3
+ */
4
+ export type CountryCode = 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BR' | 'BS' | 'BT' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CH' | 'CN' | 'CO' | 'CR' | 'CU' | 'CZ' | 'DE' | 'DK' | 'DO' | 'DZ' | 'EG' | 'ES' | 'FI' | 'FR' | 'GB' | 'GH' | 'GM' | 'GR' | 'GT' | 'HK' | 'HN' | 'HR' | 'HU' | 'ID' | 'IE' | 'IL' | 'IN' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TF' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TZ' | 'UA' | 'UG' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'ZA' | 'ZM' | 'ZW';
5
+ /**
6
+ * Phone pattern entry for a specific country.
7
+ */
8
+ export interface CountryPhonePattern {
9
+ /** International dialing code (e.g. "+91") */
10
+ code: string;
11
+ /** Regex pattern to validate the full E.164 number */
12
+ pattern: RegExp;
13
+ }
14
+ /**
15
+ * Detailed result returned by `validateMobileNumberDetailed`.
16
+ */
17
+ export interface ValidationResult {
18
+ /** Whether the phone number is valid */
19
+ isValid: boolean;
20
+ /** Detected country code (ISO 3166-1 alpha-2) — present when valid */
21
+ country?: CountryCode;
22
+ /** Formatted E.164 number — present when valid */
23
+ formattedNumber?: string;
24
+ /** Human-readable error message — present when invalid */
25
+ error?: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACnE,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import type { ValidationResult } from './types';
2
+ /**
3
+ * Validates a mobile phone number (simple boolean result).
4
+ *
5
+ * The number must be in E.164 format (e.g. `+919876543210`) or include
6
+ * a dialable country code so the library can detect the country.
7
+ *
8
+ * @param phoneNumber - The phone number string to validate
9
+ * @returns `true` if the number is valid, `false` otherwise
10
+ *
11
+ * @example
12
+ * validateMobileNumber('+919876543210'); // true (India)
13
+ * validateMobileNumber('+1234'); // false
14
+ */
15
+ export declare const validateMobileNumber: (phoneNumber: string) => boolean;
16
+ /**
17
+ * Validates a mobile phone number and returns detailed information.
18
+ *
19
+ * @param phoneNumber - The phone number string to validate
20
+ * @returns A {@link ValidationResult} object with `isValid`, and optionally
21
+ * `country`, `formattedNumber`, and `error` fields.
22
+ *
23
+ * @example
24
+ * const result = validateMobileNumberDetailed('+919876543210');
25
+ * // { isValid: true, country: 'IN', formattedNumber: '+919876543210' }
26
+ *
27
+ * const bad = validateMobileNumberDetailed('hello');
28
+ * // { isValid: false, error: 'Unable to parse phone number' }
29
+ */
30
+ export declare const validateMobileNumberDetailed: (phoneNumber: string) => ValidationResult;
31
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,KAAG,OAyB1D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,MAAM,KAAG,gBAiDlE,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMobileNumberDetailed = exports.validateMobileNumber = void 0;
4
+ const libphonenumber_js_1 = require("libphonenumber-js");
5
+ const country_1 = require("./country");
6
+ /**
7
+ * Validates a mobile phone number (simple boolean result).
8
+ *
9
+ * The number must be in E.164 format (e.g. `+919876543210`) or include
10
+ * a dialable country code so the library can detect the country.
11
+ *
12
+ * @param phoneNumber - The phone number string to validate
13
+ * @returns `true` if the number is valid, `false` otherwise
14
+ *
15
+ * @example
16
+ * validateMobileNumber('+919876543210'); // true (India)
17
+ * validateMobileNumber('+1234'); // false
18
+ */
19
+ const validateMobileNumber = (phoneNumber) => {
20
+ if (!phoneNumber || typeof phoneNumber !== 'string') {
21
+ return false;
22
+ }
23
+ const phoneNumberObj = (0, libphonenumber_js_1.parsePhoneNumberFromString)(phoneNumber);
24
+ if (!phoneNumberObj || !phoneNumberObj.isValid()) {
25
+ return false;
26
+ }
27
+ const formattedNumber = phoneNumberObj.number;
28
+ const countryCode = phoneNumberObj.country;
29
+ if (!countryCode) {
30
+ return false;
31
+ }
32
+ const patternObj = country_1.countryPhonePatterns[countryCode];
33
+ if (patternObj && !patternObj.pattern.test(formattedNumber)) {
34
+ return false;
35
+ }
36
+ return true;
37
+ };
38
+ exports.validateMobileNumber = validateMobileNumber;
39
+ /**
40
+ * Validates a mobile phone number and returns detailed information.
41
+ *
42
+ * @param phoneNumber - The phone number string to validate
43
+ * @returns A {@link ValidationResult} object with `isValid`, and optionally
44
+ * `country`, `formattedNumber`, and `error` fields.
45
+ *
46
+ * @example
47
+ * const result = validateMobileNumberDetailed('+919876543210');
48
+ * // { isValid: true, country: 'IN', formattedNumber: '+919876543210' }
49
+ *
50
+ * const bad = validateMobileNumberDetailed('hello');
51
+ * // { isValid: false, error: 'Unable to parse phone number' }
52
+ */
53
+ const validateMobileNumberDetailed = (phoneNumber) => {
54
+ if (!phoneNumber || typeof phoneNumber !== 'string') {
55
+ return {
56
+ isValid: false,
57
+ error: 'Phone number must be a non-empty string',
58
+ };
59
+ }
60
+ const phoneNumberObj = (0, libphonenumber_js_1.parsePhoneNumberFromString)(phoneNumber);
61
+ if (!phoneNumberObj) {
62
+ return {
63
+ isValid: false,
64
+ error: 'Unable to parse phone number',
65
+ };
66
+ }
67
+ if (!phoneNumberObj.isValid()) {
68
+ return {
69
+ isValid: false,
70
+ error: 'Phone number is not valid',
71
+ };
72
+ }
73
+ const formattedNumber = phoneNumberObj.number;
74
+ const rawCountry = phoneNumberObj.country;
75
+ const countryCode = rawCountry;
76
+ if (!countryCode) {
77
+ return {
78
+ isValid: false,
79
+ error: 'Could not determine country from phone number',
80
+ };
81
+ }
82
+ const patternObj = country_1.countryPhonePatterns[countryCode];
83
+ if (patternObj && !patternObj.pattern.test(formattedNumber)) {
84
+ return {
85
+ isValid: false,
86
+ error: `Phone number does not match the expected pattern for country: ${countryCode}`,
87
+ };
88
+ }
89
+ return {
90
+ isValid: true,
91
+ country: countryCode,
92
+ formattedNumber,
93
+ };
94
+ };
95
+ exports.validateMobileNumberDetailed = validateMobileNumberDetailed;
96
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":";;;AAAA,yDAA+D;AAE/D,uCAAiD;AAGjD;;;;;;;;;;;;GAYG;AACI,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAW,EAAE;IACjE,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,8CAA0B,EAAC,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;IAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAkC,CAAC;IAEtE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,8BAAoB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAEF;;;;;;;;;;;;;GAaG;AACI,MAAM,4BAA4B,GAAG,CAAC,WAAmB,EAAoB,EAAE;IAClF,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,yCAAyC;SACnD,CAAC;IACN,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,8CAA0B,EAAC,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,8BAA8B;SACxC,CAAC;IACN,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5B,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B;SACrC,CAAC;IACN,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;IAC9C,MAAM,UAAU,GAAG,cAAc,CAAC,OAAqC,CAAC;IACxE,MAAM,WAAW,GAAG,UAAqC,CAAC;IAE1D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,+CAA+C;SACzD,CAAC;IACN,CAAC;IAED,MAAM,UAAU,GAAG,8BAAoB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1D,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iEAAiE,WAAW,EAAE;SACxF,CAAC;IACN,CAAC;IAED,OAAO;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,WAAW;QACpB,eAAe;KAClB,CAAC;AACN,CAAC,CAAC;AAjDW,QAAA,4BAA4B,gCAiDvC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "mobile-sg-validator",
3
+ "version": "1.0.0",
4
+ "description": "Type-safe international mobile number validation for 200+ countries",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "build:watch": "tsc --watch",
14
+ "type-check": "tsc --noEmit",
15
+ "prepublishOnly": "npm run type-check && npm run build",
16
+ "clean": "rimraf dist"
17
+ },
18
+ "keywords": [
19
+ "mobile",
20
+ "phone",
21
+ "validation",
22
+ "international",
23
+ "typescript",
24
+ "E164",
25
+ "libphonenumber"
26
+ ],
27
+ "author": "Sangram Ghadage",
28
+ "license": "ISC",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": ""
32
+ },
33
+ "homepage": "",
34
+ "dependencies": {
35
+ "libphonenumber-js": "^1.12.37"
36
+ },
37
+ "devDependencies": {
38
+ "rimraf": "^6.1.3",
39
+ "typescript": "^5.9.3"
40
+ },
41
+ "engines": {
42
+ "node": ">=14"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }