ti2-bokun 1.0.6 → 1.0.13
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/index.js +644 -286
- package/package.json +2 -2
- package/resolvers/product.js +75 -4
- package/utils/bokunRequest.js +80 -0
- package/utils/bookingFields.js +211 -0
- package/utils/country.js +1177 -0
- package/utils/customFields.js +249 -0
- package/utils/customerFieldConstants.js +35 -0
- package/utils/customerInfoFields.js +321 -0
- package/utils/phone.js +303 -0
package/utils/phone.js
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
const COUNTRY_DIAL_CODES = {
|
|
2
|
+
AD: '376',
|
|
3
|
+
AE: '971',
|
|
4
|
+
AF: '93',
|
|
5
|
+
AG: '1',
|
|
6
|
+
AI: '1264',
|
|
7
|
+
AL: '355',
|
|
8
|
+
AM: '374',
|
|
9
|
+
AO: '244',
|
|
10
|
+
AQ: '672',
|
|
11
|
+
AR: '54',
|
|
12
|
+
AS: '1',
|
|
13
|
+
AT: '43',
|
|
14
|
+
AU: '61',
|
|
15
|
+
AW: '297',
|
|
16
|
+
AX: '358',
|
|
17
|
+
AZ: '994',
|
|
18
|
+
BA: '387',
|
|
19
|
+
BB: '1',
|
|
20
|
+
BD: '880',
|
|
21
|
+
BE: '32',
|
|
22
|
+
BF: '226',
|
|
23
|
+
BG: '359',
|
|
24
|
+
BH: '973',
|
|
25
|
+
BI: '257',
|
|
26
|
+
BJ: '229',
|
|
27
|
+
BL: '590',
|
|
28
|
+
BM: '1',
|
|
29
|
+
BN: '673',
|
|
30
|
+
BO: '591',
|
|
31
|
+
BQ: '599',
|
|
32
|
+
BR: '55',
|
|
33
|
+
BS: '1',
|
|
34
|
+
BT: '975',
|
|
35
|
+
BV: '47',
|
|
36
|
+
BW: '267',
|
|
37
|
+
BY: '375',
|
|
38
|
+
BZ: '501',
|
|
39
|
+
CA: '1',
|
|
40
|
+
CC: '61',
|
|
41
|
+
CD: '243',
|
|
42
|
+
CF: '236',
|
|
43
|
+
CG: '242',
|
|
44
|
+
CH: '41',
|
|
45
|
+
CI: '225',
|
|
46
|
+
CK: '682',
|
|
47
|
+
CL: '56',
|
|
48
|
+
CM: '237',
|
|
49
|
+
CN: '86',
|
|
50
|
+
CO: '57',
|
|
51
|
+
CR: '506',
|
|
52
|
+
CU: '53',
|
|
53
|
+
CV: '238',
|
|
54
|
+
CW: '599',
|
|
55
|
+
CX: '61',
|
|
56
|
+
CY: '357',
|
|
57
|
+
CZ: '420',
|
|
58
|
+
DE: '49',
|
|
59
|
+
DJ: '253',
|
|
60
|
+
DK: '45',
|
|
61
|
+
DM: '1',
|
|
62
|
+
DO: '1',
|
|
63
|
+
DZ: '213',
|
|
64
|
+
EC: '593',
|
|
65
|
+
EE: '372',
|
|
66
|
+
EG: '20',
|
|
67
|
+
EH: '212',
|
|
68
|
+
ER: '291',
|
|
69
|
+
ES: '34',
|
|
70
|
+
ET: '251',
|
|
71
|
+
FI: '358',
|
|
72
|
+
FJ: '679',
|
|
73
|
+
FK: '500',
|
|
74
|
+
FM: '691',
|
|
75
|
+
FO: '298',
|
|
76
|
+
FR: '33',
|
|
77
|
+
GA: '241',
|
|
78
|
+
GB: '44',
|
|
79
|
+
GD: '1',
|
|
80
|
+
GE: '995',
|
|
81
|
+
GF: '594',
|
|
82
|
+
GG: '44',
|
|
83
|
+
GH: '233',
|
|
84
|
+
GI: '350',
|
|
85
|
+
GL: '299',
|
|
86
|
+
GM: '220',
|
|
87
|
+
GN: '224',
|
|
88
|
+
GP: '590',
|
|
89
|
+
GQ: '240',
|
|
90
|
+
GR: '30',
|
|
91
|
+
GS: '500',
|
|
92
|
+
GT: '502',
|
|
93
|
+
GU: '1',
|
|
94
|
+
GW: '245',
|
|
95
|
+
GY: '592',
|
|
96
|
+
HK: '852',
|
|
97
|
+
HN: '504',
|
|
98
|
+
HR: '385',
|
|
99
|
+
HT: '509',
|
|
100
|
+
HU: '36',
|
|
101
|
+
ID: '62',
|
|
102
|
+
IE: '353',
|
|
103
|
+
IL: '972',
|
|
104
|
+
IM: '44',
|
|
105
|
+
IN: '91',
|
|
106
|
+
IO: '246',
|
|
107
|
+
IQ: '964',
|
|
108
|
+
IR: '98',
|
|
109
|
+
IS: '354',
|
|
110
|
+
IT: '39',
|
|
111
|
+
JE: '44',
|
|
112
|
+
JM: '1',
|
|
113
|
+
JO: '962',
|
|
114
|
+
JP: '81',
|
|
115
|
+
KE: '254',
|
|
116
|
+
KG: '996',
|
|
117
|
+
KH: '855',
|
|
118
|
+
KI: '686',
|
|
119
|
+
KM: '269',
|
|
120
|
+
KN: '1',
|
|
121
|
+
KP: '850',
|
|
122
|
+
KR: '82',
|
|
123
|
+
KW: '965',
|
|
124
|
+
KY: '1',
|
|
125
|
+
KZ: '7',
|
|
126
|
+
LA: '856',
|
|
127
|
+
LB: '961',
|
|
128
|
+
LC: '1',
|
|
129
|
+
LI: '423',
|
|
130
|
+
LK: '94',
|
|
131
|
+
LR: '231',
|
|
132
|
+
LS: '266',
|
|
133
|
+
LT: '370',
|
|
134
|
+
LU: '352',
|
|
135
|
+
LV: '371',
|
|
136
|
+
LY: '218',
|
|
137
|
+
MA: '212',
|
|
138
|
+
MC: '377',
|
|
139
|
+
MD: '373',
|
|
140
|
+
ME: '382',
|
|
141
|
+
MF: '590',
|
|
142
|
+
MG: '261',
|
|
143
|
+
MH: '692',
|
|
144
|
+
MK: '389',
|
|
145
|
+
ML: '223',
|
|
146
|
+
MM: '95',
|
|
147
|
+
MN: '976',
|
|
148
|
+
MO: '853',
|
|
149
|
+
MP: '1',
|
|
150
|
+
MQ: '596',
|
|
151
|
+
MR: '222',
|
|
152
|
+
MS: '1',
|
|
153
|
+
MT: '356',
|
|
154
|
+
MU: '230',
|
|
155
|
+
MV: '960',
|
|
156
|
+
MW: '265',
|
|
157
|
+
MX: '52',
|
|
158
|
+
MY: '60',
|
|
159
|
+
MZ: '258',
|
|
160
|
+
NA: '264',
|
|
161
|
+
NC: '687',
|
|
162
|
+
NE: '227',
|
|
163
|
+
NF: '672',
|
|
164
|
+
NG: '234',
|
|
165
|
+
NI: '505',
|
|
166
|
+
NL: '31',
|
|
167
|
+
NO: '47',
|
|
168
|
+
NP: '977',
|
|
169
|
+
NR: '674',
|
|
170
|
+
NU: '683',
|
|
171
|
+
NZ: '64',
|
|
172
|
+
OM: '968',
|
|
173
|
+
PA: '507',
|
|
174
|
+
PE: '51',
|
|
175
|
+
PF: '689',
|
|
176
|
+
PG: '675',
|
|
177
|
+
PH: '63',
|
|
178
|
+
PK: '92',
|
|
179
|
+
PL: '48',
|
|
180
|
+
PM: '508',
|
|
181
|
+
PN: '870',
|
|
182
|
+
PR: '1',
|
|
183
|
+
PS: '970',
|
|
184
|
+
PT: '351',
|
|
185
|
+
PW: '680',
|
|
186
|
+
PY: '595',
|
|
187
|
+
QA: '974',
|
|
188
|
+
RE: '262',
|
|
189
|
+
RO: '40',
|
|
190
|
+
RS: '381',
|
|
191
|
+
RU: '7',
|
|
192
|
+
RW: '250',
|
|
193
|
+
SA: '966',
|
|
194
|
+
SB: '677',
|
|
195
|
+
SC: '248',
|
|
196
|
+
SD: '249',
|
|
197
|
+
SE: '46',
|
|
198
|
+
SG: '65',
|
|
199
|
+
SH: '290',
|
|
200
|
+
SI: '386',
|
|
201
|
+
SJ: '47',
|
|
202
|
+
SK: '421',
|
|
203
|
+
SL: '232',
|
|
204
|
+
SM: '378',
|
|
205
|
+
SN: '221',
|
|
206
|
+
SO: '252',
|
|
207
|
+
SR: '597',
|
|
208
|
+
SS: '211',
|
|
209
|
+
ST: '239',
|
|
210
|
+
SV: '503',
|
|
211
|
+
SX: '599',
|
|
212
|
+
SY: '963',
|
|
213
|
+
SZ: '268',
|
|
214
|
+
TC: '1',
|
|
215
|
+
TD: '235',
|
|
216
|
+
TF: '262',
|
|
217
|
+
TG: '228',
|
|
218
|
+
TH: '66',
|
|
219
|
+
TJ: '992',
|
|
220
|
+
TK: '690',
|
|
221
|
+
TL: '670',
|
|
222
|
+
TM: '993',
|
|
223
|
+
TN: '216',
|
|
224
|
+
TO: '676',
|
|
225
|
+
TR: '90',
|
|
226
|
+
TT: '1',
|
|
227
|
+
TV: '688',
|
|
228
|
+
TW: '886',
|
|
229
|
+
TZ: '255',
|
|
230
|
+
UA: '380',
|
|
231
|
+
UG: '256',
|
|
232
|
+
UK: '44',
|
|
233
|
+
UM: '1',
|
|
234
|
+
US: '1',
|
|
235
|
+
UY: '598',
|
|
236
|
+
UZ: '998',
|
|
237
|
+
VA: '379',
|
|
238
|
+
VC: '1',
|
|
239
|
+
VE: '58',
|
|
240
|
+
VG: '1',
|
|
241
|
+
VI: '1',
|
|
242
|
+
VN: '84',
|
|
243
|
+
VU: '678',
|
|
244
|
+
WF: '681',
|
|
245
|
+
WS: '685',
|
|
246
|
+
XK: '383',
|
|
247
|
+
YE: '967',
|
|
248
|
+
YT: '262',
|
|
249
|
+
ZA: '27',
|
|
250
|
+
ZM: '260',
|
|
251
|
+
ZW: '263',
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const getCountryDialCode = country => {
|
|
255
|
+
if (!country || typeof country !== 'string') return null;
|
|
256
|
+
const normalized = country.trim().toUpperCase();
|
|
257
|
+
return COUNTRY_DIAL_CODES[normalized] || null;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
const normalizePhoneWithCountryCode = ({ phone, country }) => {
|
|
261
|
+
const raw = phone == null ? '' : String(phone).trim();
|
|
262
|
+
if (raw === '') return '';
|
|
263
|
+
|
|
264
|
+
const compact = raw.replace(/[^\d+]/g, '');
|
|
265
|
+
if (compact.startsWith('+')) return compact;
|
|
266
|
+
if (compact.startsWith('00')) return `+${compact.slice(2)}`;
|
|
267
|
+
|
|
268
|
+
const digits = compact.replace(/\D/g, '');
|
|
269
|
+
if (digits === '') return raw;
|
|
270
|
+
|
|
271
|
+
const dialCode = getCountryDialCode(country);
|
|
272
|
+
return dialCode ? `+${dialCode}${digits}` : digits;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
const looksLikeValidPhone = (value, country) => {
|
|
276
|
+
const raw = value == null ? '' : String(value).trim();
|
|
277
|
+
if (raw === '') return false;
|
|
278
|
+
|
|
279
|
+
const compact = raw.replace(/[^\d+]/g, '');
|
|
280
|
+
const normalized = compact.startsWith('00') ? `+${compact.slice(2)}` : compact;
|
|
281
|
+
const digits = normalized.replace(/\D/g, '');
|
|
282
|
+
if (digits === '') return false;
|
|
283
|
+
if (digits.length < 8 || digits.length > 15) return false;
|
|
284
|
+
|
|
285
|
+
const dialCode = getCountryDialCode(country);
|
|
286
|
+
if (!dialCode) return true;
|
|
287
|
+
|
|
288
|
+
// When country is known, require an explicit international-style number.
|
|
289
|
+
if (!normalized.startsWith('+')) return false;
|
|
290
|
+
if (!digits.startsWith(dialCode) || digits.length <= dialCode.length) return false;
|
|
291
|
+
|
|
292
|
+
const nationalNumber = digits.slice(dialCode.length);
|
|
293
|
+
// Reject obvious placeholder numbers such as 9999999999.
|
|
294
|
+
if (/^(\d)\1+$/.test(nationalNumber)) return false;
|
|
295
|
+
|
|
296
|
+
return true;
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
module.exports = {
|
|
300
|
+
getCountryDialCode,
|
|
301
|
+
normalizePhoneWithCountryCode,
|
|
302
|
+
looksLikeValidPhone,
|
|
303
|
+
};
|