@hestjs/core 0.1.10 → 0.2.0

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 (44) hide show
  1. package/README.md +93 -37
  2. package/dist/application/application-factory.d.ts +2 -1
  3. package/dist/application/application-factory.d.ts.map +1 -1
  4. package/dist/application/application-factory.js +3 -6
  5. package/dist/application/application-factory.js.map +1 -1
  6. package/dist/application/hest-application.d.ts +3 -22
  7. package/dist/application/hest-application.d.ts.map +1 -1
  8. package/dist/application/hest-application.js +4 -29
  9. package/dist/application/hest-application.js.map +1 -1
  10. package/dist/index.d.ts +0 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +0 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/interfaces/application.d.ts +2 -2
  15. package/dist/interfaces/application.d.ts.map +1 -1
  16. package/dist/router/router-explorer.d.ts +0 -20
  17. package/dist/router/router-explorer.d.ts.map +1 -1
  18. package/dist/router/router-explorer.js +11 -69
  19. package/dist/router/router-explorer.js.map +1 -1
  20. package/package.json +1 -1
  21. package/dist/exceptions/base-exception.d.ts +0 -20
  22. package/dist/exceptions/base-exception.d.ts.map +0 -1
  23. package/dist/exceptions/base-exception.js +0 -42
  24. package/dist/exceptions/base-exception.js.map +0 -1
  25. package/dist/exceptions/exception-filter.d.ts +0 -39
  26. package/dist/exceptions/exception-filter.d.ts.map +0 -1
  27. package/dist/exceptions/exception-filter.js +0 -69
  28. package/dist/exceptions/exception-filter.js.map +0 -1
  29. package/dist/exceptions/http-exception.d.ts +0 -40
  30. package/dist/exceptions/http-exception.d.ts.map +0 -1
  31. package/dist/exceptions/http-exception.js +0 -88
  32. package/dist/exceptions/http-exception.js.map +0 -1
  33. package/dist/exceptions/index.d.ts +0 -4
  34. package/dist/exceptions/index.d.ts.map +0 -1
  35. package/dist/exceptions/index.js +0 -20
  36. package/dist/exceptions/index.js.map +0 -1
  37. package/dist/interceptors/index.d.ts +0 -2
  38. package/dist/interceptors/index.d.ts.map +0 -1
  39. package/dist/interceptors/index.js +0 -18
  40. package/dist/interceptors/index.js.map +0 -1
  41. package/dist/interceptors/interceptor.d.ts +0 -82
  42. package/dist/interceptors/interceptor.d.ts.map +0 -1
  43. package/dist/interceptors/interceptor.js +0 -120
  44. package/dist/interceptors/interceptor.js.map +0 -1
package/README.md CHANGED
@@ -13,11 +13,12 @@ HestJS 核心包 - 基于 Hono 构建的现代化 TypeScript 后端库,提供
13
13
 
14
14
  ## 🎯 核心理念
15
15
 
16
- - **🔓 拒绝过度封装**:直接暴露原生 Hono 实例,保留所有底层功能
16
+ - **🔓 拒绝过度封装**:用户直接控制 Hono 实例,保留所有底层功能和灵活性
17
17
  - **✈️ 零配置**:你看不到类似 `hestjs.config.ts`这样的配置文件,无需任何配置
18
18
  - **🎯 装饰器驱动**:提供熟悉的 NestJS 风格开发体验
19
19
  - **💉 轻量依赖注入**:基于 TSyringe 的简洁 DI 容器
20
20
  - **⚡ 极致性能**:基于 Hono 和 Bun 的高性能运行时
21
+ - **🌊 原生中间件**:直接使用 Hono 中间件,无需额外抽象层
21
22
 
22
23
  ## 📦 安装
23
24
 
@@ -48,6 +49,8 @@ bun add @hestjs/core
48
49
 
49
50
  ```typescript
50
51
  import { Controller, Get, HestFactory, Module } from "@hestjs/core";
52
+ import { Hono } from "hono";
53
+ import { cors } from "hono/cors";
51
54
 
52
55
  @Controller("/")
53
56
  export class WelcomeController {
@@ -66,9 +69,13 @@ export class WelcomeController {
66
69
  export class AppModule {}
67
70
 
68
71
  async function bootstrap() {
69
- const app = await HestFactory.create(AppModule);
70
- const hono = app.hono();
72
+ const hono = new Hono();
73
+ hono.use(cors());
74
+
75
+ // 将 Hono 实例传递给 HestJS
76
+ const app = await HestFactory.create(hono, AppModule);
71
77
 
78
+ // 直接使用原生 Hono 实例
72
79
  Bun.serve({
73
80
  port: 3000,
74
81
  fetch: hono.fetch,
@@ -78,7 +85,36 @@ async function bootstrap() {
78
85
  bootstrap();
79
86
  ```
80
87
 
81
- ### 2. 定义控制器
88
+ ### 2. 异常处理中间件
89
+
90
+ 替代全局异常过滤器,直接使用 Hono 中间件处理异常:
91
+
92
+ ```typescript
93
+ import type { Context, Next } from 'hono';
94
+
95
+ const exceptionMiddleware = async (c: Context, next: Next) => {
96
+ try {
97
+ await next();
98
+ } catch (error: any) {
99
+ const status = error.status || 500;
100
+ return c.json({
101
+ statusCode: status,
102
+ timestamp: new Date().toISOString(),
103
+ path: c.req.url,
104
+ message: error.message || 'Internal Server Error',
105
+ }, status);
106
+ }
107
+ };
108
+
109
+ // 在 bootstrap 中使用
110
+ const hono = new Hono();
111
+ hono.use('*', exceptionMiddleware); // 全局异常处理
112
+ hono.use(cors());
113
+
114
+ const app = await HestFactory.create(hono, AppModule);
115
+ ```
116
+
117
+ ### 3. 定义控制器
82
118
 
83
119
  ```typescript
84
120
  import { Controller, Get, Post, Context, Body, Param } from "@hestjs/core";
@@ -103,7 +139,7 @@ export class UsersController {
103
139
  }
104
140
  ```
