1
+ type AnySchema = NullSchema | BooleanSchema | NumberSchema | StringSchema | AnyEnumSchema | AnyArraySchema | AnyObjectSchema
2
+
1
3
interface NullSchema {
2
4
type : 'null'
3
5
}
@@ -14,20 +16,19 @@ interface StringSchema {
14
16
type : 'string'
15
17
}
16
18
17
- type LeafSchema = NullSchema | BooleanSchema | NumberSchema | StringSchema
18
-
19
+ interface AnyEnumSchema extends EnumSchema < any > { }
19
20
interface EnumSchema < T > {
20
21
enum : T [ ]
21
22
}
22
23
23
- interface ArraySchema < T extends LeafSchema | EnumSchema < any > | ArraySchema < LeafSchema | EnumSchema < any > | ObjectSchema < ObjectProps , any > > | ObjectSchema < ObjectProps , any > > {
24
+ interface AnyArraySchema extends ArraySchema < AnySchema > { }
25
+ interface ArraySchema < T extends AnySchema > {
24
26
type : 'array'
25
27
items : T
26
28
}
27
29
28
- type ObjectProps = { [ K in string ] : LeafSchema | EnumSchema < any > | ArraySchema < LeafSchema | EnumSchema < any > | ArraySchema < LeafSchema | EnumSchema < any > | ObjectSchema < ObjectProps , any > > | ObjectSchema < ObjectProps , any > > | ObjectSchema < ObjectProps , any > }
29
-
30
- interface ObjectSchema < T extends ObjectProps , R extends keyof T > {
30
+ interface AnyObjectSchema extends ObjectSchema < Record < string , AnySchema > , string > { }
31
+ interface ObjectSchema < T extends Record < string , AnySchema > , R extends keyof T > {
31
32
additionalProperties ?: boolean
32
33
type : 'object'
33
34
properties : T
@@ -51,13 +52,6 @@ declare type ExtractSchemaType<Type> = (
51
52
: never
52
53
)
53
54
54
- declare type GenericSchema = (
55
- { enum : any [ ] } |
56
- { type : 'string' | 'number' | 'boolean' | 'null' } |
57
- { type : 'array' , items : GenericSchema } |
58
- { type : 'object' , properties : ObjectProps }
59
- )
60
-
61
55
declare namespace factory {
62
56
interface ValidationError {
63
57
field : string
@@ -78,11 +72,11 @@ declare interface Filter<Output> {
78
72
}
79
73
80
74
declare interface Factory {
81
- < T extends ObjectProps , R extends keyof T > ( schema : ObjectSchema < T , R > , options ?: any ) : Validator < ObjectSchema < T , R > >
82
- < T extends GenericSchema > ( schema : T , options ?: any ) : Validator < T >
75
+ < T extends Record < string , AnySchema > , R extends keyof T > ( schema : ObjectSchema < T , R > , options ?: any ) : Validator < ObjectSchema < T , R > >
76
+ < T extends AnySchema > ( schema : T , options ?: any ) : Validator < T >
83
77
84
- createFilter < T extends ObjectProps , R extends keyof T > ( schema : ObjectSchema < T , R > , options ?: any ) : Filter < ExtractedSchemaObject < T , R > >
85
- createFilter < T extends GenericSchema > ( schema : T , options ?: any ) : Filter < ExtractSchemaType < T > >
78
+ createFilter < T extends Record < string , AnySchema > , R extends keyof T > ( schema : ObjectSchema < T , R > , options ?: any ) : Filter < ExtractedSchemaObject < T , R > >
79
+ createFilter < T extends AnySchema > ( schema : T , options ?: any ) : Filter < ExtractSchemaType < T > >
86
80
}
87
81
88
82
declare const factory : Factory
0 commit comments