justus 0.5.21 → 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 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 = { ...options };
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, { ...options, partialValidation: true });
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 = {
@@ -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,EAAE,GAAG,QAAQ;AAC7C,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAgBO,SAAS,MACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AAEA,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAWO,SAAS,QACZ,YACA,OACA,SAC2B;AAC7B,aAAO,+BAAa,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,mBAAmB,KAAK,CAAC;AACzF;",
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 setting the `partialValidation` option to `true` in
55
- * `validate(...)`, but this function correctly represents the returned type as
56
- * a `Partial<...>` type.
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 = { ...options };
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, { ...options, partialValidation: true });
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,
@@ -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,EAAE,GAAG,QAAQ;AAC7C,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAgBO,SAAS,MACZ,YACA,OACA,SACkB;AACpB,QAAM,OAA0B;AAAA,IAC9B,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL;AAEA,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO,IAAI;AACtD;AAWO,SAAS,QACZ,YACA,OACA,SAC2B;AAC7B,SAAO,aAAa,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,mBAAmB,KAAK,CAAC;AACzF;",
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": "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",
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": "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",
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.21",
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.31",
82
- "@plugjs/tsd": "^0.5.30",
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 = { ...options }
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 setting the `partialValidation` option to `true` in
94
- * `validate(...)`, but this function correctly represents the returned type as
95
- * a `Partial<...>` type.
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, { ...options, partialValidation: true })
120
+ return getValidator(validation).validate(value, {
121
+ partialValidation: true,
122
+ stripAdditionalProperties: true,
123
+ stripForbiddenProperties: false,
124
+ stripOptionalNulls: true,
125
+ ...options,
126
+ })
103
127
  }
@@ -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