@@ -4,34 +4,31 @@ import type {Kind} from '@sinclair/typebox';
4
4
import type { IfDefined , SchemaFrom } from '@typeschema/core' ;
5
5
import type { CoreValidator } from 'suretype' ;
6
6
7
- type IsTypeboxSchema < TSchema > = [ IfDefined < typeof Kind > ] extends [ never ]
8
- ? false
9
- : TSchema extends { [ Kind ] : unknown }
10
- ? true
11
- : false ;
7
+ // prettier-ignore
8
+ type IsTypeboxSchema < TSchema > =
9
+ [ IfDefined < typeof Kind > ] extends [ never ] ? false
10
+ : TSchema extends { [ Kind ] : unknown } ? true
11
+ : false ;
12
12
function isTypeboxSchema (
13
13
schema : SchemaFrom < AdapterResolver > ,
14
14
) : schema is SchemaFrom < AdapterResolvers [ 'typebox' ] > {
15
15
return typeof schema === 'object' && Symbol . for ( 'TypeBox.Kind' ) in schema ;
16
16
}
17
17
18
- type IsSuretypeSchema < TSchema > = [ IfDefined < CoreValidator < unknown > > ] extends [
19
- never ,
20
- ]
21
- ? false
22
- : TSchema extends CoreValidator < unknown >
23
- ? true
24
- : false ;
18
+ // prettier-ignore
19
+ type IsSuretypeSchema < TSchema > =
20
+ [ IfDefined < CoreValidator < unknown > > ] extends [ never ] ? false
21
+ : TSchema extends CoreValidator < unknown > ? true
22
+ : false ;
25
23
function isSuretypeSchema (
26
24
schema : SchemaFrom < AdapterResolver > ,
27
25
) : schema is SchemaFrom < AdapterResolvers [ 'suretype' ] > {
28
26
return typeof schema === 'object' && '_annotations' in schema ;
29
27
}
30
28
31
- type IsClassValidatorSchema < TSchema > = TSchema extends new (
32
- ...args : unknown [ ]
33
- ) => object
34
- ? true
29
+ // prettier-ignore
30
+ type IsClassValidatorSchema < TSchema > =
31
+ TSchema extends new ( ...args : unknown [ ] ) => object ? true
35
32
: false ;
36
33
function isClassValidatorSchema (
37
34
schema : SchemaFrom < AdapterResolver > ,
@@ -41,23 +38,17 @@ function isClassValidatorSchema(
41
38
) ;
42
39
}
43
40
44
- type IsJSONSchema < TSchema > = TSchema extends { type : unknown }
45
- ? true
46
- : TSchema extends { const : unknown }
47
- ? true
48
- : TSchema extends { enum : unknown }
49
- ? true
50
- : TSchema extends { anyOf : unknown }
51
- ? true
52
- : TSchema extends { oneOf : unknown }
53
- ? true
54
- : TSchema extends { allOf : unknown }
55
- ? true
56
- : TSchema extends { not : unknown }
57
- ? true
58
- : TSchema extends { if : unknown }
59
- ? true
60
- : false ;
41
+ // prettier-ignore
42
+ type IsJSONSchema < TSchema > =
43
+ TSchema extends { type : unknown } ? true
44
+ : TSchema extends { const : unknown } ? true
45
+ : TSchema extends { enum : unknown } ? true
46
+ : TSchema extends { anyOf : unknown } ? true
47
+ : TSchema extends { oneOf : unknown } ? true
48
+ : TSchema extends { allOf : unknown } ? true
49
+ : TSchema extends { not : unknown } ? true
50
+ : TSchema extends { if : unknown } ? true
51
+ : false ;
61
52
function isJSONSchema (
62
53
schema : SchemaFrom < AdapterResolver > ,
63
54
) : schema is SchemaFrom < AdapterResolvers [ 'json' ] > {
@@ -80,43 +71,30 @@ function notJSON<TSchema>(
80
71
return schema as any ;
81
72
}
82
73
74
+ // prettier-ignore
83
75
export type Select < TSchema > =
84
76
// eslint-disable-next-line @typescript-eslint/ban-types
85
77
TSchema extends Function
86
- ? TSchema extends { assert : unknown }
87
- ? 'arktype'
88
- : IsClassValidatorSchema < TSchema > extends true
89
- ? 'classValidator'
90
- : 'function'
91
- : IsTypeboxSchema < TSchema > extends true
92
- ? 'typebox'
93
- : IsSuretypeSchema < TSchema > extends true
94
- ? 'suretype'
95
- : TSchema extends { __isYupSchema__ : unknown }
96
- ? 'yup'
97
- : TSchema extends { _def : unknown }
98
- ? 'zod'
99
- : TSchema extends { async : unknown }
100
- ? 'valibot'
101
- : TSchema extends { refiner : unknown }
102
- ? 'superstruct'
103
- : TSchema extends { _flags : unknown }
104
- ? 'joi'
105
- : TSchema extends { encode : unknown }
106
- ? 'ioTs'
107
- : TSchema extends { reflect : unknown }
108
- ? 'runtypes'
109
- : TSchema extends { ast : unknown }
110
- ? 'effect'
111
- : TSchema extends { kind : unknown }
112
- ? 'deepkit'
113
- : TSchema extends { addValidator : unknown }
114
- ? 'ow'
115
- : TSchema extends { toTerminals : unknown }
116
- ? 'valita'
117
- : IsJSONSchema < TSchema > extends true
118
- ? 'json'
119
- : 'fastestValidator' ;
78
+ ? TSchema extends { assert : unknown } ? 'arktype'
79
+ : IsClassValidatorSchema < TSchema > extends true ? 'classValidator'
80
+ : 'function'
81
+ : TSchema extends object
82
+ ? IsTypeboxSchema < TSchema > extends true ? 'typebox'
83
+ : IsSuretypeSchema < TSchema > extends true ? 'suretype'
84
+ : TSchema extends { __isYupSchema__ : unknown } ? 'yup'
85
+ : TSchema extends { _def : unknown } ? 'zod'
86
+ : TSchema extends { async : unknown } ? 'valibot'
87
+ : TSchema extends { refiner : unknown } ? 'superstruct'
88
+ : TSchema extends { _flags : unknown } ? 'joi'
89
+ : TSchema extends { encode : unknown } ? 'ioTs'
90
+ : TSchema extends { reflect : unknown } ? 'runtypes'
91
+ : TSchema extends { ast : unknown } ? 'effect'
92
+ : TSchema extends { kind : unknown } ? 'deepkit'
93
+ : TSchema extends { addValidator : unknown } ? 'ow'
94
+ : TSchema extends { toTerminals : unknown } ? 'valita'
95
+ : IsJSONSchema < TSchema > extends true ? 'json'
96
+ : 'fastestValidator'
97
+ : never ;
120
98
121
99
export const select : <
122
100
TMap extends {
0 commit comments