justus 0.5.20 → 0.5.22
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/index.cjs +15 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.mjs +15 -2
- package/dist/index.mjs.map +1 -1
- package/dist/validators/object.cjs +1 -1
- package/dist/validators/object.cjs.map +1 -1
- package/dist/validators/object.mjs +1 -1
- package/dist/validators/object.mjs.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +29 -5
- package/src/validators/object.ts +1 -1
package/dist/index.cjs
CHANGED
|
@@ -80,11 +80,18 @@ var import_tuple = require("./validators/tuple.cjs");
|
|
|
80
80
|
var import_union = require("./validators/union.cjs");
|
|
81
81
|
var import_utilities = require("./utilities.cjs");
|
|
82
82
|
function validate(validation, value, options) {
|
|
83
|
-
const opts = {
|
|
83
|
+
const opts = {
|
|
84
|
+
partialValidation: false,
|
|
85
|
+
stripAdditionalProperties: false,
|
|
86
|
+
stripForbiddenProperties: false,
|
|
87
|
+
stripOptionalNulls: false,
|
|
88
|
+
...options
|
|
89
|
+
};
|
|
84
90
|
return (0, import_utilities.getValidator)(validation).validate(value, opts);
|
|
85
91
|
}
|
|
86
92
|
function strip(validation, value, options) {
|
|
87
93
|
const opts = {
|
|
94
|
+
partialValidation: false,
|
|
88
95
|
stripAdditionalProperties: true,
|
|
89
96
|
stripForbiddenProperties: false,
|
|
90
97
|
stripOptionalNulls: true,
|
|
@@ -93,7 +100,13 @@ function strip(validation, value, options) {
|
|
|
93
100
|
return (0, import_utilities.getValidator)(validation).validate(value, opts);
|
|
94
101
|
}
|
|
95
102
|
function partial(validation, value, options) {
|
|
96
|
-
return (0, import_utilities.getValidator)(validation).validate(value, {
|
|
103
|
+
return (0, import_utilities.getValidator)(validation).validate(value, {
|
|
104
|
+
partialValidation: true,
|
|
105
|
+
stripAdditionalProperties: true,
|
|
106
|
+
stripForbiddenProperties: false,
|
|
107
|
+
stripOptionalNulls: true,
|
|
108
|
+
...options
|
|
109
|
+
});
|
|
97
110
|
}
|
|
98
111
|
// Annotate the CommonJS export names for ESM import in node:
|
|
99
112
|
0 && (module.exports = {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAAc,yBALd;AAMA,wBAAc,yBANd;AAOA,wBAAc,wBAPd;AAQA,wBAAc,4BARd;AAWA,iBAAkC;AAClC,mBAAkE;AAClE,oBAA4D;AAC5D,qBAA0C;AAC1C,sBAA4C;AAC5C,kBAAoC;AACpC,mBAAsC;AACtC,oBAA4D;AAC5D,oBAAsE;AACtE,sBAA4C;AAC5C,oBAA4D;AAC5D,mBAAsC;AACtC,mBAA6D;AAgB7D,uBAA6B;AAUtB,SAAS,SACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAAc,yBALd;AAMA,wBAAc,yBANd;AAOA,wBAAc,wBAPd;AAQA,wBAAc,4BARd;AAWA,iBAAkC;AAClC,mBAAkE;AAClE,oBAA4D;AAC5D,qBAA0C;AAC1C,sBAA4C;AAC5C,kBAAoC;AACpC,mBAAsC;AACtC,oBAA4D;AAC5D,oBAAsE;AACtE,sBAA4C;AAC5C,oBAA4D;AAC5D,mBAAsC;AACtC,mBAA6D;AAgB7D,uBAA6B;AAUtB,SAAS,SACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AACA,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAiBO,SAAS,MACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AAEA,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAqBO,SAAS,QACZ,YACA,OACA,SAC2B;AAC7B,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO;AAAA,IAC9C,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare function validate<V extends Validation>(validation: V, value: any
|
|
|
39
39
|
*
|
|
40
40
|
* ```
|
|
41
41
|
* validate(validation, value, {
|
|
42
|
+
* partialValidation: false,
|
|
42
43
|
* stripAdditionalProperties: true,
|
|
43
44
|
* stripForbiddenProperties: false,
|
|
44
45
|
* stripOptionalNulls: true,
|
|
@@ -51,8 +52,18 @@ export declare function strip<V extends Validation>(validation: V, value: any, o
|
|
|
51
52
|
* additional properties and optional `null`s (but not forbidden ones), and
|
|
52
53
|
* treating all properties as optional.
|
|
53
54
|
*
|
|
54
|
-
* This is equivalent to
|
|
55
|
-
*
|
|
56
|
-
*
|
|
55
|
+
* This is equivalent to:
|
|
56
|
+
*
|
|
57
|
+
* ```
|
|
58
|
+
* validate(validation, value, {
|
|
59
|
+
* partialValidation: true,
|
|
60
|
+
* stripAdditionalProperties: true,
|
|
61
|
+
* stripForbiddenProperties: false,
|
|
62
|
+
* stripOptionalNulls: true,
|
|
63
|
+
* })
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* This function also correctly represents the returned type as a
|
|
67
|
+
* `Partial<...>` type.
|
|
57
68
|
*/
|
|
58
69
|
export declare function partial<V extends Validation>(validation: V, value: any, options?: ValidationOptions): Partial<InferValidation<V>>;
|
package/dist/index.mjs
CHANGED
|
@@ -18,11 +18,18 @@ import { TupleValidator, tuple } from "./validators/tuple.mjs";
|
|
|
18
18
|
import { AllOfValidator, OneOfValidator, allOf, oneOf } from "./validators/union.mjs";
|
|
19
19
|
import { getValidator } from "./utilities.mjs";
|
|
20
20
|
function validate(validation, value, options) {
|
|
21
|
-
const opts = {
|
|
21
|
+
const opts = {
|
|
22
|
+
partialValidation: false,
|
|
23
|
+
stripAdditionalProperties: false,
|
|
24
|
+
stripForbiddenProperties: false,
|
|
25
|
+
stripOptionalNulls: false,
|
|
26
|
+
...options
|
|
27
|
+
};
|
|
22
28
|
return getValidator(validation).validate(value, opts);
|
|
23
29
|
}
|
|
24
30
|
function strip(validation, value, options) {
|
|
25
31
|
const opts = {
|
|
32
|
+
partialValidation: false,
|
|
26
33
|
stripAdditionalProperties: true,
|
|
27
34
|
stripForbiddenProperties: false,
|
|
28
35
|
stripOptionalNulls: true,
|
|
@@ -31,7 +38,13 @@ function strip(validation, value, options) {
|
|
|
31
38
|
return getValidator(validation).validate(value, opts);
|
|
32
39
|
}
|
|
33
40
|
function partial(validation, value, options) {
|
|
34
|
-
return getValidator(validation).validate(value, {
|
|
41
|
+
return getValidator(validation).validate(value, {
|
|
42
|
+
partialValidation: true,
|
|
43
|
+
stripAdditionalProperties: true,
|
|
44
|
+
stripForbiddenProperties: false,
|
|
45
|
+
stripOptionalNulls: true,
|
|
46
|
+
...options
|
|
47
|
+
});
|
|
35
48
|
}
|
|
36
49
|
export {
|
|
37
50
|
AllOfValidator,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": ";AAKA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,SAAS,cAAc,WAAW;AAClC,SAAS,mBAAmB,gBAAgB,OAAO,eAAe;AAClE,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,kBAAkB,eAAe;AAC1C,SAAS,mBAAmB,gBAAgB;AAC5C,SAAS,eAAe,YAAY;AACpC,SAAS,gBAAgB,aAAa;AACtC,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,oBAAoB,iBAAiB,QAAQ,gBAAgB;AACtE,SAAS,mBAAmB,gBAAgB;AAC5C,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,gBAAgB,aAAa;AACtC,SAAS,gBAAgB,gBAAgB,OAAO,aAAa;AAgB7D,SAAS,oBAAoB;AAUtB,SAAS,SACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B,
|
|
4
|
+
"mappings": ";AAKA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,SAAS,cAAc,WAAW;AAClC,SAAS,mBAAmB,gBAAgB,OAAO,eAAe;AAClE,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,kBAAkB,eAAe;AAC1C,SAAS,mBAAmB,gBAAgB;AAC5C,SAAS,eAAe,YAAY;AACpC,SAAS,gBAAgB,aAAa;AACtC,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,oBAAoB,iBAAiB,QAAQ,gBAAgB;AACtE,SAAS,mBAAmB,gBAAgB;AAC5C,SAAS,oBAAoB,iBAAiB,cAAc;AAC5D,SAAS,gBAAgB,aAAa;AACtC,SAAS,gBAAgB,gBAAgB,OAAO,aAAa;AAgB7D,SAAS,oBAAoB;AAUtB,SAAS,SACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AACA,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAiBO,SAAS,MACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AAEA,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAqBO,SAAS,QACZ,YACA,OACA,SAC2B;AAC7B,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO;AAAA,IAC9C,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -60,7 +60,7 @@ var ObjectValidator = class extends import_types.AbstractValidator {
|
|
|
60
60
|
const builder = new import_errors.ValidationErrorBuilder();
|
|
61
61
|
const clone = {};
|
|
62
62
|
for (const [key, validator] of this.validators.entries()) {
|
|
63
|
-
const optional = !!validator.optional;
|
|
63
|
+
const optional = !!validator.optional || !!partialValidation;
|
|
64
64
|
const original = record[key];
|
|
65
65
|
if (stripOptionalNulls && optional && original === null) {
|
|
66
66
|
continue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/object.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyD;AACzD,sBAAyB;AACzB,mBAAwD;AACxD,uBAA6B;AActB,IAAM,qBAAN,cAAiC,+BAAuC;AAAA,EAC7E,SAAS,OAAqC;AAC5C,wCAAiB,OAAO,UAAU,UAAU,0BAA0B;AACtE,wCAAiB,UAAU,MAAM,iBAAiB;AAClD,WAAO;AAAA,EACT;AACF;AAGO,IAAM,kBAAN,cAAgD,+BAAuD;AAAA,EACnG;AAAA,EAET,aAAa,oBAAI,IAAuB;AAAA,EACxC;AAAA,EAEA,YAAY,QAAW;AACrB,UAAM;AACN,UAAM,EAAE,CAAC,OAAO,yBAAyB,GAAG,YAAY,GAAG,WAAW,IAAI;AAE1E,QAAI;AAAY,WAAK,uBAAuB;AAE5C,eAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACzC,WAAK,WAAW,IAAI,SAAK,+BAAa,WAAW,GAAG,CAAC,CAAC;AAAA,IACxD;AAEA,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS,OAAgB,UAA6B,CAAC,GAAmB;AACxE,wCAAiB,OAAO,UAAU,UAAU,0BAA0B;AACtE,wCAAiB,UAAU,MAAM,iBAAiB;AAElD,UAAM,EAAE,2BAA2B,oBAAoB,kBAAkB,IAAI;AAE7E,UAAM,SAA0D;AAChE,UAAM,UAAU,IAAI,qCAAuB;AAC3C,UAAM,QAA6B,CAAC;AAEpC,eAAW,CAAE,KAAK,SAAU,KAAK,KAAK,WAAW,QAAQ,GAAG;AAC1D,YAAM,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -32,7 +32,7 @@ var ObjectValidator = class extends AbstractValidator {
|
|
|
32
32
|
const builder = new ValidationErrorBuilder();
|
|
33
33
|
const clone = {};
|
|
34
34
|
for (const [key, validator] of this.validators.entries()) {
|
|
35
|
-
const optional = !!validator.optional;
|
|
35
|
+
const optional = !!validator.optional || !!partialValidation;
|
|
36
36
|
const original = record[key];
|
|
37
37
|
if (stripOptionalNulls && optional && original === null) {
|
|
38
38
|
continue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/object.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,kBAAkB,8BAA8B;AACzD,SAAS,gBAAgB;AACzB,SAAS,mBAAmB,4BAA4B;AACxD,SAAS,oBAAoB;AActB,IAAM,qBAAN,cAAiC,kBAAuC;AAAA,EAC7E,SAAS,OAAqC;AAC5C,qBAAiB,OAAO,UAAU,UAAU,0BAA0B;AACtE,qBAAiB,UAAU,MAAM,iBAAiB;AAClD,WAAO;AAAA,EACT;AACF;AAGO,IAAM,kBAAN,cAAgD,kBAAuD;AAAA,EACnG;AAAA,EAET,aAAa,oBAAI,IAAuB;AAAA,EACxC;AAAA,EAEA,YAAY,QAAW;AACrB,UAAM;AACN,UAAM,EAAE,CAAC,OAAO,yBAAyB,GAAG,YAAY,GAAG,WAAW,IAAI;AAE1E,QAAI;AAAY,WAAK,uBAAuB;AAE5C,eAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACzC,WAAK,WAAW,IAAI,KAAK,aAAa,WAAW,GAAG,CAAC,CAAC;AAAA,IACxD;AAEA,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS,OAAgB,UAA6B,CAAC,GAAmB;AACxE,qBAAiB,OAAO,UAAU,UAAU,0BAA0B;AACtE,qBAAiB,UAAU,MAAM,iBAAiB;AAElD,UAAM,EAAE,2BAA2B,oBAAoB,kBAAkB,IAAI;AAE7E,UAAM,SAA0D;AAChE,UAAM,UAAU,IAAI,uBAAuB;AAC3C,UAAM,QAA6B,CAAC;AAEpC,eAAW,CAAE,KAAK,SAAU,KAAK,KAAK,WAAW,QAAQ,GAAG;AAC1D,YAAM,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "justus",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.22",
|
|
4
4
|
"description": "A JavaScript validation library, with types!",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"author": "Juit Developers <developers@juit.com>",
|
|
79
79
|
"license": "Apache-2.0",
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@plugjs/build": "^0.5.
|
|
82
|
-
"@plugjs/tsd": "^0.5.
|
|
81
|
+
"@plugjs/build": "^0.5.32",
|
|
82
|
+
"@plugjs/tsd": "^0.5.31",
|
|
83
83
|
"typescript": "^5.4.3"
|
|
84
84
|
},
|
|
85
85
|
"directories": {
|
package/src/index.ts
CHANGED
|
@@ -52,7 +52,13 @@ export function validate<V extends Validation>(
|
|
|
52
52
|
value: any,
|
|
53
53
|
options?: ValidationOptions,
|
|
54
54
|
): InferValidation<V> {
|
|
55
|
-
const opts: ValidationOptions = {
|
|
55
|
+
const opts: ValidationOptions = {
|
|
56
|
+
partialValidation: false,
|
|
57
|
+
stripAdditionalProperties: false,
|
|
58
|
+
stripForbiddenProperties: false,
|
|
59
|
+
stripOptionalNulls: false,
|
|
60
|
+
...options,
|
|
61
|
+
}
|
|
56
62
|
return getValidator(validation).validate(value, opts)
|
|
57
63
|
}
|
|
58
64
|
|
|
@@ -64,6 +70,7 @@ export function validate<V extends Validation>(
|
|
|
64
70
|
*
|
|
65
71
|
* ```
|
|
66
72
|
* validate(validation, value, {
|
|
73
|
+
* partialValidation: false,
|
|
67
74
|
* stripAdditionalProperties: true,
|
|
68
75
|
* stripForbiddenProperties: false,
|
|
69
76
|
* stripOptionalNulls: true,
|
|
@@ -76,6 +83,7 @@ export function strip<V extends Validation>(
|
|
|
76
83
|
options?: ValidationOptions,
|
|
77
84
|
): InferValidation<V> {
|
|
78
85
|
const opts: ValidationOptions = {
|
|
86
|
+
partialValidation: false,
|
|
79
87
|
stripAdditionalProperties: true,
|
|
80
88
|
stripForbiddenProperties: false,
|
|
81
89
|
stripOptionalNulls: true,
|
|
@@ -90,14 +98,30 @@ export function strip<V extends Validation>(
|
|
|
90
98
|
* additional properties and optional `null`s (but not forbidden ones), and
|
|
91
99
|
* treating all properties as optional.
|
|
92
100
|
*
|
|
93
|
-
* This is equivalent to
|
|
94
|
-
*
|
|
95
|
-
*
|
|
101
|
+
* This is equivalent to:
|
|
102
|
+
*
|
|
103
|
+
* ```
|
|
104
|
+
* validate(validation, value, {
|
|
105
|
+
* partialValidation: true,
|
|
106
|
+
* stripAdditionalProperties: true,
|
|
107
|
+
* stripForbiddenProperties: false,
|
|
108
|
+
* stripOptionalNulls: true,
|
|
109
|
+
* })
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* This function also correctly represents the returned type as a
|
|
113
|
+
* `Partial<...>` type.
|
|
96
114
|
*/
|
|
97
115
|
export function partial<V extends Validation>(
|
|
98
116
|
validation: V,
|
|
99
117
|
value: any,
|
|
100
118
|
options?: ValidationOptions,
|
|
101
119
|
): Partial<InferValidation<V>> {
|
|
102
|
-
return getValidator(validation).validate(value, {
|
|
120
|
+
return getValidator(validation).validate(value, {
|
|
121
|
+
partialValidation: true,
|
|
122
|
+
stripAdditionalProperties: true,
|
|
123
|
+
stripForbiddenProperties: false,
|
|
124
|
+
stripOptionalNulls: true,
|
|
125
|
+
...options,
|
|
126
|
+
})
|
|
103
127
|
}
|
package/src/validators/object.ts
CHANGED
|
@@ -54,7 +54,7 @@ export class ObjectValidator<S extends Schema> extends AbstractValidator<InferSc
|
|
|
54
54
|
const clone: Record<string, any> = {}
|
|
55
55
|
|
|
56
56
|
for (const [ key, validator ] of this.validators.entries()) {
|
|
57
|
-
const optional = !! validator.optional
|
|
57
|
+
const optional = (!! validator.optional) || (!! partialValidation)
|
|
58
58
|
const original = record[key]
|
|
59
59
|
|
|
60
60
|
// strip any optional "null" value if told to do so
|