@taicode/common-server 4.0.0-beta.1 → 4.0.0-beta.3

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.
Files changed (38) hide show
  1. package/output/app/boot.d.ts +9 -13
  2. package/output/app/boot.d.ts.map +1 -1
  3. package/output/app/boot.js +62 -27
  4. package/output/app/context.d.ts +7 -1
  5. package/output/app/context.d.ts.map +1 -1
  6. package/output/app/context.js +9 -3
  7. package/output/app/core/index.d.ts +3 -3
  8. package/output/app/core/index.d.ts.map +1 -1
  9. package/output/app/core/index.js +1 -1
  10. package/output/app/core/response.d.ts +8 -8
  11. package/output/app/core/response.d.ts.map +1 -1
  12. package/output/app/core/response.js +6 -6
  13. package/output/app/define-server.negative-cases.d.ts +8 -0
  14. package/output/app/define-server.negative-cases.d.ts.map +1 -1
  15. package/output/app/define-server.negative-cases.js +60 -1
  16. package/output/app/entries.d.ts +2 -0
  17. package/output/app/entries.d.ts.map +1 -1
  18. package/output/app/entries.js +2 -0
  19. package/output/app/error-contract.test.js +110 -8
  20. package/output/app/index.d.ts +1 -1
  21. package/output/app/index.d.ts.map +1 -1
  22. package/output/app/lifecycle-logging.test.js +23 -3
  23. package/output/app/lifecycle.d.ts +32 -6
  24. package/output/app/lifecycle.d.ts.map +1 -1
  25. package/output/app/lifecycle.js +34 -6
  26. package/output/app/lifecycle.test.js +4 -3
  27. package/output/app/middleware-order.test.js +4 -3
  28. package/output/app/redis.d.ts +5 -1
  29. package/output/app/redis.d.ts.map +1 -1
  30. package/output/app/redis.js +5 -1
  31. package/output/app/resources.test.js +45 -20
  32. package/output/app/shutdown.d.ts +9 -4
  33. package/output/app/shutdown.d.ts.map +1 -1
  34. package/output/app/shutdown.js +16 -4
  35. package/output/app/shutdown.test.js +125 -18
  36. package/output/app/types.d.ts +45 -5
  37. package/output/app/types.d.ts.map +1 -1
  38. package/package.json +3 -3
@@ -13,13 +13,24 @@ function createRecordingHandles(record, throwOn) {
13
13
  }
14
14
  };
15
15
  return {
16
- stopProducers: step('stopProducers'),
16
+ flushRouters: step('flushRouters'),
17
+ flushMiddlewares: step('flushMiddlewares'),
18
+ flushServices: step('flushServices'),
17
19
  disposeServices: step('disposeServices'),
20
+ flushConfig: step('flushConfig'),
21
+ flushResources: step('flushResources'),
18
22
  };
19
23
  }
