@tepez/joi-phone-number-extensions 1.2.2 → 1.2.4
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/dist/extension.js +155 -0
- package/dist/i18n/en.js +13 -0
- package/dist/i18n/he.js +13 -0
- package/dist/{src/index.js → index.js} +1 -0
- package/dist/types.js +3 -0
- package/dist/utils.js +8 -0
- package/package.json +7 -7
- package/dist/spec/helpers/reporter.d.ts +0 -2
- package/dist/spec/helpers/reporter.js +0 -20
- package/dist/src/extension.js +0 -154
- package/dist/src/extension.spec.d.ts +0 -1
- package/dist/src/extension.spec.js +0 -271
- package/dist/src/i18n/en.js +0 -12
- package/dist/src/i18n/he.js +0 -12
- package/dist/src/types.js +0 -2
- package/dist/src/utils.js +0 -7
- /package/dist/{src/extension.d.ts → extension.d.ts} +0 -0
- /package/dist/{src/i18n → i18n}/en.d.ts +0 -0
- /package/dist/{src/i18n → i18n}/he.d.ts +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/types.d.ts → types.d.ts} +0 -0
- /package/dist/{src/utils.d.ts → utils.d.ts} +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.phoneNumExtensions = void 0;
|
|
4
|
+
const ts_utils_1 = require("@tepez/ts-utils");
|
|
5
|
+
const google_libphonenumber_1 = require("google-libphonenumber");
|
|
6
|
+
const en_1 = require("./i18n/en");
|
|
7
|
+
const he_1 = require("./i18n/he");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const phoneNumberUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
|
|
10
|
+
function typesMatch(type1, type2) {
|
|
11
|
+
return type1 === type2 ||
|
|
12
|
+
(type1 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE_OR_MOBILE && (type2 === google_libphonenumber_1.PhoneNumberType.MOBILE || type2 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE)) ||
|
|
13
|
+
(type2 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE_OR_MOBILE && (type1 === google_libphonenumber_1.PhoneNumberType.MOBILE || type1 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE));
|
|
14
|
+
}
|
|
15
|
+
const assertUpperCaseString = (name, value, validValues) => {
|
|
16
|
+
if (!value)
|
|
17
|
+
throw new Error(`${name} is required`);
|
|
18
|
+
if (typeof value !== 'string')
|
|
19
|
+
throw new Error(`${name} must be a string`);
|
|
20
|
+
const ret = value.toUpperCase();
|
|
21
|
+
if (!validValues.includes(ret)) {
|
|
22
|
+
throw new Error(`${name} must be one of ${validValues.join(', ')}`);
|
|
23
|
+
}
|
|
24
|
+
return ret;
|
|
25
|
+
};
|
|
26
|
+
const phoneNumExtensions = function (joi) {
|
|
27
|
+
const regionValidation = joi
|
|
28
|
+
.string()
|
|
29
|
+
.uppercase()
|
|
30
|
+
.valid(...utils_1.validRegions)
|
|
31
|
+
.required();
|
|
32
|
+
const pntKeys = Object.keys(google_libphonenumber_1.PhoneNumberType);
|
|
33
|
+
const pnfKeys = Object.keys(google_libphonenumber_1.PhoneNumberFormat);
|
|
34
|
+
return {
|
|
35
|
+
type: 'phoneNumber',
|
|
36
|
+
base: joi.string(),
|
|
37
|
+
messages: {
|
|
38
|
+
...en_1.phoneNumberExtensionsEnMessages,
|
|
39
|
+
he: he_1.phoneNumberExtensionsHeMessages,
|
|
40
|
+
}, // joi types doesn't support languages but it's ok
|
|
41
|
+
// https://github.com/sideway/joi/blob/v17.4.2/lib/index.d.ts#L29
|
|
42
|
+
validate(value, helpers) {
|
|
43
|
+
if (!value) {
|
|
44
|
+
return {
|
|
45
|
+
value,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const phoneNumberRegion = helpers.schema.$_getFlag('phoneNumberRegion');
|
|
49
|
+
const phoneNumberDefaultRegion = helpers.schema.$_getFlag('phoneNumberDefaultRegion');
|
|
50
|
+
const phoneNumberType = helpers.schema.$_getFlag('phoneNumberType');
|
|
51
|
+
const phoneNumberFormat = helpers.schema.$_getFlag('phoneNumberFormat');
|
|
52
|
+
let regionSource = phoneNumberRegion
|
|
53
|
+
|| phoneNumberDefaultRegion
|
|
54
|
+
|| null;
|
|
55
|
+
let region;
|
|
56
|
+
if (joi.isRef(regionSource)) {
|
|
57
|
+
region = regionSource.resolve(value, helpers.state, helpers.prefs);
|
|
58
|
+
if (!region) {
|
|
59
|
+
return {
|
|
60
|
+
errors: helpers.error('phoneNumber.emptyFieldRef', { ref: regionSource.key }),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const regionValidationResult = regionValidation.validate(region);
|
|
64
|
+
if (regionValidationResult.error) {
|
|
65
|
+
return {
|
|
66
|
+
errors: helpers.error('phoneNumber.illegalRefRegion', { ref: regionSource.key }),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
region = regionSource;
|
|
72
|
+
}
|
|
73
|
+
let parsedNumber;
|
|
74
|
+
try {
|
|
75
|
+
parsedNumber = phoneNumberUtil.parse(value, region);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
return {
|
|
79
|
+
errors: helpers.error('phoneNumber.base', { value }),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (phoneNumberRegion) {
|
|
83
|
+
if (!phoneNumberUtil.isValidNumberForRegion(parsedNumber, region)) {
|
|
84
|
+
return {
|
|
85
|
+
errors: helpers.error('phoneNumber.region', { value, region }),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (!phoneNumberUtil.isValidNumber(parsedNumber)) {
|
|
90
|
+
return {
|
|
91
|
+
errors: helpers.error('phoneNumber.base', { value }),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (phoneNumberType) {
|
|
95
|
+
const numberType = phoneNumberUtil.getNumberType(parsedNumber);
|
|
96
|
+
if (!typesMatch(google_libphonenumber_1.PhoneNumberType[phoneNumberType], numberType)) {
|
|
97
|
+
const context = {
|
|
98
|
+
value,
|
|
99
|
+
type: phoneNumberType,
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
errors: helpers.error('phoneNumber.type', context),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (phoneNumberFormat) {
|
|
107
|
+
const formattedNumber = phoneNumberUtil.format(parsedNumber, google_libphonenumber_1.PhoneNumberFormat[phoneNumberFormat]);
|
|
108
|
+
if (helpers.prefs.convert) {
|
|
109
|
+
return {
|
|
110
|
+
value: formattedNumber,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else if (value !== formattedNumber) {
|
|
114
|
+
const context = {
|
|
115
|
+
value,
|
|
116
|
+
format: phoneNumberFormat,
|
|
117
|
+
};
|
|
118
|
+
return {
|
|
119
|
+
errors: helpers.error('phoneNumber.format', context),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
value: value,
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
rules: {
|
|
128
|
+
defaultRegion: (0, ts_utils_1.assertT)({
|
|
129
|
+
// region that we are expecting the number to be from
|
|
130
|
+
method(defaultRegion) {
|
|
131
|
+
return this.$_setFlag('phoneNumberDefaultRegion', assertUpperCaseString('defaultRegion', defaultRegion, utils_1.validRegions));
|
|
132
|
+
},
|
|
133
|
+
}),
|
|
134
|
+
region: (0, ts_utils_1.assertT)({
|
|
135
|
+
method(region) {
|
|
136
|
+
return this.$_setFlag('phoneNumberRegion', joi.isRef(region)
|
|
137
|
+
? region
|
|
138
|
+
: assertUpperCaseString('region', region, utils_1.validRegions));
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
numType: (0, ts_utils_1.assertT)({
|
|
142
|
+
method(type) {
|
|
143
|
+
return this.$_setFlag('phoneNumberType', assertUpperCaseString('type', type, pntKeys));
|
|
144
|
+
},
|
|
145
|
+
}),
|
|
146
|
+
format: (0, ts_utils_1.assertT)({
|
|
147
|
+
method(format) {
|
|
148
|
+
return this.$_setFlag('phoneNumberFormat', assertUpperCaseString('format', format, pnfKeys));
|
|
149
|
+
},
|
|
150
|
+
}),
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
exports.phoneNumExtensions = phoneNumExtensions;
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4Q0FBMEM7QUFDMUMsaUVBQXlHO0FBR3pHLGtDQUE0RDtBQUM1RCxrQ0FBNEQ7QUFDNUQsbUNBQXVDO0FBVXZDLE1BQU0sZUFBZSxHQUFHLHVDQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFdEQsU0FBUyxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQVU7SUFDdEMsT0FBTyxLQUFLLEtBQUssS0FBSztRQUNsQixDQUFDLEtBQUssS0FBSyx1Q0FBRyxDQUFDLG9CQUFvQixJQUFJLENBQUMsS0FBSyxLQUFLLHVDQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssS0FBSyx1Q0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUMsS0FBSyxLQUFLLHVDQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEtBQUssdUNBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxLQUFLLHVDQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsV0FBcUIsRUFBVSxFQUFFO0lBQ3RGLElBQUksQ0FBQyxLQUFLO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLENBQUE7SUFFbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksbUJBQW1CLENBQUMsQ0FBQztJQUUzRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxtQkFBbUIsV0FBVyxD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TSxDQUFDLE1BQXdCO29CQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBcUIsQ0FDdkUsQ0FBQztnQkFDTixDQUFDO2FBQ0osQ0FBQztTQUNMO0tBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQztBQTdKVyxRQUFBLGtCQUFrQixzQkE2SjdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXlSZWZlcmVuY2UsIFR5cGVkRXh0ZW5zaW9uLCBUeXBlZEV4dGVuc2lvblJ1bGUgfSBmcm9tICdAdGVwZXovam9pLW1pc2MtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBhc3NlcnRUIH0gZnJvbSAnQHRlcGV6L3RzLXV0aWxzJztcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IGFzIFBORiwgUGhvbmVOdW1iZXJUeXBlIGFzIFBOVCwgUGhvbmVOdW1iZXJVdGlsIH0gZnJvbSAnZ29vZ2xlLWxpYnBob25lbnVtYmVyJ1xuaW1wb3J0ICogYXMgSm9pIGZyb20gJ2pvaSdcbmltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gJ2pvaSdcbmltcG9ydCB7IHBob25lTnVtYmVyRXh0ZW5zaW9uc0VuTWVzc2FnZXMgfSBmcm9tICcuL2kxOG4vZW4nO1xuaW1wb3J0IHsgcGhvbmVOdW1iZXJFeHRlbnNpb25zSGVNZXNzYWdlcyB9IGZyb20gJy4vaTE4bi9oZSc7XG5pbXBvcnQgeyB2YWxpZFJlZ2lvbnMgfSBmcm9tICcuL3V0aWxzJztcblxuXG5pbnRlcmZhY2UgSUZsYWdzIHtcbiAgICBwaG9uZU51bWJlckRlZmF1bHRSZWdpb24/OiBzdHJpbmdcbiAgICBwaG9uZU51bWJlclJlZ2lvbj86IHN0cmluZyB8IFJlZmVyZW5jZVxuICAgIHBob25lTnVtYmVyVHlwZT86IGtleW9mIHR5cGVvZiBQTlRcbiAgICBwaG9uZU51bWJlckZvcm1hdD86IGtleW9mIHR5cGVvZiBQTkZcbn1cblxuY29uc3QgcGhvbmVOdW1iZXJVdGlsID0gUGhvbmVOdW1iZXJVdGlsLmdldEluc3RhbmNlKCk7XG5cbmZ1bmN0aW9uIHR5cGVzTWF0Y2godHlwZTE6IFBOVCwgdHlwZTI6IFBOVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlMSA9PT0gdHlwZTIgfHxcbiAgICAgICAgKHR5cGUxID09PSBQTlQuRklYRURfTElORV9PUl9NT0JJTEUgJiYgKHR5cGUyID09PSBQTlQuTU9CSUxFIHx8IHR5cGUyID09PSBQTlQuRklYRURfTElORSkpIHx8XG4gICAgICAgICh0eXBlMiA9PT0gUE5ULkZJWEVEX0xJTkVfT1JfTU9CSUxFICYmICh0eXBlMSA9PT0gUE5ULk1PQklMRSB8fCB0eXBlMSA9PT0gUE5ULkZJWEVEX0xJTkUpKTtcbn1cblxuY29uc3QgYXNzZXJ0VXBwZXJDYXNlU3RyaW5nID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgdmFsaWRWYWx1ZXM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIXZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgc3RyaW5nYCk7XG5cbiAgICBjb25zdCByZXQgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgIGlmICghdmFsaWRWYWx1ZXMuaW5jbHVkZXMocmV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHt2YWxpZFZhbHVlcy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBjb25zdCBwaG9uZU51bUV4dGVuc2lvbnMgPSBmdW5jdGlvbiAoam9pOiB0eXBlb2YgSm9pKTogVHlwZWRFeHRlbnNpb248SUZsYWdzPiB7XG4gICAgY29uc3QgcmVnaW9uVmFsaWRhdGlvbiA9IGpvaVxuICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgLnVwcGVyY2FzZSgpXG4gICAgICAgIC52YWxpZCguLi52YWxpZFJlZ2lvbnMpXG4gICAgICAgIC5yZXF1aXJlZCgpO1xuXG4gICAgY29uc3QgcG50S2V5cyA9IE9iamVjdC5rZXlzKFBOVCk7XG4gICAgY29uc3QgcG5mS2V5cyA9IE9iamVjdC5rZXlzKFBORilcblxuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdwaG9uZU51bWJlcicsXG4gICAgICAgIGJhc2U6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgICAgIC4uLnBob25lTnVtYmVyRXh0ZW5zaW9uc0VuTWVzc2FnZXMsXG4gICAgICAgICAgICBoZTogcGhvbmVOdW1iZXJFeHRlbnNpb25zSGVNZXNzYWdlcyxcbiAgICAgICAgfSBhcyBhbnksIC8vIGpvaSB0eXBlcyBkb2Vzbid0IHN1cHBvcnQgbGFuZ3VhZ2VzIGJ1dCBpdCdzIG9rIFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2lkZXdheS9qb2kvYmxvYi92MTcuNC4yL2xpYi9pbmRleC5kLnRzI0wyOVxuICAgICAgICB2YWxpZGF0ZSh2YWx1ZSwgaGVscGVycykge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBob25lTnVtYmVyUmVnaW9uID0gaGVscGVycy5zY2hlbWEuJF9nZXRGbGFnKCdwaG9uZU51bWJlclJlZ2lvbicpO1xuICAgICAgICAgICAgY29uc3QgcGhvbmVOdW1iZXJEZWZhdWx0UmVnaW9uID0gaGVscGVycy5zY2hlbWEuJF9nZXRGbGFnKCdwaG9uZU51bWJlckRlZmF1bHRSZWdpb24nKTtcbiAgICAgICAgICAgIGNvbnN0IHBob25lTnVtYmVyVHlwZSA9IGhlbHBlcnMuc2NoZW1hLiRfZ2V0RmxhZygncGhvbmVOdW1iZXJUeXBlJyk7XG4gICAgICAgICAgICBjb25zdCBwaG9uZU51bWJlckZvcm1hdCA9IGhlbHBlcnMuc2NoZW1hLiRfZ2V0RmxhZygncGhvbmVOdW1iZXJGb3JtYXQnKTtcblxuICAgICAgICAgICAgbGV0IHJlZ2lvblNvdXJjZTogc3RyaW5nIHwgUmVmZXJlbmNlID0gcGhvbmVOdW1iZXJSZWdpb25cbiAgICAgICAgICAgICAgICB8fCBwaG9uZU51bWJlckRlZmF1bHRSZWdpb25cbiAgICAgICAgICAgICAgICB8fCBudWxsO1xuXG4gICAgICAgICAgICBsZXQgcmVnaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgIGlmIChqb2kuaXNSZWYocmVnaW9uU291cmNlKSkge1xuICAgICAgICAgICAgICAgIHJlZ2lvbiA9IChyZWdpb25Tb3VyY2UgYXMgTXlSZWZlcmVuY2UpLnJlc29sdmUodmFsdWUsIGhlbHBlcnMuc3RhdGUsIGhlbHBlcnMucHJlZnMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFyZWdpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogaGVscGVycy5lcnJvcigncGhvbmVOdW1iZXIuZW1wdHlGaWVsZFJlZicsIHsgcmVmOiByZWdpb25Tb3VyY2Uua2V5IH0pLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lvblZhbGlkYXRpb25SZXN1bHQgPSByZWdpb25WYWxpZGF0aW9uLnZhbGlkYXRlKHJlZ2lvbik7XG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lvblZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogaGVscGVycy5lcnJvcigncGhvbmVOdW1iZXIuaWxsZWdhbFJlZlJlZ2lvbicsIHsgcmVmOiByZWdpb25Tb3VyY2Uua2V5IH0pLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uU291cmNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFyc2VkTnVtYmVyO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE51bWJlciA9IHBob25lTnVtYmVyVXRpbC5wYXJzZSh2YWx1ZSwgcmVnaW9uKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogaGVscGVycy5lcnJvcigncGhvbmVOdW1iZXIuYmFzZScsIHsgdmFsdWUgfSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBob25lTnVtYmVyUmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwaG9uZU51bWJlclV0aWwuaXNWYWxpZE51bWJlckZvclJlZ2lvbihwYXJzZWROdW1iZXIsIHJlZ2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogaGVscGVycy5lcnJvcigncGhvbmVOdW1iZXIucmVnaW9uJywgeyB2YWx1ZSwgcmVnaW9uIH0pLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBob25lTnVtYmVyVXRpbC5pc1ZhbGlkTnVtYmVyKHBhcnNlZE51bWJlcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IGhlbHBlcnMuZXJyb3IoJ3Bob25lTnVtYmVyLmJhc2UnLCB7IHZhbHVlIH0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwaG9uZU51bWJlclR5cGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJUeXBlID0gcGhvbmVOdW1iZXJVdGlsLmdldE51bWJlclR5cGUocGFyc2VkTnVtYmVyKTtcbiAgICAgICAgICAgICAgICBpZiAoIXR5cGVzTWF0Y2goUE5UW3Bob25lTnVtYmVyVHlwZV0sIG51bWJlclR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBob25lTnVtYmVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogaGVscGVycy5lcnJvcigncGhvbmVOdW1iZXIudHlwZScsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBob25lTnVtYmVyRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTnVtYmVyID0gcGhvbmVOdW1iZXJVdGlsLmZvcm1hdChwYXJzZWROdW1iZXIsIFBORltwaG9uZU51bWJlckZvcm1hdF0pO1xuICAgICAgICAgICAgICAgIGlmIChoZWxwZXJzLnByZWZzLmNvbnZlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWROdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gZm9ybWF0dGVkTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogcGhvbmVOdW1iZXJGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IGhlbHBlcnMuZXJyb3IoJ3Bob25lTnVtYmVyLmZvcm1hdCcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgZGVmYXVsdFJlZ2lvbjogYXNzZXJ0VDxUeXBlZEV4dGVuc2lvblJ1bGU8e1xuICAgICAgICAgICAgICAgIGRlZmF1bHRSZWdpb246IHN0cmluZ1xuICAgICAgICAgICAgfSwgSUZsYWdzPj4oe1xuICAgICAgICAgICAgICAgIC8vIHJlZ2lvbiB0aGF0IHdlIGFyZSBleHBlY3RpbmcgdGhlIG51bWJlciB0byBiZSBmcm9tXG4gICAgICAgICAgICAgICAgbWV0aG9kKGRlZmF1bHRSZWdpb246IHN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kX3NldEZsYWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAncGhvbmVOdW1iZXJEZWZhdWx0UmVnaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydFVwcGVyQ2FzZVN0cmluZygnZGVmYXVsdFJlZ2lvbicsIGRlZmF1bHRSZWdpb24sIHZhbGlkUmVnaW9ucyksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcmVnaW9uOiBhc3NlcnRUPFR5cGVkRXh0ZW5zaW9uUnVsZTx7XG4gICAgICAgICAgICAgICAgcmVnaW9uOiBzdHJpbmcgfCBSZWZlcmVuY2VcbiAgICAgICAgICAgIH0sIElGbGFncz4+KHtcbiAgICAgICAgICAgICAgICBtZXRob2QocmVnaW9uOiBzdHJpbmcgfCBSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJF9zZXRGbGFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lTnVtYmVyUmVnaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpvaS5pc1JlZihyZWdpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZWdpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFzc2VydFVwcGVyQ2FzZVN0cmluZygncmVnaW9uJywgcmVnaW9uLCB2YWxpZFJlZ2lvbnMpLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG51bVR5cGU6IGFzc2VydFQ8VHlwZWRFeHRlbnNpb25SdWxlPHtcbiAgICAgICAgICAgICAgICB0eXBlOiBrZXlvZiB0eXBlb2YgUE5UXG4gICAgICAgICAgICB9LCBJRmxhZ3M+Pih7XG4gICAgICAgICAgICAgICAgbWV0aG9kKHR5cGU6IGtleW9mIHR5cGVvZiBQTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJF9zZXRGbGFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lTnVtYmVyVHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRVcHBlckNhc2VTdHJpbmcoJ3R5cGUnLCB0eXBlLCBwbnRLZXlzKSBhcyBrZXlvZiB0eXBlb2YgUE5ULFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZvcm1hdDogYXNzZXJ0VDxUeXBlZEV4dGVuc2lvblJ1bGU8e1xuICAgICAgICAgICAgICAgIGZvcm1hdDoga2V5b2YgdHlwZW9mIFBORlxuICAgICAgICAgICAgfSwgSUZsYWdzPj4oe1xuICAgICAgICAgICAgICAgIG1ldGhvZChmb3JtYXQ6IGtleW9mIHR5cGVvZiBQTkYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJF9zZXRGbGFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lTnVtYmVyRm9ybWF0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydFVwcGVyQ2FzZVN0cmluZygnZm9ybWF0JywgZm9ybWF0LCBwbmZLZXlzKSBhcyBrZXlvZiB0eXBlb2YgUE5GLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICB9XG59O1xuXG4iXX0=
|
package/dist/i18n/en.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.phoneNumberExtensionsEnMessages = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
exports.phoneNumberExtensionsEnMessages = {
|
|
6
|
+
'phoneNumber.base': '{{#label}} must be a valid phone number',
|
|
7
|
+
'phoneNumber.region': '{{#label}} must be number of region {{#region}}',
|
|
8
|
+
'phoneNumber.emptyFieldRef': 'region reference "{{#ref}}" must point to a non empty field',
|
|
9
|
+
'phoneNumber.illegalRefRegion': `region reference "{{#ref}}" must be one of [${utils_1.validRegions.join(', ')}]`,
|
|
10
|
+
'phoneNumber.type': '{{#label}} must be a {{#type}} phone number',
|
|
11
|
+
'phoneNumber.format': '{{#label}} must be formatted in {{#format}} format',
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaTE4bi9lbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBd0M7QUFFM0IsUUFBQSwrQkFBK0IsR0FBRztJQUMzQyxrQkFBa0IsRUFBRSx5Q0FBeUM7SUFDN0Qsb0JBQW9CLEVBQUUsaURBQWlEO0lBQ3ZFLDJCQUEyQixFQUFFLDZEQUE2RDtJQUMxRiw4QkFBOEIsRUFBRSwrQ0FBK0Msb0JBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7SUFDekcsa0JBQWtCLEVBQUUsNkNBQTZDO0lBQ2pFLG9CQUFvQixFQUFFLG9EQUFvRDtDQUM3RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmFsaWRSZWdpb25zIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgcGhvbmVOdW1iZXJFeHRlbnNpb25zRW5NZXNzYWdlcyA9IHtcbiAgICAncGhvbmVOdW1iZXIuYmFzZSc6ICd7eyNsYWJlbH19IG11c3QgYmUgYSB2YWxpZCBwaG9uZSBudW1iZXInLFxuICAgICdwaG9uZU51bWJlci5yZWdpb24nOiAne3sjbGFiZWx9fSBtdXN0IGJlIG51bWJlciBvZiByZWdpb24ge3sjcmVnaW9ufX0nLFxuICAgICdwaG9uZU51bWJlci5lbXB0eUZpZWxkUmVmJzogJ3JlZ2lvbiByZWZlcmVuY2UgXCJ7eyNyZWZ9fVwiIG11c3QgcG9pbnQgdG8gYSBub24gZW1wdHkgZmllbGQnLFxuICAgICdwaG9uZU51bWJlci5pbGxlZ2FsUmVmUmVnaW9uJzogYHJlZ2lvbiByZWZlcmVuY2UgXCJ7eyNyZWZ9fVwiIG11c3QgYmUgb25lIG9mIFske3ZhbGlkUmVnaW9ucy5qb2luKCcsICcpfV1gLFxuICAgICdwaG9uZU51bWJlci50eXBlJzogJ3t7I2xhYmVsfX0gbXVzdCBiZSBhIHt7I3R5cGV9fSBwaG9uZSBudW1iZXInLFxuICAgICdwaG9uZU51bWJlci5mb3JtYXQnOiAne3sjbGFiZWx9fSBtdXN0IGJlIGZvcm1hdHRlZCBpbiB7eyNmb3JtYXR9fSBmb3JtYXQnLFxufTsiXX0=
|
package/dist/i18n/he.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.phoneNumberExtensionsHeMessages = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
exports.phoneNumberExtensionsHeMessages = {
|
|
6
|
+
'phoneNumber.base': '{{#label}} צריך להיות מספר טלפון תקין',
|
|
7
|
+
'phoneNumber.region': '{{#label}} צריך להיות מספר טלפון תקין מ-{{#region}}',
|
|
8
|
+
'phoneNumber.emptyFieldRef': 'ההפניה לאיזור "{{#ref}}" צריכה להוביל לשדה שאינו ריק',
|
|
9
|
+
'phoneNumber.illegalRefRegion': `ההפנייה לאיזור "{{#ref}}" צריכה להוביל לאחד מ-[${utils_1.validRegions.join(', ')}]`,
|
|
10
|
+
'phoneNumber.type': '{{#label}} צריך להיות מספר טלפון מסוג {{#type}}',
|
|
11
|
+
'phoneNumber.format': '{{#label}} צריך להיות בפורמט של {{#format}}',
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaTE4bi9oZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBd0M7QUFHM0IsUUFBQSwrQkFBK0IsR0FBMkM7SUFDbkYsa0JBQWtCLEVBQUUsdUNBQXVDO0lBQzNELG9CQUFvQixFQUFFLHFEQUFxRDtJQUMzRSwyQkFBMkIsRUFBRSxzREFBc0Q7SUFDbkYsOEJBQThCLEVBQUUsa0RBQWtELG9CQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO0lBQzVHLGtCQUFrQixFQUFFLGlEQUFpRDtJQUNyRSxvQkFBb0IsRUFBRSw2Q0FBNkM7Q0FDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZhbGlkUmVnaW9ucyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHBob25lTnVtYmVyRXh0ZW5zaW9uc0VuTWVzc2FnZXMgfSBmcm9tICcuL2VuJztcblxuZXhwb3J0IGNvbnN0IHBob25lTnVtYmVyRXh0ZW5zaW9uc0hlTWVzc2FnZXM6IHR5cGVvZiBwaG9uZU51bWJlckV4dGVuc2lvbnNFbk1lc3NhZ2VzID0ge1xuICAgICdwaG9uZU51bWJlci5iYXNlJzogJ3t7I2xhYmVsfX0g16bXqNeZ15og15zXlNeZ15XXqiDXnteh16TXqCDXmNec16TXldefINeq16fXmdefJyxcbiAgICAncGhvbmVOdW1iZXIucmVnaW9uJzogJ3t7I2xhYmVsfX0g16bXqNeZ15og15zXlNeZ15XXqiDXnteh16TXqCDXmNec16TXldefINeq16fXmdefINeeLXt7I3JlZ2lvbn19JyxcbiAgICAncGhvbmVOdW1iZXIuZW1wdHlGaWVsZFJlZic6ICfXlNeU16TXoNeZ15Qg15zXkNeZ15bXldeoIFwie3sjcmVmfX1cIiDXpteo15nXm9eUINec15TXldeR15nXnCDXnNep15PXlCDXqdeQ15nXoNeVINeo15nXpycsXG4gICAgJ3Bob25lTnVtYmVyLmlsbGVnYWxSZWZSZWdpb24nOiBg15TXlNek16DXmdeZ15Qg15zXkNeZ15bXldeoIFwie3sjcmVmfX1cIiDXpteo15nXm9eUINec15TXldeR15nXnCDXnNeQ15fXkyDXni1bJHt2YWxpZFJlZ2lvbnMuam9pbignLCAnKX1dYCxcbiAgICAncGhvbmVOdW1iZXIudHlwZSc6ICd7eyNsYWJlbH19INem16jXmdeaINec15TXmdeV16og157Xodek16gg15jXnNek15XXnyDXnteh15XXkiB7eyN0eXBlfX0nLFxuICAgICdwaG9uZU51bWJlci5mb3JtYXQnOiAne3sjbGFiZWx9fSDXpteo15nXmiDXnNeU15nXldeqINeR16TXldeo157XmCDXqdecIHt7I2Zvcm1hdH19Jyxcbn07XG4iXX0=
|
|
@@ -18,3 +18,4 @@ const extension_1 = require("./extension");
|
|
|
18
18
|
__exportStar(require("./types"), exports);
|
|
19
19
|
__exportStar(require("./extension"), exports);
|
|
20
20
|
exports.default = extension_1.phoneNumExtensions;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFnRDtBQUVoRCwwQ0FBdUI7QUFDdkIsOENBQTJCO0FBRTNCLGtCQUFlLDhCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGhvbmVOdW1FeHRlbnNpb25zIH0gZnJvbSAnLi9leHRlbnNpb24nXG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnXG5leHBvcnQgKiBmcm9tICcuL2V4dGVuc2lvbidcblxuZXhwb3J0IGRlZmF1bHQgcGhvbmVOdW1FeHRlbnNpb25zOyJdfQ==
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IGFzIFBORiwgUGhvbmVOdW1iZXJUeXBlIGFzIFBOVCB9IGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcidcbmltcG9ydCAqIGFzIEpvaSBmcm9tICdqb2knXG5pbXBvcnQgeyBSZWZlcmVuY2UsIFN0cmluZ1NjaGVtYSB9IGZyb20gJ2pvaSdcblxuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lTnVtYmVyU2NoZW1hIGV4dGVuZHMgU3RyaW5nU2NoZW1hIHtcbiAgICBkZWZhdWx0UmVnaW9uKHJlZ2lvbjogc3RyaW5nKTogdGhpc1xuXG4gICAgcmVnaW9uKHJlZ2lvbjogc3RyaW5nIHwgUmVmZXJlbmNlKTogdGhpc1xuXG4gICAgbnVtVHlwZSh0eXBlOiBrZXlvZiB0eXBlb2YgUE5UIHwgc3RyaW5nKTogdGhpc1xuXG4gICAgZm9ybWF0KGZvcm1hdDoga2V5b2YgdHlwZW9mIFBORiB8IHN0cmluZyk6IHRoaXNcbn1cblxuZXhwb3J0IHR5cGUgSm9pV2l0aFBob25lTnVtYmVyRXh0ZW5zaW9uID0gdHlwZW9mIEpvaSAmIHtcbiAgICBwaG9uZU51bWJlcigpOiBQaG9uZU51bWJlclNjaGVtYVxufSJdfQ==
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validRegions = void 0;
|
|
4
|
+
const PhoneNumber = require("google-libphonenumber");
|
|
5
|
+
exports.validRegions = Object.keys(
|
|
6
|
+
// as any because metadata is not in @types/google-libphonenumber
|
|
7
|
+
PhoneNumber.metadata.countryToMetadata);
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXFEO0FBR3hDLFFBQUEsWUFBWSxHQUFhLE1BQU0sQ0FBQyxJQUFJO0FBQzdDLGlFQUFpRTtBQUNoRSxXQUFtQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFBob25lTnVtYmVyIGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcic7XG5cblxuZXhwb3J0IGNvbnN0IHZhbGlkUmVnaW9uczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhcbiAgICAvLyBhcyBhbnkgYmVjYXVzZSBtZXRhZGF0YSBpcyBub3QgaW4gQHR5cGVzL2dvb2dsZS1saWJwaG9uZW51bWJlclxuICAgIChQaG9uZU51bWJlciBhcyBhbnkpLm1ldGFkYXRhLmNvdW50cnlUb01ldGFkYXRhLFxuKTsiXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tepez/joi-phone-number-extensions",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "A joi extension for validating and formatting phone numbers using google-libphonenumber",
|
|
5
5
|
"homepage": "https://github.com/tepez/joi-phone-number-extensions#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -15,12 +15,10 @@
|
|
|
15
15
|
"main": "dist/index.js",
|
|
16
16
|
"types": "dist/index.d.ts",
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
18
|
+
"build": "npm run clean && tsc",
|
|
19
19
|
"clean": "del-cli dist",
|
|
20
|
-
"dev": "nodemon --watch \"src/**\" --ext ts --exec \"node -r ts-node/register/transpile-only node_modules/jasmine/bin/jasmine.js --config=jasmine.json\"",
|
|
21
|
-
"
|
|
22
|
-
"test": "node -r ts-node/register/transpile-only node_modules/jasmine/bin/jasmine.js --config=jasmine.json",
|
|
23
|
-
"test-debug": "node -r ts-node/register/transpile-only --inspect-brk node_modules/jasmine/bin/jasmine.js --config=jasmine.json",
|
|
20
|
+
"dev": "nodemon --watch \"src/**\" --ext ts --exec \"node -r ts-node/register/transpile-only node_modules/jasmine/bin/jasmine.js --config=jasmine-dev.json\"",
|
|
21
|
+
"test": "node -r ts-node/register node_modules/jasmine/bin/jasmine.js --config=jasmine-build.json",
|
|
24
22
|
"update": "npm run build && npx np --no-publish"
|
|
25
23
|
},
|
|
26
24
|
"dependencies": {
|
|
@@ -32,12 +30,14 @@
|
|
|
32
30
|
},
|
|
33
31
|
"devDependencies": {
|
|
34
32
|
"@tepez/joi-jasmine-helpers": "^1.0.0",
|
|
35
|
-
"@tepez/typescript-common": "^
|
|
33
|
+
"@tepez/typescript-common": "^3.0.0",
|
|
36
34
|
"@types/jasmine": "^5.1.4",
|
|
35
|
+
"@types/jasmine-reporters": "^2.5.3",
|
|
37
36
|
"del-cli": "^5.1.0",
|
|
38
37
|
"jasmine": "^5.4.0",
|
|
39
38
|
"jasmine-reporters": "^2.5.2",
|
|
40
39
|
"jasmine-spec-reporter": "^7.0.0",
|
|
40
|
+
"nodemon": "^3.1.14",
|
|
41
41
|
"np": "^7.7.0",
|
|
42
42
|
"ts-node": "^10.9.2",
|
|
43
43
|
"typescript": "^5.7.3"
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const JasmineReporters = require('jasmine-reporters');
|
|
2
|
-
const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter');
|
|
3
|
-
jasmine.getEnv().clearReporters();
|
|
4
|
-
jasmine.getEnv().addReporter(new JasmineReporters.JUnitXmlReporter({
|
|
5
|
-
package: 'spec',
|
|
6
|
-
useDotNotation: false,
|
|
7
|
-
savePath: 'reports',
|
|
8
|
-
filePrefix: 'spec',
|
|
9
|
-
}));
|
|
10
|
-
jasmine.getEnv().addReporter(new SpecReporter({
|
|
11
|
-
spec: {
|
|
12
|
-
displayDuration: true,
|
|
13
|
-
displayStacktrace: StacktraceOption.PRETTY,
|
|
14
|
-
displaySuccessful: true,
|
|
15
|
-
},
|
|
16
|
-
summary: {
|
|
17
|
-
displayFailed: true,
|
|
18
|
-
displayPending: true,
|
|
19
|
-
},
|
|
20
|
-
}));
|
package/dist/src/extension.js
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.phoneNumExtensions = void 0;
|
|
4
|
-
const ts_utils_1 = require("@tepez/ts-utils");
|
|
5
|
-
const google_libphonenumber_1 = require("google-libphonenumber");
|
|
6
|
-
const en_1 = require("./i18n/en");
|
|
7
|
-
const he_1 = require("./i18n/he");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
const phoneNumberUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
|
|
10
|
-
function typesMatch(type1, type2) {
|
|
11
|
-
return type1 === type2 ||
|
|
12
|
-
(type1 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE_OR_MOBILE && (type2 === google_libphonenumber_1.PhoneNumberType.MOBILE || type2 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE)) ||
|
|
13
|
-
(type2 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE_OR_MOBILE && (type1 === google_libphonenumber_1.PhoneNumberType.MOBILE || type1 === google_libphonenumber_1.PhoneNumberType.FIXED_LINE));
|
|
14
|
-
}
|
|
15
|
-
const assertUpperCaseString = (name, value, validValues) => {
|
|
16
|
-
if (!value)
|
|
17
|
-
throw new Error(`${name} is required`);
|
|
18
|
-
if (typeof value !== 'string')
|
|
19
|
-
throw new Error(`${name} must be a string`);
|
|
20
|
-
const ret = value.toUpperCase();
|
|
21
|
-
if (!validValues.includes(ret)) {
|
|
22
|
-
throw new Error(`${name} must be one of ${validValues.join(', ')}`);
|
|
23
|
-
}
|
|
24
|
-
return ret;
|
|
25
|
-
};
|
|
26
|
-
const phoneNumExtensions = function (joi) {
|
|
27
|
-
const regionValidation = joi
|
|
28
|
-
.string()
|
|
29
|
-
.uppercase()
|
|
30
|
-
.valid(...utils_1.validRegions)
|
|
31
|
-
.required();
|
|
32
|
-
const pntKeys = Object.keys(google_libphonenumber_1.PhoneNumberType);
|
|
33
|
-
const pnfKeys = Object.keys(google_libphonenumber_1.PhoneNumberFormat);
|
|
34
|
-
return {
|
|
35
|
-
type: 'phoneNumber',
|
|
36
|
-
base: joi.string(),
|
|
37
|
-
messages: {
|
|
38
|
-
...en_1.phoneNumberExtensionsEnMessages,
|
|
39
|
-
he: he_1.phoneNumberExtensionsHeMessages,
|
|
40
|
-
}, // joi types doesn't support languages but it's ok
|
|
41
|
-
// https://github.com/sideway/joi/blob/v17.4.2/lib/index.d.ts#L29
|
|
42
|
-
validate(value, helpers) {
|
|
43
|
-
if (!value) {
|
|
44
|
-
return {
|
|
45
|
-
value,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const phoneNumberRegion = helpers.schema.$_getFlag('phoneNumberRegion');
|
|
49
|
-
const phoneNumberDefaultRegion = helpers.schema.$_getFlag('phoneNumberDefaultRegion');
|
|
50
|
-
const phoneNumberType = helpers.schema.$_getFlag('phoneNumberType');
|
|
51
|
-
const phoneNumberFormat = helpers.schema.$_getFlag('phoneNumberFormat');
|
|
52
|
-
let regionSource = phoneNumberRegion
|
|
53
|
-
|| phoneNumberDefaultRegion
|
|
54
|
-
|| null;
|
|
55
|
-
let region;
|
|
56
|
-
if (joi.isRef(regionSource)) {
|
|
57
|
-
region = regionSource.resolve(value, helpers.state, helpers.prefs);
|
|
58
|
-
if (!region) {
|
|
59
|
-
return {
|
|
60
|
-
errors: helpers.error('phoneNumber.emptyFieldRef', { ref: regionSource.key }),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
const regionValidationResult = regionValidation.validate(region);
|
|
64
|
-
if (regionValidationResult.error) {
|
|
65
|
-
return {
|
|
66
|
-
errors: helpers.error('phoneNumber.illegalRefRegion', { ref: regionSource.key }),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
region = regionSource;
|
|
72
|
-
}
|
|
73
|
-
let parsedNumber;
|
|
74
|
-
try {
|
|
75
|
-
parsedNumber = phoneNumberUtil.parse(value, region);
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
return {
|
|
79
|
-
errors: helpers.error('phoneNumber.base', { value }),
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
if (phoneNumberRegion) {
|
|
83
|
-
if (!phoneNumberUtil.isValidNumberForRegion(parsedNumber, region)) {
|
|
84
|
-
return {
|
|
85
|
-
errors: helpers.error('phoneNumber.region', { value, region }),
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else if (!phoneNumberUtil.isValidNumber(parsedNumber)) {
|
|
90
|
-
return {
|
|
91
|
-
errors: helpers.error('phoneNumber.base', { value }),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
if (phoneNumberType) {
|
|
95
|
-
const numberType = phoneNumberUtil.getNumberType(parsedNumber);
|
|
96
|
-
if (!typesMatch(google_libphonenumber_1.PhoneNumberType[phoneNumberType], numberType)) {
|
|
97
|
-
const context = {
|
|
98
|
-
value,
|
|
99
|
-
type: phoneNumberType,
|
|
100
|
-
};
|
|
101
|
-
return {
|
|
102
|
-
errors: helpers.error('phoneNumber.type', context),
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (phoneNumberFormat) {
|
|
107
|
-
const formattedNumber = phoneNumberUtil.format(parsedNumber, google_libphonenumber_1.PhoneNumberFormat[phoneNumberFormat]);
|
|
108
|
-
if (helpers.prefs.convert) {
|
|
109
|
-
return {
|
|
110
|
-
value: formattedNumber,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
else if (value !== formattedNumber) {
|
|
114
|
-
const context = {
|
|
115
|
-
value,
|
|
116
|
-
format: phoneNumberFormat,
|
|
117
|
-
};
|
|
118
|
-
return {
|
|
119
|
-
errors: helpers.error('phoneNumber.format', context),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return {
|
|
124
|
-
value: value,
|
|
125
|
-
};
|
|
126
|
-
},
|
|
127
|
-
rules: {
|
|
128
|
-
defaultRegion: (0, ts_utils_1.assertT)({
|
|
129
|
-
// region that we are expecting the number to be from
|
|
130
|
-
method(defaultRegion) {
|
|
131
|
-
return this.$_setFlag('phoneNumberDefaultRegion', assertUpperCaseString('defaultRegion', defaultRegion, utils_1.validRegions));
|
|
132
|
-
},
|
|
133
|
-
}),
|
|
134
|
-
region: (0, ts_utils_1.assertT)({
|
|
135
|
-
method(region) {
|
|
136
|
-
return this.$_setFlag('phoneNumberRegion', joi.isRef(region)
|
|
137
|
-
? region
|
|
138
|
-
: assertUpperCaseString('region', region, utils_1.validRegions));
|
|
139
|
-
},
|
|
140
|
-
}),
|
|
141
|
-
numType: (0, ts_utils_1.assertT)({
|
|
142
|
-
method(type) {
|
|
143
|
-
return this.$_setFlag('phoneNumberType', assertUpperCaseString('type', type, pntKeys));
|
|
144
|
-
},
|
|
145
|
-
}),
|
|
146
|
-
format: (0, ts_utils_1.assertT)({
|
|
147
|
-
method(format) {
|
|
148
|
-
return this.$_setFlag('phoneNumberFormat', assertUpperCaseString('format', format, pnfKeys));
|
|
149
|
-
},
|
|
150
|
-
}),
|
|
151
|
-
},
|
|
152
|
-
};
|
|
153
|
-
};
|
|
154
|
-
exports.phoneNumExtensions = phoneNumExtensions;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const joi_jasmine_helpers_1 = require("@tepez/joi-jasmine-helpers");
|
|
4
|
-
const Joi = require("joi");
|
|
5
|
-
const _1 = require(".");
|
|
6
|
-
const ExtendedJoi = Joi.extend(_1.default);
|
|
7
|
-
describe('phoneNumber', () => {
|
|
8
|
-
let schema;
|
|
9
|
-
(0, joi_jasmine_helpers_1.addMatchers)();
|
|
10
|
-
describe('passthrough empty values', () => {
|
|
11
|
-
beforeEach(() => schema = ExtendedJoi.phoneNumber().allow('', null));
|
|
12
|
-
it('should pass validation for international number', () => {
|
|
13
|
-
expect(schema).toPassValidation(undefined, undefined);
|
|
14
|
-
expect(schema).toPassValidation(null, null);
|
|
15
|
-
expect(schema).toPassValidation('', '');
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
describe('defaultRegion', () => {
|
|
19
|
-
describe('when given', () => {
|
|
20
|
-
beforeEach(() => schema = ExtendedJoi.phoneNumber().defaultRegion('US'));
|
|
21
|
-
it('should pass validation for international number', () => {
|
|
22
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
23
|
-
expect(schema).toPassValidation('+15417543010', '+15417543010');
|
|
24
|
-
});
|
|
25
|
-
it('should pass validation for national phone numbers from default region', () => {
|
|
26
|
-
expect(schema).toPassValidation('(541) 754-3010', '(541) 754-3010');
|
|
27
|
-
});
|
|
28
|
-
it('should fail validation for national numbers from other regions', () => {
|
|
29
|
-
expect(schema)
|
|
30
|
-
.toFailValidation('035555555', '"value" must be a valid phone number');
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('when not given', () => {
|
|
34
|
-
beforeEach(() => schema = ExtendedJoi.phoneNumber());
|
|
35
|
-
it('should pass validation for international number', () => {
|
|
36
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
37
|
-
expect(schema).toPassValidation('+15417543010', '+15417543010');
|
|
38
|
-
});
|
|
39
|
-
it('should fail validation for non international number', () => {
|
|
40
|
-
expect(schema)
|
|
41
|
-
.toFailValidation('(541) 754-3010', '"value" must be a valid phone number');
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe('region', () => {
|
|
46
|
-
it('should throw if format is not supported', () => {
|
|
47
|
-
expect(() => {
|
|
48
|
-
ExtendedJoi.phoneNumber().region('XXX');
|
|
49
|
-
}).toThrowError(/region must be one of .*UG, US, UY, UZ.*/);
|
|
50
|
-
});
|
|
51
|
-
it('should throw if region is empty', () => {
|
|
52
|
-
expect(() => {
|
|
53
|
-
ExtendedJoi.phoneNumber().region();
|
|
54
|
-
}).toThrowError(/region is required/);
|
|
55
|
-
});
|
|
56
|
-
it('should accept in lower case as well', () => {
|
|
57
|
-
const schema = ExtendedJoi.phoneNumber().region('us');
|
|
58
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
59
|
-
expect(schema).toPassValidation('+15417543010', '+15417543010');
|
|
60
|
-
});
|
|
61
|
-
describe('when given', () => {
|
|
62
|
-
beforeEach(() => schema = ExtendedJoi.phoneNumber().region('US'));
|
|
63
|
-
it('should pass validation for international number', () => {
|
|
64
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
65
|
-
expect(schema).toPassValidation('+15417543010', '+15417543010');
|
|
66
|
-
});
|
|
67
|
-
it('should pass validation for national phone numbers from default region', () => {
|
|
68
|
-
expect(schema).toPassValidation('(541) 754-3010', '(541) 754-3010');
|
|
69
|
-
});
|
|
70
|
-
it('should fail validation for national numbers from other regions', () => {
|
|
71
|
-
expect(schema)
|
|
72
|
-
.toFailValidation('035555555', '"value" must be number of region US');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe('reference', () => {
|
|
76
|
-
let objSchema;
|
|
77
|
-
beforeEach(() => {
|
|
78
|
-
objSchema = ExtendedJoi.object().keys({
|
|
79
|
-
phone: ExtendedJoi.phoneNumber().region(ExtendedJoi.ref('region')),
|
|
80
|
-
region: ExtendedJoi.string(),
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
it('should accept value via Joi.ref and use it for validation', () => {
|
|
84
|
-
expect(objSchema).toPassValidation({
|
|
85
|
-
phone: '+1 541-754-3010',
|
|
86
|
-
region: 'US',
|
|
87
|
-
});
|
|
88
|
-
expect(objSchema).toFailValidation({
|
|
89
|
-
phone: '+1 5555555',
|
|
90
|
-
region: 'US',
|
|
91
|
-
}, '"phone" must be number of region US');
|
|
92
|
-
});
|
|
93
|
-
it('should fail validation for Joi.ref with illegal value', () => {
|
|
94
|
-
expect(objSchema).toFailValidation({
|
|
95
|
-
phone: '+1 541-754-3010',
|
|
96
|
-
region: 'USA',
|
|
97
|
-
}, /^region reference "region" must be one of \[.*UA, UG, US, UY, UZ.*]$/);
|
|
98
|
-
});
|
|
99
|
-
it('should fail validation for Joi.ref pointing to an empty field', () => {
|
|
100
|
-
expect(objSchema).toFailValidation({
|
|
101
|
-
phone: '+1 541-754-3010',
|
|
102
|
-
}, 'region reference "region" must point to a non empty field');
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
describe('type', () => {
|
|
107
|
-
it('should throw if format is not supported', () => {
|
|
108
|
-
expect(() => {
|
|
109
|
-
ExtendedJoi.phoneNumber().numType('XXX');
|
|
110
|
-
}).toThrowError(/type must be one of FIXED_LINE, MOBILE, FIXED_LINE_OR_MOBILE, TOLL_FREE, PREMIUM_RATE, SHARED_COST, VOIP, PERSONAL_NUMBER, PAGER, UAN, VOICEMAIL, UNKNOWN/);
|
|
111
|
-
});
|
|
112
|
-
it('should throw if region is empty', () => {
|
|
113
|
-
expect(() => {
|
|
114
|
-
(ExtendedJoi.phoneNumber()).numType(undefined);
|
|
115
|
-
}).toThrowError(/type is required/);
|
|
116
|
-
expect(() => {
|
|
117
|
-
(ExtendedJoi.phoneNumber()).numType(null);
|
|
118
|
-
}).toThrowError(/type is required/);
|
|
119
|
-
});
|
|
120
|
-
it('should accept in lower case as well', () => {
|
|
121
|
-
const schema = ExtendedJoi.phoneNumber().numType('fixed_line');
|
|
122
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
123
|
-
expect(schema).toPassValidation('+15417543010', '+15417543010');
|
|
124
|
-
});
|
|
125
|
-
describe('when given', () => {
|
|
126
|
-
beforeEach(() => schema = ExtendedJoi.phoneNumber().numType('FIXED_LINE'));
|
|
127
|
-
it('should pass for numbers of that type', () => {
|
|
128
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
129
|
-
expect(schema).toPassValidation('+97235555555', '+97235555555');
|
|
130
|
-
});
|
|
131
|
-
it('should fail validation for national numbers from other types', () => {
|
|
132
|
-
expect(schema)
|
|
133
|
-
.toFailValidation('+33752961860', '"value" must be a FIXED_LINE phone number');
|
|
134
|
-
expect(schema)
|
|
135
|
-
.toFailValidation('+972525555555', '"value" must be a FIXED_LINE phone number');
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
describe('format', () => {
|
|
140
|
-
it('should throw if format is not supported', () => {
|
|
141
|
-
expect(() => {
|
|
142
|
-
ExtendedJoi.phoneNumber().format('xxx');
|
|
143
|
-
}).toThrowError(/format must be one of E164, INTERNATIONAL, NATIONAL, RFC3966/);
|
|
144
|
-
});
|
|
145
|
-
it('should throw if format is not given', () => {
|
|
146
|
-
expect(() => {
|
|
147
|
-
ExtendedJoi.phoneNumber().format(undefined);
|
|
148
|
-
}).toThrowError(/format is required/);
|
|
149
|
-
expect(() => {
|
|
150
|
-
ExtendedJoi.phoneNumber().format(null);
|
|
151
|
-
}).toThrowError(/format is required/);
|
|
152
|
-
});
|
|
153
|
-
it('should allow format to be lowercase', () => {
|
|
154
|
-
const schema = ExtendedJoi.phoneNumber().format('international');
|
|
155
|
-
expect(schema).toPassValidation('+1 541-754-3010', '+1 541-754-3010');
|
|
156
|
-
});
|
|
157
|
-
describe('when convert=true (default)', () => {
|
|
158
|
-
it('should convert number to format', () => {
|
|
159
|
-
expect(ExtendedJoi.phoneNumber().format('NATIONAL'))
|
|
160
|
-
.toPassValidation('+1-541-754-3010', '(541) 754-3010');
|
|
161
|
-
expect(ExtendedJoi.phoneNumber().format('E164'))
|
|
162
|
-
.toPassValidation('+1-541-754-3010', '+15417543010');
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
describe('when convert=false', () => {
|
|
166
|
-
it('should fail when number is not already formatted', () => {
|
|
167
|
-
const schema = ExtendedJoi.phoneNumber().format('NATIONAL');
|
|
168
|
-
expect(schema).toFailValidation('+1-541-754-3010', '"value" must be formatted in NATIONAL format', { convert: false });
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
it('should support .any methods', () => {
|
|
173
|
-
const schema = ExtendedJoi.phoneNumber().valid('+972-52-5555555');
|
|
174
|
-
expect(schema).toPassValidation('+972-52-5555555', '+972-52-5555555');
|
|
175
|
-
});
|
|
176
|
-
it('should support .string methods', () => {
|
|
177
|
-
const schema = ExtendedJoi.phoneNumber().max(13);
|
|
178
|
-
expect(schema).toPassValidation('+972525555555', '+972525555555');
|
|
179
|
-
expect(schema).toFailValidation('+972-52-5555555', '"value" length must be less than or equal to 13 characters long');
|
|
180
|
-
});
|
|
181
|
-
describe('required', () => {
|
|
182
|
-
describe('when not required', () => {
|
|
183
|
-
beforeEach(() => {
|
|
184
|
-
schema = ExtendedJoi.phoneNumber()
|
|
185
|
-
.format('INTERNATIONAL')
|
|
186
|
-
.region('US')
|
|
187
|
-
.numType('FIXED_LINE');
|
|
188
|
-
});
|
|
189
|
-
it('should pass validation when given undefined', () => {
|
|
190
|
-
expect(schema).toPassValidation(undefined, undefined);
|
|
191
|
-
});
|
|
192
|
-
it('should fail validation when given null', () => {
|
|
193
|
-
expect(schema).toFailValidation(null, '"value" must be a string');
|
|
194
|
-
});
|
|
195
|
-
it('should pass validation when given null and null is allowed', () => {
|
|
196
|
-
expect(schema.allow(null)).toPassValidation(null, null);
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
describe('when required', () => {
|
|
200
|
-
beforeEach(() => {
|
|
201
|
-
schema = ExtendedJoi.phoneNumber()
|
|
202
|
-
.format('INTERNATIONAL')
|
|
203
|
-
.region('US')
|
|
204
|
-
.numType('FIXED_LINE')
|
|
205
|
-
.required();
|
|
206
|
-
});
|
|
207
|
-
it('should fail validation when given undefined', () => {
|
|
208
|
-
expect(schema).toFailValidation(undefined, '"value" is required');
|
|
209
|
-
});
|
|
210
|
-
it('should fail validation when given null', () => {
|
|
211
|
-
expect(schema).toFailValidation(null, '"value" must be a string');
|
|
212
|
-
});
|
|
213
|
-
it('should pass validation when given null and null is allowed', () => {
|
|
214
|
-
expect(schema.allow(null)).toPassValidation(null, null);
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
describe('Hebrew', () => {
|
|
219
|
-
beforeEach(() => {
|
|
220
|
-
schema = ExtendedJoi
|
|
221
|
-
.phoneNumber()
|
|
222
|
-
.label('ערך')
|
|
223
|
-
.preferences({
|
|
224
|
-
errors: {
|
|
225
|
-
language: 'he',
|
|
226
|
-
},
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
it('base', () => {
|
|
230
|
-
expect(schema).toFailValidation('1', '"ערך" צריך להיות מספר טלפון תקין');
|
|
231
|
-
});
|
|
232
|
-
it('region', () => {
|
|
233
|
-
schema = schema.region('US');
|
|
234
|
-
expect(schema).toFailValidation('035555555', '"ערך" צריך להיות מספר טלפון תקין מ-US');
|
|
235
|
-
});
|
|
236
|
-
it('type', () => {
|
|
237
|
-
schema = schema.numType('MOBILE');
|
|
238
|
-
expect(schema).toFailValidation('+97235555555', '"ערך" צריך להיות מספר טלפון מסוג MOBILE');
|
|
239
|
-
});
|
|
240
|
-
it('format', () => {
|
|
241
|
-
schema = schema.format('NATIONAL');
|
|
242
|
-
expect(schema).toFailValidation('+97235555555', '"ערך" צריך להיות בפורמט של NATIONAL', {
|
|
243
|
-
convert: false,
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
describe('reference', () => {
|
|
247
|
-
let objSchema;
|
|
248
|
-
beforeEach(() => {
|
|
249
|
-
objSchema = ExtendedJoi.object().keys({
|
|
250
|
-
phone: ExtendedJoi.phoneNumber().region(ExtendedJoi.ref('region')),
|
|
251
|
-
region: ExtendedJoi.string(),
|
|
252
|
-
}).preferences({
|
|
253
|
-
errors: {
|
|
254
|
-
language: 'he',
|
|
255
|
-
},
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
it('should fail validation for Joi.ref with illegal value', () => {
|
|
259
|
-
expect(objSchema).toFailValidation({
|
|
260
|
-
phone: '+1 541-754-3010',
|
|
261
|
-
region: 'USA',
|
|
262
|
-
}, /^ההפנייה לאיזור "region" צריכה להוביל לאחד מ-\[.*UA, UG, US, UY, UZ.*]$/);
|
|
263
|
-
});
|
|
264
|
-
it('should fail validation for Joi.ref pointing to an empty field', () => {
|
|
265
|
-
expect(objSchema).toFailValidation({
|
|
266
|
-
phone: '+1 541-754-3010',
|
|
267
|
-
}, 'ההפניה לאיזור "region" צריכה להוביל לשדה שאינו ריק');
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
});
|
package/dist/src/i18n/en.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.phoneNumberExtensionsEnMessages = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
exports.phoneNumberExtensionsEnMessages = {
|
|
6
|
-
'phoneNumber.base': '{{#label}} must be a valid phone number',
|
|
7
|
-
'phoneNumber.region': '{{#label}} must be number of region {{#region}}',
|
|
8
|
-
'phoneNumber.emptyFieldRef': 'region reference "{{#ref}}" must point to a non empty field',
|
|
9
|
-
'phoneNumber.illegalRefRegion': `region reference "{{#ref}}" must be one of [${utils_1.validRegions.join(', ')}]`,
|
|
10
|
-
'phoneNumber.type': '{{#label}} must be a {{#type}} phone number',
|
|
11
|
-
'phoneNumber.format': '{{#label}} must be formatted in {{#format}} format',
|
|
12
|
-
};
|
package/dist/src/i18n/he.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.phoneNumberExtensionsHeMessages = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
exports.phoneNumberExtensionsHeMessages = {
|
|
6
|
-
'phoneNumber.base': '{{#label}} צריך להיות מספר טלפון תקין',
|
|
7
|
-
'phoneNumber.region': '{{#label}} צריך להיות מספר טלפון תקין מ-{{#region}}',
|
|
8
|
-
'phoneNumber.emptyFieldRef': 'ההפניה לאיזור "{{#ref}}" צריכה להוביל לשדה שאינו ריק',
|
|
9
|
-
'phoneNumber.illegalRefRegion': `ההפנייה לאיזור "{{#ref}}" צריכה להוביל לאחד מ-[${utils_1.validRegions.join(', ')}]`,
|
|
10
|
-
'phoneNumber.type': '{{#label}} צריך להיות מספר טלפון מסוג {{#type}}',
|
|
11
|
-
'phoneNumber.format': '{{#label}} צריך להיות בפורמט של {{#format}}',
|
|
12
|
-
};
|
package/dist/src/types.js
DELETED
package/dist/src/utils.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validRegions = void 0;
|
|
4
|
-
const PhoneNumber = require("google-libphonenumber");
|
|
5
|
-
exports.validRegions = Object.keys(
|
|
6
|
-
// as any because metadata is not in @types/google-libphonenumber
|
|
7
|
-
PhoneNumber.metadata.countryToMetadata);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|