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 +0 -1
- package/dist/cjs/country.js +207 -204
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/types.js +0 -1
- package/dist/cjs/validator.js +29 -55
- package/dist/esm/country.js +210 -204
- package/dist/esm/index.js +8 -3
- package/dist/esm/types.js +2 -2
- package/dist/esm/validator.js +37 -58
- package/package.json +4 -8
- package/dist/cjs/country.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/validator.js.map +0 -1
- package/dist/esm/country.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/validator.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/mobile-sg-validator)
|
|
6
6
|
[](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
|
|
package/dist/cjs/country.js
CHANGED
|
@@ -1,207 +1,210 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.countryPhonePatterns = void 0;
|
|
4
|
-
|
|
5
|
-
AC
|
|
6
|
-
AD
|
|
7
|
-
AE
|
|
8
|
-
AF
|
|
9
|
-
AG
|
|
10
|
-
AI
|
|
11
|
-
AL
|
|
12
|
-
AM
|
|
13
|
-
AO
|
|
14
|
-
AR
|
|
15
|
-
AS
|
|
16
|
-
AT
|
|
17
|
-
AU
|
|
18
|
-
AW
|
|
19
|
-
AX
|
|
20
|
-
AZ
|
|
21
|
-
BA
|
|
22
|
-
BB
|
|
23
|
-
BD
|
|
24
|
-
BE
|
|
25
|
-
BF
|
|
26
|
-
BG
|
|
27
|
-
BH
|
|
28
|
-
BI
|
|
29
|
-
BJ
|
|
30
|
-
BL
|
|
31
|
-
BM
|
|
32
|
-
BN
|
|
33
|
-
BO
|
|
34
|
-
BR
|
|
35
|
-
BS
|
|
36
|
-
BT
|
|
37
|
-
BW
|
|
38
|
-
BY
|
|
39
|
-
BZ
|
|
40
|
-
CA
|
|
41
|
-
CH
|
|
42
|
-
CN
|
|
43
|
-
CO
|
|
44
|
-
CR
|
|
45
|
-
CU
|
|
46
|
-
CZ
|
|
47
|
-
DE
|
|
48
|
-
DK
|
|
49
|
-
DO
|
|
50
|
-
DZ
|
|
51
|
-
EG
|
|
52
|
-
ES
|
|
53
|
-
FI
|
|
54
|
-
FR
|
|
55
|
-
GB
|
|
56
|
-
GH
|
|
57
|
-
GM
|
|
58
|
-
GR
|
|
59
|
-
GT
|
|
60
|
-
HK
|
|
61
|
-
HN
|
|
62
|
-
HR
|
|
63
|
-
HU
|
|
64
|
-
ID
|
|
65
|
-
IE
|
|
66
|
-
IL
|
|
67
|
-
IN
|
|
68
|
-
IQ
|
|
69
|
-
IR
|
|
70
|
-
IS
|
|
71
|
-
IT
|
|
72
|
-
JM
|
|
73
|
-
JO
|
|
74
|
-
JP
|
|
75
|
-
KE
|
|
76
|
-
KG
|
|
77
|
-
KH
|
|
78
|
-
KI
|
|
79
|
-
KM
|
|
80
|
-
KN
|
|
81
|
-
KP
|
|
82
|
-
KR
|
|
83
|
-
KW
|
|
84
|
-
KY
|
|
85
|
-
KZ
|
|
86
|
-
LA
|
|
87
|
-
LB
|
|
88
|
-
LC
|
|
89
|
-
LI
|
|
90
|
-
LK
|
|
91
|
-
LR
|
|
92
|
-
LS
|
|
93
|
-
LT
|
|
94
|
-
LU
|
|
95
|
-
LV
|
|
96
|
-
LY
|
|
97
|
-
MA
|
|
98
|
-
MC
|
|
99
|
-
MD
|
|
100
|
-
ME
|
|
101
|
-
MF
|
|
102
|
-
MG
|
|
103
|
-
MH
|
|
104
|
-
MK
|
|
105
|
-
ML
|
|
106
|
-
MM
|
|
107
|
-
MN
|
|
108
|
-
MO
|
|
109
|
-
MP
|
|
110
|
-
MQ
|
|
111
|
-
MR
|
|
112
|
-
MS
|
|
113
|
-
MT
|
|
114
|
-
MU
|
|
115
|
-
MV
|
|
116
|
-
MW
|
|
117
|
-
MX
|
|
118
|
-
MY
|
|
119
|
-
MZ
|
|
120
|
-
NA
|
|
121
|
-
NC
|
|
122
|
-
NE
|
|
123
|
-
NF
|
|
124
|
-
NG
|
|
125
|
-
NI
|
|
126
|
-
NL
|
|
127
|
-
NO
|
|
128
|
-
NP
|
|
129
|
-
NR
|
|
130
|
-
NU
|
|
131
|
-
NZ
|
|
132
|
-
OM
|
|
133
|
-
PA
|
|
134
|
-
PE
|
|
135
|
-
PF
|
|
136
|
-
PG
|
|
137
|
-
PH
|
|
138
|
-
PK
|
|
139
|
-
PL
|
|
140
|
-
PM
|
|
141
|
-
PN
|
|
142
|
-
PR
|
|
143
|
-
PT
|
|
144
|
-
PW
|
|
145
|
-
PY
|
|
146
|
-
QA
|
|
147
|
-
RE
|
|
148
|
-
RO
|
|
149
|
-
RS
|
|
150
|
-
RU
|
|
151
|
-
RW
|
|
152
|
-
SA
|
|
153
|
-
SB
|
|
154
|
-
SC
|
|
155
|
-
SD
|
|
156
|
-
SE
|
|
157
|
-
SG
|
|
158
|
-
SH
|
|
159
|
-
SI
|
|
160
|
-
SJ
|
|
161
|
-
SK
|
|
162
|
-
SL
|
|
163
|
-
SM
|
|
164
|
-
SN
|
|
165
|
-
SO
|
|
166
|
-
SR
|
|
167
|
-
SS
|
|
168
|
-
ST
|
|
169
|
-
SV
|
|
170
|
-
SX
|
|
171
|
-
SY
|
|
172
|
-
SZ
|
|
173
|
-
TC
|
|
174
|
-
TD
|
|
175
|
-
TF
|
|
176
|
-
TG
|
|
177
|
-
TH
|
|
178
|
-
TJ
|
|
179
|
-
TK
|
|
180
|
-
TL
|
|
181
|
-
TM
|
|
182
|
-
TN
|
|
183
|
-
TO
|
|
184
|
-
TR
|
|
185
|
-
TT
|
|
186
|
-
TV
|
|
187
|
-
TZ
|
|
188
|
-
UA
|
|
189
|
-
UG
|
|
190
|
-
US
|
|
191
|
-
UY
|
|
192
|
-
UZ
|
|
193
|
-
VA
|
|
194
|
-
VC
|
|
195
|
-
VE
|
|
196
|
-
VG
|
|
197
|
-
VI
|
|
198
|
-
VN
|
|
199
|
-
VU
|
|
200
|
-
WF
|
|
201
|
-
WS
|
|
202
|
-
YE
|
|
203
|
-
ZA
|
|
204
|
-
ZM
|
|
205
|
-
ZW
|
|
206
|
-
|
|
207
|
-
|
|
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
package/dist/cjs/validator.js
CHANGED
|
@@ -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
|
|
11
|
-
|
|
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
|
|
35
|
-
if (!
|
|
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:
|
|
42
|
+
error: 'Unable to parse phone number or no matching country pattern found',
|
|
61
43
|
};
|
|
62
44
|
}
|
|
63
|
-
const
|
|
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:
|
|
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
|