@kevisual/query 0.0.44 → 0.0.46
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/dist/query-api.d.ts +23 -5
- package/package.json +1 -1
- package/src/query-api.ts +24 -7
package/dist/query-api.d.ts
CHANGED
|
@@ -263,17 +263,35 @@ type InferFromJSONSchema<T> = T extends {
|
|
|
263
263
|
} ? number : T extends {
|
|
264
264
|
type: "boolean";
|
|
265
265
|
} ? boolean : T extends {
|
|
266
|
+
type: "array";
|
|
267
|
+
items: infer I;
|
|
268
|
+
} ? Array<InferFromJSONSchema<I>> : T extends {
|
|
266
269
|
type: "object";
|
|
267
270
|
properties: infer P;
|
|
271
|
+
required: infer R extends readonly string[];
|
|
268
272
|
} ? {
|
|
269
|
-
[K in keyof P]: InferFromJSONSchema<P[K]>;
|
|
273
|
+
[K in keyof P as K extends R[number] ? K : never]: InferFromJSONSchema<P[K]>;
|
|
274
|
+
} & {
|
|
275
|
+
[K in keyof P as K extends R[number] ? never : K]?: InferFromJSONSchema<P[K]>;
|
|
276
|
+
} : T extends {
|
|
277
|
+
type: "object";
|
|
278
|
+
properties: infer P;
|
|
279
|
+
} ? {
|
|
280
|
+
[K in keyof P]?: InferFromJSONSchema<P[K]>;
|
|
281
|
+
} : T extends {
|
|
282
|
+
type: "object";
|
|
283
|
+
additionalProperties: infer A;
|
|
284
|
+
} ? (A extends false ? Record<string, never> : Record<string, any>) : T extends Record<string, any> ? T extends {
|
|
285
|
+
properties: infer P;
|
|
286
|
+
required: infer R extends readonly string[];
|
|
287
|
+
} ? {
|
|
288
|
+
[K in keyof P as K extends R[number] ? K : never]: InferFromJSONSchema<P[K]>;
|
|
289
|
+
} & {
|
|
290
|
+
[K in keyof P as K extends R[number] ? never : K]?: InferFromJSONSchema<P[K]>;
|
|
270
291
|
} : T extends {
|
|
271
|
-
type: "array";
|
|
272
|
-
items: infer I;
|
|
273
|
-
} ? Array<InferFromJSONSchema<I>> : T extends Record<string, any> ? T extends {
|
|
274
292
|
properties: infer P;
|
|
275
293
|
} ? {
|
|
276
|
-
[K in keyof P]
|
|
294
|
+
[K in keyof P]?: InferFromJSONSchema<P[K]>;
|
|
277
295
|
} : unknown : unknown;
|
|
278
296
|
type InferType<T> = T extends z.ZodType<infer U> ? U : T extends {
|
|
279
297
|
type: infer TType;
|
package/package.json
CHANGED
package/src/query-api.ts
CHANGED
|
@@ -25,18 +25,35 @@ type InferFromJSONSchema<T> =
|
|
|
25
25
|
T extends { type: "number" } ? number :
|
|
26
26
|
T extends { type: "integer" } ? number :
|
|
27
27
|
T extends { type: "boolean" } ? boolean :
|
|
28
|
-
//
|
|
28
|
+
// 数组类型
|
|
29
|
+
T extends { type: "array"; items: infer I }
|
|
30
|
+
? Array<InferFromJSONSchema<I>>
|
|
31
|
+
: // 对象类型 - 带 required 字段(必需字段 + 可选字段)
|
|
32
|
+
// 注意:必须在 additionalProperties 检查之前,因为两者可能同时存在
|
|
33
|
+
T extends { type: "object"; properties: infer P; required: infer R extends readonly string[] }
|
|
34
|
+
? {
|
|
35
|
+
[K in keyof P as K extends R[number] ? K : never]: InferFromJSONSchema<P[K]>
|
|
36
|
+
} & {
|
|
37
|
+
[K in keyof P as K extends R[number] ? never : K]?: InferFromJSONSchema<P[K]>
|
|
38
|
+
}
|
|
39
|
+
: // 对象类型 - 不带 required 字段(所有字段可选)
|
|
29
40
|
T extends { type: "object"; properties: infer P }
|
|
30
41
|
? {
|
|
31
|
-
[K in keyof P]
|
|
42
|
+
[K in keyof P]?: InferFromJSONSchema<P[K]>
|
|
32
43
|
}
|
|
33
|
-
: //
|
|
34
|
-
T extends { type: "
|
|
35
|
-
?
|
|
44
|
+
: // 对象类型 - 只有 additionalProperties(纯动态对象)
|
|
45
|
+
T extends { type: "object"; additionalProperties: infer A }
|
|
46
|
+
? (A extends false ? Record<string, never> : Record<string, any>)
|
|
36
47
|
: // 默认情况 - 如果是对象但没有 type 字段,尝试递归推断
|
|
37
48
|
T extends Record<string, any>
|
|
38
|
-
? T extends { properties: infer P }
|
|
39
|
-
? {
|
|
49
|
+
? T extends { properties: infer P; required: infer R extends readonly string[] }
|
|
50
|
+
? {
|
|
51
|
+
[K in keyof P as K extends R[number] ? K : never]: InferFromJSONSchema<P[K]>
|
|
52
|
+
} & {
|
|
53
|
+
[K in keyof P as K extends R[number] ? never : K]?: InferFromJSONSchema<P[K]>
|
|
54
|
+
}
|
|
55
|
+
: T extends { properties: infer P }
|
|
56
|
+
? { [K in keyof P]?: InferFromJSONSchema<P[K]> }
|
|
40
57
|
: unknown
|
|
41
58
|
: unknown;
|
|
42
59
|
|