20
24
  describe('SHUTDOWN_ORDER', () => {
21
- it('固定两步且顺序不可变', () => {
22
- expect(SHUTDOWN_ORDER).toEqual(['stopProducers', 'disposeServices']);
25
+ it('固定六步且顺序不可变:阶段逆序 flush,services 内部先 flush 再逐单元 dispose', () => {
26
+ expect(SHUTDOWN_ORDER).toEqual([
27
+ 'flushRouters',
28
+ 'flushMiddlewares',
29
+ 'flushServices',
30
+ 'disposeServices',
31
+ 'flushConfig',
32
+ 'flushResources',
33
+ ]);
23
34
  });
24
35
  });
25
36
  describe('runShutdown', () => {
@@ -32,7 +43,7 @@ describe('runShutdown', () => {
32
43
  it('单步抛错不阻断后续,并聚合上报', async () => {
33
44
  const record = [];
34
45
  const { entries, log } = createShutdownLog();
35
- await runShutdown(createRecordingHandles(record, 'stopProducers'), log);
46
+ await runShutdown(createRecordingHandles(record, 'flushRouters'), log);
36
47
  expect(record).toEqual([...SHUTDOWN_ORDER]);
37
48
  const aggregate = entries.find((entry) => entry.msg === '[shutdown] completed with errors');
38
49
  expect(aggregate).toBeDefined();
@@ -42,15 +53,25 @@ describe('runShutdown', () => {
42
53
  });
43
54
  });
44
55
  describe('关闭流程集成', () => {
45
- it('默认两步按序执行:disposer → services 逆序', async () => {
56
+ it('各阶段 disposer 按阶段逆序执行:routers → middlewares → services → config → resources', async () => {
46
57
  const calls = [];
47
58
  const server = defineServer({
48
- app: { service: 'shutdown-integration', title: 'Shutdown Integration', version: '1.0.0' },
49
- resources: () => ({ database: { dispose: () => calls.push('disposeResource') } }),
50
- config: () => ({}),
59
+ app: { service: 'shutdown-stages', title: 'Shutdown Stages', version: '1.0.0' },
60
+ resources: (ctx) => {
61
+ ctx.disposer.add(() => {
62
+ calls.push('flushResources');
63
+ });
64
+ return {};
65
+ },
66
+ config: (ctx) => {
67
+ ctx.disposer.add(() => {
68
+ calls.push('flushConfig');
69
+ });
70
+ return {};
71
+ },
51
72
  services: (ctx) => {
52
- ctx.disposer.addDisposer(() => {
53
- calls.push('stopProducers');
73
+ ctx.disposer.add(() => {
74
+ calls.push('flushServices');
54
75
  });
55
76
  return {
56
77
  a: {
@@ -58,26 +79,111 @@ describe('关闭流程集成', () => {
58
79
  calls.push('disposeServiceA');
59
80
  },
60
81
  },
61
- b: {
62
- dispose: () => {
63
- calls.push('disposeServiceB');
64
- },
65
- },
66
82
  };
67
83
  },
84
+ middlewares: (ctx) => {
85
+ ctx.disposer.add(() => {
86
+ calls.push('flushMiddlewares');
87
+ });
88
+ return [];
89
+ },
90
+ routers: (ctx) => {
91
+ ctx.disposer.add(() => {
92
+ calls.push('flushRouters');
93
+ });
94
+ },
95
+ });
96
+ const app = await startServer(server, { listen: false });
97
+ await app.close();
98
+ expect(calls).toEqual([
99
+ 'flushRouters',
100
+ 'flushMiddlewares',
101
+ 'flushServices',
102
+ 'disposeServiceA',
103
+ 'flushConfig',
104
+ 'flushResources',
105
+ ]);
106
+ });
107
+ it('阶段内多个 disposer 按**逆注册序**(LIFO)执行', async () => {
108
+ const calls = [];
109
+ const server = defineServer({
110
+ app: { service: 'shutdown-lifo', title: 'Shutdown LIFO', version: '1.0.0' },
111
+ resources: (ctx) => {
112
+ // 先建 A,再建 B(B 可能依赖 A)→ 关闭时先 B 后 A
113
+ ctx.disposer.add(() => {
114
+ calls.push('disposeA');
115
+ });
116
+ ctx.disposer.add(() => {
117
+ calls.push('disposeB');
118
+ });
119
+ return {};
120
+ },
121
+ config: () => ({}),
122
+ services: () => ({}),
68
123
  middlewares: () => [],
69
124
  routers: () => undefined,
70
125
  });
71
126
  const app = await startServer(server, { listen: false });
72
127
  await app.close();
73
- // 资源不在生命周期内(框架只管 services)
74
- expect(calls).toEqual(['stopProducers', 'disposeServiceB', 'disposeServiceA']);
128
+ expect(calls).toEqual(['disposeB', 'disposeA']);
129
+ });
130
+ it('某个 disposer 抛错不影响同阶段其它 disposer(且 `close()` 不抛)', async () => {
131
+ const calls = [];
132
+ const server = defineServer({
133
+ app: { service: 'shutdown-disposer-error', title: 'Shutdown Disposer Error', version: '1.0.0' },
134
+ resources: (ctx) => {
135
+ ctx.disposer.add(() => {
136
+ calls.push('disposeA');
137
+ });
138
+ ctx.disposer.add(() => {
139
+ calls.push('disposeB:throw');
140
+ throw new Error('disposer boom');
141
+ });
142
+ ctx.disposer.add(() => {
143
+ calls.push('disposeC');
144
+ });
145
+ return {};
146
+ },
147
+ config: () => ({}),
148
+ services: () => ({}),
149
+ middlewares: () => [],
150
+ routers: () => undefined,
151
+ });
152
+ const app = await startServer(server, { listen: false });
153
+ await expect(app.close()).resolves.toBeUndefined();
154
+ // LIFO:C → B(抛错)→ A;B 的错误不阻断 A
155
+ expect(calls).toEqual(['disposeC', 'disposeB:throw', 'disposeA']);
156
+ });
157
+ it('未注册任何 disposer 时无操作:关闭照常完成', async () => {
158
+ const calls = [];
159
+ const server = defineServer({
160
+ app: { service: 'shutdown-empty', title: 'Shutdown Empty', version: '1.0.0' },
161
+ resources: () => ({}),
162
+ config: () => ({}),
163
+ services: () => ({
164
+ a: {
165
+ dispose: () => {
166
+ calls.push('disposeServiceA');
167
+ },
168
+ },
169
+ }),
170
+ middlewares: () => [],
171
+ routers: () => undefined,
172
+ });
173
+ const app = await startServer(server, { listen: false });
174
+ await expect(app.close()).resolves.toBeUndefined();
175
+ expect(calls).toEqual(['disposeServiceA']);
75
176
  });
76
177
  it('StartServerOptions.shutdown 整体覆盖默认关闭流程', async () => {
77
178
  const calls = [];
78
179
  const server = defineServer({
79
180
  app: { service: 'shutdown-override', title: 'Shutdown Override', version: '1.0.0' },
80
- resources: () => ({}),
181
+ resources: (ctx) => {
182
+ ctx.disposer.add(() => {
183
+ calls.push('flushResources');
184
+ });
185
+ return {};
186
+ },
81
187
  config: () => ({}),
82
188
  services: () => ({
83
189
  a: {
@@ -98,6 +204,7 @@ describe('关闭流程集成', () => {
98
204
  },
99
205
  });
100
206
  await app.close();
207
+ // 整体覆盖:默认六步(含各阶段 flush)都不执行
101
208
  expect(calls).toEqual(['custom']);
102
209
  });
103
210
  });
@@ -3,6 +3,7 @@ import type { FastifyBaseLogger, FastifyInstance, RawServerDefault } from 'fasti
3
3
  import type { ZodTypeProvider } from 'fastify-type-provider-zod';
4
4
  import type { IncomingMessage, ServerResponse } from 'node:http';
5
5
  import type { ConfigEnv } from './env.js';
6
+ import type { SystemError } from './errors.js';
6
7
  /**
7
8
  * `defineServer` 槽位口径与接口类型(N1 / N2,**唯一规格来源**)。
8
9
  *
@@ -20,8 +21,16 @@ import type { ConfigEnv } from './env.js';
20
21
  * 槽位只能引用**排在它前面**的产物(向下引用是编译错误);`env` 只属引导期
21
22
  * (`resources` / `config` 可见,运行期三层一律看不到)。
22
23
  *
24
+ * **`disposer` 是每个槽位 ctx 的标配**(不是某个槽位专属):在**创建某个东西的地方**当场
25
+ * `ctx.disposer.add(() => 释放它)`,创建与释放同处一地;`disposer` 是**出口**(不产出任何依赖),
26
+ * 因此不会造成循环,也不削弱「只给该阶段该看的字段」的约束。
27
+ *
28
+ * 生命周期:每个阶段一个独立的 `Disposer` 实例;关闭时**按阶段逆序 flush**
29
+ * `routers → middlewares → services → config → resources`(services 阶段内部:先 flush
30
+ * disposer,再逐单元逆序 `dispose`)。详见 `lifecycle.ts` / `shutdown.ts`。
31
+ *
23
32
  * 类型安全机制(N2 §1):
24
- * - **M1 分阶段 ctx**:每个工厂只拿到「该阶段该看的字段」;
33
+ * - **M1 分阶段 ctx**:每个工厂只拿到「该阶段该看的字段」(**外加每个阶段都有的 `disposer`**);
25
34
  * - **M2 `Awaited<>` 归一**:工厂签名写 `(ctx) => R`(不是 `R | Promise<R>`),下游一律
26
35
  * `Awaited<R>` / `Awaited<C>` / `Awaited<S>`;
27
36
  * - **M3 资源嵌套**:资源包挂在 `ctx.resources` 上(不再摊平到 ctx,键冲突从根上消失);
@@ -82,23 +91,49 @@ export type Live<T> = {
82
91
  /** 框架在 ctx 上暴露的资源视图(`Awaited<>` 归一 + `false` 键剔除) */
83
92
  export type ResourcesView<R> = Live<Awaited<R>>;
84
93
  /**
85
- * `resources(ctx)` 的入参:**只有 `env` + `log`**。
94
+ * 资源错误分类器(响应层用)。
95
+ *
96
+ * **每个资源注册自己的分类器**(一个资源一个):只认领自己错误域内的错误,认领不了返回 `null` 交给
97
+ * 下一个。由服务仓在 `resources(ctx)` 里通过 `ctx.registerClassifyError(...)` 注册;可注册多个,
98
+ * 按注册顺序求值取第一个非 `null` 的结果;全部未命中 / 一个都没注册 → 响应层落 `UNKNOWN_ERROR` 兜底。
99
+ */
100
+ export type ErrorClassifier = (error: unknown) => SystemError | null;
101
+ /**
102
+ * `resources(ctx)` 的入参:**`env` + `log` + `disposer`**(外加槽位专属的注册能力)。
86
103
  *
87
104
  * 结构上排除 `config` / `services` / `app` → 「资源依赖配置」这类循环**编译期写不出来**。
105
+ * `disposer` 是**出口**(只能注册释放函数,不产出依赖),因此不构成新的循环面:
106
+ * 资源在构造处当场 `ctx.disposer.add(() => 释放它)`,关闭时框架最后 flush。
88
107
  */
89
108
  export interface ResourcesContext {
90
109
  readonly env: ConfigEnv;
91
110
  readonly log: LoggerLike;
111
+ /**
112
+ * 本阶段的释放器:**在创建资源的地方当场注册释放**。
113
+ *
114
+ * 关闭序中 `resources` 阶段**最后** flush(所有其它阶段都还活着)。
115
+ */
116
+ readonly disposer: Disposer;
117
+ /**
118
+ * **每个资源注册自己的错误分类器**(响应层用)。
119
+ *
120
+ * 一个资源一个分类器,各管各的错误域:只认领自己域内的错误,认领不了返回 `null` 交给下一个。
121
+ * 可注册多个:按注册顺序求值,取第一个非 `null` 的结果;全部未命中 → 响应层落 `UNKNOWN_ERROR` 兜底。
122
+ * 本方法是 **resources 槽位专属能力**(其他槽位的 ctx 不提供)。
123
+ */
124
+ registerClassifyError(classifier: ErrorClassifier): void;
92
125
  }
93
126
  export type ResourcesFactory<R> = (ctx: ResourcesContext) => R;
94
127
  /**
95
- * `config(ctx)` 的入参:`env` + `log` + 资源视图。
128
+ * `config(ctx)` 的入参:`env` + `log` + `disposer` + 资源视图。
96
129
  *
97
130
  * **没有** `services`(此时尚未构造)/ `app`(此时尚未装配)。
98
131
  */
99
132
  export interface ConfigContext<R> {
100
133
  readonly env: ConfigEnv;
101
134
  readonly log: LoggerLike;
135
+ /** 本阶段的释放器(关闭时在 services 之后、resources 之前 flush) */
136
+ readonly disposer: Disposer;
102
137
  readonly resources: ResourcesView<R>;
103
138
  }
104
139
  export type ConfigFactory<R, C> = (ctx: ConfigContext<R>) => C;
@@ -119,6 +154,7 @@ export interface ServiceUnit {
119
154
  */
120
155
  export interface ServiceContext<R, C> {
121
156
  readonly log: LoggerLike;
157
+ /** 本阶段的释放器(关闭时**先** flush 它,再逐单元逆序 `dispose`) */
122
158
  readonly disposer: Disposer;
123
159
  readonly resources: ResourcesView<R>;
124
160
  readonly config: Awaited<C>;
@@ -134,25 +170,29 @@ export interface MiddlewareUnit {
134
170
  register(app: AppInstance): void | Promise<void>;
135
171
  }
136
172
  /**
137
- * `middlewares(ctx)` 的入参:`app` + `log` + `services` + `config`。
173
+ * `middlewares(ctx)` 的入参:`app` + `log` + `disposer` + `services` + `config`。
138
174
  *
139
175
  * ❗**故意没有 `resources` / `env`** —— 中间件要访问数据层必须穿过 service。
140
176
  */
141
177
  export interface MiddlewareContext<C, S> {
142
178
  readonly app: AppInstance;
143
179
  readonly log: LoggerLike;
180
+ /** 本阶段的释放器(关闭时最早 flush:在 services / config / resources 之前) */
181
+ readonly disposer: Disposer;
144
182
  readonly services: Awaited<S>;
145
183
  readonly config: Awaited<C>;
146
184
  }
147
185
  export type MiddlewaresFactory<C, S> = (ctx: MiddlewareContext<C, S>) => MiddlewareUnit[];
148
186
  /**
149
- * `routers(ctx)` 的入参:`app` + `log` + `services`。
187
+ * `routers(ctx)` 的入参:`app` + `log` + `disposer` + `services`。
150
188
  *
151
189
  * ❗**故意没有 `resources` / `env` / `config`** —— 路由**只能穿过 service**,绕不过层直连数据层。
152
190
  */
153
191
  export interface RouterContext<S> {
154
192
  readonly app: AppInstance;
155
193
  readonly log: LoggerLike;
194
+ /** 本阶段的释放器(关闭时**最先** flush) */
195
+ readonly disposer: Disposer;
156
196
  readonly services: Awaited<S>;
157
197
  }
158
198
  export type RoutersFactory<S> = (ctx: RouterContext<S>) => void | Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/app/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,+BAA+B;AAC/B,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,CACvC,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,CAChB,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED;;;;;GAKG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEhF,qDAAqD;AACrD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAM/C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,KAAK,CAAC,CAAA;AAE9D;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CACrC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC5B;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;AAEvE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC5B;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,EAAE,CAAA;AAEzF;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAM/E;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;KACnC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CACnE,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAClD,KAAK,GACL,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GACjC,KAAK,GACL,CAAC,CAAC,CAAC,CAAC;CACX,CAAA;AAMD;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC,GAAG,EAAE,WAAW,CAAA;IAChB,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,QAAQ,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/E,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACvD,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;CACpC;AAED,kCAAkC;AAClC,eAAO,MAAM,YAAY,mBAAmB,CAAA;AAE5C,oCAAoC;AACpC,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,YAAY,CAAA;CACtC,CAAA;AAED,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACvE,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/app/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taicode/common-server",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.3",
4
4
  "author": "Alain",
5
5
  "license": "ISC",
6
6
  "description": "",
@@ -35,7 +35,7 @@
35
35
  "peerDependencies": {
36
36
  "fastify": "^5.5.0",
37
37
  "redis": "^5.11.0",
38
- "@taicode/common-base": "^4.0.0-beta.1"
38
+ "@taicode/common-base": "^4.0.0-beta.3"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@eslint/js": "^9.39.3",
@@ -49,7 +49,7 @@
49
49
  "redis": "^5.11.0",
50
50
  "typescript-eslint": "^8.56.1",
51
51
  "vitest": "^3.2.4",
52
- "@taicode/common-base": "^4.0.0-beta.1"
52
+ "@taicode/common-base": "^4.0.0-beta.3"
53
53
  },
54
54
  "scripts": {
55
55
  "test": "vitest run",