|
1 | | -import type { MaybeArray, Prettify } from "@clerc/utils"; |
| 1 | +import type { IsAny, MaybeArray, Prettify } from "@clerc/utils"; |
2 | 2 |
|
3 | 3 | import type { KNOWN_FLAG, PARAMETER, UNKNOWN_FLAG } from "./iterator"; |
4 | 4 |
|
@@ -115,25 +115,36 @@ type InferFlagDefault<T extends FlagDefinitionValue, Fallback> = T extends { |
115 | 115 | ? DefaultType |
116 | 116 | : Fallback; |
117 | 117 |
|
| 118 | +type IsTypeAny<T extends FlagDefinitionValue> = |
| 119 | + IsAny<T> extends true |
| 120 | + ? true |
| 121 | + : T extends { type: infer Type } |
| 122 | + ? IsAny<Type> extends true |
| 123 | + ? true |
| 124 | + : false |
| 125 | + : false; |
| 126 | + |
118 | 127 | type _InferFlags<T extends FlagsDefinition> = { |
119 | | - [K in keyof T]: T[K] extends |
120 | | - | readonly [BooleanConstructor] |
121 | | - | { type: readonly [BooleanConstructor] } |
122 | | - ? number |
123 | | - : T[K] extends ObjectConstructor | { type: ObjectConstructor } |
124 | | - ? ObjectInputType |
125 | | - : T[K] extends |
126 | | - | readonly [FlagType<infer U>] |
127 | | - | { type: readonly [FlagType<infer U>] } |
128 | | - ? U[] | InferFlagDefault<T[K], never> |
129 | | - : T[K] extends FlagType<infer U> | { type: FlagType<infer U> } |
130 | | - ? |
131 | | - | U |
132 | | - | InferFlagDefault< |
133 | | - T[K], |
134 | | - [U] extends [boolean] ? never : undefined |
135 | | - > |
136 | | - : never; |
| 128 | + [K in keyof T]: IsTypeAny<T[K]> extends true |
| 129 | + ? any |
| 130 | + : T[K] extends |
| 131 | + | readonly [BooleanConstructor] |
| 132 | + | { type: readonly [BooleanConstructor] } |
| 133 | + ? number |
| 134 | + : T[K] extends ObjectConstructor | { type: ObjectConstructor } |
| 135 | + ? ObjectInputType |
| 136 | + : T[K] extends |
| 137 | + | readonly [FlagType<infer U>] |
| 138 | + | { type: readonly [FlagType<infer U>] } |
| 139 | + ? U[] | InferFlagDefault<T[K], never> |
| 140 | + : T[K] extends FlagType<infer U> | { type: FlagType<infer U> } |
| 141 | + ? |
| 142 | + | U |
| 143 | + | InferFlagDefault< |
| 144 | + T[K], |
| 145 | + [U] extends [boolean] ? never : undefined |
| 146 | + > |
| 147 | + : never; |
137 | 148 | }; |
138 | 149 |
|
139 | 150 | /** |
|
0 commit comments