validno 0.2.5 → 0.3.0
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/Schema.js +6 -5
- package/dist/ValidnoResult.js +19 -7
- package/dist/checkType.js +1 -167
- package/dist/constants/details.js +11 -6
- package/dist/constants/schema.js +10 -10
- package/dist/dev.js +65 -46
- package/dist/engine/ValidateEngine.js +44 -0
- package/dist/engine/ValidnoResult.js +102 -0
- package/dist/engine/index.js +2 -0
- package/dist/engine/methods/finishValidation.js +15 -0
- package/dist/engine/methods/handleKey.js +41 -0
- package/dist/engine/methods/handleMissingKey.js +19 -0
- package/dist/engine/methods/handleMissingKeyValidation.js +9 -0
- package/dist/engine/methods/handleNestedKey.js +19 -0
- package/dist/engine/methods/validate.js +14 -0
- package/dist/engine/methods/validateRules.js +172 -0
- package/dist/engine/methods/validateType.js +134 -0
- package/dist/types/common.js +1 -0
- package/dist/utils/errors.js +30 -21
- package/dist/utils/helpers.js +55 -57
- package/dist/utils/validateType.js +12 -0
- package/dist/utils/validations.js +157 -153
- package/dist/validate/validate.js +151 -0
- package/dist/validate.js +136 -121
- package/dist/validateEngine/ValidateEngine.js +44 -0
- package/dist/validateEngine/index.js +2 -0
- package/dist/validateEngine/methods/ValidateEngine.js +139 -0
- package/dist/validateEngine/methods/checkRulesForKey.js +15 -0
- package/dist/validateEngine/methods/checkValueType.js +134 -0
- package/dist/validateEngine/methods/finalizeValidation.js +15 -0
- package/dist/validateEngine/methods/finishValidation.js +15 -0
- package/dist/validateEngine/methods/handleKey.js +43 -0
- package/dist/validateEngine/methods/handleMissingKey.js +19 -0
- package/dist/validateEngine/methods/handleMissingKeyValidation.js +9 -0
- package/dist/validateEngine/methods/handleNestedKey.js +19 -0
- package/dist/validateEngine/methods/validate.js +14 -0
- package/dist/validateEngine/methods/validateKey.js +31 -0
- package/dist/validateEngine/methods/validateKeyDetails.js +13 -0
- package/dist/validateEngine/methods/validateKeyValue.js +13 -0
- package/dist/validateEngine/methods/validateNestedKey.js +19 -0
- package/dist/validateEngine/methods/validateType.js +134 -0
- package/dist/validateEngine/validate.js +14 -0
- package/dist/{checkRules.js → validateRules.js} +2 -2
- package/dist/validateSchema/ValidateEngine.js +147 -0
- package/dist/validateSchema/index.js +6 -0
- package/dist/validateSchema/validate.js +151 -0
- package/dist/validateSchema.js +6 -0
- package/dist/validateType.js +124 -0
- package/package.json +1 -1
- package/dev.js +0 -0
- /package/dist/{utils/nested.js → validate/index.js} +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { ValidationDetails, ValidationIds } from "./constants/details.js";
|
|
2
|
+
import _validations from "./utils/validations.js";
|
|
3
|
+
import _errors from "./utils/errors.js";
|
|
4
|
+
import _validateType from "./utils/validateType.js";
|
|
5
|
+
const validateUnionType = (key, value, requirements, keyName = key) => {
|
|
6
|
+
const typeList = Array.isArray(requirements.type)
|
|
7
|
+
? requirements.type.map((el) => String((el === null || el === void 0 ? void 0 : el.name) || el))
|
|
8
|
+
: [];
|
|
9
|
+
const results = [];
|
|
10
|
+
for (let i = 0; i < typeList.length; i++) {
|
|
11
|
+
const requirementsRe = Object.assign(Object.assign({}, requirements), { type: requirements.type[i] });
|
|
12
|
+
const result = validateType(key, value, requirementsRe);
|
|
13
|
+
results.push(result[0].passed);
|
|
14
|
+
if (results[i] === true)
|
|
15
|
+
return _validateType.getResult(keyName, true);
|
|
16
|
+
}
|
|
17
|
+
const isPassed = results.some((r) => r === true);
|
|
18
|
+
const result = _validateType.getResult(keyName, isPassed, isPassed ? null : _errors.getErrorDetails(keyName, typeList.join('/'), value));
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
const validateType = (key, value, requirements, keyName = key) => {
|
|
22
|
+
var _a;
|
|
23
|
+
const isNotNull = value !== null;
|
|
24
|
+
const keyTitle = 'title' in requirements ? requirements.title : keyName;
|
|
25
|
+
const hasCustomMessage = requirements.customMessage && typeof requirements.customMessage === 'function';
|
|
26
|
+
if (value === undefined && requirements.required) {
|
|
27
|
+
return [_validateType.getResult(keyName, false, _errors.getMissingError(keyName))];
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(requirements.type)) {
|
|
30
|
+
return [validateUnionType(key, value, requirements)];
|
|
31
|
+
}
|
|
32
|
+
if (value === undefined && requirements.required !== true) {
|
|
33
|
+
return [_validateType.getResult(keyName, true)];
|
|
34
|
+
}
|
|
35
|
+
const customErrDetails = hasCustomMessage ?
|
|
36
|
+
requirements.customMessage({
|
|
37
|
+
keyword: ValidationIds.Type,
|
|
38
|
+
value: value,
|
|
39
|
+
key: keyName,
|
|
40
|
+
title: keyTitle,
|
|
41
|
+
reqs: requirements,
|
|
42
|
+
schema: null
|
|
43
|
+
}) :
|
|
44
|
+
null;
|
|
45
|
+
const baseErrDetails = _errors.getErrorDetails(keyName, requirements.type, value);
|
|
46
|
+
const getDetails = (isOK, errorText) => isOK ?
|
|
47
|
+
ValidationDetails.OK :
|
|
48
|
+
errorText || customErrDetails || baseErrDetails;
|
|
49
|
+
const typeBySchema = requirements.type;
|
|
50
|
+
const result = [];
|
|
51
|
+
switch (typeBySchema) {
|
|
52
|
+
case 'any': {
|
|
53
|
+
result.push(_validateType.getResult(keyName, true, getDetails(true)));
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case Number: {
|
|
57
|
+
const isNumber = isNotNull && value.constructor === Number;
|
|
58
|
+
result.push(_validateType.getResult(keyName, isNumber, getDetails(isNumber)));
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case String: {
|
|
62
|
+
const isString = isNotNull && value.constructor === String;
|
|
63
|
+
result.push(_validateType.getResult(keyName, isString, getDetails(isString)));
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case Date: {
|
|
67
|
+
const isDate = isNotNull && value.constructor === Date;
|
|
68
|
+
const isValid = isDate && !isNaN(value.getTime());
|
|
69
|
+
const isValidDate = isDate && isValid;
|
|
70
|
+
result.push(_validateType.getResult(keyName, isValidDate, getDetails(isValidDate, ValidationDetails.INVALID_DATE)));
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case Boolean: {
|
|
74
|
+
const isBoolean = isNotNull && value.constructor === Boolean;
|
|
75
|
+
result.push(_validateType.getResult(keyName, isBoolean, getDetails(isBoolean)));
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case Array: {
|
|
79
|
+
const isArray = isNotNull && value.constructor === Array;
|
|
80
|
+
if (!isArray) {
|
|
81
|
+
result.push(_validateType.getResult(keyName, false, getDetails(isArray)));
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
let isEachChecked = { passed: true, details: "" };
|
|
85
|
+
if ('eachType' in requirements) {
|
|
86
|
+
for (const el of value) {
|
|
87
|
+
const result = validateType('each of ' + key, el, { type: requirements.eachType, required: true });
|
|
88
|
+
if (!result[0].passed) {
|
|
89
|
+
isEachChecked.passed = false;
|
|
90
|
+
isEachChecked.details = result[0].details || '';
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const isOk = isArray && isEachChecked.passed;
|
|
96
|
+
const details = !isEachChecked.passed ? isEachChecked.details : getDetails(isOk);
|
|
97
|
+
result.push(_validateType.getResult(keyName, isOk, details));
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case Object: {
|
|
101
|
+
const isObject = _validations.isObject(value) && value.constructor === Object;
|
|
102
|
+
result.push(_validateType.getResult(keyName, isObject, getDetails(isObject)));
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case RegExp: {
|
|
106
|
+
const isRegex = _validations.isRegex(value);
|
|
107
|
+
result.push(_validateType.getResult(keyName, isRegex, getDetails(isRegex)));
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case null: {
|
|
111
|
+
const isNull = value === null;
|
|
112
|
+
result.push(_validateType.getResult(keyName, isNull, getDetails(isNull)));
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
default: {
|
|
116
|
+
const isInstanceOf = typeof typeBySchema === 'function' && value instanceof typeBySchema;
|
|
117
|
+
const isConstructorSame = typeof typeBySchema === 'function' && ((_a = value.constructor) === null || _a === void 0 ? void 0 : _a.name) === (typeBySchema === null || typeBySchema === void 0 ? void 0 : typeBySchema.name);
|
|
118
|
+
const isOK = isInstanceOf && isConstructorSame;
|
|
119
|
+
result.push(_validateType.getResult(keyName, isOK, getDetails(isOK)));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
};
|
|
124
|
+
export default validateType;
|
package/package.json
CHANGED
package/dev.js
DELETED
|
File without changes
|
|
File without changes
|