mobile-sg-validator 1.3.1 → 2.0.1

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 CHANGED
@@ -5,7 +5,6 @@
5
5
  [![npm version](https://img.shields.io/npm/v/mobile-sg-validator)](https://www.npmjs.com/package/mobile-sg-validator)
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue)](https://www.typescriptlang.org/)
7
7
 
8
- Powered by [`libphonenumber-js`](https://github.com/catamphetamine/libphonenumber-js) with an additional per-country regex layer for extra precision.
9
8
 
10
9
  ---
11
10
 
@@ -1,207 +1,210 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.countryPhonePatterns = void 0;
4
- exports.countryPhonePatterns = {
5
- AC: { code: '+247', country_name: 'Ascension Island', pattern: /^\+247\d{4}$/ },
6
- AD: { code: '+376', country_name: 'Andorra', pattern: /^\+376\d{6}$/ },
7
- AE: { code: '+971', country_name: 'United Arab Emirates', pattern: /^\+971\d{9}$/ },
8
- AF: { code: '+93', country_name: 'Afghanistan', pattern: /^\+93\d{9}$/ },
9
- AG: { code: '+1', country_name: 'Antigua and Barbuda', pattern: /^\+1268\d{7}$/ },
10
- AI: { code: '+1', country_name: 'Anguilla', pattern: /^\+1264\d{7}$/ },
11
- AL: { code: '+355', country_name: 'Albania', pattern: /^\+355\d{9}$/ },
12
- AM: { code: '+374', country_name: 'Armenia', pattern: /^\+374\d{8}$/ },
13
- AO: { code: '+244', country_name: 'Angola', pattern: /^\+244\d{9}$/ },
14
- AR: { code: '+54', country_name: 'Argentina', pattern: /^\+54\d{10}$/ },
15
- AS: { code: '+1', country_name: 'American Samoa', pattern: /^\+1684\d{7}$/ },
16
- AT: { code: '+43', country_name: 'Austria', pattern: /^\+43\d{10}$/ },
17
- AU: { code: '+61', country_name: 'Australia', pattern: /^\+61\d{9}$/ },
18
- AW: { code: '+297', country_name: 'Aruba', pattern: /^\+297\d{7}$/ },
19
- AX: { code: '+358', country_name: 'Åland Islands', pattern: /^\+358\d{6,12}$/ },
20
- AZ: { code: '+994', country_name: 'Azerbaijan', pattern: /^\+994\d{9}$/ },
21
- BA: { code: '+387', country_name: 'Bosnia and Herzegovina', pattern: /^\+387\d{8}$/ },
22
- BB: { code: '+1', country_name: 'Barbados', pattern: /^\+1246\d{7}$/ },
23
- BD: { code: '+880', country_name: 'Bangladesh', pattern: /^\+880\d{10}$/ },
24
- BE: { code: '+32', country_name: 'Belgium', pattern: /^\+32\d{9}$/ },
25
- BF: { code: '+226', country_name: 'Burkina Faso', pattern: /^\+226\d{8}$/ },
26
- BG: { code: '+359', country_name: 'Bulgaria', pattern: /^\+359\d{9}$/ },
27
- BH: { code: '+973', country_name: 'Bahrain', pattern: /^\+973\d{8}$/ },
28
- BI: { code: '+257', country_name: 'Burundi', pattern: /^\+257\d{8}$/ },
29
- BJ: { code: '+229', country_name: 'Benin', pattern: /^\+229\d{8}$/ },
30
- BL: { code: '+590', country_name: 'Saint Barthélemy', pattern: /^\+590\d{9}$/ },
31
- BM: { code: '+1', country_name: 'Bermuda', pattern: /^\+1441\d{7}$/ },
32
- BN: { code: '+673', country_name: 'Brunei Darussalam', pattern: /^\+673\d{7}$/ },
33
- BO: { code: '+591', country_name: 'Bolivia', pattern: /^\+591\d{8}$/ },
34
- BR: { code: '+55', country_name: 'Brazil', pattern: /^\+55\d{10,11}$/ },
35
- BS: { code: '+1', country_name: 'Bahamas', pattern: /^\+1242\d{7}$/ },
36
- BT: { code: '+975', country_name: 'Bhutan', pattern: /^\+975\d{8}$/ },
37
- BW: { code: '+267', country_name: 'Botswana', pattern: /^\+267\d{7,8}$/ },
38
- BY: { code: '+375', country_name: 'Belarus', pattern: /^\+375\d{9}$/ },
39
- BZ: { code: '+501', country_name: 'Belize', pattern: /^\+501\d{7}$/ },
40
- CA: { code: '+1', country_name: 'Canada', pattern: /^\+1\d{10}$/ },
41
- CH: { code: '+41', country_name: 'Switzerland', pattern: /^\+41\d{9}$/ },
42
- CN: { code: '+86', country_name: 'China', pattern: /^\+86\d{11}$/ },
43
- CO: { code: '+57', country_name: 'Colombia', pattern: /^\+57\d{10}$/ },
44
- CR: { code: '+506', country_name: 'Costa Rica', pattern: /^\+506\d{8}$/ },
45
- CU: { code: '+53', country_name: 'Cuba', pattern: /^\+53\d{8}$/ },
46
- CZ: { code: '+420', country_name: 'Czech Republic', pattern: /^\+420\d{9}$/ },
47
- DE: { code: '+49', country_name: 'Germany', pattern: /^\+49\d{10,14}$/ },
48
- DK: { code: '+45', country_name: 'Denmark', pattern: /^\+45\d{8}$/ },
49
- DO: { code: '+1', country_name: 'Dominican Republic', pattern: /^\+1(809|829|849)\d{7}$/ },
50
- DZ: { code: '+213', country_name: 'Algeria', pattern: /^\+213\d{9}$/ },
51
- EG: { code: '+20', country_name: 'Egypt', pattern: /^\+20\d{10}$/ },
52
- ES: { code: '+34', country_name: 'Spain', pattern: /^\+34\d{9}$/ },
53
- FI: { code: '+358', country_name: 'Finland', pattern: /^\+358\d{6,12}$/ },
54
- FR: { code: '+33', country_name: 'France', pattern: /^\+33\d{9}$/ },
55
- GB: { code: '+44', country_name: 'United Kingdom', pattern: /^\+44\d{10}$/ },
56
- GH: { code: '+233', country_name: 'Ghana', pattern: /^\+233\d{9}$/ },
57
- GM: { code: '+220', country_name: 'Gambia', pattern: /^\+220\d{7}$/ },
58
- GR: { code: '+30', country_name: 'Greece', pattern: /^\+30\d{10}$/ },
59
- GT: { code: '+502', country_name: 'Guatemala', pattern: /^\+502\d{8}$/ },
60
- HK: { code: '+852', country_name: 'Hong Kong', pattern: /^\+852\d{8}$/ },
61
- HN: { code: '+504', country_name: 'Honduras', pattern: /^\+504\d{8}$/ },
62
- HR: { code: '+385', country_name: 'Croatia', pattern: /^\+385\d{8,9}$/ },
63
- HU: { code: '+36', country_name: 'Hungary', pattern: /^\+36\d{9}$/ },
64
- ID: { code: '+62', country_name: 'Indonesia', pattern: /^\+62\d{9,11}$/ },
65
- IE: { code: '+353', country_name: 'Ireland', pattern: /^\+353\d{9}$/ },
66
- IL: { code: '+972', country_name: 'Israel', pattern: /^\+972\d{9}$/ },
67
- IN: { code: '+91', country_name: 'India', pattern: /^\+91[6-9]\d{9}$/ },
68
- IQ: { code: '+964', country_name: 'Iraq', pattern: /^\+964\d{10}$/ },
69
- IR: { code: '+98', country_name: 'Iran', pattern: /^\+98\d{10}$/ },
70
- IS: { code: '+354', country_name: 'Iceland', pattern: /^\+354\d{7}$/ },
71
- IT: { code: '+39', country_name: 'Italy', pattern: /^\+39\d{10}$/ },
72
- JM: { code: '+1', country_name: 'Jamaica', pattern: /^\+1876\d{7}$/ },
73
- JO: { code: '+962', country_name: 'Jordan', pattern: /^\+962\d{9}$/ },
74
- JP: { code: '+81', country_name: 'Japan', pattern: /^\+81\d{10}$/ },
75
- KE: { code: '+254', country_name: 'Kenya', pattern: /^\+254\d{9}$/ },
76
- KG: { code: '+996', country_name: 'Kyrgyzstan', pattern: /^\+996\d{9}$/ },
77
- KH: { code: '+855', country_name: 'Cambodia', pattern: /^\+855\d{9}$/ },
78
- KI: { code: '+686', country_name: 'Kiribati', pattern: /^\+686\d{7}$/ },
79
- KM: { code: '+269', country_name: 'Comoros', pattern: /^\+269\d{7}$/ },
80
- KN: { code: '+1', country_name: 'Saint Kitts and Nevis', pattern: /^\+1869\d{7}$/ },
81
- KP: { code: '+850', country_name: 'North Korea', pattern: /^\+850\d{8}$/ },
82
- KR: { code: '+82', country_name: 'South Korea', pattern: /^\+82\d{10}$/ },
83
- KW: { code: '+965', country_name: 'Kuwait', pattern: /^\+965\d{8}$/ },
84
- KY: { code: '+1', country_name: 'Cayman Islands', pattern: /^\+1345\d{7}$/ },
85
- KZ: { code: '+7', country_name: 'Kazakhstan', pattern: /^\+7\d{10}$/ },
86
- LA: { code: '+856', country_name: 'Laos', pattern: /^\+856\d{8}$/ },
87
- LB: { code: '+961', country_name: 'Lebanon', pattern: /^\+961\d{8}$/ },
88
- LC: { code: '+1', country_name: 'Saint Lucia', pattern: /^\+1758\d{7}$/ },
89
- LI: { code: '+423', country_name: 'Liechtenstein', pattern: /^\+423\d{8}$/ },
90
- LK: { code: '+94', country_name: 'Sri Lanka', pattern: /^\+94\d{9}$/ },
91
- LR: { code: '+231', country_name: 'Liberia', pattern: /^\+231\d{8}$/ },
92
- LS: { code: '+266', country_name: 'Lesotho', pattern: /^\+266\d{8}$/ },
93
- LT: { code: '+370', country_name: 'Lithuania', pattern: /^\+370\d{8}$/ },
94
- LU: { code: '+352', country_name: 'Luxembourg', pattern: /^\+352\d{6,9}$/ },
95
- LV: { code: '+371', country_name: 'Latvia', pattern: /^\+371\d{8}$/ },
96
- LY: { code: '+218', country_name: 'Libya', pattern: /^\+218\d{9}$/ },
97
- MA: { code: '+212', country_name: 'Morocco', pattern: /^\+212\d{9}$/ },
98
- MC: { code: '+377', country_name: 'Monaco', pattern: /^\+377\d{8}$/ },
99
- MD: { code: '+373', country_name: 'Moldova', pattern: /^\+373\d{8}$/ },
100
- ME: { code: '+382', country_name: 'Montenegro', pattern: /^\+382\d{8}$/ },
101
- MF: { code: '+590', country_name: 'Saint Martin', pattern: /^\+590\d{9}$/ },
102
- MG: { code: '+261', country_name: 'Madagascar', pattern: /^\+261\d{9}$/ },
103
- MH: { code: '+692', country_name: 'Marshall Islands', pattern: /^\+692\d{7}$/ },
104
- MK: { code: '+389', country_name: 'North Macedonia', pattern: /^\+389\d{8}$/ },
105
- ML: { code: '+223', country_name: 'Mali', pattern: /^\+223\d{8}$/ },
106
- MM: { code: '+95', country_name: 'Myanmar', pattern: /^\+95\d{9}$/ },
107
- MN: { code: '+976', country_name: 'Mongolia', pattern: /^\+976\d{8}$/ },
108
- MO: { code: '+853', country_name: 'Macau', pattern: /^\+853\d{8}$/ },
109
- MP: { code: '+1', country_name: 'Northern Mariana Islands', pattern: /^\+1670\d{7}$/ },
110
- MQ: { code: '+596', country_name: 'Martinique', pattern: /^\+596\d{9}$/ },
111
- MR: { code: '+222', country_name: 'Mauritania', pattern: /^\+222\d{8}$/ },
112
- MS: { code: '+1', country_name: 'Montserrat', pattern: /^\+1664\d{7}$/ },
113
- MT: { code: '+356', country_name: 'Malta', pattern: /^\+356\d{8}$/ },
114
- MU: { code: '+230', country_name: 'Mauritius', pattern: /^\+230\d{8}$/ },
115
- MV: { code: '+960', country_name: 'Maldives', pattern: /^\+960\d{7}$/ },
116
- MW: { code: '+265', country_name: 'Malawi', pattern: /^\+265\d{9}$/ },
117
- MX: { code: '+52', country_name: 'Mexico', pattern: /^\+52\d{10}$/ },
118
- MY: { code: '+60', country_name: 'Malaysia', pattern: /^\+60\d{9}$/ },
119
- MZ: { code: '+258', country_name: 'Mozambique', pattern: /^\+258\d{9}$/ },
120
- NA: { code: '+264', country_name: 'Namibia', pattern: /^\+264\d{8}$/ },
121
- NC: { code: '+687', country_name: 'New Caledonia', pattern: /^\+687\d{8}$/ },
122
- NE: { code: '+227', country_name: 'Niger', pattern: /^\+227\d{8}$/ },
123
- NF: { code: '+672', country_name: 'Norfolk Island', pattern: /^\+672\d{4}$/ },
124
- NG: { code: '+234', country_name: 'Nigeria', pattern: /^\+234\d{10}$/ },
125
- NI: { code: '+505', country_name: 'Nicaragua', pattern: /^\+505\d{8}$/ },
126
- NL: { code: '+31', country_name: 'Netherlands', pattern: /^\+31\d{9}$/ },
127
- NO: { code: '+47', country_name: 'Norway', pattern: /^\+47\d{8}$/ },
128
- NP: { code: '+977', country_name: 'Nepal', pattern: /^\+977\d{10}$/ },
129
- NR: { code: '+674', country_name: 'Nauru', pattern: /^\+674\d{7}$/ },
130
- NU: { code: '+683', country_name: 'Niue', pattern: /^\+683\d{4}$/ },
131
- NZ: { code: '+64', country_name: 'New Zealand', pattern: /^\+64\d{9}$/ },
132
- OM: { code: '+968', country_name: 'Oman', pattern: /^\+968\d{8}$/ },
133
- PA: { code: '+507', country_name: 'Panama', pattern: /^\+507\d{8}$/ },
134
- PE: { code: '+51', country_name: 'Peru', pattern: /^\+51\d{9}$/ },
135
- PF: { code: '+689', country_name: 'French Polynesia', pattern: /^\+689\d{6}$/ },
136
- PG: { code: '+675', country_name: 'Papua New Guinea', pattern: /^\+675\d{8}$/ },
137
- PH: { code: '+63', country_name: 'Philippines', pattern: /^\+63\d{10}$/ },
138
- PK: { code: '+92', country_name: 'Pakistan', pattern: /^\+92\d{10}$/ },
139
- PL: { code: '+48', country_name: 'Poland', pattern: /^\+48\d{9}$/ },
140
- PM: { code: '+508', country_name: 'Saint Pierre and Miquelon', pattern: /^\+508\d{6}$/ },
141
- PN: { code: '+870', country_name: 'Pitcairn Islands', pattern: /^\+870\d{8}$/ },
142
- PR: { code: '+1', country_name: 'Puerto Rico', pattern: /^\+1787\d{7}$/ },
143
- PT: { code: '+351', country_name: 'Portugal', pattern: /^\+351\d{9}$/ },
144
- PW: { code: '+680', country_name: 'Palau', pattern: /^\+680\d{7}$/ },
145
- PY: { code: '+595', country_name: 'Paraguay', pattern: /^\+595\d{9}$/ },
146
- QA: { code: '+974', country_name: 'Qatar', pattern: /^\+974\d{8}$/ },
147
- RE: { code: '+262', country_name: 'Réunion', pattern: /^\+262\d{9}$/ },
148
- RO: { code: '+40', country_name: 'Romania', pattern: /^\+40\d{9}$/ },
149
- RS: { code: '+381', country_name: 'Serbia', pattern: /^\+381\d{8}$/ },
150
- RU: { code: '+7', country_name: 'Russia', pattern: /^\+7\d{10}$/ },
151
- RW: { code: '+250', country_name: 'Rwanda', pattern: /^\+250\d{9}$/ },
152
- SA: { code: '+966', country_name: 'Saudi Arabia', pattern: /^\+966\d{9}$/ },
153
- SB: { code: '+677', country_name: 'Solomon Islands', pattern: /^\+677\d{7}$/ },
154
- SC: { code: '+248', country_name: 'Seychelles', pattern: /^\+248\d{7}$/ },
155
- SD: { code: '+249', country_name: 'Sudan', pattern: /^\+249\d{9}$/ },
156
- SE: { code: '+46', country_name: 'Sweden', pattern: /^\+46\d{9}$/ },
157
- SG: { code: '+65', country_name: 'Singapore', pattern: /^\+65\d{8}$/ },
158
- SH: { code: '+290', country_name: 'Saint Helena', pattern: /^\+290\d{4}$/ },
159
- SI: { code: '+386', country_name: 'Slovenia', pattern: /^\+386\d{8}$/ },
160
- SJ: { code: '+47', country_name: 'Svalbard and Jan Mayen', pattern: /^\+47\d{8}$/ },
161
- SK: { code: '+421', country_name: 'Slovakia', pattern: /^\+421\d{9}$/ },
162
- SL: { code: '+232', country_name: 'Sierra Leone', pattern: /^\+232\d{8}$/ },
163
- SM: { code: '+378', country_name: 'San Marino', pattern: /^\+378\d{8}$/ },
164
- SN: { code: '+221', country_name: 'Senegal', pattern: /^\+221\d{9}$/ },
165
- SO: { code: '+252', country_name: 'Somalia', pattern: /^\+252\d{9}$/ },
166
- SR: { code: '+597', country_name: 'Suriname', pattern: /^\+597\d{8}$/ },
167
- SS: { code: '+211', country_name: 'South Sudan', pattern: /^\+211\d{9}$/ },
168
- ST: { code: '+239', country_name: 'São Tomé and Príncipe', pattern: /^\+239\d{7}$/ },
169
- SV: { code: '+503', country_name: 'El Salvador', pattern: /^\+503\d{8}$/ },
170
- SX: { code: '+1', country_name: 'Sint Maarten', pattern: /^\+1721\d{7}$/ },
171
- SY: { code: '+963', country_name: 'Syria', pattern: /^\+963\d{8}$/ },
172
- SZ: { code: '+268', country_name: 'Eswatini', pattern: /^\+268\d{8}$/ },
173
- TC: { code: '+1', country_name: 'Turks and Caicos Islands', pattern: /^\+1649\d{7}$/ },
174
- TD: { code: '+235', country_name: 'Chad', pattern: /^\+235\d{8}$/ },
175
- TF: { code: '+262', country_name: 'French Southern Territories', pattern: /^\+262\d{9}$/ },
176
- TG: { code: '+228', country_name: 'Togo', pattern: /^\+228\d{8}$/ },
177
- TH: { code: '+66', country_name: 'Thailand', pattern: /^\+66\d{9}$/ },
178
- TJ: { code: '+992', country_name: 'Tajikistan', pattern: /^\+992\d{9}$/ },
179
- TK: { code: '+690', country_name: 'Tokelau', pattern: /^\+690\d{4}$/ },
180
- TL: { code: '+670', country_name: 'Timor-Leste', pattern: /^\+670\d{7}$/ },
181
- TM: { code: '+993', country_name: 'Turkmenistan', pattern: /^\+993\d{8}$/ },
182
- TN: { code: '+216', country_name: 'Tunisia', pattern: /^\+216\d{8}$/ },
183
- TO: { code: '+676', country_name: 'Tonga', pattern: /^\+676\d{4}$/ },
184
- TR: { code: '+90', country_name: 'Turkey', pattern: /^\+90\d{10}$/ },
185
- TT: { code: '+1', country_name: 'Trinidad and Tobago', pattern: /^\+1868\d{7}$/ },
186
- TV: { code: '+688', country_name: 'Tuvalu', pattern: /^\+688\d{4}$/ },
187
- TZ: { code: '+255', country_name: 'Tanzania', pattern: /^\+255\d{9}$/ },
188
- UA: { code: '+380', country_name: 'Ukraine', pattern: /^\+380\d{9}$/ },
189
- UG: { code: '+256', country_name: 'Uganda', pattern: /^\+256\d{9}$/ },
190
- US: { code: '+1', country_name: 'United States', pattern: /^\+1\d{10}$/ },
191
- UY: { code: '+598', country_name: 'Uruguay', pattern: /^\+598\d{8}$/ },
192
- UZ: { code: '+998', country_name: 'Uzbekistan', pattern: /^\+998\d{9}$/ },
193
- VA: { code: '+39', country_name: 'Vatican City', pattern: /^\+39\d{9}$/ },
194
- VC: { code: '+1', country_name: 'Saint Vincent and the Grenadines', pattern: /^\+1784\d{7}$/ },
195
- VE: { code: '+58', country_name: 'Venezuela', pattern: /^\+58\d{10}$/ },
196
- VG: { code: '+1', country_name: 'British Virgin Islands', pattern: /^\+1284\d{7}$/ },
197
- VI: { code: '+1', country_name: 'U.S. Virgin Islands', pattern: /^\+1340\d{7}$/ },
198
- VN: { code: '+84', country_name: 'Vietnam', pattern: /^\+84\d{9}$/ },
199
- VU: { code: '+678', country_name: 'Vanuatu', pattern: /^\+678\d{7}$/ },
200
- WF: { code: '+681', country_name: 'Wallis and Futuna', pattern: /^\+681\d{6}$/ },
201
- WS: { code: '+685', country_name: 'Samoa', pattern: /^\+685\d{5}$/ },
202
- YE: { code: '+967', country_name: 'Yemen', pattern: /^\+967\d{9}$/ },
203
- ZA: { code: '+27', country_name: 'South Africa', pattern: /^\+27\d{9}$/ },
204
- ZM: { code: '+260', country_name: 'Zambia', pattern: /^\+260\d{9}$/ },
205
- ZW: { code: '+263', country_name: 'Zimbabwe', pattern: /^\+263\d{9}$/ },
206
- };
207
- //# sourceMappingURL=country.js.map
4
+ const d = [
5
+ ['AC', '+247', 'Ascension Island', /^\+247\d{4}$/],
6
+ ['AD', '+376', 'Andorra', /^\+376\d{6}$/],
7
+ ['AE', '+971', 'United Arab Emirates', /^\+971\d{9}$/],
8
+ ['AF', '+93', 'Afghanistan', /^\+93\d{9}$/],
9
+ ['AG', '+1', 'Antigua and Barbuda', /^\+1268\d{7}$/],
10
+ ['AI', '+1', 'Anguilla', /^\+1264\d{7}$/],
11
+ ['AL', '+355', 'Albania', /^\+355\d{9}$/],
12
+ ['AM', '+374', 'Armenia', /^\+374\d{8}$/],
13
+ ['AO', '+244', 'Angola', /^\+244\d{9}$/],
14
+ ['AR', '+54', 'Argentina', /^\+54\d{10}$/],
15
+ ['AS', '+1', 'American Samoa', /^\+1684\d{7}$/],
16
+ ['AT', '+43', 'Austria', /^\+43\d{10}$/],
17
+ ['AU', '+61', 'Australia', /^\+61\d{9}$/],
18
+ ['AW', '+297', 'Aruba', /^\+297\d{7}$/],
19
+ ['AX', '+358', 'Åland Islands', /^\+358\d{6,12}$/],
20
+ ['AZ', '+994', 'Azerbaijan', /^\+994\d{9}$/],
21
+ ['BA', '+387', 'Bosnia and Herzegovina', /^\+387\d{8}$/],
22
+ ['BB', '+1', 'Barbados', /^\+1246\d{7}$/],
23
+ ['BD', '+880', 'Bangladesh', /^\+880\d{10}$/],
24
+ ['BE', '+32', 'Belgium', /^\+32\d{9}$/],
25
+ ['BF', '+226', 'Burkina Faso', /^\+226\d{8}$/],
26
+ ['BG', '+359', 'Bulgaria', /^\+359\d{9}$/],
27
+ ['BH', '+973', 'Bahrain', /^\+973\d{8}$/],
28
+ ['BI', '+257', 'Burundi', /^\+257\d{8}$/],
29
+ ['BJ', '+229', 'Benin', /^\+229\d{8}$/],
30
+ ['BL', '+590', 'Saint Barthélemy', /^\+590\d{9}$/],
31
+ ['BM', '+1', 'Bermuda', /^\+1441\d{7}$/],
32
+ ['BN', '+673', 'Brunei Darussalam', /^\+673\d{7}$/],
33
+ ['BO', '+591', 'Bolivia', /^\+591\d{8}$/],
34
+ ['BR', '+55', 'Brazil', /^\+55\d{10,11}$/],
35
+ ['BS', '+1', 'Bahamas', /^\+1242\d{7}$/],
36
+ ['BT', '+975', 'Bhutan', /^\+975\d{8}$/],
37
+ ['BW', '+267', 'Botswana', /^\+267\d{7,8}$/],
38
+ ['BY', '+375', 'Belarus', /^\+375\d{9}$/],
39
+ ['BZ', '+501', 'Belize', /^\+501\d{7}$/],
40
+ ['CA', '+1', 'Canada', /^\+1\d{10}$/],
41
+ ['CH', '+41', 'Switzerland', /^\+41\d{9}$/],
42
+ ['CN', '+86', 'China', /^\+86\d{11}$/],
43
+ ['CO', '+57', 'Colombia', /^\+57\d{10}$/],
44
+ ['CR', '+506', 'Costa Rica', /^\+506\d{8}$/],
45
+ ['CU', '+53', 'Cuba', /^\+53\d{8}$/],
46
+ ['CZ', '+420', 'Czech Republic', /^\+420\d{9}$/],
47
+ ['DE', '+49', 'Germany', /^\+49\d{10,14}$/],
48
+ ['DK', '+45', 'Denmark', /^\+45\d{8}$/],
49
+ ['DO', '+1', 'Dominican Republic', /^\+1(809|829|849)\d{7}$/],
50
+ ['DZ', '+213', 'Algeria', /^\+213\d{9}$/],
51
+ ['EG', '+20', 'Egypt', /^\+20\d{10}$/],
52
+ ['ES', '+34', 'Spain', /^\+34\d{9}$/],
53
+ ['FI', '+358', 'Finland', /^\+358\d{6,12}$/],
54
+ ['FR', '+33', 'France', /^\+33\d{9}$/],
55
+ ['GB', '+44', 'United Kingdom', /^\+44\d{10}$/],
56
+ ['GH', '+233', 'Ghana', /^\+233\d{9}$/],
57
+ ['GM', '+220', 'Gambia', /^\+220\d{7}$/],
58
+ ['GR', '+30', 'Greece', /^\+30\d{10}$/],
59
+ ['GT', '+502', 'Guatemala', /^\+502\d{8}$/],
60
+ ['HK', '+852', 'Hong Kong', /^\+852\d{8}$/],
61
+ ['HN', '+504', 'Honduras', /^\+504\d{8}$/],
62
+ ['HR', '+385', 'Croatia', /^\+385\d{8,9}$/],
63
+ ['HU', '+36', 'Hungary', /^\+36\d{9}$/],
64
+ ['ID', '+62', 'Indonesia', /^\+62\d{9,11}$/],
65
+ ['IE', '+353', 'Ireland', /^\+353\d{9}$/],
66
+ ['IL', '+972', 'Israel', /^\+972\d{9}$/],
67
+ ['IN', '+91', 'India', /^\+91[6-9]\d{9}$/],
68
+ ['IQ', '+964', 'Iraq', /^\+964\d{10}$/],
69
+ ['IR', '+98', 'Iran', /^\+98\d{10}$/],
70
+ ['IS', '+354', 'Iceland', /^\+354\d{7}$/],
71
+ ['IT', '+39', 'Italy', /^\+39\d{10}$/],
72
+ ['JM', '+1', 'Jamaica', /^\+1876\d{7}$/],
73
+ ['JO', '+962', 'Jordan', /^\+962\d{9}$/],
74
+ ['JP', '+81', 'Japan', /^\+81\d{10}$/],
75
+ ['KE', '+254', 'Kenya', /^\+254\d{9}$/],
76
+ ['KG', '+996', 'Kyrgyzstan', /^\+996\d{9}$/],
77
+ ['KH', '+855', 'Cambodia', /^\+855\d{9}$/],
78
+ ['KI', '+686', 'Kiribati', /^\+686\d{7}$/],
79
+ ['KM', '+269', 'Comoros', /^\+269\d{7}$/],
80
+ ['KN', '+1', 'Saint Kitts and Nevis', /^\+1869\d{7}$/],
81
+ ['KP', '+850', 'North Korea', /^\+850\d{8}$/],
82
+ ['KR', '+82', 'South Korea', /^\+82\d{10}$/],
83
+ ['KW', '+965', 'Kuwait', /^\+965\d{8}$/],
84
+ ['KY', '+1', 'Cayman Islands', /^\+1345\d{7}$/],
85
+ ['KZ', '+7', 'Kazakhstan', /^\+7\d{10}$/],
86
+ ['LA', '+856', 'Laos', /^\+856\d{8}$/],
87
+ ['LB', '+961', 'Lebanon', /^\+961\d{8}$/],
88
+ ['LC', '+1', 'Saint Lucia', /^\+1758\d{7}$/],
89
+ ['LI', '+423', 'Liechtenstein', /^\+423\d{8}$/],
90
+ ['LK', '+94', 'Sri Lanka', /^\+94\d{9}$/],
91
+ ['LR', '+231', 'Liberia', /^\+231\d{8}$/],
92
+ ['LS', '+266', 'Lesotho', /^\+266\d{8}$/],
93
+ ['LT', '+370', 'Lithuania', /^\+370\d{8}$/],
94
+ ['LU', '+352', 'Luxembourg', /^\+352\d{6,9}$/],
95
+ ['LV', '+371', 'Latvia', /^\+371\d{8}$/],
96
+ ['LY', '+218', 'Libya', /^\+218\d{9}$/],
97
+ ['MA', '+212', 'Morocco', /^\+212\d{9}$/],
98
+ ['MC', '+377', 'Monaco', /^\+377\d{8}$/],
99
+ ['MD', '+373', 'Moldova', /^\+373\d{8}$/],
100
+ ['ME', '+382', 'Montenegro', /^\+382\d{8}$/],
101
+ ['MF', '+590', 'Saint Martin', /^\+590\d{9}$/],
102
+ ['MG', '+261', 'Madagascar', /^\+261\d{9}$/],
103
+ ['MH', '+692', 'Marshall Islands', /^\+692\d{7}$/],
104
+ ['MK', '+389', 'North Macedonia', /^\+389\d{8}$/],
105
+ ['ML', '+223', 'Mali', /^\+223\d{8}$/],
106
+ ['MM', '+95', 'Myanmar', /^\+95\d{9}$/],
107
+ ['MN', '+976', 'Mongolia', /^\+976\d{8}$/],
108
+ ['MO', '+853', 'Macau', /^\+853\d{8}$/],
109
+ ['MP', '+1', 'Northern Mariana Islands', /^\+1670\d{7}$/],
110
+ ['MQ', '+596', 'Martinique', /^\+596\d{9}$/],
111
+ ['MR', '+222', 'Mauritania', /^\+222\d{8}$/],
112
+ ['MS', '+1', 'Montserrat', /^\+1664\d{7}$/],
113
+ ['MT', '+356', 'Malta', /^\+356\d{8}$/],
114
+ ['MU', '+230', 'Mauritius', /^\+230\d{8}$/],
115
+ ['MV', '+960', 'Maldives', /^\+960\d{7}$/],
116
+ ['MW', '+265', 'Malawi', /^\+265\d{9}$/],
117
+ ['MX', '+52', 'Mexico', /^\+52\d{10}$/],
118
+ ['MY', '+60', 'Malaysia', /^\+60\d{9}$/],
119
+ ['MZ', '+258', 'Mozambique', /^\+258\d{9}$/],
120
+ ['NA', '+264', 'Namibia', /^\+264\d{8}$/],
121
+ ['NC', '+687', 'New Caledonia', /^\+687\d{8}$/],
122
+ ['NE', '+227', 'Niger', /^\+227\d{8}$/],
123
+ ['NF', '+672', 'Norfolk Island', /^\+672\d{4}$/],
124
+ ['NG', '+234', 'Nigeria', /^\+234\d{10}$/],
125
+ ['NI', '+505', 'Nicaragua', /^\+505\d{8}$/],
126
+ ['NL', '+31', 'Netherlands', /^\+31\d{9}$/],
127
+ ['NO', '+47', 'Norway', /^\+47\d{8}$/],
128
+ ['NP', '+977', 'Nepal', /^\+977\d{10}$/],
129
+ ['NR', '+674', 'Nauru', /^\+674\d{7}$/],
130
+ ['NU', '+683', 'Niue', /^\+683\d{4}$/],
131
+ ['NZ', '+64', 'New Zealand', /^\+64\d{9}$/],
132
+ ['OM', '+968', 'Oman', /^\+968\d{8}$/],
133
+ ['PA', '+507', 'Panama', /^\+507\d{8}$/],
134
+ ['PE', '+51', 'Peru', /^\+51\d{9}$/],
135
+ ['PF', '+689', 'French Polynesia', /^\+689\d{6}$/],
136
+ ['PG', '+675', 'Papua New Guinea', /^\+675\d{8}$/],
137
+ ['PH', '+63', 'Philippines', /^\+63\d{10}$/],
138
+ ['PK', '+92', 'Pakistan', /^\+92\d{10}$/],
139
+ ['PL', '+48', 'Poland', /^\+48\d{9}$/],
140
+ ['PM', '+508', 'Saint Pierre and Miquelon', /^\+508\d{6}$/],
141
+ ['PN', '+870', 'Pitcairn Islands', /^\+870\d{8}$/],
142
+ ['PR', '+1', 'Puerto Rico', /^\+1787\d{7}$/],
143
+ ['PT', '+351', 'Portugal', /^\+351\d{9}$/],
144
+ ['PW', '+680', 'Palau', /^\+680\d{7}$/],
145
+ ['PY', '+595', 'Paraguay', /^\+595\d{9}$/],
146
+ ['QA', '+974', 'Qatar', /^\+974\d{8}$/],
147
+ ['RE', '+262', 'Réunion', /^\+262\d{9}$/],
148
+ ['RO', '+40', 'Romania', /^\+40\d{9}$/],
149
+ ['RS', '+381', 'Serbia', /^\+381\d{8}$/],
150
+ ['RU', '+7', 'Russia', /^\+7\d{10}$/],
151
+ ['RW', '+250', 'Rwanda', /^\+250\d{9}$/],
152
+ ['SA', '+966', 'Saudi Arabia', /^\+966\d{9}$/],
153
+ ['SB', '+677', 'Solomon Islands', /^\+677\d{7}$/],
154
+ ['SC', '+248', 'Seychelles', /^\+248\d{7}$/],
155
+ ['SD', '+249', 'Sudan', /^\+249\d{9}$/],
156
+ ['SE', '+46', 'Sweden', /^\+46\d{9}$/],
157
+ ['SG', '+65', 'Singapore', /^\+65\d{8}$/],
158
+ ['SH', '+290', 'Saint Helena', /^\+290\d{4}$/],
159
+ ['SI', '+386', 'Slovenia', /^\+386\d{8}$/],
160
+ ['SJ', '+47', 'Svalbard and Jan Mayen', /^\+47\d{8}$/],
161
+ ['SK', '+421', 'Slovakia', /^\+421\d{9}$/],
162
+ ['SL', '+232', 'Sierra Leone', /^\+232\d{8}$/],
163
+ ['SM', '+378', 'San Marino', /^\+378\d{8}$/],
164
+ ['SN', '+221', 'Senegal', /^\+221\d{9}$/],
165
+ ['SO', '+252', 'Somalia', /^\+252\d{9}$/],
166
+ ['SR', '+597', 'Suriname', /^\+597\d{8}$/],
167
+ ['SS', '+211', 'South Sudan', /^\+211\d{9}$/],
168
+ ['ST', '+239', 'São Tomé and Príncipe', /^\+239\d{7}$/],
169
+ ['SV', '+503', 'El Salvador', /^\+503\d{8}$/],
170
+ ['SX', '+1', 'Sint Maarten', /^\+1721\d{7}$/],
171
+ ['SY', '+963', 'Syria', /^\+963\d{8}$/],
172
+ ['SZ', '+268', 'Eswatini', /^\+268\d{8}$/],
173
+ ['TC', '+1', 'Turks and Caicos Islands', /^\+1649\d{7}$/],
174
+ ['TD', '+235', 'Chad', /^\+235\d{8}$/],
175
+ ['TF', '+262', 'French Southern Territories', /^\+262\d{9}$/],
176
+ ['TG', '+228', 'Togo', /^\+228\d{8}$/],
177
+ ['TH', '+66', 'Thailand', /^\+66\d{9}$/],
178
+ ['TJ', '+992', 'Tajikistan', /^\+992\d{9}$/],
179
+ ['TK', '+690', 'Tokelau', /^\+690\d{4}$/],
180
+ ['TL', '+670', 'Timor-Leste', /^\+670\d{7}$/],
181
+ ['TM', '+993', 'Turkmenistan', /^\+993\d{8}$/],
182
+ ['TN', '+216', 'Tunisia', /^\+216\d{8}$/],
183
+ ['TO', '+676', 'Tonga', /^\+676\d{4}$/],
184
+ ['TR', '+90', 'Turkey', /^\+90\d{10}$/],
185
+ ['TT', '+1', 'Trinidad and Tobago', /^\+1868\d{7}$/],
186
+ ['TV', '+688', 'Tuvalu', /^\+688\d{4}$/],
187
+ ['TZ', '+255', 'Tanzania', /^\+255\d{9}$/],
188
+ ['UA', '+380', 'Ukraine', /^\+380\d{9}$/],
189
+ ['UG', '+256', 'Uganda', /^\+256\d{9}$/],
190
+ ['US', '+1', 'United States', /^\+1\d{10}$/],
191
+ ['UY', '+598', 'Uruguay', /^\+598\d{8}$/],
192
+ ['UZ', '+998', 'Uzbekistan', /^\+998\d{9}$/],
193
+ ['VA', '+39', 'Vatican City', /^\+39\d{9}$/],
194
+ ['VC', '+1', 'Saint Vincent and the Grenadines', /^\+1784\d{7}$/],
195
+ ['VE', '+58', 'Venezuela', /^\+58\d{10}$/],
196
+ ['VG', '+1', 'British Virgin Islands', /^\+1284\d{7}$/],
197
+ ['VI', '+1', 'U.S. Virgin Islands', /^\+1340\d{7}$/],
198
+ ['VN', '+84', 'Vietnam', /^\+84\d{9}$/],
199
+ ['VU', '+678', 'Vanuatu', /^\+678\d{7}$/],
200
+ ['WF', '+681', 'Wallis and Futuna', /^\+681\d{6}$/],
201
+ ['WS', '+685', 'Samoa', /^\+685\d{5}$/],
202
+ ['YE', '+967', 'Yemen', /^\+967\d{9}$/],
203
+ ['ZA', '+27', 'South Africa', /^\+27\d{9}$/],
204
+ ['ZM', '+260', 'Zambia', /^\+260\d{9}$/],
205
+ ['ZW', '+263', 'Zimbabwe', /^\+263\d{9}$/],
206
+ ];
207
+ exports.countryPhonePatterns = Object.fromEntries(d.map(([iso, code, country_name, pattern]) => [
208
+ iso,
209
+ { code, country_name, pattern },
210
+ ]));
package/dist/cjs/index.js CHANGED
@@ -6,4 +6,3 @@ Object.defineProperty(exports, "validateMobileNumber", { enumerable: true, get:
6
6
  Object.defineProperty(exports, "validateMobileNumberDetailed", { enumerable: true, get: function () { return validator_1.validateMobileNumberDetailed; } });
7
7
  var country_1 = require("./country");
8
8
  Object.defineProperty(exports, "countryPhonePatterns", { enumerable: true, get: function () { return country_1.countryPhonePatterns; } });
9
- //# sourceMappingURL=index.js.map
package/dist/cjs/types.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1,81 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateMobileNumberDetailed = exports.validateMobileNumber = void 0;
4
- const libphonenumber_js_1 = require("libphonenumber-js");
5
4
  const country_1 = require("./country");
5
+ const parsePhoneNumber = (phoneNumber) => {
6
+ for (const [isoCode, entry] of Object.entries(country_1.countryPhonePatterns)) {
7
+ if (entry.pattern.test(phoneNumber)) {
8
+ const callingCode = entry.code.replace(/[^\d]/g, '');
9
+ const digits = phoneNumber.replace(/^\+/, '');
10
+ const nationalNumber = digits.startsWith(callingCode)
11
+ ? digits.slice(callingCode.length)
12
+ : digits;
13
+ return {
14
+ country: isoCode,
15
+ callingCode,
16
+ nationalNumber,
17
+ number: phoneNumber,
18
+ };
19
+ }
20
+ }
21
+ return null;
22
+ };
6
23
  const validateMobileNumber = (phoneNumber) => {
7
24
  if (!phoneNumber || typeof phoneNumber !== 'string') {
8
25
  return false;
9
26
  }
10
- const phoneNumberObj = (0, libphonenumber_js_1.parsePhoneNumberFromString)(phoneNumber);
11
- if (!phoneNumberObj || !phoneNumberObj.isValid()) {
12
- return false;
13
- }
14
- const formattedNumber = phoneNumberObj.number;
15
- const countryCode = phoneNumberObj.country;
16
- if (!countryCode) {
17
- return false;
18
- }
19
- const patternObj = country_1.countryPhonePatterns[countryCode];
20
- if (patternObj && !patternObj.pattern.test(formattedNumber)) {
21
- return false;
22
- }
23
- return true;
27
+ const parsed = parsePhoneNumber(phoneNumber);
28
+ return parsed !== null;
24
29
  };
25
30
  exports.validateMobileNumber = validateMobileNumber;
26
31
  const validateMobileNumberDetailed = (phoneNumber) => {
27
- var _a;
28
32
  if (!phoneNumber || typeof phoneNumber !== 'string') {
29
33
  return {
30
34
  isValid: false,
31
35
  error: 'Phone number must be a non-empty string',
32
36
  };
33
37
  }
34
- const phoneNumberObj = (0, libphonenumber_js_1.parsePhoneNumberFromString)(phoneNumber);
35
- if (!phoneNumberObj) {
36
- return {
37
- isValid: false,
38
- error: 'Unable to parse phone number',
39
- };
40
- }
41
- if (!phoneNumberObj.isValid()) {
42
- return {
43
- isValid: false,
44
- error: 'Phone number is not valid',
45
- };
46
- }
47
- const formattedNumber = phoneNumberObj.number;
48
- const rawCountry = phoneNumberObj.country;
49
- const countryCode = rawCountry;
50
- if (!countryCode) {
51
- return {
52
- isValid: false,
53
- error: 'Could not determine country from phone number',
54
- };
55
- }
56
- const patternObj = country_1.countryPhonePatterns[countryCode];
57
- if (patternObj && !patternObj.pattern.test(formattedNumber)) {
38
+ const parsed = parsePhoneNumber(phoneNumber);
39
+ if (!parsed) {
58
40
  return {
59
41
  isValid: false,
60
- error: `Phone number does not match the expected pattern for country: ${countryCode}`,
42
+ error: 'Unable to parse phone number or no matching country pattern found',
61
43
  };
62
44
  }
63
- const rawDialCode = (_a = patternObj === null || patternObj === void 0 ? void 0 : patternObj.code) !== null && _a !== void 0 ? _a : phoneNumberObj.countryCallingCode;
64
- const country_code = rawDialCode.replace(/[^\d]/g, '').replace(/^(\d+).*$/, '$1');
65
- const callingCode = phoneNumberObj.countryCallingCode;
66
- const e164 = formattedNumber.replace(/^\+/, '');
67
- const mobile_number = e164.startsWith(callingCode)
68
- ? e164.slice(callingCode.length)
69
- : e164;
70
- const country_name = patternObj === null || patternObj === void 0 ? void 0 : patternObj.country_name;
45
+ const patternObj = country_1.countryPhonePatterns[parsed.country];
71
46
  return {
72
47
  isValid: true,
73
- country: countryCode,
74
- country_code,
75
- country_name,
76
- mobile_number,
77
- formattedNumber,
48
+ country: parsed.country,
49
+ country_code: parsed.callingCode,
50
+ country_name: patternObj.country_name,
51
+ mobile_number: parsed.nationalNumber,
52
+ formattedNumber: parsed.number,
78
53
  };
79
54
  };
80
55
  exports.validateMobileNumberDetailed = validateMobileNumberDetailed;
81
- //# sourceMappingURL=validator.js.map