@kevisual/query 0.0.42 → 0.0.44

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.
@@ -242,6 +242,10 @@ type Pos = {
242
242
  id?: string;
243
243
  metadata?: {
244
244
  args?: Record<string, any>;
245
+ viewItem?: Record<string, any>;
246
+ url?: string;
247
+ source?: string;
248
+ [key: string]: any;
245
249
  };
246
250
  };
247
251
  type InferFromJSONSchema<T> = T extends {
@@ -266,9 +270,15 @@ type InferFromJSONSchema<T> = T extends {
266
270
  } : T extends {
267
271
  type: "array";
268
272
  items: infer I;
269
- } ? Array<InferFromJSONSchema<I>> : unknown;
273
+ } ? Array<InferFromJSONSchema<I>> : T extends Record<string, any> ? T extends {
274
+ properties: infer P;
275
+ } ? {
276
+ [K in keyof P]: InferFromJSONSchema<P[K]>;
277
+ } : unknown : unknown;
270
278
  type InferType<T> = T extends z.ZodType<infer U> ? U : T extends {
271
279
  type: infer TType;
280
+ } ? InferFromJSONSchema<T> : T extends {
281
+ properties: infer P;
272
282
  } ? InferFromJSONSchema<T> : T;
273
283
  type ExtractArgsFromMetadata<T> = T extends {
274
284
  metadata?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/query",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "npm run clean && bun run bun.config.ts",
@@ -19,7 +19,7 @@
19
19
  "description": "",
20
20
  "devDependencies": {
21
21
  "@kevisual/code-builder": "^0.0.6",
22
- "@kevisual/router": "^0.0.72",
22
+ "@kevisual/router": "^0.0.74",
23
23
  "@types/node": "^25.2.3",
24
24
  "typescript": "^5.9.3",
25
25
  "es-toolkit": "^1.44.0",
package/src/query-api.ts CHANGED
@@ -8,27 +8,43 @@ type Pos = {
8
8
  id?: string;
9
9
  metadata?: {
10
10
  args?: Record<string, any>;
11
+ viewItem?: Record<string, any>;
12
+ url?: string;
13
+ source?: string;
14
+ [key: string]: any;
11
15
  };
12
16
  }
13
17
 
14
18
  // JSON Schema 类型推断 - 使用更精确的类型匹配
15
19
  type InferFromJSONSchema<T> =
20
+ // 处理带 enum 的字符串类型
16
21
  T extends { type: "string"; enum: readonly (infer E)[] } ? E :
17
22
  T extends { type: "string"; enum: (infer E)[] } ? E :
23
+ // 基础类型
18
24
  T extends { type: "string" } ? string :
19
25
  T extends { type: "number" } ? number :
20
26
  T extends { type: "integer" } ? number :
21
27
  T extends { type: "boolean" } ? boolean :
28
+ // 对象类型 - 检查是否有 properties
22
29
  T extends { type: "object"; properties: infer P }
23
- ? { [K in keyof P]: InferFromJSONSchema<P[K]> }
24
- : T extends { type: "array"; items: infer I }
30
+ ? {
31
+ [K in keyof P]: InferFromJSONSchema<P[K]>
32
+ }
33
+ : // 数组类型
34
+ T extends { type: "array"; items: infer I }
25
35
  ? Array<InferFromJSONSchema<I>>
36
+ : // 默认情况 - 如果是对象但没有 type 字段,尝试递归推断
37
+ T extends Record<string, any>
38
+ ? T extends { properties: infer P }
39
+ ? { [K in keyof P]: InferFromJSONSchema<P[K]> }
40
+ : unknown
26
41
  : unknown;
27
42
 
28
43
  // 统一类型推断:支持 Zod schema 和原始 JSON Schema
29
44
  type InferType<T> =
30
45
  T extends z.ZodType<infer U> ? U : // Zod schema
31
46
  T extends { type: infer TType } ? InferFromJSONSchema<T> : // 任何包含 type 字段的 JSON Schema(忽略 $schema)
47
+ T extends { properties: infer P } ? InferFromJSONSchema<T> : // 处理没有 type 但有 properties 的对象
32
48
  T;
33
49
 
34
50
  // 提取 args 对象,将每个 Zod schema 或 JSON Schema 转换为实际类型