105
141
 
106
- ### 3. 创建模块
142
+ ### 4. 创建模块
107
143
 
108
144
  ```typescript
109
145
  import { Module } from "@hestjs/core";
@@ -118,7 +154,7 @@ import { UsersService } from "./users.service";
118
154
  export class UsersModule {}
119
155
  ```
120
156
 
121
- ### 4. 创建服务
157
+ ### 5. 创建服务
122
158
 
123
159
  ```typescript
124
160
  import { injectable } from "@hestjs/core";
@@ -307,27 +343,6 @@ export class UsersService {
307
343
  }
308
344
  ```
309
345
 
310
- ### 🔄 拦截器和过滤器
311
-
312
- #### 全局拦截器
313
-
314
- ```typescript
315
- const app = await HestFactory.create(AppModule);
316
-
317
- // 添加全局拦截器
318
- app.useGlobalInterceptors(new ValidationInterceptor());
319
- app.useGlobalInterceptors(new ResponseInterceptor());
320
- ```
321
-
322
- #### 全局异常过滤器
323
-
324
- ```typescript
325
- const app = await HestFactory.create(AppModule);
326
-
327
- // 添加全局异常过滤器
328
- app.useGlobalFilters(new HttpExceptionFilter());
329
- ```
330
-
331
346
  ### 🌐 直接访问 Hono
332
347
 
333
348
  HestJS 不会封装 Hono,你可以直接使用所有 Hono 功能:
