@cleverbrush/schema 1.0.0-beta.0 → 1.0.0-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/package.json +2 -2
- package/src/builders/UnionSchemaBuilder.ts +1 -6
- package/src/index.ts +1 -13
- package/src/schema.ts +9 -104
- package/src/schemaRegistry.builders.test.ts +35 -80
- package/src/schemaRegistry.test.ts +2 -1916
- package/src/schemaRegistry.ts +55 -126
- package/dist/builders/AliasSchemaBuilder.d.ts +0 -14
- package/dist/builders/AliasSchemaBuilder.js +0 -91
- package/dist/builders/ArraySchemaBuilder.d.ts +0 -15
- package/dist/builders/ArraySchemaBuilder.js +0 -141
- package/dist/builders/BooleanSchemaBuilder.d.ts +0 -31
- package/dist/builders/BooleanSchemaBuilder.js +0 -90
- package/dist/builders/FunctionSchemaBuilder.d.ts +0 -25
- package/dist/builders/FunctionSchemaBuilder.js +0 -66
- package/dist/builders/NumberSchemaBuilder.d.ts +0 -61
- package/dist/builders/NumberSchemaBuilder.js +0 -206
- package/dist/builders/ObjectSchemaBuilder.d.ts +0 -83
- package/dist/builders/ObjectSchemaBuilder.js +0 -344
- package/dist/builders/SchemaBuilder.d.ts +0 -36
- package/dist/builders/SchemaBuilder.js +0 -88
- package/dist/builders/StringSchemaBuilder.d.ts +0 -14
- package/dist/builders/StringSchemaBuilder.js +0 -140
- package/dist/builders/UnionSchemaBuilder.d.ts +0 -10
- package/dist/builders/UnionSchemaBuilder.js +0 -100
- package/dist/defaultSchemas.d.ts +0 -4
- package/dist/defaultSchemas.js +0 -45
- package/dist/index.d.ts +0 -42
- package/dist/index.js +0 -35
- package/dist/schema.d.ts +0 -242
- package/dist/schema.js +0 -2
- package/dist/schemaRegistry.d.ts +0 -54
- package/dist/schemaRegistry.js +0 -301
- package/dist/validators/validateArray.d.ts +0 -3
- package/dist/validators/validateArray.js +0 -60
- package/dist/validators/validateBoolean.d.ts +0 -2
- package/dist/validators/validateBoolean.js +0 -30
- package/dist/validators/validateFunction.d.ts +0 -2
- package/dist/validators/validateFunction.js +0 -21
- package/dist/validators/validateNumber.d.ts +0 -2
- package/dist/validators/validateNumber.js +0 -69
- package/dist/validators/validateObject.d.ts +0 -3
- package/dist/validators/validateObject.js +0 -95
- package/dist/validators/validateString.d.ts +0 -2
- package/dist/validators/validateString.js +0 -50
- package/dist/validators/validateUnion.d.ts +0 -3
- package/dist/validators/validateUnion.js +0 -30
- package/src/builders/AliasSchemaBuilder.test.ts +0 -124
- package/src/builders/AliasSchemaBuilder.ts +0 -250
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleverbrush/schema",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"object schema validator",
|
|
6
6
|
"schema",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"build": "tsc"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@cleverbrush/deep": "1.0.0-beta.
|
|
22
|
+
"@cleverbrush/deep": "1.0.0-beta.2"
|
|
23
23
|
},
|
|
24
24
|
"types": "./dist/index.d.ts"
|
|
25
25
|
}
|
|
@@ -33,12 +33,7 @@ class UnionSchemaBuilder<
|
|
|
33
33
|
},
|
|
34
34
|
this.getCommonSchema(),
|
|
35
35
|
{
|
|
36
|
-
variants: this._variants
|
|
37
|
-
if (variant instanceof SchemaBuilder) {
|
|
38
|
-
return variant._schema;
|
|
39
|
-
}
|
|
40
|
-
return JSON.parse(JSON.stringify(variant));
|
|
41
|
-
})
|
|
36
|
+
variants: this._variants
|
|
42
37
|
}
|
|
43
38
|
);
|
|
44
39
|
}
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
} from './schema.js';
|
|
6
6
|
import SchemaRegistry from './schemaRegistry.js';
|
|
7
7
|
|
|
8
|
-
import { alias } from './builders/AliasSchemaBuilder.js';
|
|
9
8
|
import { array } from './builders/ArraySchemaBuilder.js';
|
|
10
9
|
import { boolean } from './builders/BooleanSchemaBuilder.js';
|
|
11
10
|
import { number } from './builders/NumberSchemaBuilder.js';
|
|
@@ -55,7 +54,6 @@ export interface ISchemaRegistry<T extends Record<string, any>> {
|
|
|
55
54
|
export { SchemaRegistry };
|
|
56
55
|
export default {
|
|
57
56
|
SchemaRegistry,
|
|
58
|
-
alias,
|
|
59
57
|
array,
|
|
60
58
|
boolean,
|
|
61
59
|
number,
|
|
@@ -65,14 +63,4 @@ export default {
|
|
|
65
63
|
func
|
|
66
64
|
};
|
|
67
65
|
|
|
68
|
-
export {
|
|
69
|
-
alias,
|
|
70
|
-
array,
|
|
71
|
-
boolean,
|
|
72
|
-
number,
|
|
73
|
-
object,
|
|
74
|
-
string,
|
|
75
|
-
union,
|
|
76
|
-
func,
|
|
77
|
-
InferType
|
|
78
|
-
};
|
|
66
|
+
export { array, boolean, number, object, string, union, func, InferType };
|
package/src/schema.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ISchemaBuilder } from './builders/SchemaBuilder.js';
|
|
2
|
-
import { IAliasSchemaBuilder } from './builders/AliasSchemaBuilder.js';
|
|
3
2
|
import { IUnionSchemaBuilder } from './builders/UnionSchemaBuilder.js';
|
|
4
3
|
import { IStringSchemaBuilder } from './builders/StringSchemaBuilder.js';
|
|
5
4
|
import { IObjectSchemaBuilder } from './builders/ObjectSchemaBuilder.js';
|
|
@@ -179,25 +178,11 @@ export type Schema<T = any> = T extends Record<string, any>
|
|
|
179
178
|
? BooleanSchema | boolean
|
|
180
179
|
: number | DefaultSchemaType | SchemaSpecification | Schema[];
|
|
181
180
|
|
|
182
|
-
export type MakeOptional<T> = T extends
|
|
183
|
-
infer TSchemaName,
|
|
181
|
+
export type MakeOptional<T> = T extends IUnionSchemaBuilder<
|
|
184
182
|
infer TRequired,
|
|
185
183
|
infer TNullable,
|
|
186
|
-
infer
|
|
187
|
-
infer TAliasesCompiledType
|
|
184
|
+
infer TVariants
|
|
188
185
|
>
|
|
189
|
-
? IAliasSchemaBuilder<
|
|
190
|
-
TSchemaName,
|
|
191
|
-
false,
|
|
192
|
-
TNullable,
|
|
193
|
-
TAliases,
|
|
194
|
-
TAliasesCompiledType
|
|
195
|
-
>
|
|
196
|
-
: T extends IUnionSchemaBuilder<
|
|
197
|
-
infer TRequired,
|
|
198
|
-
infer TNullable,
|
|
199
|
-
infer TVariants
|
|
200
|
-
>
|
|
201
186
|
? IUnionSchemaBuilder<false, TNullable, TVariants>
|
|
202
187
|
: T extends IStringSchemaBuilder<
|
|
203
188
|
infer TRequired,
|
|
@@ -259,25 +244,11 @@ export type MakeOptional<T> = T extends IAliasSchemaBuilder<
|
|
|
259
244
|
? IFunctionSchemaBuilder<false, TNullable>
|
|
260
245
|
: T & { isRequired: false };
|
|
261
246
|
|
|
262
|
-
export type MakeRequired<T> = T extends
|
|
263
|
-
infer TSchemaName,
|
|
247
|
+
export type MakeRequired<T> = T extends IUnionSchemaBuilder<
|
|
264
248
|
infer TRequired,
|
|
265
249
|
infer TNullable,
|
|
266
|
-
infer
|
|
267
|
-
infer TAliasesCompiledType
|
|
250
|
+
infer TVariants
|
|
268
251
|
>
|
|
269
|
-
? IAliasSchemaBuilder<
|
|
270
|
-
TSchemaName,
|
|
271
|
-
true,
|
|
272
|
-
TNullable,
|
|
273
|
-
TAliases,
|
|
274
|
-
TAliasesCompiledType
|
|
275
|
-
>
|
|
276
|
-
: T extends IUnionSchemaBuilder<
|
|
277
|
-
infer TRequired,
|
|
278
|
-
infer TNullable,
|
|
279
|
-
infer TVariants
|
|
280
|
-
>
|
|
281
252
|
? IUnionSchemaBuilder<true, TNullable, TVariants>
|
|
282
253
|
: T extends IStringSchemaBuilder<
|
|
283
254
|
infer TRequired,
|
|
@@ -339,25 +310,11 @@ export type MakeRequired<T> = T extends IAliasSchemaBuilder<
|
|
|
339
310
|
? IFunctionSchemaBuilder<true, TNullable>
|
|
340
311
|
: T & { isRequired: true };
|
|
341
312
|
|
|
342
|
-
export type MakeNullable<T> = T extends
|
|
343
|
-
infer TSchemaName,
|
|
313
|
+
export type MakeNullable<T> = T extends IUnionSchemaBuilder<
|
|
344
314
|
infer TRequired,
|
|
345
315
|
infer TNullable,
|
|
346
|
-
infer
|
|
347
|
-
infer TAliasesCompiledType
|
|
316
|
+
infer TVariants
|
|
348
317
|
>
|
|
349
|
-
? IAliasSchemaBuilder<
|
|
350
|
-
TSchemaName,
|
|
351
|
-
TRequired,
|
|
352
|
-
true,
|
|
353
|
-
TAliases,
|
|
354
|
-
TAliasesCompiledType
|
|
355
|
-
>
|
|
356
|
-
: T extends IUnionSchemaBuilder<
|
|
357
|
-
infer TRequired,
|
|
358
|
-
infer TNullable,
|
|
359
|
-
infer TVariants
|
|
360
|
-
>
|
|
361
318
|
? IUnionSchemaBuilder<TRequired, true, TVariants>
|
|
362
319
|
: T extends IStringSchemaBuilder<
|
|
363
320
|
infer TRequired,
|
|
@@ -419,25 +376,11 @@ export type MakeNullable<T> = T extends IAliasSchemaBuilder<
|
|
|
419
376
|
? IFunctionSchemaBuilder<TRequired, true>
|
|
420
377
|
: T & { isNullable: true };
|
|
421
378
|
|
|
422
|
-
export type MakeNotNullable<T> = T extends
|
|
423
|
-
infer TSchemaName,
|
|
379
|
+
export type MakeNotNullable<T> = T extends IUnionSchemaBuilder<
|
|
424
380
|
infer TRequired,
|
|
425
381
|
infer TNullable,
|
|
426
|
-
infer
|
|
427
|
-
infer TAliasesCompiledType
|
|
382
|
+
infer TVariants
|
|
428
383
|
>
|
|
429
|
-
? IAliasSchemaBuilder<
|
|
430
|
-
TSchemaName,
|
|
431
|
-
TRequired,
|
|
432
|
-
false,
|
|
433
|
-
TAliases,
|
|
434
|
-
TAliasesCompiledType
|
|
435
|
-
>
|
|
436
|
-
: T extends IUnionSchemaBuilder<
|
|
437
|
-
infer TRequired,
|
|
438
|
-
infer TNullable,
|
|
439
|
-
infer TVariants
|
|
440
|
-
>
|
|
441
384
|
? IUnionSchemaBuilder<TRequired, false, TVariants>
|
|
442
385
|
: T extends IStringSchemaBuilder<
|
|
443
386
|
infer TRequired,
|
|
@@ -504,7 +447,7 @@ export type ExpandUnionVariants<TVariants extends any[]> = TVariants extends [
|
|
|
504
447
|
]
|
|
505
448
|
? [ExpandSchemaBuilder<T>]
|
|
506
449
|
: TVariants extends [infer T, ...infer Rest]
|
|
507
|
-
? [ExpandSchemaBuilder<T>, ExpandUnionVariants<[...Rest]>]
|
|
450
|
+
? [ExpandSchemaBuilder<T>, ...ExpandUnionVariants<[...Rest]>]
|
|
508
451
|
: never;
|
|
509
452
|
|
|
510
453
|
export type ExpandSchemaBuilder<TSchema> = TSchema extends [
|
|
@@ -588,21 +531,6 @@ export type ExpandSchemaBuilder<TSchema> = TSchema extends [
|
|
|
588
531
|
undefined
|
|
589
532
|
>
|
|
590
533
|
: INumberSchemaBuilder
|
|
591
|
-
: TType extends 'alias'
|
|
592
|
-
? TParams extends [
|
|
593
|
-
infer TSchemaName extends string,
|
|
594
|
-
infer TRequired extends boolean,
|
|
595
|
-
infer TNullable extends boolean,
|
|
596
|
-
infer TAliasesCompiledType
|
|
597
|
-
]
|
|
598
|
-
? IAliasSchemaBuilder<
|
|
599
|
-
TSchemaName,
|
|
600
|
-
TRequired,
|
|
601
|
-
TNullable,
|
|
602
|
-
any,
|
|
603
|
-
TAliasesCompiledType
|
|
604
|
-
>
|
|
605
|
-
: IAliasSchemaBuilder<any>
|
|
606
534
|
: TType extends 'array'
|
|
607
535
|
? TParams extends [
|
|
608
536
|
infer TRequired extends boolean,
|
|
@@ -700,19 +628,6 @@ export type ReduceSchemaBuilder<TBuilder> =
|
|
|
700
628
|
TEnsureIsFinite,
|
|
701
629
|
TEqualsTo
|
|
702
630
|
]
|
|
703
|
-
: TBuilder extends IAliasSchemaBuilder<
|
|
704
|
-
infer TSchemaName,
|
|
705
|
-
infer TRequired,
|
|
706
|
-
infer TNullable,
|
|
707
|
-
infer TAliases
|
|
708
|
-
>
|
|
709
|
-
? [
|
|
710
|
-
'alias',
|
|
711
|
-
TSchemaName,
|
|
712
|
-
TRequired,
|
|
713
|
-
TNullable,
|
|
714
|
-
InferType<ExpandSchemaBuilder<TAliases[TSchemaName]>>
|
|
715
|
-
]
|
|
716
631
|
: TBuilder extends IArraySchemaBuilder<
|
|
717
632
|
infer TRequired,
|
|
718
633
|
infer TNullable,
|
|
@@ -849,16 +764,6 @@ export type InferType<S> = S extends DefaultSchemaType
|
|
|
849
764
|
? TRequired extends true
|
|
850
765
|
? InferType<TVariants>
|
|
851
766
|
: InferType<TVariants> | undefined
|
|
852
|
-
: S extends IAliasSchemaBuilder<
|
|
853
|
-
infer TSchemaName,
|
|
854
|
-
infer TRequired,
|
|
855
|
-
infer TNullable,
|
|
856
|
-
infer TAliases,
|
|
857
|
-
infer TAliasesCompiledType
|
|
858
|
-
>
|
|
859
|
-
? TRequired extends true
|
|
860
|
-
? TAliasesCompiledType
|
|
861
|
-
: TAliasesCompiledType | undefined
|
|
862
767
|
: S extends IArraySchemaBuilder<
|
|
863
768
|
infer TRequired,
|
|
864
769
|
infer TNullable,
|
|
@@ -5,7 +5,6 @@ import { string } from './builders/StringSchemaBuilder.js';
|
|
|
5
5
|
import { array } from './builders/ArraySchemaBuilder.js';
|
|
6
6
|
import { union } from './builders/UnionSchemaBuilder.js';
|
|
7
7
|
import { boolean } from './builders/BooleanSchemaBuilder.js';
|
|
8
|
-
import { alias } from './builders/AliasSchemaBuilder.js';
|
|
9
8
|
|
|
10
9
|
import SchemaRegistry from './schemaRegistry.js';
|
|
11
10
|
|
|
@@ -702,7 +701,7 @@ test('Validate schema - 2', async () => {
|
|
|
702
701
|
|
|
703
702
|
const result = await validator.validate(
|
|
704
703
|
object({
|
|
705
|
-
date:
|
|
704
|
+
date: validator.schemas.Date.schema.optional()
|
|
706
705
|
}),
|
|
707
706
|
{}
|
|
708
707
|
);
|
|
@@ -710,52 +709,6 @@ test('Validate schema - 2', async () => {
|
|
|
710
709
|
expect(result).toHaveProperty('valid', true);
|
|
711
710
|
});
|
|
712
711
|
|
|
713
|
-
test('Not required alternative schema alias', async () => {
|
|
714
|
-
const validator = new SchemaRegistry()
|
|
715
|
-
.addSchema('Alternate1', ({ object, string }) =>
|
|
716
|
-
object({
|
|
717
|
-
a1: string()
|
|
718
|
-
})
|
|
719
|
-
)
|
|
720
|
-
.addSchema('Alternate2', ({ object, string }) =>
|
|
721
|
-
object({
|
|
722
|
-
a2: string()
|
|
723
|
-
})
|
|
724
|
-
)
|
|
725
|
-
.addSchema('Alternate', ({ union, alias }) =>
|
|
726
|
-
union(alias('Alternate1')).or(alias('Alternate2'))
|
|
727
|
-
);
|
|
728
|
-
|
|
729
|
-
const s = alias('Alternate').optional();
|
|
730
|
-
let result = await validator.validate(s, undefined);
|
|
731
|
-
|
|
732
|
-
expect(result).toHaveProperty('valid', true);
|
|
733
|
-
|
|
734
|
-
result = await validator.validate(
|
|
735
|
-
{
|
|
736
|
-
type: 'alias',
|
|
737
|
-
isRequired: false,
|
|
738
|
-
schemaName: 'Alternate'
|
|
739
|
-
},
|
|
740
|
-
{
|
|
741
|
-
a2: 'something'
|
|
742
|
-
}
|
|
743
|
-
);
|
|
744
|
-
|
|
745
|
-
expect(result).toHaveProperty('valid', true);
|
|
746
|
-
|
|
747
|
-
result = await validator.validate(
|
|
748
|
-
{
|
|
749
|
-
type: 'alias',
|
|
750
|
-
isRequired: false,
|
|
751
|
-
schemaName: 'Alternate'
|
|
752
|
-
},
|
|
753
|
-
'invalid'
|
|
754
|
-
);
|
|
755
|
-
|
|
756
|
-
expect(result).toHaveProperty('valid', false);
|
|
757
|
-
});
|
|
758
|
-
|
|
759
712
|
test('Preprocessors - 1', async () => {
|
|
760
713
|
const validator = new SchemaRegistry().addSchema(
|
|
761
714
|
'Date',
|
|
@@ -772,7 +725,7 @@ test('Preprocessors - 1', async () => {
|
|
|
772
725
|
);
|
|
773
726
|
|
|
774
727
|
const schema = object({
|
|
775
|
-
bornAt:
|
|
728
|
+
bornAt: validator.schemas.Date.schema
|
|
776
729
|
}).setPropPreprocessor('bornAt', (value: any): Date | undefined => {
|
|
777
730
|
const time = Date.parse((value as Record<string, unknown>).toString());
|
|
778
731
|
if (Number.isNaN(time)) return undefined;
|
|
@@ -800,7 +753,7 @@ test('Preprocessors - 2', async () => {
|
|
|
800
753
|
);
|
|
801
754
|
|
|
802
755
|
let schema = object({
|
|
803
|
-
bornAt:
|
|
756
|
+
bornAt: validator.schemas.Date.schema
|
|
804
757
|
}).setPropPreprocessor('bornAt', 'StringToDate');
|
|
805
758
|
|
|
806
759
|
validator.addPreprocessor(
|
|
@@ -833,8 +786,8 @@ test('Preprocessors - 2', async () => {
|
|
|
833
786
|
expect(result).toHaveProperty('valid', true);
|
|
834
787
|
|
|
835
788
|
schema = object({
|
|
836
|
-
bornAt:
|
|
837
|
-
diedAt:
|
|
789
|
+
bornAt: validator.schemas.Date.schema,
|
|
790
|
+
diedAt: validator.schemas.Date.schema
|
|
838
791
|
})
|
|
839
792
|
.setPropPreprocessor('bornAt', 'StringToDate')
|
|
840
793
|
.setPropPreprocessor('diedAt', 'Unregistered') as any;
|
|
@@ -873,7 +826,9 @@ test('Preprocessors - 3', async () => {
|
|
|
873
826
|
let obj = [new Date().toJSON()];
|
|
874
827
|
|
|
875
828
|
let result = await validator.validate(
|
|
876
|
-
array()
|
|
829
|
+
array()
|
|
830
|
+
.ofType(validator.schemas.Date.schema)
|
|
831
|
+
.addPreprocessor('StringToDate'),
|
|
877
832
|
obj
|
|
878
833
|
);
|
|
879
834
|
expect(result).toHaveProperty('valid', true);
|
|
@@ -881,7 +836,7 @@ test('Preprocessors - 3', async () => {
|
|
|
881
836
|
obj = [new Date().toJSON()];
|
|
882
837
|
result = await validator.validate(
|
|
883
838
|
array()
|
|
884
|
-
.ofType(
|
|
839
|
+
.ofType(validator.schemas.Date.schema)
|
|
885
840
|
.addPreprocessor((value: unknown): Date | undefined => {
|
|
886
841
|
const time = Date.parse(
|
|
887
842
|
(value as Record<string, unknown>).toString()
|
|
@@ -896,7 +851,7 @@ test('Preprocessors - 3', async () => {
|
|
|
896
851
|
obj = ['sdfsdf12', new Date().toJSON()];
|
|
897
852
|
result = await validator.validate(
|
|
898
853
|
array()
|
|
899
|
-
.ofType(
|
|
854
|
+
.ofType(validator.schemas.Date.schema)
|
|
900
855
|
.addPreprocessor((value: unknown): Date | undefined => {
|
|
901
856
|
const time = Date.parse(
|
|
902
857
|
(value as Record<string, unknown>).toString()
|
|
@@ -961,7 +916,9 @@ test('Preprocessors - 4', async () => {
|
|
|
961
916
|
let obj = [new Date().toJSON()];
|
|
962
917
|
|
|
963
918
|
let result = await validator.validate(
|
|
964
|
-
array()
|
|
919
|
+
array()
|
|
920
|
+
.ofType(validator.schemas.Date.schema)
|
|
921
|
+
.addPreprocessor('StringToDate'),
|
|
965
922
|
obj
|
|
966
923
|
);
|
|
967
924
|
expect(result).toHaveProperty('valid', true);
|
|
@@ -969,7 +926,7 @@ test('Preprocessors - 4', async () => {
|
|
|
969
926
|
obj = [new Date().toJSON()];
|
|
970
927
|
result = await validator.validate(
|
|
971
928
|
array()
|
|
972
|
-
.ofType(
|
|
929
|
+
.ofType(validator.schemas.Date.schema)
|
|
973
930
|
.addPreprocessor((value: unknown): Date | undefined => {
|
|
974
931
|
const time = Date.parse(
|
|
975
932
|
(value as Record<string, unknown>).toString()
|
|
@@ -984,7 +941,7 @@ test('Preprocessors - 4', async () => {
|
|
|
984
941
|
obj = ['sdfsdf12', new Date().toJSON()];
|
|
985
942
|
result = await validator.validate(
|
|
986
943
|
array()
|
|
987
|
-
.ofType(
|
|
944
|
+
.ofType(validator.schemas.Date.schema)
|
|
988
945
|
.addPreprocessor((value: unknown): Date | undefined => {
|
|
989
946
|
const time = Date.parse(
|
|
990
947
|
(value as Record<string, unknown>).toString()
|
|
@@ -1039,23 +996,21 @@ test('Submodules - 3', async () => {
|
|
|
1039
996
|
});
|
|
1040
997
|
|
|
1041
998
|
test('Submodules - 4', async () => {
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
}
|
|
1058
|
-
}).catch((e) => expect(e).toBeInstanceOf(Error));
|
|
999
|
+
try {
|
|
1000
|
+
new SchemaRegistry()
|
|
1001
|
+
.addSchema('Module1.Schema1', ({ object, number }) =>
|
|
1002
|
+
object({
|
|
1003
|
+
b: number()
|
|
1004
|
+
})
|
|
1005
|
+
)
|
|
1006
|
+
.addSchema('Module1.Schema2', ({ object, alias }) =>
|
|
1007
|
+
object({
|
|
1008
|
+
a: alias('Module1.Schema3' as any)
|
|
1009
|
+
})
|
|
1010
|
+
);
|
|
1011
|
+
} catch (e) {
|
|
1012
|
+
expect(e).toBeInstanceOf(Error);
|
|
1013
|
+
}
|
|
1059
1014
|
});
|
|
1060
1015
|
|
|
1061
1016
|
test('No unknown fields - 1', async () => {
|
|
@@ -1098,8 +1053,8 @@ test('addSchemaFrom - 1', async () => {
|
|
|
1098
1053
|
last: string()
|
|
1099
1054
|
})
|
|
1100
1055
|
)
|
|
1101
|
-
.addSchemaFrom('Person', 'PersonWithEmail', ({
|
|
1102
|
-
|
|
1056
|
+
.addSchemaFrom('Person', 'PersonWithEmail', ({ base, string }) =>
|
|
1057
|
+
base.addProps({
|
|
1103
1058
|
email: string()
|
|
1104
1059
|
})
|
|
1105
1060
|
);
|
|
@@ -1168,8 +1123,8 @@ test('no unknown props allowed by default', async () => {
|
|
|
1168
1123
|
|
|
1169
1124
|
expect(valid).toEqual(false);
|
|
1170
1125
|
|
|
1171
|
-
const registry2 = registry.addSchemaFrom('User', 'UserOpen', ({
|
|
1172
|
-
|
|
1126
|
+
const registry2 = registry.addSchemaFrom('User', 'UserOpen', ({ base }) =>
|
|
1127
|
+
base.canHaveUnknownProps()
|
|
1173
1128
|
);
|
|
1174
1129
|
|
|
1175
1130
|
const { valid: valid2 } = await registry2.schemas.UserOpen.validate({
|
|
@@ -1347,7 +1302,7 @@ test('External Schema - 2', async () => {
|
|
|
1347
1302
|
object({
|
|
1348
1303
|
name: string().addValidator(() => ({ valid: true })),
|
|
1349
1304
|
director: external(validator1, 'person')
|
|
1350
|
-
}).addValidator((
|
|
1305
|
+
}).addValidator(() => ({ valid: true }))
|
|
1351
1306
|
);
|
|
1352
1307
|
|
|
1353
1308
|
const result = await validator2.schemas.company.validate({
|