ejv 2.0.5 → 2.1.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/.mocharc.json +1 -1
- package/CHANGELOG.md +26 -0
- package/README-KR.md +166 -165
- package/README.md +182 -178
- package/build/cjs/constants.js +112 -107
- package/build/cjs/constants.js.map +1 -1
- package/build/cjs/ejv.js +245 -177
- package/build/cjs/ejv.js.map +1 -1
- package/build/cjs/index.js +6 -6
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/interfaces.js.map +1 -1
- package/build/cjs/tester.js +12 -8
- package/build/cjs/tester.js.map +1 -1
- package/build/cjs/util.js.map +1 -1
- package/build/constants.d.ts +10 -5
- package/build/esm/constants.js +111 -106
- package/build/esm/constants.js.map +1 -1
- package/build/esm/ejv.js +247 -179
- package/build/esm/ejv.js.map +1 -1
- package/build/esm/index.js +1 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/interfaces.js.map +1 -1
- package/build/esm/tester.js +11 -8
- package/build/esm/tester.js.map +1 -1
- package/build/esm/util.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/interfaces.d.ts +10 -9
- package/build/tester.d.ts +4 -3
- package/build/util.d.ts +2 -2
- package/eslint.config.mjs +59 -0
- package/package.json +17 -13
- package/spec/ArrayScheme.ts +46 -46
- package/spec/CommonScheme.ts +15 -15
- package/spec/DateScheme.ts +22 -22
- package/spec/NumberScheme.ts +229 -121
- package/spec/ObjectScheme.ts +22 -22
- package/spec/RegExpScheme.ts +5 -5
- package/spec/StringScheme.ts +223 -126
- package/spec/common-test-util.ts +2 -2
- package/spec/ejv.spec.ts +20 -20
- package/spec/testers.spec.ts +5 -5
- package/src/constants.ts +12 -5
- package/src/ejv.ts +291 -202
- package/src/index.ts +1 -1
- package/src/interfaces.ts +11 -12
- package/src/tester.ts +14 -10
- package/src/util.ts +2 -2
- package/tsconfig.json +2 -1
- package/.eslintrc.json +0 -88
package/src/ejv.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
Scheme,
|
|
12
12
|
StringScheme
|
|
13
13
|
} from './interfaces';
|
|
14
|
-
import {
|
|
14
|
+
import { DATA_TYPE, ERROR_MESSAGE, ERROR_TYPE, NUMBER_FORMAT, STRING_FORMAT } from './constants';
|
|
15
15
|
|
|
16
16
|
import {
|
|
17
17
|
arrayTester,
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
minDateTester,
|
|
38
38
|
minLengthTester,
|
|
39
39
|
minNumberTester,
|
|
40
|
+
notEnumTester,
|
|
40
41
|
numberTester,
|
|
41
42
|
objectTester,
|
|
42
43
|
regExpTester,
|
|
@@ -49,13 +50,13 @@ import {
|
|
|
49
50
|
import { clone, createErrorMsg, sift } from './util';
|
|
50
51
|
|
|
51
52
|
|
|
52
|
-
function _getEffectiveTypes (scheme: Scheme):
|
|
53
|
-
let result:
|
|
53
|
+
function _getEffectiveTypes (scheme: Scheme): DATA_TYPE[] | undefined {
|
|
54
|
+
let result: DATA_TYPE[] | undefined;
|
|
54
55
|
|
|
55
56
|
if (definedTester(scheme.type)) {
|
|
56
57
|
result = (arrayTester(scheme.type)
|
|
57
58
|
? scheme.type
|
|
58
|
-
: [scheme.type]) as
|
|
59
|
+
: [scheme.type]) as DATA_TYPE[];
|
|
59
60
|
}
|
|
60
61
|
else if (definedTester(scheme.parent)) {
|
|
61
62
|
result = _getEffectiveTypes(scheme.parent);
|
|
@@ -68,8 +69,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
68
69
|
// check schemes
|
|
69
70
|
if (!definedTester(schemes) || schemes === null) {
|
|
70
71
|
return new EjvError({
|
|
71
|
-
type:
|
|
72
|
-
message:
|
|
72
|
+
type: ERROR_TYPE.NO_SCHEME,
|
|
73
|
+
message: ERROR_MESSAGE.NO_SCHEME,
|
|
73
74
|
|
|
74
75
|
data: data,
|
|
75
76
|
|
|
@@ -80,8 +81,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
80
81
|
|
|
81
82
|
if (!arrayTester(schemes)) {
|
|
82
83
|
return new EjvError({
|
|
83
|
-
type:
|
|
84
|
-
message:
|
|
84
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
85
|
+
message: ERROR_MESSAGE.NO_ARRAY_SCHEME,
|
|
85
86
|
|
|
86
87
|
data: data,
|
|
87
88
|
|
|
@@ -90,10 +91,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
if (!arrayTypeOfTester(schemes,
|
|
94
|
+
if (!arrayTypeOfTester(schemes, DATA_TYPE.OBJECT)) {
|
|
94
95
|
return new EjvError({
|
|
95
|
-
type:
|
|
96
|
-
message:
|
|
96
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
97
|
+
message: ERROR_MESSAGE.NO_OBJECT_ARRAY_SCHEME,
|
|
97
98
|
|
|
98
99
|
data: data,
|
|
99
100
|
|
|
@@ -104,8 +105,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
104
105
|
|
|
105
106
|
if (!minLengthTester(schemes, 1)) {
|
|
106
107
|
return new EjvError({
|
|
107
|
-
type:
|
|
108
|
-
message:
|
|
108
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
109
|
+
message: ERROR_MESSAGE.EMPTY_SCHEME,
|
|
109
110
|
|
|
110
111
|
data: data,
|
|
111
112
|
|
|
@@ -131,12 +132,12 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
131
132
|
_options.path.push(key as string);
|
|
132
133
|
}
|
|
133
134
|
|
|
134
|
-
const types:
|
|
135
|
+
const types: DATA_TYPE[] | undefined = _getEffectiveTypes(scheme);
|
|
135
136
|
|
|
136
137
|
if (!definedTester(types)) {
|
|
137
138
|
return new EjvError({
|
|
138
|
-
type:
|
|
139
|
-
message:
|
|
139
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
140
|
+
message: ERROR_MESSAGE.SCHEMES_SHOULD_HAVE_TYPE,
|
|
140
141
|
|
|
141
142
|
data: data,
|
|
142
143
|
|
|
@@ -146,9 +147,9 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
|
|
149
|
-
const allDataType:
|
|
150
|
+
const allDataType: DATA_TYPE[] = Object.values(DATA_TYPE);
|
|
150
151
|
|
|
151
|
-
const typeError: string | undefined = types.find((type:
|
|
152
|
+
const typeError: string | undefined = types.find((type: DATA_TYPE): boolean => {
|
|
152
153
|
return !definedTester(type)
|
|
153
154
|
|| !stringTester(type)
|
|
154
155
|
|| !enumTester(type, allDataType);
|
|
@@ -156,8 +157,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
156
157
|
|
|
157
158
|
if (typeError) {
|
|
158
159
|
return new EjvError({
|
|
159
|
-
type:
|
|
160
|
-
message: createErrorMsg(
|
|
160
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
161
|
+
message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_INVALID_TYPE, {
|
|
161
162
|
placeholders: [typeError]
|
|
162
163
|
}),
|
|
163
164
|
|
|
@@ -176,8 +177,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
176
177
|
const notUniqueItemsSifted: string[] = sift(notUniqueItems);
|
|
177
178
|
|
|
178
179
|
return new EjvError({
|
|
179
|
-
type:
|
|
180
|
-
message: createErrorMsg(
|
|
180
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
181
|
+
message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_DUPLICATED_TYPE, {
|
|
181
182
|
placeholders: [notUniqueItemsSifted.join(', ')]
|
|
182
183
|
}),
|
|
183
184
|
|
|
@@ -191,8 +192,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
191
192
|
if (!definedTester(value)) {
|
|
192
193
|
if (scheme.optional !== true) {
|
|
193
194
|
result = new EjvError({
|
|
194
|
-
type:
|
|
195
|
-
message: createErrorMsg(
|
|
195
|
+
type: ERROR_TYPE.REQUIRED,
|
|
196
|
+
message: createErrorMsg(ERROR_MESSAGE.REQUIRED),
|
|
196
197
|
|
|
197
198
|
data,
|
|
198
199
|
path: _options.path,
|
|
@@ -210,8 +211,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
210
211
|
if (value === null) {
|
|
211
212
|
if (scheme.nullable !== true) {
|
|
212
213
|
result = new EjvError({
|
|
213
|
-
type:
|
|
214
|
-
message: createErrorMsg(
|
|
214
|
+
type: ERROR_TYPE.REQUIRED,
|
|
215
|
+
message: createErrorMsg(ERROR_MESSAGE.REQUIRED),
|
|
215
216
|
|
|
216
217
|
data,
|
|
217
218
|
path: _options.path,
|
|
@@ -226,7 +227,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
226
227
|
}
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
const typeResolved:
|
|
230
|
+
const typeResolved: DATA_TYPE | undefined = types.find((type: DATA_TYPE): type is DATA_TYPE => {
|
|
230
231
|
return typeTester(value, type);
|
|
231
232
|
});
|
|
232
233
|
|
|
@@ -235,8 +236,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
235
236
|
if (!arrayTester(scheme.type)) {
|
|
236
237
|
if (scheme.type !== typeResolved) {
|
|
237
238
|
result = new EjvError({
|
|
238
|
-
type:
|
|
239
|
-
message: createErrorMsg(
|
|
239
|
+
type: ERROR_TYPE.TYPE_MISMATCH,
|
|
240
|
+
message: createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH, {
|
|
240
241
|
placeholders: [scheme.type]
|
|
241
242
|
}),
|
|
242
243
|
|
|
@@ -251,8 +252,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
251
252
|
else {
|
|
252
253
|
if (!scheme.type.includes(typeResolved)) {
|
|
253
254
|
result = new EjvError({
|
|
254
|
-
type:
|
|
255
|
-
message: createErrorMsg(
|
|
255
|
+
type: ERROR_TYPE.TYPE_MISMATCH_ONE_OF,
|
|
256
|
+
message: createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH_ONE_OF, {
|
|
256
257
|
placeholders: [JSON.stringify(scheme.type)]
|
|
257
258
|
}),
|
|
258
259
|
|
|
@@ -273,8 +274,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
273
274
|
|
|
274
275
|
if (!arrayTester(typesForMsg)) {
|
|
275
276
|
result = new EjvError({
|
|
276
|
-
type:
|
|
277
|
-
message: createErrorMsg(
|
|
277
|
+
type: ERROR_TYPE.TYPE_MISMATCH,
|
|
278
|
+
message: createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH, {
|
|
278
279
|
placeholders: [typesForMsg]
|
|
279
280
|
}),
|
|
280
281
|
|
|
@@ -287,8 +288,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
287
288
|
}
|
|
288
289
|
else {
|
|
289
290
|
result = new EjvError({
|
|
290
|
-
type:
|
|
291
|
-
message: createErrorMsg(
|
|
291
|
+
type: ERROR_TYPE.TYPE_MISMATCH_ONE_OF,
|
|
292
|
+
message: createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH_ONE_OF, {
|
|
292
293
|
placeholders: [JSON.stringify(typesForMsg)]
|
|
293
294
|
}),
|
|
294
295
|
|
|
@@ -305,15 +306,15 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
305
306
|
|
|
306
307
|
// additional check for type resolved
|
|
307
308
|
switch (typeResolved) {
|
|
308
|
-
case
|
|
309
|
+
case DATA_TYPE.NUMBER: {
|
|
309
310
|
const valueAsNumber: number = value as unknown as number;
|
|
310
311
|
const numberScheme: NumberScheme = scheme as NumberScheme;
|
|
311
312
|
|
|
312
313
|
if (definedTester(numberScheme.enum)) {
|
|
313
314
|
if (!arrayTester(numberScheme.enum)) {
|
|
314
315
|
return new EjvError({
|
|
315
|
-
type:
|
|
316
|
-
message: createErrorMsg(
|
|
316
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
317
|
+
message: createErrorMsg(ERROR_MESSAGE.ENUM_SHOULD_BE_ARRAY),
|
|
317
318
|
|
|
318
319
|
data: data,
|
|
319
320
|
|
|
@@ -324,10 +325,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
324
325
|
|
|
325
326
|
const enumArr: number[] = numberScheme.enum;
|
|
326
327
|
|
|
327
|
-
if (!arrayTypeOfTester(enumArr,
|
|
328
|
+
if (!arrayTypeOfTester(enumArr, DATA_TYPE.NUMBER)) {
|
|
328
329
|
return new EjvError({
|
|
329
|
-
type:
|
|
330
|
-
message: createErrorMsg(
|
|
330
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
331
|
+
message: createErrorMsg(ERROR_MESSAGE.ENUM_SHOULD_BE_NUMBERS),
|
|
331
332
|
|
|
332
333
|
data: data,
|
|
333
334
|
|
|
@@ -338,8 +339,52 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
338
339
|
|
|
339
340
|
if (!enumTester(valueAsNumber, enumArr)) {
|
|
340
341
|
result = new EjvError({
|
|
341
|
-
type:
|
|
342
|
-
message: createErrorMsg(
|
|
342
|
+
type: ERROR_TYPE.ONE_VALUE_OF,
|
|
343
|
+
message: createErrorMsg(ERROR_MESSAGE.ONE_VALUE_OF, {
|
|
344
|
+
placeholders: [JSON.stringify(enumArr)]
|
|
345
|
+
}),
|
|
346
|
+
|
|
347
|
+
data,
|
|
348
|
+
path: _options.path,
|
|
349
|
+
|
|
350
|
+
errorScheme: numberScheme,
|
|
351
|
+
errorData: value
|
|
352
|
+
});
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (definedTester(numberScheme.notEnum)) {
|
|
358
|
+
if (!arrayTester(numberScheme.notEnum)) {
|
|
359
|
+
return new EjvError({
|
|
360
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
361
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ENUM_SHOULD_BE_ARRAY),
|
|
362
|
+
|
|
363
|
+
data: data,
|
|
364
|
+
|
|
365
|
+
errorScheme: numberScheme,
|
|
366
|
+
isSchemeError: true
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
const enumArr: number[] = numberScheme.notEnum;
|
|
371
|
+
|
|
372
|
+
if (!arrayTypeOfTester(enumArr, DATA_TYPE.NUMBER)) {
|
|
373
|
+
return new EjvError({
|
|
374
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
375
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ENUM_SHOULD_BE_NUMBERS),
|
|
376
|
+
|
|
377
|
+
data: data,
|
|
378
|
+
|
|
379
|
+
errorScheme: numberScheme,
|
|
380
|
+
isSchemeError: true
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
if (!notEnumTester(valueAsNumber, enumArr)) {
|
|
385
|
+
result = new EjvError({
|
|
386
|
+
type: ERROR_TYPE.NOT_ONE_VALUE_OF,
|
|
387
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ONE_VALUE_OF, {
|
|
343
388
|
placeholders: [JSON.stringify(enumArr)]
|
|
344
389
|
}),
|
|
345
390
|
|
|
@@ -363,8 +408,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
363
408
|
|
|
364
409
|
if (!numberTester(effectiveMin)) {
|
|
365
410
|
return new EjvError({
|
|
366
|
-
type:
|
|
367
|
-
message: createErrorMsg(
|
|
411
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
412
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_SHOULD_BE_NUMBER),
|
|
368
413
|
|
|
369
414
|
data: data,
|
|
370
415
|
|
|
@@ -376,8 +421,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
376
421
|
if (definedTester(numberScheme.exclusiveMin)) {
|
|
377
422
|
if (!booleanTester(numberScheme.exclusiveMin)) {
|
|
378
423
|
return new EjvError({
|
|
379
|
-
type:
|
|
380
|
-
message: createErrorMsg(
|
|
424
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
425
|
+
message: createErrorMsg(ERROR_MESSAGE.EXCLUSIVE_MIN_SHOULD_BE_BOOLEAN),
|
|
381
426
|
|
|
382
427
|
data: data,
|
|
383
428
|
|
|
@@ -390,8 +435,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
390
435
|
if (numberScheme.exclusiveMin) {
|
|
391
436
|
if (!exclusiveMinNumberTester(valueAsNumber, effectiveMin)) {
|
|
392
437
|
result = new EjvError({
|
|
393
|
-
type:
|
|
394
|
-
message: createErrorMsg(
|
|
438
|
+
type: ERROR_TYPE.BIGGER_THAN,
|
|
439
|
+
message: createErrorMsg(ERROR_MESSAGE.BIGGER_THAN, {
|
|
395
440
|
placeholders: [effectiveMin]
|
|
396
441
|
}),
|
|
397
442
|
|
|
@@ -407,8 +452,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
407
452
|
else {
|
|
408
453
|
if (!minNumberTester(valueAsNumber, effectiveMin)) {
|
|
409
454
|
result = new EjvError({
|
|
410
|
-
type:
|
|
411
|
-
message: createErrorMsg(
|
|
455
|
+
type: ERROR_TYPE.BIGGER_THAN_OR_EQUAL,
|
|
456
|
+
message: createErrorMsg(ERROR_MESSAGE.BIGGER_THAN_OR_EQUAL, {
|
|
412
457
|
placeholders: [effectiveMin]
|
|
413
458
|
}),
|
|
414
459
|
|
|
@@ -431,8 +476,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
431
476
|
|
|
432
477
|
if (!numberTester(effectiveMax)) {
|
|
433
478
|
return new EjvError({
|
|
434
|
-
type:
|
|
435
|
-
message: createErrorMsg(
|
|
479
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
480
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_SHOULD_BE_NUMBER),
|
|
436
481
|
|
|
437
482
|
data: data,
|
|
438
483
|
|
|
@@ -444,8 +489,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
444
489
|
if (definedTester(numberScheme.exclusiveMax)) {
|
|
445
490
|
if (!booleanTester(numberScheme.exclusiveMax)) {
|
|
446
491
|
return new EjvError({
|
|
447
|
-
type:
|
|
448
|
-
message: createErrorMsg(
|
|
492
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
493
|
+
message: createErrorMsg(ERROR_MESSAGE.EXCLUSIVE_MAX_SHOULD_BE_BOOLEAN),
|
|
449
494
|
|
|
450
495
|
data: data,
|
|
451
496
|
|
|
@@ -458,8 +503,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
458
503
|
if (numberScheme.exclusiveMax) {
|
|
459
504
|
if (!exclusiveMaxNumberTester(valueAsNumber, effectiveMax)) {
|
|
460
505
|
result = new EjvError({
|
|
461
|
-
type:
|
|
462
|
-
message: createErrorMsg(
|
|
506
|
+
type: ERROR_TYPE.SMALLER_THAN,
|
|
507
|
+
message: createErrorMsg(ERROR_MESSAGE.SMALLER_THAN, {
|
|
463
508
|
placeholders: [effectiveMax]
|
|
464
509
|
}),
|
|
465
510
|
|
|
@@ -475,8 +520,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
475
520
|
else {
|
|
476
521
|
if (!maxNumberTester(valueAsNumber, effectiveMax)) {
|
|
477
522
|
result = new EjvError({
|
|
478
|
-
type:
|
|
479
|
-
message: createErrorMsg(
|
|
523
|
+
type: ERROR_TYPE.SMALLER_THAN_OR_EQUAL,
|
|
524
|
+
message: createErrorMsg(ERROR_MESSAGE.SMALLER_THAN_OR_EQUAL, {
|
|
480
525
|
placeholders: [effectiveMax]
|
|
481
526
|
}),
|
|
482
527
|
|
|
@@ -492,17 +537,17 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
492
537
|
}
|
|
493
538
|
|
|
494
539
|
if (definedTester(numberScheme.format)) {
|
|
495
|
-
let formats:
|
|
540
|
+
let formats: NUMBER_FORMAT[];
|
|
496
541
|
|
|
497
|
-
const allNumberFormat:
|
|
542
|
+
const allNumberFormat: NUMBER_FORMAT[] = Object.values(NUMBER_FORMAT);
|
|
498
543
|
|
|
499
544
|
if (!arrayTester(numberScheme.format)) {
|
|
500
|
-
const formatAsString:
|
|
545
|
+
const formatAsString: NUMBER_FORMAT = numberScheme.format as NUMBER_FORMAT;
|
|
501
546
|
|
|
502
547
|
if (!enumTester(formatAsString, allNumberFormat)) {
|
|
503
548
|
return new EjvError({
|
|
504
|
-
type:
|
|
505
|
-
message: createErrorMsg(
|
|
549
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
550
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_NUMBER_FORMAT, {
|
|
506
551
|
placeholders: [formatAsString]
|
|
507
552
|
}),
|
|
508
553
|
|
|
@@ -513,19 +558,19 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
513
558
|
});
|
|
514
559
|
}
|
|
515
560
|
|
|
516
|
-
formats = [numberScheme.format as
|
|
561
|
+
formats = [numberScheme.format as NUMBER_FORMAT];
|
|
517
562
|
}
|
|
518
563
|
else {
|
|
519
|
-
const formatAsArray:
|
|
564
|
+
const formatAsArray: NUMBER_FORMAT[] = numberScheme.format as NUMBER_FORMAT[];
|
|
520
565
|
|
|
521
|
-
const errorFormat: string | undefined = formatAsArray.find((format:
|
|
566
|
+
const errorFormat: string | undefined = formatAsArray.find((format: NUMBER_FORMAT): boolean => {
|
|
522
567
|
return !enumTester(format, allNumberFormat);
|
|
523
568
|
});
|
|
524
569
|
|
|
525
570
|
if (errorFormat) {
|
|
526
571
|
return new EjvError({
|
|
527
|
-
type:
|
|
528
|
-
message: createErrorMsg(
|
|
572
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
573
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_NUMBER_FORMAT, {
|
|
529
574
|
placeholders: [errorFormat]
|
|
530
575
|
}),
|
|
531
576
|
|
|
@@ -536,18 +581,18 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
536
581
|
});
|
|
537
582
|
}
|
|
538
583
|
|
|
539
|
-
formats = numberScheme.format as
|
|
584
|
+
formats = numberScheme.format as NUMBER_FORMAT[];
|
|
540
585
|
}
|
|
541
586
|
|
|
542
|
-
const someFormatIsWrong: boolean = formats.some((format:
|
|
587
|
+
const someFormatIsWrong: boolean = formats.some((format: NUMBER_FORMAT): boolean => {
|
|
543
588
|
let valid: boolean = false;
|
|
544
589
|
|
|
545
590
|
switch (format) {
|
|
546
|
-
case
|
|
591
|
+
case NUMBER_FORMAT.INTEGER:
|
|
547
592
|
valid = integerTester(valueAsNumber);
|
|
548
593
|
break;
|
|
549
594
|
|
|
550
|
-
case
|
|
595
|
+
case NUMBER_FORMAT.INDEX:
|
|
551
596
|
valid = indexTester(valueAsNumber);
|
|
552
597
|
break;
|
|
553
598
|
}
|
|
@@ -558,8 +603,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
558
603
|
if (!someFormatIsWrong) {
|
|
559
604
|
if (!arrayTester(numberScheme.format)) {
|
|
560
605
|
result = new EjvError({
|
|
561
|
-
type:
|
|
562
|
-
message: createErrorMsg(
|
|
606
|
+
type: ERROR_TYPE.FORMAT,
|
|
607
|
+
message: createErrorMsg(ERROR_MESSAGE.FORMAT, {
|
|
563
608
|
placeholders: [numberScheme.format]
|
|
564
609
|
}),
|
|
565
610
|
|
|
@@ -572,8 +617,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
572
617
|
}
|
|
573
618
|
else {
|
|
574
619
|
result = new EjvError({
|
|
575
|
-
type:
|
|
576
|
-
message: createErrorMsg(
|
|
620
|
+
type: ERROR_TYPE.FORMAT_ONE_OF,
|
|
621
|
+
message: createErrorMsg(ERROR_MESSAGE.FORMAT_ONE_OF, {
|
|
577
622
|
placeholders: [JSON.stringify(numberScheme.format)]
|
|
578
623
|
}),
|
|
579
624
|
|
|
@@ -590,15 +635,15 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
590
635
|
break;
|
|
591
636
|
}
|
|
592
637
|
|
|
593
|
-
case
|
|
638
|
+
case DATA_TYPE.STRING: {
|
|
594
639
|
const valueAsString: string = value as unknown as string;
|
|
595
640
|
const stringScheme: StringScheme = scheme as StringScheme;
|
|
596
641
|
|
|
597
642
|
if (definedTester(stringScheme.enum)) {
|
|
598
643
|
if (!arrayTester(stringScheme.enum)) {
|
|
599
644
|
return new EjvError({
|
|
600
|
-
type:
|
|
601
|
-
message: createErrorMsg(
|
|
645
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
646
|
+
message: createErrorMsg(ERROR_MESSAGE.ENUM_SHOULD_BE_ARRAY),
|
|
602
647
|
|
|
603
648
|
data: data,
|
|
604
649
|
|
|
@@ -609,10 +654,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
609
654
|
|
|
610
655
|
const enumArr: string[] = stringScheme.enum;
|
|
611
656
|
|
|
612
|
-
if (!arrayTypeOfTester(enumArr,
|
|
657
|
+
if (!arrayTypeOfTester(enumArr, DATA_TYPE.STRING)) {
|
|
613
658
|
return new EjvError({
|
|
614
|
-
type:
|
|
615
|
-
message: createErrorMsg(
|
|
659
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
660
|
+
message: createErrorMsg(ERROR_MESSAGE.ENUM_SHOULD_BE_STRINGS),
|
|
616
661
|
|
|
617
662
|
data: data,
|
|
618
663
|
|
|
@@ -623,8 +668,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
623
668
|
|
|
624
669
|
if (!enumTester(valueAsString, enumArr)) {
|
|
625
670
|
result = new EjvError({
|
|
626
|
-
type:
|
|
627
|
-
message: createErrorMsg(
|
|
671
|
+
type: ERROR_TYPE.ONE_VALUE_OF,
|
|
672
|
+
message: createErrorMsg(ERROR_MESSAGE.ONE_VALUE_OF, {
|
|
628
673
|
placeholders: [JSON.stringify(stringScheme.enum)]
|
|
629
674
|
}),
|
|
630
675
|
|
|
@@ -638,13 +683,57 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
638
683
|
}
|
|
639
684
|
}
|
|
640
685
|
|
|
686
|
+
if (definedTester(stringScheme.notEnum)) {
|
|
687
|
+
if (!arrayTester(stringScheme.notEnum)) {
|
|
688
|
+
return new EjvError({
|
|
689
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
690
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ENUM_SHOULD_BE_ARRAY),
|
|
691
|
+
|
|
692
|
+
data: data,
|
|
693
|
+
|
|
694
|
+
errorScheme: stringScheme,
|
|
695
|
+
isSchemeError: true
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
const enumArr: string[] = stringScheme.notEnum;
|
|
700
|
+
|
|
701
|
+
if (!arrayTypeOfTester(enumArr, DATA_TYPE.STRING)) {
|
|
702
|
+
return new EjvError({
|
|
703
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
704
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ENUM_SHOULD_BE_STRINGS),
|
|
705
|
+
|
|
706
|
+
data: data,
|
|
707
|
+
|
|
708
|
+
errorScheme: stringScheme,
|
|
709
|
+
isSchemeError: true
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
if (!notEnumTester(valueAsString, enumArr)) {
|
|
714
|
+
result = new EjvError({
|
|
715
|
+
type: ERROR_TYPE.NOT_ONE_VALUE_OF,
|
|
716
|
+
message: createErrorMsg(ERROR_MESSAGE.NOT_ONE_VALUE_OF, {
|
|
717
|
+
placeholders: [JSON.stringify(stringScheme.notEnum)]
|
|
718
|
+
}),
|
|
719
|
+
|
|
720
|
+
data,
|
|
721
|
+
path: _options.path,
|
|
722
|
+
|
|
723
|
+
errorScheme: stringScheme,
|
|
724
|
+
errorData: value
|
|
725
|
+
});
|
|
726
|
+
break;
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
|
|
641
730
|
if (definedTester(stringScheme.length)) {
|
|
642
731
|
const length: number = stringScheme.length;
|
|
643
732
|
|
|
644
733
|
if (!(numberTester(length) && integerTester(length))) {
|
|
645
734
|
return new EjvError({
|
|
646
|
-
type:
|
|
647
|
-
message: createErrorMsg(
|
|
735
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
736
|
+
message: createErrorMsg(ERROR_MESSAGE.LENGTH_SHOULD_BE_INTEGER),
|
|
648
737
|
|
|
649
738
|
data: data,
|
|
650
739
|
|
|
@@ -655,8 +744,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
655
744
|
|
|
656
745
|
if (!lengthTester(valueAsString, length)) {
|
|
657
746
|
result = new EjvError({
|
|
658
|
-
type:
|
|
659
|
-
message: createErrorMsg(
|
|
747
|
+
type: ERROR_TYPE.LENGTH,
|
|
748
|
+
message: createErrorMsg(ERROR_MESSAGE.LENGTH, {
|
|
660
749
|
placeholders: [length]
|
|
661
750
|
}),
|
|
662
751
|
|
|
@@ -675,8 +764,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
675
764
|
|
|
676
765
|
if (!(numberTester(minLength) && integerTester(minLength))) {
|
|
677
766
|
return new EjvError({
|
|
678
|
-
type:
|
|
679
|
-
message: createErrorMsg(
|
|
767
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
768
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_LENGTH_SHOULD_BE_INTEGER),
|
|
680
769
|
|
|
681
770
|
data: data,
|
|
682
771
|
|
|
@@ -687,8 +776,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
687
776
|
|
|
688
777
|
if (!minLengthTester(valueAsString, minLength)) {
|
|
689
778
|
result = new EjvError({
|
|
690
|
-
type:
|
|
691
|
-
message: createErrorMsg(
|
|
779
|
+
type: ERROR_TYPE.MIN_LENGTH,
|
|
780
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_LENGTH, {
|
|
692
781
|
placeholders: ['' + minLength]
|
|
693
782
|
}),
|
|
694
783
|
|
|
@@ -707,8 +796,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
707
796
|
|
|
708
797
|
if (!(numberTester(maxLength) && integerTester(maxLength))) {
|
|
709
798
|
return new EjvError({
|
|
710
|
-
type:
|
|
711
|
-
message: createErrorMsg(
|
|
799
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
800
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_LENGTH_SHOULD_BE_INTEGER),
|
|
712
801
|
|
|
713
802
|
data: data,
|
|
714
803
|
|
|
@@ -719,8 +808,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
719
808
|
|
|
720
809
|
if (!maxLengthTester(valueAsString, maxLength)) {
|
|
721
810
|
result = new EjvError({
|
|
722
|
-
type:
|
|
723
|
-
message: createErrorMsg(
|
|
811
|
+
type: ERROR_TYPE.MAX_LENGTH,
|
|
812
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_LENGTH, {
|
|
724
813
|
placeholders: ['' + maxLength]
|
|
725
814
|
}),
|
|
726
815
|
|
|
@@ -735,17 +824,17 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
735
824
|
}
|
|
736
825
|
|
|
737
826
|
if (definedTester(stringScheme.format)) {
|
|
738
|
-
let formats:
|
|
827
|
+
let formats: STRING_FORMAT[];
|
|
739
828
|
|
|
740
|
-
const allStringFormat:
|
|
829
|
+
const allStringFormat: STRING_FORMAT[] = Object.values(STRING_FORMAT);
|
|
741
830
|
|
|
742
831
|
if (!arrayTester(stringScheme.format)) {
|
|
743
832
|
const formatAsString: string = stringScheme.format;
|
|
744
833
|
|
|
745
834
|
if (!enumTester(formatAsString, allStringFormat)) {
|
|
746
835
|
return new EjvError({
|
|
747
|
-
type:
|
|
748
|
-
message: createErrorMsg(
|
|
836
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
837
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_FORMAT, {
|
|
749
838
|
placeholders: [formatAsString]
|
|
750
839
|
}),
|
|
751
840
|
|
|
@@ -756,7 +845,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
756
845
|
});
|
|
757
846
|
}
|
|
758
847
|
|
|
759
|
-
formats = [stringScheme.format] as
|
|
848
|
+
formats = [stringScheme.format] as STRING_FORMAT[];
|
|
760
849
|
}
|
|
761
850
|
else {
|
|
762
851
|
const formatAsArray: string[] = stringScheme.format;
|
|
@@ -766,8 +855,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
766
855
|
|
|
767
856
|
if (errorFormat) {
|
|
768
857
|
return new EjvError({
|
|
769
|
-
type:
|
|
770
|
-
message: createErrorMsg(
|
|
858
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
859
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_FORMAT, {
|
|
771
860
|
placeholders: [errorFormat]
|
|
772
861
|
}),
|
|
773
862
|
|
|
@@ -778,26 +867,26 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
778
867
|
});
|
|
779
868
|
}
|
|
780
869
|
|
|
781
|
-
formats = stringScheme.format as
|
|
870
|
+
formats = stringScheme.format as STRING_FORMAT[];
|
|
782
871
|
}
|
|
783
872
|
|
|
784
|
-
const foundFormatMatching: boolean = formats.some((format:
|
|
873
|
+
const foundFormatMatching: boolean = formats.some((format: STRING_FORMAT): boolean => {
|
|
785
874
|
let valid: boolean = false;
|
|
786
875
|
|
|
787
876
|
switch (format) {
|
|
788
|
-
case
|
|
877
|
+
case STRING_FORMAT.EMAIL:
|
|
789
878
|
valid = emailTester(valueAsString);
|
|
790
879
|
break;
|
|
791
880
|
|
|
792
|
-
case
|
|
881
|
+
case STRING_FORMAT.DATE:
|
|
793
882
|
valid = dateFormatTester(valueAsString);
|
|
794
883
|
break;
|
|
795
884
|
|
|
796
|
-
case
|
|
885
|
+
case STRING_FORMAT.TIME:
|
|
797
886
|
valid = timeFormatTester(valueAsString);
|
|
798
887
|
break;
|
|
799
888
|
|
|
800
|
-
case
|
|
889
|
+
case STRING_FORMAT.DATE_TIME:
|
|
801
890
|
valid = dateTimeFormatTester(valueAsString);
|
|
802
891
|
break;
|
|
803
892
|
}
|
|
@@ -808,9 +897,9 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
808
897
|
if (!foundFormatMatching) {
|
|
809
898
|
if (!arrayTester(stringScheme.format)) {
|
|
810
899
|
result = new EjvError({
|
|
811
|
-
type:
|
|
812
|
-
message: createErrorMsg(
|
|
813
|
-
placeholders: [stringScheme.format as
|
|
900
|
+
type: ERROR_TYPE.FORMAT,
|
|
901
|
+
message: createErrorMsg(ERROR_MESSAGE.FORMAT, {
|
|
902
|
+
placeholders: [stringScheme.format as STRING_FORMAT]
|
|
814
903
|
}),
|
|
815
904
|
|
|
816
905
|
data,
|
|
@@ -822,8 +911,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
822
911
|
}
|
|
823
912
|
else {
|
|
824
913
|
result = new EjvError({
|
|
825
|
-
type:
|
|
826
|
-
message: createErrorMsg(
|
|
914
|
+
type: ERROR_TYPE.FORMAT_ONE_OF,
|
|
915
|
+
message: createErrorMsg(ERROR_MESSAGE.FORMAT_ONE_OF, {
|
|
827
916
|
placeholders: [JSON.stringify(stringScheme.format)]
|
|
828
917
|
}),
|
|
829
918
|
|
|
@@ -842,8 +931,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
842
931
|
// check parameter
|
|
843
932
|
if (stringScheme.pattern === null) {
|
|
844
933
|
return new EjvError({
|
|
845
|
-
type:
|
|
846
|
-
message: createErrorMsg(
|
|
934
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
935
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_PATTERN, {
|
|
847
936
|
placeholders: ['null']
|
|
848
937
|
}),
|
|
849
938
|
|
|
@@ -896,8 +985,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
896
985
|
|
|
897
986
|
if (!minLengthTester(patternsAsArray, 1)) { // empty array
|
|
898
987
|
return new EjvError({
|
|
899
|
-
type:
|
|
900
|
-
message: createErrorMsg(
|
|
988
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
989
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_PATTERN, {
|
|
901
990
|
placeholders: [createArrayErrorMsg(patternsAsArray)]
|
|
902
991
|
}),
|
|
903
992
|
|
|
@@ -911,7 +1000,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
911
1000
|
try {
|
|
912
1001
|
const regExpPatterns: RegExp[] = patternsAsArray.map((pattern: string | RegExp): RegExp => {
|
|
913
1002
|
if (!isValidPattern(pattern)) {
|
|
914
|
-
throw new Error(createErrorMsg(
|
|
1003
|
+
throw new Error(createErrorMsg(ERROR_MESSAGE.INVALID_STRING_PATTERN, {
|
|
915
1004
|
placeholders: [createArrayErrorMsg(patternsAsArray)]
|
|
916
1005
|
}));
|
|
917
1006
|
}
|
|
@@ -926,8 +1015,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
926
1015
|
|
|
927
1016
|
if (!foundMatchPattern) {
|
|
928
1017
|
result = new EjvError({
|
|
929
|
-
type:
|
|
930
|
-
message: createErrorMsg(
|
|
1018
|
+
type: ERROR_TYPE.PATTERN_ONE_OF,
|
|
1019
|
+
message: createErrorMsg(ERROR_MESSAGE.PATTERN_ONE_OF, {
|
|
931
1020
|
placeholders: [createArrayErrorMsg(patternsAsArray)]
|
|
932
1021
|
}),
|
|
933
1022
|
|
|
@@ -940,10 +1029,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
940
1029
|
break;
|
|
941
1030
|
}
|
|
942
1031
|
}
|
|
943
|
-
catch (e: unknown) {
|
|
1032
|
+
catch (e: unknown) { // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
944
1033
|
return new EjvError({
|
|
945
|
-
type:
|
|
946
|
-
message: createErrorMsg(
|
|
1034
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1035
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_PATTERN, {
|
|
947
1036
|
placeholders: [createArrayErrorMsg(patternsAsArray)]
|
|
948
1037
|
}),
|
|
949
1038
|
|
|
@@ -959,8 +1048,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
959
1048
|
|
|
960
1049
|
if (!isValidPattern(patternAsOne)) {
|
|
961
1050
|
return new EjvError({
|
|
962
|
-
type:
|
|
963
|
-
message: createErrorMsg(
|
|
1051
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1052
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_STRING_PATTERN, {
|
|
964
1053
|
placeholders: [patternToString(patternAsOne)]
|
|
965
1054
|
}),
|
|
966
1055
|
|
|
@@ -976,8 +1065,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
976
1065
|
|
|
977
1066
|
if (!stringRegExpTester(valueAsString, regExp)) {
|
|
978
1067
|
result = new EjvError({
|
|
979
|
-
type:
|
|
980
|
-
message: createErrorMsg(
|
|
1068
|
+
type: ERROR_TYPE.PATTERN,
|
|
1069
|
+
message: createErrorMsg(ERROR_MESSAGE.PATTERN, {
|
|
981
1070
|
placeholders: [patternToString(patternAsOne)]
|
|
982
1071
|
}),
|
|
983
1072
|
|
|
@@ -994,15 +1083,15 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
994
1083
|
break;
|
|
995
1084
|
}
|
|
996
1085
|
|
|
997
|
-
case
|
|
1086
|
+
case DATA_TYPE.OBJECT: {
|
|
998
1087
|
const valueAsObject: AnyObject = value as unknown as AnyObject;
|
|
999
1088
|
const objectScheme: ObjectScheme = scheme as ObjectScheme;
|
|
1000
1089
|
|
|
1001
1090
|
if (definedTester(objectScheme.allowNoProperty)) {
|
|
1002
1091
|
if (!booleanTester(objectScheme.allowNoProperty)) {
|
|
1003
1092
|
return new EjvError({
|
|
1004
|
-
type:
|
|
1005
|
-
message: createErrorMsg(
|
|
1093
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1094
|
+
message: createErrorMsg(ERROR_MESSAGE.ALLOW_NO_PROPERTY_SHOULD_BE_BOOLEAN),
|
|
1006
1095
|
|
|
1007
1096
|
data: data,
|
|
1008
1097
|
|
|
@@ -1013,8 +1102,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1013
1102
|
|
|
1014
1103
|
if (!objectScheme.allowNoProperty && !hasPropertyTester(valueAsObject)) {
|
|
1015
1104
|
result = new EjvError({
|
|
1016
|
-
type:
|
|
1017
|
-
message:
|
|
1105
|
+
type: ERROR_TYPE.PROPERTY,
|
|
1106
|
+
message: ERROR_MESSAGE.PROPERTY,
|
|
1018
1107
|
|
|
1019
1108
|
data,
|
|
1020
1109
|
path: _options.path,
|
|
@@ -1029,8 +1118,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1029
1118
|
if (definedTester(objectScheme.properties)) {
|
|
1030
1119
|
if (!arrayTester(objectScheme.properties)) {
|
|
1031
1120
|
return new EjvError({
|
|
1032
|
-
type:
|
|
1033
|
-
message: createErrorMsg(
|
|
1121
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1122
|
+
message: createErrorMsg(ERROR_MESSAGE.PROPERTIES_SHOULD_BE_ARRAY),
|
|
1034
1123
|
|
|
1035
1124
|
data: data,
|
|
1036
1125
|
|
|
@@ -1043,8 +1132,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1043
1132
|
|
|
1044
1133
|
if (!minLengthTester(properties, 1)) {
|
|
1045
1134
|
return new EjvError({
|
|
1046
|
-
type:
|
|
1047
|
-
message: createErrorMsg(
|
|
1135
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1136
|
+
message: createErrorMsg(ERROR_MESSAGE.PROPERTIES_SHOULD_HAVE_ITEMS),
|
|
1048
1137
|
|
|
1049
1138
|
data: data,
|
|
1050
1139
|
|
|
@@ -1053,10 +1142,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1053
1142
|
});
|
|
1054
1143
|
}
|
|
1055
1144
|
|
|
1056
|
-
if (!arrayTypeOfTester(properties,
|
|
1145
|
+
if (!arrayTypeOfTester(properties, DATA_TYPE.OBJECT)) {
|
|
1057
1146
|
return new EjvError({
|
|
1058
|
-
type:
|
|
1059
|
-
message: createErrorMsg(
|
|
1147
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1148
|
+
message: createErrorMsg(ERROR_MESSAGE.PROPERTIES_SHOULD_BE_ARRAY_OF_OBJECT),
|
|
1060
1149
|
|
|
1061
1150
|
data: data,
|
|
1062
1151
|
|
|
@@ -1067,8 +1156,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1067
1156
|
|
|
1068
1157
|
if (!objectTester(value)) {
|
|
1069
1158
|
result = new EjvError({
|
|
1070
|
-
type:
|
|
1071
|
-
message: createErrorMsg(
|
|
1159
|
+
type: ERROR_TYPE.TYPE_MISMATCH,
|
|
1160
|
+
message: createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH, {
|
|
1072
1161
|
placeholders: ['object']
|
|
1073
1162
|
}),
|
|
1074
1163
|
|
|
@@ -1096,7 +1185,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1096
1185
|
break;
|
|
1097
1186
|
}
|
|
1098
1187
|
|
|
1099
|
-
case
|
|
1188
|
+
case DATA_TYPE.DATE: {
|
|
1100
1189
|
const valueAsDate: Date = value as unknown as Date;
|
|
1101
1190
|
const dateScheme: DateScheme = scheme as DateScheme;
|
|
1102
1191
|
const parentDateScheme: DateScheme | undefined = scheme.parent as DateScheme | undefined;
|
|
@@ -1115,8 +1204,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1115
1204
|
|| dateTester(minDateCandidate)
|
|
1116
1205
|
)) {
|
|
1117
1206
|
return new EjvError({
|
|
1118
|
-
type:
|
|
1119
|
-
message: createErrorMsg(
|
|
1207
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1208
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_DATE_SHOULD_BE_DATE_OR_STRING),
|
|
1120
1209
|
|
|
1121
1210
|
data: data,
|
|
1122
1211
|
|
|
@@ -1130,8 +1219,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1130
1219
|
if (definedTester(dateScheme.exclusiveMin)) {
|
|
1131
1220
|
if (!booleanTester(dateScheme.exclusiveMin)) {
|
|
1132
1221
|
return new EjvError({
|
|
1133
|
-
type:
|
|
1134
|
-
message: createErrorMsg(
|
|
1222
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1223
|
+
message: createErrorMsg(ERROR_MESSAGE.EXCLUSIVE_MIN_SHOULD_BE_BOOLEAN),
|
|
1135
1224
|
|
|
1136
1225
|
data: data,
|
|
1137
1226
|
|
|
@@ -1144,8 +1233,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1144
1233
|
if (dateScheme.exclusiveMin) {
|
|
1145
1234
|
if (!exclusiveMinDateTester(valueAsDate, effectiveMin)) {
|
|
1146
1235
|
result = new EjvError({
|
|
1147
|
-
type:
|
|
1148
|
-
message: createErrorMsg(
|
|
1236
|
+
type: ERROR_TYPE.AFTER_DATE,
|
|
1237
|
+
message: createErrorMsg(ERROR_MESSAGE.AFTER_DATE, {
|
|
1149
1238
|
placeholders: [effectiveMin.toISOString()]
|
|
1150
1239
|
}),
|
|
1151
1240
|
|
|
@@ -1162,8 +1251,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1162
1251
|
else {
|
|
1163
1252
|
if (!minDateTester(valueAsDate, effectiveMin)) {
|
|
1164
1253
|
result = new EjvError({
|
|
1165
|
-
type:
|
|
1166
|
-
message: createErrorMsg(
|
|
1254
|
+
type: ERROR_TYPE.AFTER_OR_SAME_DATE,
|
|
1255
|
+
message: createErrorMsg(ERROR_MESSAGE.AFTER_OR_SAME_DATE, {
|
|
1167
1256
|
placeholders: [effectiveMin.toISOString()]
|
|
1168
1257
|
}),
|
|
1169
1258
|
|
|
@@ -1182,8 +1271,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1182
1271
|
else {
|
|
1183
1272
|
if (!minDateTester(valueAsDate, effectiveMin)) {
|
|
1184
1273
|
result = new EjvError({
|
|
1185
|
-
type:
|
|
1186
|
-
message: createErrorMsg(
|
|
1274
|
+
type: ERROR_TYPE.AFTER_OR_SAME_DATE,
|
|
1275
|
+
message: createErrorMsg(ERROR_MESSAGE.AFTER_OR_SAME_DATE, {
|
|
1187
1276
|
placeholders: [effectiveMin.toISOString()]
|
|
1188
1277
|
}),
|
|
1189
1278
|
|
|
@@ -1212,8 +1301,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1212
1301
|
|| dateTester(maxDateCandidate)
|
|
1213
1302
|
)) {
|
|
1214
1303
|
return new EjvError({
|
|
1215
|
-
type:
|
|
1216
|
-
message: createErrorMsg(
|
|
1304
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1305
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_DATE_SHOULD_BE_DATE_OR_STRING),
|
|
1217
1306
|
|
|
1218
1307
|
data: data,
|
|
1219
1308
|
|
|
@@ -1227,8 +1316,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1227
1316
|
if (definedTester(dateScheme.exclusiveMax)) {
|
|
1228
1317
|
if (!booleanTester(dateScheme.exclusiveMax)) {
|
|
1229
1318
|
return new EjvError({
|
|
1230
|
-
type:
|
|
1231
|
-
message: createErrorMsg(
|
|
1319
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1320
|
+
message: createErrorMsg(ERROR_MESSAGE.EXCLUSIVE_MAX_SHOULD_BE_BOOLEAN),
|
|
1232
1321
|
|
|
1233
1322
|
data: data,
|
|
1234
1323
|
|
|
@@ -1241,8 +1330,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1241
1330
|
if (dateScheme.exclusiveMax) {
|
|
1242
1331
|
if (!exclusiveMaxDateTester(valueAsDate, effectiveMax)) {
|
|
1243
1332
|
result = new EjvError({
|
|
1244
|
-
type:
|
|
1245
|
-
message: createErrorMsg(
|
|
1333
|
+
type: ERROR_TYPE.BEFORE_DATE,
|
|
1334
|
+
message: createErrorMsg(ERROR_MESSAGE.BEFORE_DATE, {
|
|
1246
1335
|
placeholders: [effectiveMax.toISOString()]
|
|
1247
1336
|
}),
|
|
1248
1337
|
|
|
@@ -1258,8 +1347,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1258
1347
|
else {
|
|
1259
1348
|
if (!maxDateTester(valueAsDate, effectiveMax)) {
|
|
1260
1349
|
result = new EjvError({
|
|
1261
|
-
type:
|
|
1262
|
-
message: createErrorMsg(
|
|
1350
|
+
type: ERROR_TYPE.BEFORE_OR_SAME_DATE,
|
|
1351
|
+
message: createErrorMsg(ERROR_MESSAGE.BEFORE_OR_SAME_DATE, {
|
|
1263
1352
|
placeholders: [effectiveMax.toISOString()]
|
|
1264
1353
|
}),
|
|
1265
1354
|
|
|
@@ -1276,7 +1365,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1276
1365
|
break;
|
|
1277
1366
|
}
|
|
1278
1367
|
|
|
1279
|
-
case
|
|
1368
|
+
case DATA_TYPE.ARRAY: {
|
|
1280
1369
|
const valueAsArray: unknown[] = value as unknown as unknown[];
|
|
1281
1370
|
const arrayScheme: ArrayScheme = scheme as ArrayScheme;
|
|
1282
1371
|
|
|
@@ -1285,8 +1374,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1285
1374
|
|
|
1286
1375
|
if (!(numberTester(length) && integerTester(length))) {
|
|
1287
1376
|
return new EjvError({
|
|
1288
|
-
type:
|
|
1289
|
-
message: createErrorMsg(
|
|
1377
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1378
|
+
message: createErrorMsg(ERROR_MESSAGE.LENGTH_SHOULD_BE_INTEGER),
|
|
1290
1379
|
|
|
1291
1380
|
data: data,
|
|
1292
1381
|
|
|
@@ -1297,8 +1386,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1297
1386
|
|
|
1298
1387
|
if (!lengthTester(valueAsArray, length)) {
|
|
1299
1388
|
result = new EjvError({
|
|
1300
|
-
type:
|
|
1301
|
-
message: createErrorMsg(
|
|
1389
|
+
type: ERROR_TYPE.LENGTH,
|
|
1390
|
+
message: createErrorMsg(ERROR_MESSAGE.LENGTH, {
|
|
1302
1391
|
placeholders: ['' + length]
|
|
1303
1392
|
}),
|
|
1304
1393
|
|
|
@@ -1317,8 +1406,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1317
1406
|
|
|
1318
1407
|
if (!(numberTester(arrayScheme.minLength) && integerTester(minLength))) {
|
|
1319
1408
|
return new EjvError({
|
|
1320
|
-
type:
|
|
1321
|
-
message: createErrorMsg(
|
|
1409
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1410
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_LENGTH_SHOULD_BE_INTEGER),
|
|
1322
1411
|
|
|
1323
1412
|
data: data,
|
|
1324
1413
|
|
|
@@ -1329,8 +1418,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1329
1418
|
|
|
1330
1419
|
if (!minLengthTester(valueAsArray, minLength)) {
|
|
1331
1420
|
result = new EjvError({
|
|
1332
|
-
type:
|
|
1333
|
-
message: createErrorMsg(
|
|
1421
|
+
type: ERROR_TYPE.MIN_LENGTH,
|
|
1422
|
+
message: createErrorMsg(ERROR_MESSAGE.MIN_LENGTH, {
|
|
1334
1423
|
placeholders: ['' + minLength]
|
|
1335
1424
|
}),
|
|
1336
1425
|
|
|
@@ -1349,8 +1438,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1349
1438
|
|
|
1350
1439
|
if (!(numberTester(arrayScheme.maxLength) && integerTester(maxLength))) {
|
|
1351
1440
|
return new EjvError({
|
|
1352
|
-
type:
|
|
1353
|
-
message: createErrorMsg(
|
|
1441
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1442
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_LENGTH_SHOULD_BE_INTEGER),
|
|
1354
1443
|
|
|
1355
1444
|
data: data,
|
|
1356
1445
|
|
|
@@ -1361,8 +1450,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1361
1450
|
|
|
1362
1451
|
if (!maxLengthTester(valueAsArray, maxLength)) {
|
|
1363
1452
|
result = new EjvError({
|
|
1364
|
-
type:
|
|
1365
|
-
message: createErrorMsg(
|
|
1453
|
+
type: ERROR_TYPE.MAX_LENGTH,
|
|
1454
|
+
message: createErrorMsg(ERROR_MESSAGE.MAX_LENGTH, {
|
|
1366
1455
|
placeholders: ['' + maxLength]
|
|
1367
1456
|
}),
|
|
1368
1457
|
|
|
@@ -1379,8 +1468,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1379
1468
|
if (definedTester(arrayScheme.unique)) {
|
|
1380
1469
|
if (!booleanTester(arrayScheme.unique)) {
|
|
1381
1470
|
return new EjvError({
|
|
1382
|
-
type:
|
|
1383
|
-
message: createErrorMsg(
|
|
1471
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1472
|
+
message: createErrorMsg(ERROR_MESSAGE.UNIQUE_SHOULD_BE_BOOLEAN),
|
|
1384
1473
|
|
|
1385
1474
|
data: data,
|
|
1386
1475
|
|
|
@@ -1391,8 +1480,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1391
1480
|
|
|
1392
1481
|
if (arrayScheme.unique && !uniqueItemsTester(valueAsArray)) {
|
|
1393
1482
|
result = new EjvError({
|
|
1394
|
-
type:
|
|
1395
|
-
message:
|
|
1483
|
+
type: ERROR_TYPE.UNIQUE_ITEMS,
|
|
1484
|
+
message: ERROR_MESSAGE.UNIQUE_ITEMS,
|
|
1396
1485
|
|
|
1397
1486
|
data,
|
|
1398
1487
|
path: _options.path,
|
|
@@ -1413,13 +1502,13 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1413
1502
|
});
|
|
1414
1503
|
|
|
1415
1504
|
if (stringTester(arrayScheme.items) // by DataType
|
|
1416
|
-
|| (arrayTester(arrayScheme.items) && arrayTypeOfTester(arrayScheme.items as
|
|
1505
|
+
|| (arrayTester(arrayScheme.items) && arrayTypeOfTester(arrayScheme.items as DATA_TYPE[], DATA_TYPE.STRING)) // by DataType[]
|
|
1417
1506
|
) {
|
|
1418
|
-
const itemTypes:
|
|
1507
|
+
const itemTypes: DATA_TYPE[] = (arrayTester(arrayScheme.items)
|
|
1419
1508
|
? arrayScheme.items
|
|
1420
|
-
: [arrayScheme.items]) as
|
|
1509
|
+
: [arrayScheme.items]) as DATA_TYPE[];
|
|
1421
1510
|
|
|
1422
|
-
const itemTypeError: string | undefined = itemTypes.find((type:
|
|
1511
|
+
const itemTypeError: string | undefined = itemTypes.find((type: DATA_TYPE): boolean => {
|
|
1423
1512
|
return !definedTester(type)
|
|
1424
1513
|
|| !stringTester(type)
|
|
1425
1514
|
|| !enumTester(type, allDataType);
|
|
@@ -1427,8 +1516,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1427
1516
|
|
|
1428
1517
|
if (itemTypeError) {
|
|
1429
1518
|
return new EjvError({
|
|
1430
|
-
type:
|
|
1431
|
-
message: createErrorMsg(
|
|
1519
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1520
|
+
message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_INVALID_TYPE, {
|
|
1432
1521
|
placeholders: [itemTypeError]
|
|
1433
1522
|
}),
|
|
1434
1523
|
|
|
@@ -1461,12 +1550,12 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1461
1550
|
let errorMsg: string;
|
|
1462
1551
|
|
|
1463
1552
|
if (arrayTester(arrayScheme.items)) {
|
|
1464
|
-
errorMsg = createErrorMsg(
|
|
1553
|
+
errorMsg = createErrorMsg(ERROR_MESSAGE.ITEMS_TYPE, {
|
|
1465
1554
|
placeholders: [JSON.stringify(itemTypes)]
|
|
1466
1555
|
});
|
|
1467
1556
|
}
|
|
1468
1557
|
else {
|
|
1469
|
-
errorMsg = createErrorMsg(
|
|
1558
|
+
errorMsg = createErrorMsg(ERROR_MESSAGE.ITEMS_TYPE, {
|
|
1470
1559
|
placeholders: [arrayScheme.items as string]
|
|
1471
1560
|
});
|
|
1472
1561
|
}
|
|
@@ -1481,7 +1570,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1481
1570
|
const partialKeyIndex: number = partialSchemes.indexOf(partialScheme);
|
|
1482
1571
|
|
|
1483
1572
|
result = new EjvError({
|
|
1484
|
-
type:
|
|
1573
|
+
type: ERROR_TYPE.ITEMS_TYPE,
|
|
1485
1574
|
message: errorMsg,
|
|
1486
1575
|
|
|
1487
1576
|
data,
|
|
@@ -1494,7 +1583,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1494
1583
|
break;
|
|
1495
1584
|
}
|
|
1496
1585
|
else if ((objectTester(arrayScheme.items) && arrayScheme.items !== null) // by Scheme
|
|
1497
|
-
|| (arrayTester(arrayScheme.items) && arrayTypeOfTester(arrayScheme.items as Scheme[],
|
|
1586
|
+
|| (arrayTester(arrayScheme.items) && arrayTypeOfTester(arrayScheme.items as Scheme[], DATA_TYPE.OBJECT)) // by Scheme[]
|
|
1498
1587
|
) {
|
|
1499
1588
|
const itemsAsSchemes: Scheme[] = arrayTester(arrayScheme.items)
|
|
1500
1589
|
? arrayScheme.items
|
|
@@ -1543,12 +1632,12 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1543
1632
|
}
|
|
1544
1633
|
|
|
1545
1634
|
if (partialError) {
|
|
1546
|
-
let errorType:
|
|
1635
|
+
let errorType: ERROR_TYPE;
|
|
1547
1636
|
let errorMsg: string;
|
|
1548
1637
|
|
|
1549
1638
|
if (!!itemsAsSchemes && itemsAsSchemes.length > 1) {
|
|
1550
|
-
errorType =
|
|
1551
|
-
errorMsg = createErrorMsg(
|
|
1639
|
+
errorType = ERROR_TYPE.ITEMS_SCHEMES;
|
|
1640
|
+
errorMsg = createErrorMsg(ERROR_MESSAGE.ITEMS_SCHEMES, {
|
|
1552
1641
|
placeholders: [JSON.stringify(itemsAsSchemes)]
|
|
1553
1642
|
});
|
|
1554
1643
|
}
|
|
@@ -1556,10 +1645,10 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1556
1645
|
errorType = partialError.type;
|
|
1557
1646
|
errorMsg = partialError.message;
|
|
1558
1647
|
|
|
1559
|
-
if (errorType ===
|
|
1648
|
+
if (errorType === ERROR_TYPE.REQUIRED) {
|
|
1560
1649
|
// REQUIRED in array is TYPE_MISMATCH except with nullable === true
|
|
1561
|
-
errorType =
|
|
1562
|
-
errorMsg = createErrorMsg(
|
|
1650
|
+
errorType = ERROR_TYPE.TYPE_MISMATCH;
|
|
1651
|
+
errorMsg = createErrorMsg(ERROR_MESSAGE.TYPE_MISMATCH, {
|
|
1563
1652
|
placeholders: [JSON.stringify(arrayScheme.items)]
|
|
1564
1653
|
});
|
|
1565
1654
|
}
|
|
@@ -1572,7 +1661,7 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1572
1661
|
data
|
|
1573
1662
|
});
|
|
1574
1663
|
|
|
1575
|
-
if (errorType ===
|
|
1664
|
+
if (errorType === ERROR_TYPE.INVALID_SCHEMES) {
|
|
1576
1665
|
result.errorScheme = arrayScheme;
|
|
1577
1666
|
result.isSchemeError = true;
|
|
1578
1667
|
result.isDataError = false;
|
|
@@ -1586,8 +1675,8 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1586
1675
|
}
|
|
1587
1676
|
else {
|
|
1588
1677
|
return new EjvError({
|
|
1589
|
-
type:
|
|
1590
|
-
message: createErrorMsg(
|
|
1678
|
+
type: ERROR_TYPE.INVALID_SCHEMES,
|
|
1679
|
+
message: createErrorMsg(ERROR_MESSAGE.INVALID_ITEMS_SCHEME, {
|
|
1591
1680
|
placeholders: [JSON.stringify(arrayScheme.items)]
|
|
1592
1681
|
}),
|
|
1593
1682
|
|
|
@@ -1610,9 +1699,9 @@ const _ejv = <T> (data: T, schemes: Scheme[], options: InternalOptions): null |
|
|
|
1610
1699
|
|
|
1611
1700
|
if (result !== null && definedTester(options.customErrorMsg)) {
|
|
1612
1701
|
const customErrorMsgObj: {
|
|
1613
|
-
[key in
|
|
1702
|
+
[key in ERROR_TYPE]?: string;
|
|
1614
1703
|
} = options.customErrorMsg as {
|
|
1615
|
-
[key in
|
|
1704
|
+
[key in ERROR_TYPE]?: string;
|
|
1616
1705
|
};
|
|
1617
1706
|
|
|
1618
1707
|
// override error message
|
|
@@ -1630,8 +1719,8 @@ export const ejv = (data: object, schemes: Scheme[], options?: Options): null |
|
|
|
1630
1719
|
// check data itself
|
|
1631
1720
|
if (!definedTester(data) || !objectTester(data) || data === null) {
|
|
1632
1721
|
return new EjvError({
|
|
1633
|
-
type:
|
|
1634
|
-
message:
|
|
1722
|
+
type: ERROR_TYPE.NO_DATA,
|
|
1723
|
+
message: ERROR_MESSAGE.NO_DATA,
|
|
1635
1724
|
|
|
1636
1725
|
data: data,
|
|
1637
1726
|
path: undefined,
|