@@ -408,16 +423,57 @@ async handler(@Context() c: HestContext) {
408
423
 
409
424
  ### ✅ 已实现功能
410
425
 
411
- - [x] **应用工厂** - `HestFactory.create()`
412
- - [x] **控制器系统** - `@Controller()` 装饰器
413
- - [x] **路由装饰器** - `@Get()`, `@Post()`, `@Put()`, `@Delete()`, `@Patch()`
414
- - [x] **参数装饰器** - `@Context()`, `@Body()`, `@Param()`, `@Query()`, `@Header()`
415
- - [x] **模块系统** - `@Module()` 装饰器
416
- - [x] **依赖注入** - 基于 TSyringe 的 DI 容器
417
- - [x] **异常处理** - 基础异常过滤器
418
- - [x] **拦截器** - 全局拦截器支持
419
- - [x] **类型安全** - 完整的 TypeScript 支持
420
- - [x] **Hono 集成** - 直接访问 Hono 实例
426
+ - [X] **应用工厂** - `HestFactory.create(honoInstance, moduleClass)`
427
+ - [X] **控制器系统** - `@Controller()` 装饰器
428
+ - [X] **路由装饰器** - `@Get()`, `@Post()`, `@Put()`, `@Delete()`, `@Patch()`
429
+ - [X] **参数装饰器** - `@Context()`, `@Body()`, `@Param()`, `@Query()`, `@Header()`
430
+ - [X] **模块系统** - `@Module()` 装饰器
431
+ - [X] **依赖注入** - 基于 TSyringe 的 DI 容器
432
+
433
+ ## 🔄 重构说明
434
+
435
+ ### v0.2.0 重大更新 - 移除过度封装
436
+
437
+ 为了提供更大的灵活性和更好的性能,我们进行了一次重要的架构重构:
438
+
439
+ #### 🗑️ 移除的功能
440
+
441
+ - **全局异常过滤器** - 使用 Hono 中间件替代
442
+ - **拦截器系统** - 使用 Hono 中间件替代
443
+ - **`app.hono()` 方法** - 用户直接控制 Hono 实例
444
+ - **`app.useGlobalFilters()` 方法** - 使用中间件实现
445
+
446
+ #### ✨ 新的设计理念
447
+
448
+ - **用户控制** - 用户手动创建 `new Hono()` 实例
449
+ - **原生中间件** - 直接使用 Hono 的中间件生态
450
+ - **零抽象层** - 减少性能开销和学习成本
451
+ - **最大灵活性** - 保留 Hono 的所有原生功能
452
+
453
+ #### 🚀 迁移指南
454
+
455
+ **旧的方式:**
456
+
457
+ ```typescript
458
+ const app = await HestFactory.create(AppModule);
459
+ app.useGlobalFilters(new ExceptionFilter());
460
+ const hono = app.hono();
461
+ ```
462
+
463
+ **新的方式:**
464
+
465
+ ```typescript
466
+ const hono = new Hono();
467
+ hono.use('*', exceptionMiddleware); // 直接使用中间件
468
+ const app = await HestFactory.create(hono, AppModule);
469
+ ```
470
+
471
+ 这种设计让 HestJS 真正成为"基于 Hono 的 OOP 框架",而不是"包装 Hono 的框架"。
472
+
473
+ - [X] **异常处理** - 基础异常过滤器
474
+ - [X] **拦截器** - 全局拦截器支持
475
+ - [X] **类型安全** - 完整的 TypeScript 支持
476
+ - [X] **Hono 集成** - 直接访问 Hono 实例
421
477
 
422
478
  ### 🚧 开发中功能
423
479
 
@@ -1,3 +1,4 @@
1
+ import { Hono } from "hono";
1
2
  import { HestApplicationInstance } from "./hest-application";
2
3
  /**
3
4
  * HestJS 应用工厂
@@ -6,7 +7,7 @@ export declare class HestFactory {
6
7
  /**
7
8
  * 创建应用实例
8
9
  */
9
- static create(moduleClass: any): Promise<HestApplicationInstance>;
10
+ static create(honoApp: Hono, moduleClass: any): Promise<HestApplicationInstance>;
10
11
  /**
11
12
  * 初始化模块
12
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"application-factory.d.ts","sourceRoot":"","sources":["../../src/application/application-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;WACU,MAAM,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA8BvE;;OAEG;mBACkB,gBAAgB;IAiDrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
1
+ {"version":3,"file":"application-factory.d.ts","sourceRoot":"","sources":["../../src/application/application-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA4BtF;;OAEG;mBACkB,gBAAgB;IAiDrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HestFactory = void 0;
4
- const hono_1 = require("hono");
5
4
  const container_1 = require("../container/container");
6
5
  const metadata_scanner_1 = require("../metadata/metadata-scanner");
7
6
  const router_explorer_1 = require("../router/router-explorer");
@@ -15,9 +14,9 @@ class HestFactory {
15
14
  /**
16
15
  * 创建应用实例
17
16
  */
18
- static async create(moduleClass) {
19
- // 创建 Hono 实例
20
- const app = new hono_1.Hono();
17
+ static async create(honoApp, moduleClass) {
18
+ // 使用用户传入的 Hono 实例
19
+ const app = honoApp;
21
20
  // 创建 DI 容器
22
21
  const container = container_1.Container.getInstance();
23
22
  // 初始化模块
@@ -26,8 +25,6 @@ class HestFactory {
26
25
  const appInstance = new hest_application_1.HestApplicationInstance(app, container);
27
26
  // 设置路由
28
27
  const routerExplorer = new router_explorer_1.RouterExplorer(app, container);
29
- routerExplorer.setGlobalFilters(appInstance.getGlobalFilters());
30
- routerExplorer.setGlobalInterceptors(appInstance.getGlobalInterceptors());
31
28
  // 收集所有模块的控制器
32
29
  const allControllers = HestFactory.collectAllControllers(moduleClass);
33
30
  if (allControllers.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"application-factory.js","sourceRoot":"","sources":["../../src/application/application-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-factory.js","sourceRoot":"","sources":["../../src/application/application-factory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import { Hono } from "hono";
2
2
  import { Container } from "../container/container";
3
- import type { ExceptionFilter } from "../exceptions/exception-filter";
4
- import type { Interceptor } from "../interceptors/interceptor";
5
3
  import type { HestApplication } from "../interfaces/application";
6
4
  /**
7
5
  * HestJS 应用实例
@@ -9,32 +7,15 @@ import type { HestApplication } from "../interfaces/application";
9
7
  export declare class HestApplicationInstance implements HestApplication {
10
8
  private readonly app;
11
9
  private readonly container;
12
- private globalFilters;
13
- private globalInterceptors;
14
10
  constructor(app: Hono, container: Container);
15
- /**
16
- * 获取底层 Hono 实例
17
- */
18
- hono(): Hono;
19
11
  /**
20
12
  * 获取 DI 容器
21
13
  */
22
14
  getContainer(): Container;
23
15
  /**
24
- * 使用全局异常过滤器
25
- */
26
- useGlobalFilters(...filters: ExceptionFilter[]): void;
27
- /**
28
- * 使用全局拦截器
29
- */
30
- useGlobalInterceptors(...interceptors: Interceptor[]): void;
31
- /**
32
- * 获取全局异常过滤器
33
- */
34
- getGlobalFilters(): ExceptionFilter[];
35
- /**
36
- * 获取全局拦截器
16
+ * 获取底层 Hono 实例 (内部使用)
17
+ * @internal
37
18
  */
38
- getGlobalInterceptors(): Interceptor[];
19
+ getHonoInstance(): Hono;
39
20
  }
40
21
  //# sourceMappingURL=hest-application.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hest-application.d.ts","sourceRoot":"","sources":["../../src/application/hest-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;IAK3C;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,gBAAgB,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAIrD;;OAEG;IACH,qBAAqB,CAAC,GAAG,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAI3D;;OAEG;IACH,gBAAgB,IAAI,eAAe,EAAE;IAIrC;;OAEG;IACH,qBAAqB,IAAI,WAAW,EAAE;CAGvC"}
1
+ {"version":3,"file":"hest-application.d.ts","sourceRoot":"","sources":["../../src/application/hest-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;IAK3C;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;;OAGG;IACH,eAAe,IAAI,IAAI;CAGxB"}
@@ -7,18 +7,10 @@ exports.HestApplicationInstance = void 0;
7
7
  class HestApplicationInstance {
8
8
  app;
9
9
  container;
10
- globalFilters = [];
11
- globalInterceptors = [];
12
10
  constructor(app, container) {
13
11
  this.app = app;
14
12
  this.container = container;
15
13
  }
16
- /**
17
- * 获取底层 Hono 实例
18
- */
19
- hono() {
20
- return this.app;
21
- }
22
14
  /**
23
15
  * 获取 DI 容器
24
16
  */
@@ -26,28 +18,11 @@ class HestApplicationInstance {
26
18
  return this.container;
27
19
  }
28
20
  /**
29
- * 使用全局异常过滤器
30
- */
31
- useGlobalFilters(...filters) {
32
- this.globalFilters.push(...filters);
33
- }
34
- /**
35
- * 使用全局拦截器
21
+ * 获取底层 Hono 实例 (内部使用)
22
+ * @internal
36
23
  */
37
- useGlobalInterceptors(...interceptors) {
38
- this.globalInterceptors.push(...interceptors);
39
- }
40
- /**
41
- * 获取全局异常过滤器
42
- */
43
- getGlobalFilters() {
44
- return this.globalFilters;
45
- }
46
- /**
47
- * 获取全局拦截器
48
- */
49
- getGlobalInterceptors() {
50
- return this.globalInterceptors;
24
+ getHonoInstance() {
25
+ return this.app;
51
26
  }
52
27
  }
53
28
  exports.HestApplicationInstance = HestApplicationInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"hest-application.js","sourceRoot":"","sources":["../../src/application/hest-application.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,uBAAuB;IACjB,GAAG,CAAO;IACV,SAAS,CAAY;IAC9B,aAAa,GAAsB,EAAE,CAAC;IACtC,kBAAkB,GAAkB,EAAE,CAAC;IAE/C,YAAY,GAAS,EAAE,SAAoB;QACzC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,GAAG,OAA0B;QAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,GAAG,YAA2B;QAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;CACF;AApDD,0DAoDC"}
1
+ {"version":3,"file":"hest-application.js","sourceRoot":"","sources":["../../src/application/hest-application.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAa,uBAAuB;IACjB,GAAG,CAAO;IACV,SAAS,CAAY;IAEtC,YAAY,GAAS,EAAE,SAAoB;QACzC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAvBD,0DAuBC"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,6 @@ import "reflect-metadata";
2
2
  export * from "./application";
3
3
  export * from "./container";
4
4
  export * from "./decorators";
5
- export * from "./exceptions";
6
- export * from "./interceptors";
7
5
  export * from "./interfaces";
8
6
  export * from "./metadata";
9
7
  export * from "./middlewares";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAGhE,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,QAAQ,EACR,eAAe,EACf,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAGhE,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,QAAQ,EACR,eAAe,EACf,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -20,8 +20,6 @@ require("reflect-metadata");
20
20
  __exportStar(require("./application"), exports);
21
21
  __exportStar(require("./container"), exports);
22
22
  __exportStar(require("./decorators"), exports);
23
- __exportStar(require("./exceptions"), exports);
24
- __exportStar(require("./interceptors"), exports);
25
23
  __exportStar(require("./interfaces"), exports);
26
24
  __exportStar(require("./metadata"), exports);
27
25
  __exportStar(require("./middlewares"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,aAAa;AACb,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,+CAA6B;AAC7B,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AAExB,kBAAkB;AAClB,0DAAkF;AAAzE,wHAAA,aAAa,OAA0B;AAChD,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AAEvB,WAAW;AACX,yEAAgE;AAAvD,kHAAA,WAAW,OAAA;AAEpB,YAAY;AACZ,yCASwB;AARtB,+GAAA,qBAAqB,OAAA;AACrB,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,gGAAA,MAAM,OAAA;AACN,kGAAA,QAAQ,OAAA;AACR,yGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,aAAa;AACb,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AAExB,kBAAkB;AAClB,0DAAkF;AAAzE,wHAAA,aAAa,OAA0B;AAChD,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AAEvB,WAAW;AACX,yEAAgE;AAAvD,kHAAA,WAAW,OAAA;AAEpB,YAAY;AACZ,yCASwB;AARtB,+GAAA,qBAAqB,OAAA;AACrB,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,gGAAA,MAAM,OAAA;AACN,kGAAA,QAAQ,OAAA;AACR,yGAAA,eAAe,OAAA"}
@@ -8,9 +8,9 @@ export type HestContext<E extends Env = Env> = Context<E>;
8
8
  */
9
9
  export interface HestApplication {
10
10
  /**
11
- * 获取底层 Hono 实例
11
+ * 获取 DI 容器
12
12
  */
13
- hono(): any;
13
+ getContainer(): any;
14
14
  }
15
15
  /**
16
16
  * HTTP 适配器接口
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/interfaces/application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,IAAI,IAAI,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClD,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,MAAM,CAAC;IAClB,WAAW,IAAI,GAAG,CAAC;CACpB"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/interfaces/application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,IAAI,GAAG,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClD,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,MAAM,CAAC;IAClB,WAAW,IAAI,GAAG,CAAC;CACpB"}
@@ -1,7 +1,5 @@
1
1
  import { Hono } from "hono";
2
2
  import { Container } from "../container/container";
3
- import { type ExceptionFilter } from "../exceptions/exception-filter";
4
- import { type Interceptor } from "../interceptors/interceptor";
5
3
  import type { ControllerConstructor } from "../interfaces/router";
6
4
  /**
7
5
  * 路由资源管理器
@@ -9,17 +7,7 @@ import type { ControllerConstructor } from "../interfaces/router";
9
7
  export declare class RouterExplorer {
10
8
  private readonly app;
11
9
  private readonly container;
12
- private globalFilters;
13
- private globalInterceptors;
14
10
  constructor(app: Hono, container: Container);
15
- /**
16
- * 设置全局异常过滤器
17
- */
18
- setGlobalFilters(filters: ExceptionFilter[]): void;
19
- /**
20
- * 设置全局拦截器
21
- */
22
- setGlobalInterceptors(interceptors: Interceptor[]): void;
23
11
  /**
24
12
  * 探索并注册控制器路由
25
13
  */
@@ -36,14 +24,6 @@ export declare class RouterExplorer {
36
24
  * 解析方法参数
37
25
  */
38
26
  private resolveParameters;
39
- /**
40
- * 应用拦截器
41
- */
42
- private applyInterceptors;
43
- /**
44
- * 处理异常
45
- */
46
- private handleException;
47
27
  /**
48
28
  * 合并路径
49
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"router-explorer.d.ts","sourceRoot":"","sources":["../../src/router/router-explorer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;IAK3C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAIxD;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAMnD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA8FrB;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,YAAY;CAUrB"}
1
+ {"version":3,"file":"router-explorer.d.ts","sourceRoot":"","sources":["../../src/router/router-explorer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOnD,OAAO,KAAK,EACV,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;IAK3C;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAMnD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgFrB;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;IACH,OAAO,CAAC,YAAY;CAUrB"}
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RouterExplorer = void 0;
4
4
  const logger_1 = require("@hestjs/logger");
5
- const exception_filter_1 = require("../exceptions/exception-filter");
6
- const interceptor_1 = require("../interceptors/interceptor");
7
5
  const metadata_scanner_1 = require("../metadata/metadata-scanner");
8
6
  const constants_1 = require("../utils/constants");
9
7
  const logger = (0, logger_1.createLogger)("Router");
@@ -13,24 +11,10 @@ const logger = (0, logger_1.createLogger)("Router");
13
11
  class RouterExplorer {
14
12
  app;
15
13
  container;
16
- globalFilters = [];
17
- globalInterceptors = [];
18
14
  constructor(app, container) {
19
15
  this.app = app;
20
16
  this.container = container;
21
17
  }
22
- /**
23
- * 设置全局异常过滤器
24
- */
25
- setGlobalFilters(filters) {
26
- this.globalFilters = filters;
27
- }
28
- /**
29
- * 设置全局拦截器
30
- */
31
- setGlobalInterceptors(interceptors) {
32
- this.globalInterceptors = interceptors;
33
- }
34
18
  /**
35
19
  * 探索并注册控制器路由
36
20
  */
@@ -61,22 +45,17 @@ class RouterExplorer {
61
45
  const method = route.method.toLowerCase();
62
46
  // 获取参数元数据
63
47
  const paramMetadata = metadata_scanner_1.MetadataScanner.scanParameters(controllerInstance.constructor, route.methodName);
64
- // 创建增强的路由处理器(支持拦截器和异常处理)
48
+ // 创建路由处理器
65
49
  const handler = async (c) => {
66
50
  try {
67
- // 创建执行上下文
68
- const executionContext = new interceptor_1.DefaultExecutionContext(controllerInstance.constructor, { name: route.methodName }, [], c);
69
- // 原始方法执行逻辑
70
- const executeMethod = async () => {
71
- const resolutionResult = await this.resolveParameters(c, paramMetadata);
72
- if (resolutionResult.errors && resolutionResult.errors.length > 0) {
73
- // 处理参数解析错误
74
- throw new Error(`Parameter resolution failed: ${resolutionResult.errors.map((e) => e.error).join(", ")}`);
75
- }
76
- return await controllerInstance[route.methodName](...resolutionResult.args);
77
- };
78
- // 应用拦截器
79
- let result = await this.applyInterceptors(executionContext, executeMethod);
51
+ // 解析参数
52
+ const resolutionResult = await this.resolveParameters(c, paramMetadata);
53
+ if (resolutionResult.errors && resolutionResult.errors.length > 0) {
54
+ // 处理参数解析错误
55
+ throw new Error(`Parameter resolution failed: ${resolutionResult.errors.map((e) => e.error).join(", ")}`);
56
+ }
57
+ // 执行控制器方法
58
+ const result = await controllerInstance[route.methodName](...resolutionResult.args);
80
59
  // 返回结果
81
60
  if (typeof result === "object" && result !== null) {
82
61
  return c.json(result);
@@ -89,8 +68,8 @@ class RouterExplorer {
89
68
  }
90
69
  }
91
70
  catch (error) {
92
- // 应用异常过滤器
93
- return this.handleException(error, c);
71
+ // 直接抛出异常,由用户的Hono中间件处理
72
+ throw error;
94
73
  }
95
74
  };
96
75
  // 注册到 Hono
@@ -177,43 +156,6 @@ class RouterExplorer {
177
156
  }
178
157
  return { args, errors: errors.length > 0 ? errors : undefined };
179
158
  }
180
- /**
181
- * 应用拦截器
182
- */
183
- async applyInterceptors(context, handler) {
184
- if (this.globalInterceptors.length === 0) {
185
- return await handler();
186
- }
187
- // 构建拦截器链
188
- let index = 0;
189
- const callNext = async () => {
190
- if (index >= this.globalInterceptors.length) {
191
- return await handler();
192
- }
193
- const interceptor = this.globalInterceptors[index++];
194
- const callHandler = new interceptor_1.DefaultCallHandler(callNext);
195
- return await interceptor.intercept(context, callHandler);
196
- };
197
- return await callNext();
198
- }
199
- /**
200
- * 处理异常
201
- */
202
- handleException(error, context) {
203
- const argumentsHost = new exception_filter_1.DefaultArgumentsHost(context);
204
- // 优先使用全局异常过滤器
205
- for (const filter of this.globalFilters) {
206
- try {
207
- return filter.catch(error, argumentsHost);
208
- }
209
- catch (filterError) {
210
- console.error("Exception filter error:", filterError);
211
- }
212
- }
213
- // 默认异常处理
214
- const defaultFilter = new exception_filter_1.DefaultExceptionFilter();
215
- return defaultFilter.catch(error, argumentsHost);
216
- }
217
159
  /**
218
160
  * 合并路径
219
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"router-explorer.js","sourceRoot":"","sources":["../../src/router/router-explorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-explorer.js","sourceRoot":"","sources":["../../src/router/router-explorer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hestjs/core",
3
- "version": "0.1.10",
3
+ "version": "0.2.0",
4
4
  "description": "HestJS Core Framework - A TypeScript framework built on Hono with dependency injection and decorators",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,20 +0,0 @@
1
- import type { ContentfulStatusCode } from 'hono/utils/http-status';
2
- /**
3
- * 基础异常类
4
- */
5
- export declare abstract class BaseException extends Error {
6
- readonly status: ContentfulStatusCode;
7
- readonly error: string;
8
- readonly timestamp: Date;
9
- readonly path?: string;
10
- constructor(message: string, status?: ContentfulStatusCode, error?: string);
11
- /**
12
- * 获取异常响应对象
13
- */
14
- getResponse(): Record<string, any>;
15
- /**
16
- * 设置请求路径
17
- */
18
- setPath(path: string): this;
19
- }
20
- //# sourceMappingURL=base-exception.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/base-exception.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;GAEG;AACH,8BAAsB,aAAc,SAAQ,KAAK;aAM7B,MAAM,EAAE,oBAAoB;aAC5B,KAAK,EAAE,MAAM;IAN/B,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACC,MAAM,GAAE,oBAA0B,EAClC,KAAK,GAAE,MAAgC;IAUzD;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAUlC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAI5B"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseException = void 0;
4
- /**
5
- * 基础异常类
6
- */
7
- class BaseException extends Error {
8
- status;
9
- error;
10
- timestamp;
11
- path;
12
- constructor(message, status = 500, error = 'Internal Server Error') {
13
- super(message);
14
- this.status = status;
15
- this.error = error;
16
- this.name = this.constructor.name;
17
- this.timestamp = new Date();
18
- // 确保异常堆栈正确
19
- Error.captureStackTrace(this, this.constructor);
20
- }
21
- /**
22
- * 获取异常响应对象
23
- */
24
- getResponse() {
25
- return {
26
- statusCode: this.status,
27
- message: this.message,
28
- error: this.error,
29
- timestamp: this.timestamp.toISOString(),
30
- path: this.path,
31
- };
32
- }
33
- /**
34
- * 设置请求路径
35
- */
36
- setPath(path) {
37
- this.path = path;
38
- return this;
39
- }
40
- }
41
- exports.BaseException = BaseException;
42
- //# sourceMappingURL=base-exception.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-exception.js","sourceRoot":"","sources":["../../src/exceptions/base-exception.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAsB,aAAc,SAAQ,KAAK;IAM7B;IACA;IANF,SAAS,CAAO;IAChB,IAAI,CAAU;IAE9B,YACE,OAAe,EACC,SAA+B,GAAG,EAClC,QAAgB,uBAAuB;QAEvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAA4B;QAClC,UAAK,GAAL,KAAK,CAAkC;QAGvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,WAAW;QACX,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QACjB,IAAY,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArCD,sCAqCC"}
@@ -1,39 +0,0 @@
1
- import type { Context } from "hono";
2
- import { HttpException } from "./http-exception";
3
- /**
4
- * 异常过滤器接口
5
- */
6
- export interface ExceptionFilter<T = any> {
7
- catch(exception: T, host: ArgumentsHost): any;
8
- }
9
- /**
10
- * 参数宿主接口
11
- */
12
- export interface ArgumentsHost {
13
- getContext(): Context;
14
- getRequest(): any;
15
- getResponse(): any;
16
- }
17
- /**
18
- * 默认参数宿主实现
19
- */
20
- export declare class DefaultArgumentsHost implements ArgumentsHost {
21
- private readonly context;
22
- constructor(context: Context);
23
- getContext(): Context;
24
- getRequest(): any;
25
- getResponse(): any;
26
- }
27
- /**
28
- * 默认全局异常过滤器
29
- */
30
- export declare class DefaultExceptionFilter implements ExceptionFilter {
31
- catch(exception: any, host: ArgumentsHost): any;
32
- }
33
- /**
34
- * HTTP 异常过滤器
35
- */
36
- export declare class HttpExceptionFilter implements ExceptionFilter<HttpException> {
37
- catch(exception: HttpException, host: ArgumentsHost): any;
38
- }
39
- //# sourceMappingURL=exception-filter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exception-filter.d.ts","sourceRoot":"","sources":["../../src/exceptions/exception-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,GAAG,GAAG,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,IAAI,OAAO,CAAC;IACtB,UAAU,IAAI,GAAG,CAAC;IAClB,WAAW,IAAI,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAE7C,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,GAAG;IAIjB,WAAW,IAAI,GAAG;CAGnB;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,GAAG,GAAG;CA0BhD;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe,CAAC,aAAa,CAAC;IACxE,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,GAAG;CAY1D"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpExceptionFilter = exports.DefaultExceptionFilter = exports.DefaultArgumentsHost = void 0;
4
- const base_exception_1 = require("./base-exception");
5
- /**
6
- * 默认参数宿主实现
7
- */
8
- class DefaultArgumentsHost {
9
- context;
10
- constructor(context) {
11
- this.context = context;
12
- }
13
- getContext() {
14
- return this.context;
15
- }
16
- getRequest() {
17
- return this.context.req;
18
- }
19
- getResponse() {
20
- return this.context;
21
- }
22
- }
23
- exports.DefaultArgumentsHost = DefaultArgumentsHost;
24
- /**
25
- * 默认全局异常过滤器
26
- */
27
- class DefaultExceptionFilter {
28
- catch(exception, host) {
29
- const ctx = host.getContext();
30
- const request = host.getRequest();
31
- let status = 500;
32
- let response = {
33
- statusCode: 500,
34
- message: "Internal server error",
35
- timestamp: new Date().toISOString(),
36
- path: request.url,
37
- };
38
- if (exception instanceof base_exception_1.BaseException) {
39
- status = exception.status;
40
- response = exception.getResponse();
41
- response.path = request.url;
42
- }
43
- else if (exception instanceof Error) {
44
- response.message = exception.message;
45
- response.stack = exception.stack;
46
- }
47
- // 记录错误日志
48
- console.error(`Exception caught: ${exception.message}`, exception.stack);
49
- return ctx.json(response, status);
50
- }
51
- }
52
- exports.DefaultExceptionFilter = DefaultExceptionFilter;
53
- /**
54
- * HTTP 异常过滤器
55
- */
56
- class HttpExceptionFilter {
57
- catch(exception, host) {
58
- const ctx = host.getContext();
59
- const request = host.getRequest();
60
- const status = exception.status;
61
- const response = {
62
- ...exception.getResponse(),
63
- path: request.url,
64
- };
65
- return ctx.json(response, status);
66
- }
67
- }
68
- exports.HttpExceptionFilter = HttpExceptionFilter;
69
- //# sourceMappingURL=exception-filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exception-filter.js","sourceRoot":"","sources":["../../src/exceptions/exception-filter.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AAmBjD;;GAEG;AACH,MAAa,oBAAoB;IACF;IAA7B,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAdD,oDAcC;AAED;;GAEG;AACH,MAAa,sBAAsB;IACjC,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,QAAQ,GAAQ;YAClB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,uBAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,GAAG;SAClB,CAAC;QAEF,IAAI,SAAS,YAAY,8BAAa,EAAE,CAAC;YACvC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAC1B,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;QAC9B,CAAC;aAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YACrC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACnC,CAAC;QAED,SAAS;QACT,OAAO,CAAC,KAAK,CAAC,qBAAqB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzE,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAa,CAAC,CAAC;IAC3C,CAAC;CACF;AA3BD,wDA2BC;AAED;;GAEG;AACH,MAAa,mBAAmB;IAC9B,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,MAAM,QAAQ,GAAG;YACf,GAAG,SAAS,CAAC,WAAW,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,GAAG;SAClB,CAAC;QAEF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAa,CAAC,CAAC;IAC3C,CAAC;CACF;AAbD,kDAaC"}
@@ -1,40 +0,0 @@
1
- import { BaseException } from './base-exception';
2
- import type { ContentfulStatusCode } from 'hono/utils/http-status';
3
- /**
4
- * HTTP 异常类
5
- */
6
- export declare class HttpException extends BaseException {
7
- constructor(response: string | Record<string, any>, status: ContentfulStatusCode, options?: {
8
- cause?: Error;
9
- description?: string;
10
- });
11
- /**
12
- * 获取状态码对应的默认错误消息
13
- */
14
- private static getDefaultMessage;
15
- }
16
- /**
17
- * 常用 HTTP 异常类
18
- */
19
- export declare class BadRequestException extends HttpException {
20
- constructor(message?: string | Record<string, any>, description?: string);
21
- }
22
- export declare class UnauthorizedException extends HttpException {
23
- constructor(message?: string | Record<string, any>, description?: string);
24
- }
25
- export declare class ForbiddenException extends HttpException {
26
- constructor(message?: string | Record<string, any>, description?: string);
27
- }
28
- export declare class NotFoundException extends HttpException {
29
- constructor(message?: string | Record<string, any>, description?: string);
30
- }
31
- export declare class ConflictException extends HttpException {
32
- constructor(message?: string | Record<string, any>, description?: string);
33
- }
34
- export declare class UnprocessableEntityException extends HttpException {
35
- constructor(message?: string | Record<string, any>, description?: string);
36
- }
37
- export declare class InternalServerErrorException extends HttpException {
38
- constructor(message?: string | Record<string, any>, description?: string);
39
- }
40
- //# sourceMappingURL=http-exception.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/http-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAE5C,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAYnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAqBjC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,4BAA6B,SAAQ,aAAa;gBACjD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE;AAED,qBAAa,4BAA6B,SAAQ,aAAa;gBACjD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;CAGzE"}
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InternalServerErrorException = exports.UnprocessableEntityException = exports.ConflictException = exports.NotFoundException = exports.ForbiddenException = exports.UnauthorizedException = exports.BadRequestException = exports.HttpException = void 0;
4
- const base_exception_1 = require("./base-exception");
5
- /**
6
- * HTTP 异常类
7
- */
8
- class HttpException extends base_exception_1.BaseException {
9
- constructor(response, status, options) {
10
- const message = typeof response === 'string' ? response : response.message || 'Http Exception';
11
- const error = typeof response === 'string' ? HttpException.getDefaultMessage(status) : response.error;
12
- super(message, status, error);
13
- if (options?.cause) {
14
- this.cause = options.cause;
15
- }
16
- }
17
- /**
18
- * 获取状态码对应的默认错误消息
19
- */
20
- static getDefaultMessage(status) {
21
- switch (status) {
22
- case 400: return 'Bad Request';
23
- case 401: return 'Unauthorized';
24
- case 403: return 'Forbidden';
25
- case 404: return 'Not Found';
26
- case 405: return 'Method Not Allowed';
27
- case 406: return 'Not Acceptable';
28
- case 408: return 'Request Timeout';
29
- case 409: return 'Conflict';
30
- case 410: return 'Gone';
31
- case 422: return 'Unprocessable Entity';
32
- case 429: return 'Too Many Requests';
33
- case 500: return 'Internal Server Error';
34
- case 501: return 'Not Implemented';
35
- case 502: return 'Bad Gateway';
36
- case 503: return 'Service Unavailable';
37
- case 504: return 'Gateway Timeout';
38
- default: return 'Error';
39
- }
40
- }
41
- }
42
- exports.HttpException = HttpException;
43
- /**
44
- * 常用 HTTP 异常类
45
- */
46
- class BadRequestException extends HttpException {
47
- constructor(message, description) {
48
- super(message || 'Bad Request', 400, { description });
49
- }
50
- }
51
- exports.BadRequestException = BadRequestException;
52
- class UnauthorizedException extends HttpException {
53
- constructor(message, description) {
54
- super(message || 'Unauthorized', 401, { description });
55
- }
56
- }
57
- exports.UnauthorizedException = UnauthorizedException;
58
- class ForbiddenException extends HttpException {
59
- constructor(message, description) {
60
- super(message || 'Forbidden', 403, { description });
61
- }
62
- }
63
- exports.ForbiddenException = ForbiddenException;
64
- class NotFoundException extends HttpException {
65
- constructor(message, description) {
66
- super(message || 'Not Found', 404, { description });
67
- }
68
- }
69
- exports.NotFoundException = NotFoundException;
70
- class ConflictException extends HttpException {
71
- constructor(message, description) {
72
- super(message || 'Conflict', 409, { description });
73
- }
74
- }
75
- exports.ConflictException = ConflictException;
76
- class UnprocessableEntityException extends HttpException {
77
- constructor(message, description) {
78
- super(message || 'Unprocessable Entity', 422, { description });
79
- }
80
- }
81
- exports.UnprocessableEntityException = UnprocessableEntityException;
82
- class InternalServerErrorException extends HttpException {
83
- constructor(message, description) {
84
- super(message || 'Internal Server Error', 500, { description });
85
- }
86
- }
87
- exports.InternalServerErrorException = InternalServerErrorException;
88
- //# sourceMappingURL=http-exception.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-exception.js","sourceRoot":"","sources":["../../src/exceptions/http-exception.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from './base-exception';
2
- export * from './http-exception';
3
- export * from './exception-filter';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./base-exception"), exports);
18
- __exportStar(require("./http-exception"), exports);
19
- __exportStar(require("./exception-filter"), exports);
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC"}
@@ -1,2 +0,0 @@
1
- export * from './interceptor';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./interceptor"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -1,82 +0,0 @@
1
- import type { Context } from "hono";
2
- /**
3
- * 可观察对象接口(简化版)
4
- */
5
- export interface Observable<T> {
6
- subscribe(observer: (value: T) => void): void;
7
- }
8
- /**
9
- * 执行上下文接口
10
- */
11
- export interface ExecutionContext {
12
- getClass(): any;
13
- getHandler(): any;
14
- getArgs(): any[];
15
- getArgByIndex<T = any>(index: number): T;
16
- switchToHttp(): HttpArgumentsHost;
17
- }
18
- /**
19
- * HTTP 参数宿主接口
20
- */
21
- export interface HttpArgumentsHost {
22
- getRequest(): any;
23
- getResponse(): any;
24
- getNext?(): any;
25
- }
26
- /**
27
- * 调用处理器接口
28
- */
29
- export interface CallHandler<T = any> {
30
- handle(): Observable<T> | Promise<T>;
31
- }
32
- /**
33
- * 拦截器接口
34
- */
35
- export interface Interceptor<T = any, R = any> {
36
- intercept(context: ExecutionContext, next: CallHandler<T>): Observable<R> | Promise<Observable<R>> | Promise<R>;
37
- }
38
- /**
39
- * 默认执行上下文实现
40
- */
41
- export declare class DefaultExecutionContext implements ExecutionContext {
42
- private readonly classRef;
43
- private readonly handler;
44
- private readonly args;
45
- private readonly httpContext;
46
- constructor(classRef: any, handler: any, args: any[], httpContext: Context);
47
- getClass(): any;
48
- getHandler(): any;
49
- getArgs(): any[];
50
- getArgByIndex<T = any>(index: number): T;
51
- switchToHttp(): HttpArgumentsHost;
52
- }
53
- /**
54
- * 默认调用处理器实现
55
- */
56
- export declare class DefaultCallHandler<T = any> implements CallHandler<T> {
57
- private readonly handler;
58
- constructor(handler: () => Promise<T> | T);
59
- handle(): Promise<T>;
60
- }
61
- /**
62
- * 简单的 Observable 实现
63
- */
64
- export declare class SimpleObservable<T> implements Observable<T> {
65
- private readonly promise;
66
- constructor(promise: Promise<T>);
67
- subscribe(observer: (value: T) => void): void;
68
- static from<T>(promise: Promise<T>): SimpleObservable<T>;
69
- }
70
- /**
71
- * 响应拦截器示例
72
- */
73
- export declare class ResponseInterceptor implements Interceptor {
74
- intercept(context: ExecutionContext, next: CallHandler): Promise<any>;
75
- }
76
- /**
77
- * 日志拦截器示例
78
- */
79
- export declare class LoggingInterceptor implements Interceptor {
80
- intercept(context: ExecutionContext, next: CallHandler): Promise<any>;
81
- }
82
- //# sourceMappingURL=interceptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/interceptor.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.LoggingInterceptor = exports.ResponseInterceptor = exports.SimpleObservable = exports.DefaultCallHandler = exports.DefaultExecutionContext = void 0;
10
- const logger_1 = require("@hestjs/logger");
11
- const injectable_1 = require("../decorators/injectable");
12
- const log = (0, logger_1.createLogger)("HestInterceptor");
13
- /**
14
- * 默认执行上下文实现
15
- */
16
- class DefaultExecutionContext {
17
- classRef;
18
- handler;
19
- args;
20
- httpContext;
21
- constructor(classRef, handler, args, httpContext) {
22
- this.classRef = classRef;
23
- this.handler = handler;
24
- this.args = args;
25
- this.httpContext = httpContext;
26
- }
27
- getClass() {
28
- return this.classRef;
29
- }
30
- getHandler() {
31
- return this.handler;
32
- }
33
- getArgs() {
34
- return this.args;
35
- }
36
- getArgByIndex(index) {
37
- return this.args[index];
38
- }
39
- switchToHttp() {
40
- return {
41
- getRequest: () => this.httpContext.req,
42
- getResponse: () => this.httpContext,
43
- };
44
- }
45
- }
46
- exports.DefaultExecutionContext = DefaultExecutionContext;
47
- /**
48
- * 默认调用处理器实现
49
- */
50
- class DefaultCallHandler {
51
- handler;
52
- constructor(handler) {
53
- this.handler = handler;
54
- }
55
- async handle() {
56
- return await this.handler();
57
- }
58
- }
59
- exports.DefaultCallHandler = DefaultCallHandler;
60
- /**
61
- * 简单的 Observable 实现
62
- */
63
- class SimpleObservable {
64
- promise;
65
- constructor(promise) {
66
- this.promise = promise;
67
- }
68
- subscribe(observer) {
69
- this.promise.then(observer).catch(console.error);
70
- }
71
- static from(promise) {
72
- return new SimpleObservable(promise);
73
- }
74
- }
75
- exports.SimpleObservable = SimpleObservable;
76
- /**
77
- * 响应拦截器示例
78
- */
79
- let ResponseInterceptor = class ResponseInterceptor {
80
- async intercept(context, next) {
81
- const start = Date.now();
82
- const result = await next.handle();
83
- const duration = Date.now() - start;
84
- // 包装响应
85
- return {
86
- success: true,
87
- data: result,
88
- timestamp: new Date().toISOString(),
89
- duration: `${duration}ms`,
90
- };
91
- }
92
- };
93
- exports.ResponseInterceptor = ResponseInterceptor;
94
- exports.ResponseInterceptor = ResponseInterceptor = __decorate([
95
- (0, injectable_1.Injectable)()
96
- ], ResponseInterceptor);
97
- /**
98
- * 日志拦截器示例
99
- */
100
- let LoggingInterceptor = class LoggingInterceptor {
101
- async intercept(context, next) {
102
- const request = context.switchToHttp().getRequest();
103
- const startTime = Date.now();
104
- try {
105
- const result = await next.handle();
106
- const duration = Date.now() - startTime;
107
- return result;
108
- }
109
- catch (error) {
110
- const duration = Date.now() - startTime;
111
- log.error(`📝 [${new Date().toISOString()}] ${request.method} ${request.url} - ${duration}ms - ERROR:`, error);
112
- throw error;
113
- }
114
- }
115
- };
116
- exports.LoggingInterceptor = LoggingInterceptor;
117
- exports.LoggingInterceptor = LoggingInterceptor = __decorate([
118
- (0, injectable_1.Injectable)()
119
- ], LoggingInterceptor);
120
- //# sourceMappingURL=interceptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/interceptors/interceptor.ts"],"names":[],"mappings":"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"}