@taicode/common-server 1.0.2 → 1.0.4

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/output/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './mock';
1
+ export * from './schema';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAA"}
package/output/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // 根 index.ts,统一导出 mock 目录下所有能力
2
- export * from './mock';
2
+ export * from './schema';
@@ -0,0 +1,91 @@
1
+ import { z, ZodEnum, ZodType } from 'zod';
2
+ /**
3
+ * 查询结果 Schema
4
+ * 用于定义分页查询的返回结果结构
5
+ * @param t - 数据项的类型
6
+ * @returns 包含总数和数据列表的 Schema
7
+ */
8
+ export declare function queryResultSchema<T extends ZodType>(t: T): z.ZodObject<{
9
+ total: z.ZodNumber;
10
+ list: z.ZodArray<T>;
11
+ }, z.core.$strip>;
12
+ /**
13
+ * 列表结果 Schema
14
+ * 用于定义列表查询的返回结果结构(与 queryResultSchema 功能相同)
15
+ * @param t - 数据项的类型
16
+ * @returns 包含总数和数据列表的 Schema
17
+ */
18
+ export declare function listResultSchema<T extends ZodType>(t: T): z.ZodObject<{
19
+ total: z.ZodNumber;
20
+ list: z.ZodArray<T>;
21
+ }, z.core.$strip>;
22
+ /**
23
+ * 标准查询请求体 Schema
24
+ * 用于定义包含过滤条件、分页参数和排序条件的查询请求
25
+ * @param f - 过滤条件的类型
26
+ * @param e - 排序字段的枚举类型(可选)
27
+ * @returns 查询请求体的 Schema
28
+ */
29
+ export declare function queryBodySchema<F extends ZodType, E extends ZodEnum>(f: F, e?: E): z.ZodObject<{
30
+ filter: F;
31
+ paging: z.ZodObject<{
32
+ size: z.ZodNumber;
33
+ index: z.ZodNumber;
34
+ }, z.core.$strip>;
35
+ sort: z.ZodArray<z.ZodObject<{
36
+ key: E;
37
+ order: z.ZodEnum<{
38
+ ASC: "ASC";
39
+ DESC: "DESC";
40
+ }>;
41
+ }, z.core.$strip>> | z.ZodUndefined;
42
+ }, z.core.$strip>;
43
+ /**
44
+ * 范围查询请求体 Schema
45
+ * 用于定义包含过滤条件、时间范围和排序条件的查询请求(不包含分页)
46
+ * @param f - 过滤条件的类型
47
+ * @param e - 排序字段的枚举类型(可选)
48
+ * @returns 范围查询请求体的 Schema
49
+ */
50
+ export declare function rangeQueryBodySchema<F extends ZodType, E extends ZodEnum>(f: F, e?: E): z.ZodObject<{
51
+ filter: F;
52
+ sort: z.ZodUndefined | z.ZodArray<z.ZodObject<{
53
+ key: E;
54
+ order: z.ZodEnum<{
55
+ ASC: "ASC";
56
+ DESC: "DESC";
57
+ }>;
58
+ }, z.core.$strip>>;
59
+ range: z.ZodTuple<[z.ZodISODateTime, z.ZodISODateTime], null>;
60
+ }, z.core.$strip>;
61
+ /**
62
+ * 模糊查询请求体 Schema
63
+ * 用于定义包含模糊搜索关键词、时间范围和排序条件的查询请求
64
+ * @param f - 过滤条件的类型(此处为字符串类型,用作搜索关键词)
65
+ * @param e - 排序字段的枚举类型(可选)
66
+ * @returns 模糊查询请求体的 Schema
67
+ */
68
+ export declare function fuzzQueryBodySchema<F extends ZodType, E extends ZodEnum>(f: F, e?: E): z.ZodObject<{
69
+ filter: F;
70
+ sort: z.ZodUndefined | z.ZodArray<z.ZodObject<{
71
+ key: E;
72
+ order: z.ZodEnum<{
73
+ ASC: "ASC";
74
+ DESC: "DESC";
75
+ }>;
76
+ }, z.core.$strip>>;
77
+ range: z.ZodTuple<[z.ZodISODateTime, z.ZodISODateTime], null>;
78
+ }, z.core.$strip>;
79
+ /**
80
+ * 标准响应 Schema
81
+ * 用于定义统一的 API 响应结构
82
+ * @param t - 响应数据的类型
83
+ * @param s - 状态码的枚举类型
84
+ * @returns 标准响应的 Schema
85
+ */
86
+ export declare function responseSchema<T extends ZodType, S extends ZodEnum>(t: T, s: S): z.ZodObject<{
87
+ data: T;
88
+ status: S;
89
+ message: z.ZodString;
90
+ }, z.core.$strip>;
91
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AA2BzC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;;;kBAKxD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;;;kBAKvD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;kBAMhF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;kBAMrF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;kBAMpF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;;;;kBAM9E"}
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * 分页查询参数 Schema
4
+ * 用于定义分页查询时的页面大小和页面索引
5
+ * @private
6
+ */
7
+ function _pagingSchema() {
8
+ return z.object({
9
+ size: z.number().max(100).describe('每页数据量,最大100条'),
10
+ index: z.number().min(1).describe('页面索引,从1开始')
11
+ });
12
+ }
13
+ /**
14
+ * 排序查询参数 Schema
15
+ * 用于定义排序条件,支持多字段排序
16
+ * @private
17
+ * @param t - 排序字段的枚举类型
18
+ */
19
+ function _sortSchema(t) {
20
+ return z.array(z.object({
21
+ key: t.describe('排序字段'),
22
+ order: z.enum(['ASC', 'DESC']).describe('排序方向:ASC-升序,DESC-降序')
23
+ }));
24
+ }
25
+ /**
26
+ * 查询结果 Schema
27
+ * 用于定义分页查询的返回结果结构
28
+ * @param t - 数据项的类型
29
+ * @returns 包含总数和数据列表的 Schema
30
+ */
31
+ export function queryResultSchema(t) {
32
+ return z.object({
33
+ total: z.number().describe('数据总数'),
34
+ list: z.array(t).describe('数据列表')
35
+ });
36
+ }
37
+ /**
38
+ * 列表结果 Schema
39
+ * 用于定义列表查询的返回结果结构(与 queryResultSchema 功能相同)
40
+ * @param t - 数据项的类型
41
+ * @returns 包含总数和数据列表的 Schema
42
+ */
43
+ export function listResultSchema(t) {
44
+ return z.object({
45
+ total: z.number().describe('数据总数'),
46
+ list: z.array(t).describe('数据列表')
47
+ });
48
+ }
49
+ /**
50
+ * 标准查询请求体 Schema
51
+ * 用于定义包含过滤条件、分页参数和排序条件的查询请求
52
+ * @param f - 过滤条件的类型
53
+ * @param e - 排序字段的枚举类型(可选)
54
+ * @returns 查询请求体的 Schema
55
+ */
56
+ export function queryBodySchema(f, e) {
57
+ return z.object({
58
+ filter: f.describe('过滤条件'),
59
+ paging: _pagingSchema().describe('分页参数'),
60
+ sort: e ? _sortSchema(e).describe('排序条件') : z.undefined(),
61
+ });
62
+ }
63
+ /**
64
+ * 范围查询请求体 Schema
65
+ * 用于定义包含过滤条件、时间范围和排序条件的查询请求(不包含分页)
66
+ * @param f - 过滤条件的类型
67
+ * @param e - 排序字段的枚举类型(可选)
68
+ * @returns 范围查询请求体的 Schema
69
+ */
70
+ export function rangeQueryBodySchema(f, e) {
71
+ return z.object({
72
+ filter: f.describe('过滤条件'),
73
+ sort: e ? _sortSchema(e).describe('排序条件') : z.undefined(),
74
+ range: z.tuple([z.iso.datetime(), z.iso.datetime()]).describe('时间范围,格式为 [开始时间, 结束时间]'),
75
+ });
76
+ }
77
+ /**
78
+ * 模糊查询请求体 Schema
79
+ * 用于定义包含模糊搜索关键词、时间范围和排序条件的查询请求
80
+ * @param f - 过滤条件的类型(此处为字符串类型,用作搜索关键词)
81
+ * @param e - 排序字段的枚举类型(可选)
82
+ * @returns 模糊查询请求体的 Schema
83
+ */
84
+ export function fuzzQueryBodySchema(f, e) {
85
+ return z.object({
86
+ filter: f.describe('模糊搜索关键词,长度1-50字符'),
87
+ sort: e ? _sortSchema(e).describe('排序条件') : z.undefined(),
88
+ range: z.tuple([z.iso.datetime(), z.iso.datetime()]).describe('时间范围,格式为 [开始时间, 结束时间]'),
89
+ });
90
+ }
91
+ /**
92
+ * 标准响应 Schema
93
+ * 用于定义统一的 API 响应结构
94
+ * @param t - 响应数据的类型
95
+ * @param s - 状态码的枚举类型
96
+ * @returns 标准响应的 Schema
97
+ */
98
+ export function responseSchema(t, s) {
99
+ return z.object({
100
+ data: t.describe('响应数据'),
101
+ status: s.describe('响应状态码'),
102
+ message: z.string().describe('响应消息'),
103
+ });
104
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taicode/common-server",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "author": "Alain",
5
5
  "license": "ISC",
6
6
  "description": "",
@@ -12,16 +12,6 @@
12
12
  "import": "./output/index.js",
13
13
  "require": "./output/index.js"
14
14
  },
15
- "./mock": {
16
- "types": "./output/mock/index.d.ts",
17
- "import": "./output/mock/index.js",
18
- "require": "./output/mock/index.js"
19
- },
20
- "./mock/*": {
21
- "types": "./output/mock/*/index.d.ts",
22
- "import": "./output/mock/*/index.js",
23
- "require": "./output/mock/*/index.js"
24
- },
25
15
  "./*": {
26
16
  "types": "./output/*/index.d.ts",
27
17
  "import": "./output/*/index.js",
@@ -37,10 +27,12 @@
37
27
  "files": [
38
28
  "output"
39
29
  ],
30
+ "peerDependencies": {
31
+ "zod": "^4.1.0",
32
+ "fastify": "^5.5.0",
33
+ "@taicode/common-base": "^1.7.0"
34
+ },
40
35
  "devDependencies": {
41
36
  "vitest": "^3.2.4"
42
- },
43
- "optionalDependencies": {
44
- "@prisma/client": ">=4.20.0"
45
37
  }
46
38
  }