@serum-enterprises/schema 2.0.1-beta.0 → 2.0.1-beta.2
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/build/Schema.js +17 -17
- package/package.json +1 -1
- package/src/Schema.ts +26 -26
- package/types/Schema.d.ts +12 -12
package/build/Schema.js
CHANGED
@@ -103,7 +103,7 @@ class AnyValidator extends Schema {
|
|
103
103
|
validate(data, path = 'data') {
|
104
104
|
if (!JSON.isJSON(data))
|
105
105
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be JSON`));
|
106
|
-
return result_1.Result.Ok(
|
106
|
+
return result_1.Result.Ok(data);
|
107
107
|
}
|
108
108
|
toJSON() {
|
109
109
|
return {
|
@@ -135,7 +135,7 @@ class BooleanValidator extends Schema {
|
|
135
135
|
this.#nullable = { flag: false };
|
136
136
|
this.#equals = { flag: false, value: false };
|
137
137
|
}
|
138
|
-
nullable(flag) {
|
138
|
+
nullable(flag = true) {
|
139
139
|
this.#nullable = { flag };
|
140
140
|
return this;
|
141
141
|
}
|
@@ -147,10 +147,10 @@ class BooleanValidator extends Schema {
|
|
147
147
|
if (JSON.isBoolean(data)) {
|
148
148
|
if (this.#equals.flag && this.#equals.value !== data)
|
149
149
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be ${this.#equals.value}${this.#nullable.flag ? '' : ' or Null'}`));
|
150
|
-
return result_1.Result.Ok(
|
150
|
+
return result_1.Result.Ok(data);
|
151
151
|
}
|
152
152
|
if (this.#nullable.flag && JSON.isNull(data))
|
153
|
-
return result_1.Result.Ok(
|
153
|
+
return result_1.Result.Ok(data);
|
154
154
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be a Boolean${this.#nullable.flag ? '' : ' or Null'}`));
|
155
155
|
}
|
156
156
|
toJSON() {
|
@@ -209,7 +209,7 @@ class NumberValidator extends Schema {
|
|
209
209
|
this.#min = { flag: false, value: 0 };
|
210
210
|
this.#max = { flag: false, value: 0 };
|
211
211
|
}
|
212
|
-
nullable(flag) {
|
212
|
+
nullable(flag = true) {
|
213
213
|
this.#nullable = { flag };
|
214
214
|
return this;
|
215
215
|
}
|
@@ -239,10 +239,10 @@ class NumberValidator extends Schema {
|
|
239
239
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be at least ${this.#min.value}`));
|
240
240
|
if (this.#max.flag && this.#max.value < data)
|
241
241
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be at most ${this.#max.value}`));
|
242
|
-
return result_1.Result.Ok(
|
242
|
+
return result_1.Result.Ok(data);
|
243
243
|
}
|
244
244
|
if (this.#nullable.flag && JSON.isNull(data))
|
245
|
-
return result_1.Result.Ok(
|
245
|
+
return result_1.Result.Ok(data);
|
246
246
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be a Number${this.#nullable.flag ? '' : ' or Null'}`));
|
247
247
|
}
|
248
248
|
toJSON() {
|
@@ -300,7 +300,7 @@ class StringValidator extends Schema {
|
|
300
300
|
this.#min = { flag: false, value: 0 };
|
301
301
|
this.#max = { flag: false, value: 0 };
|
302
302
|
}
|
303
|
-
nullable(flag) {
|
303
|
+
nullable(flag = true) {
|
304
304
|
this.#nullable = { flag };
|
305
305
|
return this;
|
306
306
|
}
|
@@ -324,10 +324,10 @@ class StringValidator extends Schema {
|
|
324
324
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be at least ${this.#min.value} characters long`));
|
325
325
|
if (this.#max.flag && this.#max.value < data.length)
|
326
326
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be at most ${this.#max.value} characters long`));
|
327
|
-
return result_1.Result.Ok(
|
327
|
+
return result_1.Result.Ok(data);
|
328
328
|
}
|
329
329
|
if (this.#nullable.flag && JSON.isNull(data))
|
330
|
-
return result_1.Result.Ok(
|
330
|
+
return result_1.Result.Ok(data);
|
331
331
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be a String${this.#nullable.flag ? '' : ' or Null'}`));
|
332
332
|
}
|
333
333
|
toJSON() {
|
@@ -447,10 +447,10 @@ class ArrayValidator extends Schema {
|
|
447
447
|
if (errors.length > 0)
|
448
448
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be a Tuple where every Element matches its respective Validator`, { cause: errors }));
|
449
449
|
}
|
450
|
-
return result_1.Result.Ok(
|
450
|
+
return result_1.Result.Ok(data);
|
451
451
|
}
|
452
452
|
if (this.#nullable.flag && JSON.isNull(data))
|
453
|
-
return result_1.Result.Ok(
|
453
|
+
return result_1.Result.Ok(data);
|
454
454
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be an Array${this.#nullable.flag ? '' : ' or Null'}`));
|
455
455
|
}
|
456
456
|
toJSON() {
|
@@ -540,10 +540,10 @@ class ObjectValidator extends Schema {
|
|
540
540
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to have only the Properties defined in the Schema`, { cause: errors }));
|
541
541
|
}
|
542
542
|
}
|
543
|
-
return result_1.Result.Ok(
|
543
|
+
return result_1.Result.Ok(data);
|
544
544
|
}
|
545
545
|
if (this.#nullable.flag && JSON.isNull(data))
|
546
|
-
return result_1.Result.Ok(
|
546
|
+
return result_1.Result.Ok(data);
|
547
547
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to be an Object${this.#nullable.flag ? '' : ' or Null'}`));
|
548
548
|
}
|
549
549
|
toJSON() {
|
@@ -598,9 +598,9 @@ class OrValidator extends Schema {
|
|
598
598
|
}, []);
|
599
599
|
if (errors.length === this.#oneOf.value.length)
|
600
600
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to match at least one of the OneOf Validators`, { cause: errors }));
|
601
|
-
return result_1.Result.Ok(
|
601
|
+
return result_1.Result.Ok(data);
|
602
602
|
}
|
603
|
-
return result_1.Result.Ok(
|
603
|
+
return result_1.Result.Ok(data);
|
604
604
|
}
|
605
605
|
toJSON() {
|
606
606
|
const schema = {
|
@@ -654,7 +654,7 @@ class AndValidator extends Schema {
|
|
654
654
|
if (errors.length > 0)
|
655
655
|
return result_1.Result.Err(new ValidationError(`Expected ${path} to match all of the AllOf Validators`, { cause: errors }));
|
656
656
|
}
|
657
|
-
return result_1.Result.Ok(
|
657
|
+
return result_1.Result.Ok(data);
|
658
658
|
}
|
659
659
|
toJSON() {
|
660
660
|
const schema = {
|
package/package.json
CHANGED
package/src/Schema.ts
CHANGED
@@ -63,7 +63,7 @@ export abstract class Schema {
|
|
63
63
|
return (registry.get(schema['type']) as typeof Schema).fromJSON(schema, path, registry);
|
64
64
|
}
|
65
65
|
|
66
|
-
abstract validate(data: unknown, path?: string): Result<
|
66
|
+
abstract validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
67
67
|
|
68
68
|
abstract toJSON(): JSON.Object;
|
69
69
|
}
|
@@ -82,11 +82,11 @@ class AnyValidator extends Schema {
|
|
82
82
|
super();
|
83
83
|
}
|
84
84
|
|
85
|
-
validate(data: unknown, path: string = 'data'): Result<
|
85
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
86
86
|
if (!JSON.isJSON(data))
|
87
87
|
return Result.Err(new ValidationError(`Expected ${path} to be JSON`));
|
88
88
|
|
89
|
-
return Result.Ok(
|
89
|
+
return Result.Ok(data);
|
90
90
|
}
|
91
91
|
|
92
92
|
toJSON(): JSON.Object {
|
@@ -129,7 +129,7 @@ class BooleanValidator extends Schema {
|
|
129
129
|
this.#equals = { flag: false, value: false };
|
130
130
|
}
|
131
131
|
|
132
|
-
nullable(flag: boolean): this {
|
132
|
+
nullable(flag: boolean = true): this {
|
133
133
|
this.#nullable = { flag };
|
134
134
|
|
135
135
|
return this;
|
@@ -141,16 +141,16 @@ class BooleanValidator extends Schema {
|
|
141
141
|
return this;
|
142
142
|
}
|
143
143
|
|
144
|
-
validate(data: unknown, path: string = 'data'): Result<
|
144
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
145
145
|
if (JSON.isBoolean(data)) {
|
146
146
|
if (this.#equals.flag && this.#equals.value !== data)
|
147
147
|
return Result.Err(new ValidationError(`Expected ${path} to be ${this.#equals.value}${this.#nullable.flag ? '' : ' or Null'}`));
|
148
148
|
|
149
|
-
return Result.Ok(
|
149
|
+
return Result.Ok(data);
|
150
150
|
}
|
151
151
|
|
152
152
|
if (this.#nullable.flag && JSON.isNull(data))
|
153
|
-
return Result.Ok(
|
153
|
+
return Result.Ok(data);
|
154
154
|
|
155
155
|
return Result.Err(new ValidationError(`Expected ${path} to be a Boolean${this.#nullable.flag ? '' : ' or Null'}`));
|
156
156
|
}
|
@@ -230,7 +230,7 @@ class NumberValidator extends Schema {
|
|
230
230
|
this.#max = { flag: false, value: 0 };
|
231
231
|
}
|
232
232
|
|
233
|
-
nullable(flag: boolean): this {
|
233
|
+
nullable(flag: boolean = true): this {
|
234
234
|
this.#nullable = { flag };
|
235
235
|
|
236
236
|
return this;
|
@@ -260,7 +260,7 @@ class NumberValidator extends Schema {
|
|
260
260
|
return this;
|
261
261
|
}
|
262
262
|
|
263
|
-
validate(data: unknown, path: string = 'data'): Result<
|
263
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
264
264
|
if (JSON.isNumber(data)) {
|
265
265
|
if (this.#equals.flag && this.#equals.value !== data)
|
266
266
|
return Result.Err(new ValidationError(`Expected ${path} to be ${this.#equals.value}`));
|
@@ -274,11 +274,11 @@ class NumberValidator extends Schema {
|
|
274
274
|
if (this.#max.flag && this.#max.value < data)
|
275
275
|
return Result.Err(new ValidationError(`Expected ${path} to be at most ${this.#max.value}`));
|
276
276
|
|
277
|
-
return Result.Ok(
|
277
|
+
return Result.Ok(data);
|
278
278
|
}
|
279
279
|
|
280
280
|
if (this.#nullable.flag && JSON.isNull(data))
|
281
|
-
return Result.Ok(
|
281
|
+
return Result.Ok(data);
|
282
282
|
|
283
283
|
return Result.Err(new ValidationError(`Expected ${path} to be a Number${this.#nullable.flag ? '' : ' or Null'}`));
|
284
284
|
}
|
@@ -358,7 +358,7 @@ class StringValidator extends Schema {
|
|
358
358
|
this.#max = { flag: false, value: 0 };
|
359
359
|
}
|
360
360
|
|
361
|
-
nullable(flag: boolean): this {
|
361
|
+
nullable(flag: boolean = true): this {
|
362
362
|
this.#nullable = { flag };
|
363
363
|
|
364
364
|
return this;
|
@@ -382,7 +382,7 @@ class StringValidator extends Schema {
|
|
382
382
|
return this;
|
383
383
|
}
|
384
384
|
|
385
|
-
validate(data: unknown, path: string = 'data'): Result<
|
385
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
386
386
|
if (JSON.isString(data)) {
|
387
387
|
if (this.#equals.flag && this.#equals.value !== data)
|
388
388
|
return Result.Err(new ValidationError(`Expected ${path} to be ${this.#equals.value}`));
|
@@ -393,11 +393,11 @@ class StringValidator extends Schema {
|
|
393
393
|
if (this.#max.flag && this.#max.value < data.length)
|
394
394
|
return Result.Err(new ValidationError(`Expected ${path} to be at most ${this.#max.value} characters long`));
|
395
395
|
|
396
|
-
return Result.Ok(
|
396
|
+
return Result.Ok(data);
|
397
397
|
}
|
398
398
|
|
399
399
|
if (this.#nullable.flag && JSON.isNull(data))
|
400
|
-
return Result.Ok(
|
400
|
+
return Result.Ok(data);
|
401
401
|
|
402
402
|
return Result.Err(new ValidationError(`Expected ${path} to be a String${this.#nullable.flag ? '' : ' or Null'}`));
|
403
403
|
|
@@ -537,7 +537,7 @@ class ArrayValidator extends Schema {
|
|
537
537
|
return this;
|
538
538
|
}
|
539
539
|
|
540
|
-
validate(data: unknown, path: string = 'data'): Result<
|
540
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
541
541
|
if (JSON.isArray(data)) {
|
542
542
|
if (this.#min.flag && this.#min.value > data.length)
|
543
543
|
return Result.Err(new ValidationError(`Expected ${path} to be at least ${this.#min.value} Elements long`));
|
@@ -568,11 +568,11 @@ class ArrayValidator extends Schema {
|
|
568
568
|
return Result.Err(new ValidationError(`Expected ${path} to be a Tuple where every Element matches its respective Validator`, { cause: errors }));
|
569
569
|
}
|
570
570
|
|
571
|
-
return Result.Ok(
|
571
|
+
return Result.Ok(data);
|
572
572
|
}
|
573
573
|
|
574
574
|
if (this.#nullable.flag && JSON.isNull(data))
|
575
|
-
return Result.Ok(
|
575
|
+
return Result.Ok(data);
|
576
576
|
|
577
577
|
return Result.Err(new ValidationError(`Expected ${path} to be an Array${this.#nullable.flag ? '' : ' or Null'}`));
|
578
578
|
}
|
@@ -676,7 +676,7 @@ class ObjectValidator extends Schema {
|
|
676
676
|
return this;
|
677
677
|
}
|
678
678
|
|
679
|
-
validate(data: unknown, path: string = 'data'): Result<
|
679
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
680
680
|
if (JSON.isObject(data)) {
|
681
681
|
if (this.#schema.flag) {
|
682
682
|
const errors: { [key: string]: ValidationError } = {};
|
@@ -701,11 +701,11 @@ class ObjectValidator extends Schema {
|
|
701
701
|
}
|
702
702
|
}
|
703
703
|
|
704
|
-
return Result.Ok(
|
704
|
+
return Result.Ok(data);
|
705
705
|
}
|
706
706
|
|
707
707
|
if (this.#nullable.flag && JSON.isNull(data))
|
708
|
-
return Result.Ok(
|
708
|
+
return Result.Ok(data);
|
709
709
|
|
710
710
|
return Result.Err(new ValidationError(`Expected ${path} to be an Object${this.#nullable.flag ? '' : ' or Null'}`));
|
711
711
|
}
|
@@ -770,7 +770,7 @@ class OrValidator extends Schema {
|
|
770
770
|
return this;
|
771
771
|
}
|
772
772
|
|
773
|
-
validate(data: unknown, path: string = 'data'): Result<
|
773
|
+
validate(data: unknown, path: string = 'data'): Result<unknown, ValidationError> {
|
774
774
|
if (!JSON.isJSON(data))
|
775
775
|
return Result.Err(new ValidationError(`Expected ${path} to be JSON`));
|
776
776
|
|
@@ -787,10 +787,10 @@ class OrValidator extends Schema {
|
|
787
787
|
if (errors.length === this.#oneOf.value.length)
|
788
788
|
return Result.Err(new ValidationError(`Expected ${path} to match at least one of the OneOf Validators`, { cause: errors }));
|
789
789
|
|
790
|
-
return Result.Ok(
|
790
|
+
return Result.Ok(data);
|
791
791
|
}
|
792
792
|
|
793
|
-
return Result.Ok(
|
793
|
+
return Result.Ok(data);
|
794
794
|
}
|
795
795
|
|
796
796
|
toJSON(): JSON.Object {
|
@@ -852,7 +852,7 @@ class AndValidator extends Schema {
|
|
852
852
|
return this;
|
853
853
|
}
|
854
854
|
|
855
|
-
validate(data: unknown, path?: string): Result<
|
855
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError> {
|
856
856
|
if (!JSON.isJSON(data))
|
857
857
|
return Result.Err(new ValidationError(`Expected ${path} to be JSON`));
|
858
858
|
|
@@ -870,7 +870,7 @@ class AndValidator extends Schema {
|
|
870
870
|
return Result.Err(new ValidationError(`Expected ${path} to match all of the AllOf Validators`, { cause: errors }));
|
871
871
|
}
|
872
872
|
|
873
|
-
return Result.Ok(
|
873
|
+
return Result.Ok(data);
|
874
874
|
|
875
875
|
}
|
876
876
|
|
package/types/Schema.d.ts
CHANGED
@@ -15,45 +15,45 @@ export declare abstract class Schema {
|
|
15
15
|
static get And(): AndValidator;
|
16
16
|
static get defaultRegistry(): Map<string, typeof Schema>;
|
17
17
|
static fromJSON(schema: JSON.JSON, path?: string, registry?: Map<string, typeof Schema>): Result<Schema, SchemaError>;
|
18
|
-
abstract validate(data: unknown, path?: string): Result<
|
18
|
+
abstract validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
19
19
|
abstract toJSON(): JSON.Object;
|
20
20
|
}
|
21
21
|
declare class AnyValidator extends Schema {
|
22
22
|
static fromJSON(schema: JSON.JSON, path?: string): Result<AnyValidator, SchemaError>;
|
23
23
|
constructor();
|
24
|
-
validate(data: unknown, path?: string): Result<
|
24
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
25
25
|
toJSON(): JSON.Object;
|
26
26
|
}
|
27
27
|
declare class BooleanValidator extends Schema {
|
28
28
|
#private;
|
29
29
|
static fromJSON(schema: JSON.JSON, path?: string): Result<BooleanValidator, SchemaError>;
|
30
30
|
constructor();
|
31
|
-
nullable(flag
|
31
|
+
nullable(flag?: boolean): this;
|
32
32
|
equals(value: boolean): this;
|
33
|
-
validate(data: unknown, path?: string): Result<
|
33
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
34
34
|
toJSON(): JSON.Object;
|
35
35
|
}
|
36
36
|
declare class NumberValidator extends Schema {
|
37
37
|
#private;
|
38
38
|
static fromJSON(schema: JSON.JSON, path?: string): Result<NumberValidator, SchemaError>;
|
39
39
|
constructor();
|
40
|
-
nullable(flag
|
40
|
+
nullable(flag?: boolean): this;
|
41
41
|
equals(value: number): this;
|
42
42
|
integer(flag?: boolean): this;
|
43
43
|
min(value: number): this;
|
44
44
|
max(value: number): this;
|
45
|
-
validate(data: unknown, path?: string): Result<
|
45
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
46
46
|
toJSON(): JSON.Object;
|
47
47
|
}
|
48
48
|
declare class StringValidator extends Schema {
|
49
49
|
#private;
|
50
50
|
static fromJSON(schema: JSON.JSON, path?: string): Result<StringValidator, SchemaError>;
|
51
51
|
constructor();
|
52
|
-
nullable(flag
|
52
|
+
nullable(flag?: boolean): this;
|
53
53
|
equals(value: string): this;
|
54
54
|
min(value: number): this;
|
55
55
|
max(value: number): this;
|
56
|
-
validate(data: unknown, path?: string): Result<
|
56
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
57
57
|
toJSON(): JSON.Object;
|
58
58
|
}
|
59
59
|
declare class ArrayValidator extends Schema {
|
@@ -65,7 +65,7 @@ declare class ArrayValidator extends Schema {
|
|
65
65
|
max(value: number): this;
|
66
66
|
every(validator: Schema): this;
|
67
67
|
tuple(validators: Schema[]): this;
|
68
|
-
validate(data: unknown, path?: string): Result<
|
68
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
69
69
|
toJSON(): JSON.Object;
|
70
70
|
}
|
71
71
|
declare class ObjectValidator extends Schema {
|
@@ -77,7 +77,7 @@ declare class ObjectValidator extends Schema {
|
|
77
77
|
schema(value: {
|
78
78
|
[key: string]: Schema;
|
79
79
|
}, flag?: boolean): this;
|
80
|
-
validate(data: unknown, path?: string): Result<
|
80
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
81
81
|
toJSON(): JSON.Object;
|
82
82
|
}
|
83
83
|
declare class OrValidator extends Schema {
|
@@ -85,7 +85,7 @@ declare class OrValidator extends Schema {
|
|
85
85
|
static fromJSON(schema: JSON.JSON, path?: string, registry?: Map<string, typeof Schema>): Result<OrValidator, SchemaError>;
|
86
86
|
constructor();
|
87
87
|
oneOf(validators: Schema[]): this;
|
88
|
-
validate(data: unknown, path?: string): Result<
|
88
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
89
89
|
toJSON(): JSON.Object;
|
90
90
|
}
|
91
91
|
declare class AndValidator extends Schema {
|
@@ -93,7 +93,7 @@ declare class AndValidator extends Schema {
|
|
93
93
|
static fromJSON(schema: JSON.JSON, path?: string, registry?: Map<string, typeof Schema>): Result<AndValidator, SchemaError>;
|
94
94
|
constructor();
|
95
95
|
allOf(validators: Schema[]): this;
|
96
|
-
validate(data: unknown, path?: string): Result<
|
96
|
+
validate(data: unknown, path?: string): Result<unknown, ValidationError>;
|
97
97
|
toJSON(): JSON.Object;
|
98
98
|
}
|
99
99
|
export {};
|