structure-verifier 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -325
- package/dist/index.d.ts +50 -18
- package/dist/index.js +20 -15
- package/dist/index.js.map +1 -1
- package/dist/src/error/v_error.d.ts +9 -4
- package/dist/src/error/v_error.js +14 -7
- package/dist/src/error/v_error.js.map +1 -1
- package/dist/src/interfaces/types.d.ts +3 -3
- package/dist/src/languages/message.d.ts +1 -1
- package/dist/src/languages/message.js +7 -4
- package/dist/src/languages/message.js.map +1 -1
- package/dist/src/verifiers/any/v_any.d.ts +1 -2
- package/dist/src/verifiers/any/v_any.js +8 -3
- package/dist/src/verifiers/any/v_any.js.map +1 -1
- package/dist/src/verifiers/array/v_array.d.ts +7 -6
- package/dist/src/verifiers/array/v_array.js +44 -33
- package/dist/src/verifiers/array/v_array.js.map +1 -1
- package/dist/src/verifiers/boolean/v_boolean.d.ts +1 -2
- package/dist/src/verifiers/boolean/v_boolean.js +23 -23
- package/dist/src/verifiers/boolean/v_boolean.js.map +1 -1
- package/dist/src/verifiers/date/v_date.d.ts +1 -2
- package/dist/src/verifiers/date/v_date.js +58 -57
- package/dist/src/verifiers/date/v_date.js.map +1 -1
- package/dist/src/verifiers/number/v_number.d.ts +1 -2
- package/dist/src/verifiers/number/v_number.js +30 -52
- package/dist/src/verifiers/number/v_number.js.map +1 -1
- package/dist/src/verifiers/object/v_object.d.ts +14 -15
- package/dist/src/verifiers/object/v_object.js +98 -68
- package/dist/src/verifiers/object/v_object.js.map +1 -1
- package/dist/src/verifiers/string/v_string.d.ts +1 -2
- package/dist/src/verifiers/string/v_string.js +66 -104
- package/dist/src/verifiers/string/v_string.js.map +1 -1
- package/dist/src/verifiers/type.d.ts +1 -0
- package/dist/src/verifiers/uuid/v_uuid.d.ts +1 -2
- package/dist/src/verifiers/uuid/v_uuid.js +69 -42
- package/dist/src/verifiers/uuid/v_uuid.js.map +1 -1
- package/dist/src/verifiers/verifier.js +1 -1
- package/dist/src/verifiers/verifier.js.map +1 -1
- package/package.json +1 -1
|
@@ -27,6 +27,20 @@ const dMessages = {
|
|
|
27
27
|
en: () => `must be a date`,
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
|
+
function throwDateError(condition, values, fallbackMessage) {
|
|
31
|
+
throw new v_error_1.VerificationError([
|
|
32
|
+
{
|
|
33
|
+
key: "",
|
|
34
|
+
message: (0, message_1.getMessage)(condition, values, fallbackMessage),
|
|
35
|
+
},
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
function isSupportedDateInput(data) {
|
|
39
|
+
return (typeof data === "number" ||
|
|
40
|
+
typeof data === "string" ||
|
|
41
|
+
data instanceof Date ||
|
|
42
|
+
datetime_1.datetime.isDayjs(data));
|
|
43
|
+
}
|
|
30
44
|
function haveTimezone(input) {
|
|
31
45
|
const regexDesplazamiento = /(?:UTC|GMT|[+-]\d{2}:?\d{2})$/;
|
|
32
46
|
const regexIdentificadorZona = /(?:Europe\/|America\/|Asia\/|Africa\/|Australia\/|Antarctica\/|Atlantic\/|Indian\/|Pacific\/)[A-Za-z_]+/;
|
|
@@ -35,70 +49,57 @@ function haveTimezone(input) {
|
|
|
35
49
|
function formatWithTimeZone(format) {
|
|
36
50
|
return /Z{1,2}|z{1,2}/.test(format);
|
|
37
51
|
}
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new v_error_1.VerificationError([
|
|
46
|
-
{
|
|
47
|
-
key: "",
|
|
48
|
-
message: (0, message_1.getMessage)((conds === null || conds === void 0 ? void 0 : conds.badTypeMessage) != undefined
|
|
49
|
-
? conds === null || conds === void 0 ? void 0 : conds.badTypeMessage
|
|
50
|
-
: undefined, undefined, badTypeMessage),
|
|
51
|
-
},
|
|
52
|
-
]);
|
|
52
|
+
function applyDefaultTimezone(date, timeZone) {
|
|
53
|
+
return datetime_1.datetime.tz(date.format("YYYY-MM-DD HH:mm:ss"), timeZone);
|
|
54
|
+
}
|
|
55
|
+
function parseDateWithFormat(data, format, timeZone, conds) {
|
|
56
|
+
let date = (0, datetime_1.datetime)(data, format, true);
|
|
57
|
+
if (!date.isValid()) {
|
|
58
|
+
throwDateError(conds === null || conds === void 0 ? void 0 : conds.format, { format }, dMessages.format);
|
|
53
59
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
let format = (0, message_1.getValue)(conds.format);
|
|
57
|
-
date = (0, datetime_1.datetime)(data, format, true);
|
|
58
|
-
if (!date.isValid()) {
|
|
59
|
-
throw new v_error_1.VerificationError([
|
|
60
|
-
{
|
|
61
|
-
key: "",
|
|
62
|
-
message: (0, message_1.getMessage)(conds.format, { format: format }, dMessages.format),
|
|
63
|
-
},
|
|
64
|
-
]);
|
|
65
|
-
}
|
|
66
|
-
if (!formatWithTimeZone(format)) {
|
|
67
|
-
date = datetime_1.datetime.tz(date.format("YYYY-MM-DD HH:mm:ss"), timeZone);
|
|
68
|
-
}
|
|
60
|
+
if (!formatWithTimeZone(format)) {
|
|
61
|
+
date = applyDefaultTimezone(date, timeZone);
|
|
69
62
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
return date;
|
|
64
|
+
}
|
|
65
|
+
function parseDateWithoutFormat(data, timeZone) {
|
|
66
|
+
let date = (0, datetime_1.datetime)(data);
|
|
67
|
+
if (typeof data === "string" && !haveTimezone(data)) {
|
|
68
|
+
date = applyDefaultTimezone(date, timeZone);
|
|
75
69
|
}
|
|
70
|
+
return date;
|
|
71
|
+
}
|
|
72
|
+
function parseDateInput(data, timeZone, badTypeMessage, conds) {
|
|
73
|
+
const format = (conds === null || conds === void 0 ? void 0 : conds.format) ? (0, message_1.getValue)(conds.format) : undefined;
|
|
74
|
+
const date = format
|
|
75
|
+
? parseDateWithFormat(data, format, timeZone, conds)
|
|
76
|
+
: parseDateWithoutFormat(data, timeZone);
|
|
76
77
|
if (!date.isValid()) {
|
|
77
|
-
|
|
78
|
-
{
|
|
79
|
-
key: "",
|
|
80
|
-
message: (0, message_1.getMessage)((conds === null || conds === void 0 ? void 0 : conds.badTypeMessage) != undefined
|
|
81
|
-
? conds === null || conds === void 0 ? void 0 : conds.badTypeMessage
|
|
82
|
-
: undefined, undefined, badTypeMessage),
|
|
83
|
-
},
|
|
84
|
-
]);
|
|
78
|
+
throwDateError(conds === null || conds === void 0 ? void 0 : conds.badTypeMessage, undefined, badTypeMessage);
|
|
85
79
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
return date;
|
|
81
|
+
}
|
|
82
|
+
function validateDateRange(date, conds) {
|
|
83
|
+
if (conds === null || conds === void 0 ? void 0 : conds.maxDate) {
|
|
84
|
+
const maxDate = (0, message_1.getValue)(conds.maxDate);
|
|
85
|
+
if (date.isAfter(maxDate)) {
|
|
86
|
+
throwDateError(conds.maxDate, { maxDate }, dMessages.maxDate);
|
|
87
|
+
}
|
|
93
88
|
}
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
if (conds === null || conds === void 0 ? void 0 : conds.minDate) {
|
|
90
|
+
const minDate = (0, message_1.getValue)(conds.minDate);
|
|
91
|
+
if (date.isBefore(minDate)) {
|
|
92
|
+
throwDateError(conds.minDate, { minDate }, dMessages.minDate);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function vDate(data, badTypeMessage, conds) {
|
|
97
|
+
const timeZone = (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.timeZone) || "UTC";
|
|
98
|
+
if (data === "" || !isSupportedDateInput(data)) {
|
|
99
|
+
throwDateError(conds === null || conds === void 0 ? void 0 : conds.badTypeMessage, undefined, badTypeMessage);
|
|
101
100
|
}
|
|
101
|
+
const date = parseDateInput(data, timeZone, badTypeMessage, conds);
|
|
102
|
+
validateDateRange(date, conds);
|
|
102
103
|
return date;
|
|
103
104
|
}
|
|
104
105
|
class VDateNotNull extends verifier_1.Verifier {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v_date.js","sourceRoot":"","sources":["../../../../src/src/verifiers/date/v_date.ts"],"names":[],"mappings":";;;AAOA,qDAIiC;AACjC,iDAAwD;AACxD,0CAAuC;AACvC,mDAAgD;AAuBhD,MAAM,SAAS,GAAyB;IACtC,MAAM,EAAE;QACN,EAAE,EAAE,CAAC,MAA0B,EAAE,EAAE,CACjC,yBAAyB,MAAM,CAAC,MAAM,EAAE;QAC1C,EAAE,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE;KAC5E;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,CAAC,MAA4B,EAAE,EAAE,CACnC,8BAA8B,MAAM,CAAC,QAAQ,EAAE;QACjD,EAAE,EAAE,CAAC,MAA4B,EAAE,EAAE,CACnC,2BAA2B,MAAM,CAAC,QAAQ,EAAE;KAC/C;IACD,OAAO,EAAE;QACP,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QACvD,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;KACxD;IACD,OAAO,EAAE;QACP,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QACvD,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,+BAA+B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;KAC3D;IACD,cAAc,EAAE;QACd,EAAE,EAAE,GAAG,EAAE,CAAC,oBAAoB;QAC9B,EAAE,EAAE,GAAG,EAAE,CAAC,gBAAgB;KAC3B;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,KAAU;IAC9B,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;IAC5D,MAAM,sBAAsB,GAC1B,yGAAyG,CAAC;IAC5G,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"v_date.js","sourceRoot":"","sources":["../../../../src/src/verifiers/date/v_date.ts"],"names":[],"mappings":";;;AAOA,qDAIiC;AACjC,iDAAwD;AACxD,0CAAuC;AACvC,mDAAgD;AAuBhD,MAAM,SAAS,GAAyB;IACtC,MAAM,EAAE;QACN,EAAE,EAAE,CAAC,MAA0B,EAAE,EAAE,CACjC,yBAAyB,MAAM,CAAC,MAAM,EAAE;QAC1C,EAAE,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE;KAC5E;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,CAAC,MAA4B,EAAE,EAAE,CACnC,8BAA8B,MAAM,CAAC,QAAQ,EAAE;QACjD,EAAE,EAAE,CAAC,MAA4B,EAAE,EAAE,CACnC,2BAA2B,MAAM,CAAC,QAAQ,EAAE;KAC/C;IACD,OAAO,EAAE;QACP,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QACvD,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;KACxD;IACD,OAAO,EAAE;QACP,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,4BAA4B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QACvD,EAAE,EAAE,CAAC,MAAmC,EAAE,EAAE,CAC1C,+BAA+B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;KAC3D;IACD,cAAc,EAAE;QACd,EAAE,EAAE,GAAG,EAAE,CAAC,oBAAoB;QAC9B,EAAE,EAAE,GAAG,EAAE,CAAC,gBAAgB;KAC3B;CACF,CAAC;AAEF,SAAS,cAAc,CACrB,SAAmD,EACnD,MAAW,EACX,eAAsC;IAEtC,MAAM,IAAI,2BAAiB,CAAC;QAC1B;YACE,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,IAAA,oBAAU,EAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC;SACxD;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAS;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,YAAY,IAAI;QACpB,mBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAU;IAC9B,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;IAC5D,MAAM,sBAAsB,GAC1B,yGAAyG,CAAC;IAC5G,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB,EAAE,QAAgB;IAClE,OAAO,mBAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAS,EACT,MAAc,EACd,QAAgB,EAChB,KAAuB;IAEvB,IAAI,IAAI,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAS,EAAE,QAAgB;IACzD,IAAI,IAAI,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,IAAS,EACT,QAAgB,EAChB,cAAsC,EACtC,KAAuB;IAEvB,MAAM,MAAM,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAC,CAAC,CAAC,IAAA,kBAAQ,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;QACpD,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAoB,EAAE,KAAuB;IACtE,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CACZ,IAAS,EACT,cAAsC,EACtC,KAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAA,kBAAQ,EAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEpD,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,cAAc,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IACnE,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,YAAa,SAAQ,mBAAwB;IACxD,KAAK,CAAC,IAAS;;QACb,OAAO,KAAK,CACV,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,YAAY,CAAC,EACpD,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,YAAsB,IAAsB;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;QADQ,SAAI,GAAJ,IAAI,CAAkB;QAE1C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IACjD,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,KAAM,SAAQ,mBAA+B;IACxD,KAAK,CAAC,IAAS;;QACb,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,YAAY,CAAC,CAAC;QACpE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,YAAsB,IAAsB;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;QADQ,SAAI,GAAJ,IAAI,CAAkB;QAE1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IACjD,CAAC;CACF;AAbD,sBAaC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IInfo, MessageType, VBadTypeMessage, VDefaultValue, VVCIsRequired } from "../../interfaces/types";
|
|
2
2
|
import { Verifier } from "../verifier";
|
|
3
|
-
interface VNumberConditions extends VBadTypeMessage, VDefaultValue<number>, VVCIsRequired, IInfo<number> {
|
|
3
|
+
export interface VNumberConditions extends VBadTypeMessage, VDefaultValue<number>, VVCIsRequired, IInfo<number> {
|
|
4
4
|
min?: MessageType<number, {
|
|
5
5
|
min: number;
|
|
6
6
|
}>;
|
|
@@ -30,4 +30,3 @@ export declare class VNumber extends Verifier<number | null> {
|
|
|
30
30
|
check(data: any): number | null;
|
|
31
31
|
constructor(cond?: VNumberConditions | undefined);
|
|
32
32
|
}
|
|
33
|
-
export {};
|
|
@@ -34,79 +34,57 @@ const dMessages = {
|
|
|
34
34
|
en: () => `must be a number`,
|
|
35
35
|
},
|
|
36
36
|
};
|
|
37
|
+
function throwNumberError(condition, values, fallbackMessage) {
|
|
38
|
+
throw new v_error_1.VerificationError([
|
|
39
|
+
{
|
|
40
|
+
key: "",
|
|
41
|
+
message: (0, message_1.getMessage)(condition, values, fallbackMessage),
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
37
45
|
function vNumber(data, badTypeMessage, conds) {
|
|
38
46
|
if (data === "" || isNaN(data)) {
|
|
39
|
-
|
|
40
|
-
{
|
|
41
|
-
key: "",
|
|
42
|
-
message: (0, message_1.getMessage)((conds === null || conds === void 0 ? void 0 : conds.badTypeMessage) != undefined
|
|
43
|
-
? conds === null || conds === void 0 ? void 0 : conds.badTypeMessage
|
|
44
|
-
: undefined, undefined, badTypeMessage),
|
|
45
|
-
},
|
|
46
|
-
]);
|
|
47
|
+
throwNumberError(conds === null || conds === void 0 ? void 0 : conds.badTypeMessage, undefined, badTypeMessage);
|
|
47
48
|
}
|
|
49
|
+
const numericValue = Number(data);
|
|
50
|
+
const decimalPart = String(data).split(".")[1] || "";
|
|
48
51
|
if ((conds === null || conds === void 0 ? void 0 : conds.min) !== undefined) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
key: "",
|
|
53
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.min, { min: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.min) }, dMessages.min),
|
|
54
|
-
},
|
|
55
|
-
]);
|
|
52
|
+
const minValue = (0, message_1.getValue)(conds.min);
|
|
53
|
+
if (numericValue < minValue) {
|
|
54
|
+
throwNumberError(conds.min, { min: minValue }, dMessages.min);
|
|
56
55
|
}
|
|
57
56
|
}
|
|
58
57
|
if ((conds === null || conds === void 0 ? void 0 : conds.max) !== undefined) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
key: "",
|
|
63
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.max, { max: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.max) }, dMessages.max),
|
|
64
|
-
},
|
|
65
|
-
]);
|
|
58
|
+
const maxValue = (0, message_1.getValue)(conds.max);
|
|
59
|
+
if (numericValue > maxValue) {
|
|
60
|
+
throwNumberError(conds.max, { max: maxValue }, dMessages.max);
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
63
|
if ((conds === null || conds === void 0 ? void 0 : conds.in) !== undefined) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
key: "",
|
|
73
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.in, { in: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.in) }, dMessages.in),
|
|
74
|
-
},
|
|
75
|
-
]);
|
|
64
|
+
const allowedValues = (0, message_1.getValue)(conds.in);
|
|
65
|
+
if (!allowedValues.includes(numericValue)) {
|
|
66
|
+
throwNumberError(conds.in, { in: allowedValues }, dMessages.in);
|
|
76
67
|
}
|
|
77
68
|
}
|
|
78
69
|
if ((conds === null || conds === void 0 ? void 0 : conds.notIn) !== undefined) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
key: "",
|
|
83
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.notIn, { notIn: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.notIn) }, dMessages.notIn),
|
|
84
|
-
},
|
|
85
|
-
]);
|
|
70
|
+
const blockedValues = (0, message_1.getValue)(conds.notIn);
|
|
71
|
+
if (blockedValues.includes(numericValue)) {
|
|
72
|
+
throwNumberError(conds.notIn, { notIn: blockedValues }, dMessages.notIn);
|
|
86
73
|
}
|
|
87
74
|
}
|
|
88
|
-
const decimalPart = data.toString().split(".")[1] || "";
|
|
89
75
|
if ((conds === null || conds === void 0 ? void 0 : conds.maxDecimalPlaces) !== undefined) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
key: "",
|
|
94
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.maxDecimalPlaces, { maxDecimalPlaces: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.maxDecimalPlaces) }, dMessages.maxDecimalPlaces),
|
|
95
|
-
},
|
|
96
|
-
]);
|
|
76
|
+
const maxDecimalPlaces = (0, message_1.getValue)(conds.maxDecimalPlaces);
|
|
77
|
+
if (decimalPart.length > maxDecimalPlaces) {
|
|
78
|
+
throwNumberError(conds.maxDecimalPlaces, { maxDecimalPlaces }, dMessages.maxDecimalPlaces);
|
|
97
79
|
}
|
|
98
80
|
}
|
|
99
81
|
if ((conds === null || conds === void 0 ? void 0 : conds.minDecimalPlaces) !== undefined) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
key: "",
|
|
104
|
-
message: (0, message_1.getMessage)(conds === null || conds === void 0 ? void 0 : conds.minDecimalPlaces, { minDecimalPlaces: (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.minDecimalPlaces) }, dMessages.minDecimalPlaces),
|
|
105
|
-
},
|
|
106
|
-
]);
|
|
82
|
+
const minDecimalPlaces = (0, message_1.getValue)(conds.minDecimalPlaces);
|
|
83
|
+
if (decimalPart.length < minDecimalPlaces) {
|
|
84
|
+
throwNumberError(conds.minDecimalPlaces, { minDecimalPlaces }, dMessages.minDecimalPlaces);
|
|
107
85
|
}
|
|
108
86
|
}
|
|
109
|
-
return
|
|
87
|
+
return numericValue;
|
|
110
88
|
}
|
|
111
89
|
class VNumberNotNull extends verifier_1.Verifier {
|
|
112
90
|
check(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v_number.js","sourceRoot":"","sources":["../../../../src/src/verifiers/number/v_number.ts"],"names":[],"mappings":";;;AAAA,iDAAwD;AAQxD,qDAIiC;AACjC,0CAAuC;AAsBvC,MAAM,SAAS,GAA2B;IACxC,GAAG,EAAE;QACH,EAAE,EAAE,CAAC,MAAuB,EAAE,EAAE,CAAC,4BAA4B,MAAM,CAAC,GAAG,EAAE;QACzE,EAAE,EAAE,CAAC,MAAuB,EAAE,EAAE,CAC9B,+BAA+B,MAAM,CAAC,GAAG,EAAE;KAC9C;IACD,GAAG,EAAE;QACH,EAAE,EAAE,CAAC,MAAuB,EAAE,EAAE,CAAC,4BAA4B,MAAM,CAAC,GAAG,EAAE;QACzE,EAAE,EAAE,CAAC,MAAuB,EAAE,EAAE,CAAC,4BAA4B,MAAM,CAAC,GAAG,EAAE;KAC1E;IACD,EAAE,EAAE;QACF,EAAE,EAAE,CAAC,MAAwB,EAAE,EAAE,CAC/B,0CAA0C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClE,EAAE,EAAE,CAAC,MAAwB,EAAE,EAAE,CAC/B,uCAAuC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAChE;IACD,KAAK,EAAE;QACL,EAAE,EAAE,CAAC,MAA2B,EAAE,EAAE,CAClC,6CAA6C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxE,EAAE,EAAE,CAAC,MAA2B,EAAE,EAAE,CAClC,2CAA2C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACvE;IACD,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,MAAoC,EAAE,EAAE,CAC3C,0BAA0B,MAAM,CAAC,gBAAgB,YAAY;QAC/D,EAAE,EAAE,CAAC,MAAoC,EAAE,EAAE,CAC3C,qBAAqB,MAAM,CAAC,gBAAgB,iBAAiB;KAChE;IACD,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,MAAoC,EAAE,EAAE,CAC3C,0BAA0B,MAAM,CAAC,gBAAgB,YAAY;QAC/D,EAAE,EAAE,CAAC,MAAoC,EAAE,EAAE,CAC3C,sBAAsB,MAAM,CAAC,gBAAgB,iBAAiB;KACjE;IACD,cAAc,EAAE;QACd,EAAE,EAAE,GAAG,EAAE,CAAC,oBAAoB;QAC9B,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAkB;KAC7B;CACF,CAAC;AAEF,SAAS,
|
|
1
|
+
{"version":3,"file":"v_number.js","sourceRoot":"","sources":["../../../../src/src/verifiers/number/v_number.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
import { MessageType, VBadTypeMessage, VDefaultValue, VVCIsRequired } from "../../interfaces/types";
|
|
2
2
|
import { Verifier } from "../verifier";
|
|
3
|
-
interface VObjectConditions<T extends Record<string, Verifier<any>>> extends VBadTypeMessage, VDefaultValue<T>, VVCIsRequired {
|
|
3
|
+
export interface VObjectConditions<T extends Record<string, Verifier<any>>> extends VBadTypeMessage, VDefaultValue<T>, VVCIsRequired {
|
|
4
4
|
invalidPropertyMessage?: MessageType<void, void>;
|
|
5
5
|
strictMode?: boolean;
|
|
6
6
|
ignoreCase?: boolean;
|
|
7
7
|
takeAllValues?: boolean;
|
|
8
|
-
properties: T;
|
|
9
8
|
conds?: (val: {
|
|
10
|
-
[K in keyof T]: ReturnType<T[K][
|
|
9
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
11
10
|
} | null) => void;
|
|
12
11
|
}
|
|
13
|
-
interface VObjectConditionsNotNull<T extends Record<string, Verifier<any>>> extends VBadTypeMessage, VDefaultValue<T>, VVCIsRequired {
|
|
12
|
+
export interface VObjectConditionsNotNull<T extends Record<string, Verifier<any>>> extends VBadTypeMessage, VDefaultValue<T>, VVCIsRequired {
|
|
14
13
|
invalidPropertyMessage?: MessageType<void, void>;
|
|
15
14
|
strictMode?: boolean;
|
|
16
15
|
ignoreCase?: boolean;
|
|
17
16
|
takeAllValues?: boolean;
|
|
18
|
-
properties: T;
|
|
19
17
|
conds?: (val: {
|
|
20
|
-
[K in keyof T]: ReturnType<T[K][
|
|
18
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
21
19
|
}) => void;
|
|
22
20
|
}
|
|
23
21
|
export declare class VObjectNotNull<T extends Record<string, Verifier<any>>> extends Verifier<{
|
|
24
|
-
[K in keyof T]: ReturnType<T[K][
|
|
22
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
25
23
|
}> {
|
|
26
|
-
protected
|
|
24
|
+
protected properties: T;
|
|
25
|
+
protected conditions: VObjectConditionsNotNull<T>;
|
|
26
|
+
constructor(properties: T, conditions?: VObjectConditionsNotNull<T>);
|
|
27
27
|
check(data: any): {
|
|
28
|
-
[K in keyof T]: ReturnType<T[K][
|
|
28
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
29
29
|
};
|
|
30
|
-
constructor(cond: VObjectConditionsNotNull<T>);
|
|
31
30
|
}
|
|
32
31
|
export declare class VObject<T extends Record<string, Verifier<any>>> extends Verifier<{
|
|
33
|
-
[K in keyof T]: ReturnType<T[K][
|
|
32
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
34
33
|
} | null> {
|
|
35
|
-
protected
|
|
34
|
+
protected properties: T;
|
|
35
|
+
protected conditions: VObjectConditions<T>;
|
|
36
|
+
constructor(properties: T, conditions?: VObjectConditions<T>);
|
|
36
37
|
check(data: any): {
|
|
37
|
-
[K in keyof T]: ReturnType<T[K][
|
|
38
|
+
[K in keyof T]: ReturnType<T[K]["check"]>;
|
|
38
39
|
} | null;
|
|
39
|
-
constructor(cond: VObjectConditions<T>);
|
|
40
40
|
}
|
|
41
|
-
export {};
|
|
@@ -6,84 +6,108 @@ const message_1 = require("../../languages/message");
|
|
|
6
6
|
const v_any_1 = require("../any/v_any");
|
|
7
7
|
const v_array_1 = require("../array/v_array");
|
|
8
8
|
const verifier_1 = require("../verifier");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const UNSAFE_OBJECT_KEYS = new Set(["__proto__", "constructor", "prototype"]);
|
|
10
|
+
function setObjectValue(target, key, value) {
|
|
11
|
+
if (UNSAFE_OBJECT_KEYS.has(key)) {
|
|
12
|
+
Object.defineProperty(target, key, {
|
|
13
|
+
value,
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
target[key] = value;
|
|
21
|
+
}
|
|
22
|
+
function getObjectValue(source, key) {
|
|
23
|
+
const descriptor = Object.getOwnPropertyDescriptor(source, key);
|
|
24
|
+
return descriptor ? descriptor.value : source[key];
|
|
25
|
+
}
|
|
26
|
+
function isNestedVerifier(verifier) {
|
|
27
|
+
return (verifier instanceof VObject ||
|
|
28
|
+
verifier instanceof VObjectNotNull ||
|
|
29
|
+
verifier instanceof v_array_1.VArray ||
|
|
30
|
+
verifier instanceof v_array_1.VArrayNotNull ||
|
|
31
|
+
verifier instanceof v_any_1.VAny);
|
|
32
|
+
}
|
|
33
|
+
function vObject(data, badTypeMessage, properties, options) {
|
|
34
|
+
if (data === null || typeof data !== "object" || Array.isArray(data)) {
|
|
35
|
+
throw new v_error_1.VerificationError([
|
|
36
|
+
{
|
|
12
37
|
key: "",
|
|
13
|
-
message: (0, message_1.getMessage)((
|
|
14
|
-
|
|
38
|
+
message: (0, message_1.getMessage)((options === null || options === void 0 ? void 0 : options.badTypeMessage) != undefined
|
|
39
|
+
? options === null || options === void 0 ? void 0 : options.badTypeMessage
|
|
40
|
+
: undefined, undefined, badTypeMessage),
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
15
43
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (
|
|
44
|
+
const keysData = Object.keys(data);
|
|
45
|
+
const keysValidations = Object.keys(properties);
|
|
46
|
+
if (options.strictMode) {
|
|
19
47
|
let dif = [];
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
dif = keysData.filter(v => !temp.includes(v.toUpperCase()));
|
|
48
|
+
if (options.ignoreCase) {
|
|
49
|
+
const temp = keysValidations.map((v) => v.toUpperCase());
|
|
50
|
+
dif = keysData.filter((v) => !temp.includes(v.toUpperCase()));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
dif = keysData.filter((v) => !keysValidations.includes(v));
|
|
23
54
|
}
|
|
24
|
-
else
|
|
25
|
-
dif = keysData.filter(v => !keysValidations.includes(v));
|
|
26
55
|
if (dif.length > 0) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}));
|
|
56
|
+
const error = new v_error_1.VerificationError(dif.map((v) => ({
|
|
57
|
+
key: v,
|
|
58
|
+
message: (0, message_1.getMessage)(options.invalidPropertyMessage, undefined, {
|
|
59
|
+
es: () => "no es una propiedad válida",
|
|
60
|
+
en: () => "is not a valid property",
|
|
61
|
+
}),
|
|
62
|
+
})));
|
|
35
63
|
if (error.errors.length > 0)
|
|
36
64
|
throw error;
|
|
37
65
|
}
|
|
38
66
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
for (const key in
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
if (
|
|
46
|
-
|
|
67
|
+
const errors = [];
|
|
68
|
+
const value = {};
|
|
69
|
+
const keyMap = [];
|
|
70
|
+
for (const key in properties) {
|
|
71
|
+
if (options.ignoreCase) {
|
|
72
|
+
const dataKey = keysData.find((v) => v.toLocaleUpperCase() == key.toUpperCase());
|
|
73
|
+
if (dataKey) {
|
|
74
|
+
keyMap.push({
|
|
47
75
|
keyV: key,
|
|
48
|
-
keyD:
|
|
76
|
+
keyD: dataKey,
|
|
49
77
|
});
|
|
50
78
|
}
|
|
51
79
|
else {
|
|
52
|
-
|
|
80
|
+
keyMap.push({
|
|
53
81
|
keyV: key,
|
|
54
|
-
keyD: key
|
|
82
|
+
keyD: key,
|
|
55
83
|
});
|
|
56
84
|
}
|
|
57
85
|
}
|
|
58
86
|
else {
|
|
59
|
-
|
|
87
|
+
keyMap.push({
|
|
60
88
|
keyV: key,
|
|
61
|
-
keyD: key
|
|
89
|
+
keyD: key,
|
|
62
90
|
});
|
|
63
91
|
}
|
|
64
92
|
}
|
|
65
|
-
if (
|
|
66
|
-
for (
|
|
67
|
-
if (!
|
|
68
|
-
value
|
|
93
|
+
if (options.takeAllValues) {
|
|
94
|
+
for (const dataKey of keysData) {
|
|
95
|
+
if (!keyMap.find((v) => v.keyD == dataKey)) {
|
|
96
|
+
setObjectValue(value, dataKey, getObjectValue(data, dataKey));
|
|
69
97
|
}
|
|
70
98
|
}
|
|
71
99
|
}
|
|
72
|
-
for (
|
|
100
|
+
for (const keys of keyMap) {
|
|
73
101
|
try {
|
|
74
|
-
const result =
|
|
75
|
-
value
|
|
102
|
+
const result = properties[keys.keyV].check(getObjectValue(data, keys.keyD));
|
|
103
|
+
setObjectValue(value, keys.keyV, result);
|
|
76
104
|
}
|
|
77
105
|
catch (error) {
|
|
78
106
|
if (error instanceof v_error_1.VerificationError) {
|
|
79
|
-
errors.push(...error.errorsObj.map(v => {
|
|
80
|
-
|
|
81
|
-
if (cond
|
|
82
|
-
|
|
83
|
-
|| cond instanceof v_array_1.VArray
|
|
84
|
-
|| cond instanceof v_array_1.VArrayNotNull
|
|
85
|
-
|| cond instanceof v_any_1.VAny) {
|
|
86
|
-
v.key = keys.keyV + (v.key ? '.' + v.key : '');
|
|
107
|
+
errors.push(...error.errorsObj.map((v) => {
|
|
108
|
+
const cond = properties[keys.keyV];
|
|
109
|
+
if (isNestedVerifier(cond)) {
|
|
110
|
+
v.key = keys.keyV + (v.key ? "." + v.key : "");
|
|
87
111
|
}
|
|
88
112
|
else {
|
|
89
113
|
v.key = keys.keyV;
|
|
@@ -100,40 +124,46 @@ function vObject(data, badTypeMessage, conds) {
|
|
|
100
124
|
if (errors.length > 0) {
|
|
101
125
|
throw new v_error_1.VerificationError(errors);
|
|
102
126
|
}
|
|
103
|
-
|
|
104
|
-
|
|
127
|
+
const typedValue = value;
|
|
128
|
+
if (options.conds) {
|
|
129
|
+
options.conds(typedValue);
|
|
105
130
|
}
|
|
106
|
-
return
|
|
131
|
+
return typedValue;
|
|
107
132
|
}
|
|
108
133
|
class VObjectNotNull extends verifier_1.Verifier {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
super(cond);
|
|
114
|
-
this.cond = cond;
|
|
134
|
+
constructor(properties, conditions = {}) {
|
|
135
|
+
super(conditions);
|
|
136
|
+
this.properties = properties;
|
|
137
|
+
this.conditions = conditions;
|
|
115
138
|
this.badTypeMessage = {
|
|
116
139
|
es: () => `debe ser un objeto`,
|
|
117
|
-
en: () => `must be
|
|
140
|
+
en: () => `must be an object`,
|
|
118
141
|
};
|
|
119
142
|
}
|
|
143
|
+
check(data) {
|
|
144
|
+
return vObject(this.isRequired(data, true), this.badTypeMessage, this.properties, this.conditions);
|
|
145
|
+
}
|
|
120
146
|
}
|
|
121
147
|
exports.VObjectNotNull = VObjectNotNull;
|
|
122
148
|
class VObject extends verifier_1.Verifier {
|
|
149
|
+
constructor(properties, conditions = {}) {
|
|
150
|
+
super(conditions);
|
|
151
|
+
this.properties = properties;
|
|
152
|
+
this.conditions = conditions;
|
|
153
|
+
this.badTypeMessage = {
|
|
154
|
+
es: () => `debe ser un objeto`,
|
|
155
|
+
en: () => `must be an object`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
123
158
|
check(data) {
|
|
124
159
|
let val = this.isRequired(data);
|
|
125
160
|
if (val === null || val === undefined) {
|
|
161
|
+
if (this.conditions.conds) {
|
|
162
|
+
this.conditions.conds(null);
|
|
163
|
+
}
|
|
126
164
|
return null;
|
|
127
165
|
}
|
|
128
|
-
return vObject(val, this.badTypeMessage, this.
|
|
129
|
-
}
|
|
130
|
-
constructor(cond) {
|
|
131
|
-
super(cond);
|
|
132
|
-
this.cond = cond;
|
|
133
|
-
this.badTypeMessage = {
|
|
134
|
-
es: () => `debe ser un objeto`,
|
|
135
|
-
en: () => `must be a object`
|
|
136
|
-
};
|
|
166
|
+
return vObject(val, this.badTypeMessage, this.properties, this.conditions);
|
|
137
167
|
}
|
|
138
168
|
}
|
|
139
169
|
exports.VObject = VObject;
|