@dangao/bun-server 1.8.3 → 1.10.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 (88) hide show
  1. package/README.md +60 -6
  2. package/dist/core/application.d.ts +12 -0
  3. package/dist/core/application.d.ts.map +1 -1
  4. package/dist/core/server.d.ts +7 -0
  5. package/dist/core/server.d.ts.map +1 -1
  6. package/dist/events/event-module.d.ts +4 -0
  7. package/dist/events/event-module.d.ts.map +1 -1
  8. package/dist/events/types.d.ts +16 -0
  9. package/dist/events/types.d.ts.map +1 -1
  10. package/dist/index.js +4969 -4882
  11. package/docs/custom-decorators.md +1 -7
  12. package/docs/extensions.md +0 -2
  13. package/docs/guide.md +0 -1
  14. package/docs/zh/custom-decorators.md +1 -7
  15. package/docs/zh/extensions.md +0 -2
  16. package/docs/zh/guide.md +0 -1
  17. package/docs/zh/migration.md +0 -5
  18. package/package.json +4 -4
  19. package/src/core/application.ts +38 -0
  20. package/src/core/server.ts +9 -0
  21. package/src/events/event-module.ts +108 -0
  22. package/src/events/types.ts +19 -0
  23. package/tests/auth/auth-decorators.test.ts +0 -1
  24. package/tests/auth/oauth2-service.test.ts +0 -1
  25. package/tests/cache/cache-decorators-extended.test.ts +0 -1
  26. package/tests/cache/cache-decorators.test.ts +0 -1
  27. package/tests/cache/cache-interceptors.test.ts +0 -1
  28. package/tests/cache/cache-module.test.ts +0 -1
  29. package/tests/cache/cache-service-proxy.test.ts +0 -1
  30. package/tests/config/config-center-integration.test.ts +0 -1
  31. package/tests/config/config-module-extended.test.ts +0 -1
  32. package/tests/config/config-module.test.ts +0 -1
  33. package/tests/controller/controller.test.ts +0 -1
  34. package/tests/controller/param-binder.test.ts +0 -1
  35. package/tests/controller/path-combination.test.ts +0 -1
  36. package/tests/core/application.test.ts +34 -0
  37. package/tests/database/database-module.test.ts +0 -1
  38. package/tests/database/orm.test.ts +0 -1
  39. package/tests/database/postgres-mysql-integration.test.ts +0 -1
  40. package/tests/database/transaction.test.ts +0 -1
  41. package/tests/di/container.test.ts +0 -1
  42. package/tests/error/error-handler.test.ts +0 -1
  43. package/tests/events/event-decorators.test.ts +0 -1
  44. package/tests/events/event-listener-scanner.test.ts +0 -1
  45. package/tests/events/event-module.test.ts +0 -1
  46. package/tests/extensions/logger-module.test.ts +0 -1
  47. package/tests/health/health-module.test.ts +0 -1
  48. package/tests/integration/oauth2-e2e.test.ts +0 -1
  49. package/tests/integration/session-e2e.test.ts +0 -1
  50. package/tests/interceptor/base-interceptor.test.ts +0 -1
  51. package/tests/interceptor/builtin/cache-interceptor.test.ts +0 -1
  52. package/tests/interceptor/builtin/log-interceptor.test.ts +0 -1
  53. package/tests/interceptor/builtin/permission-interceptor.test.ts +0 -1
  54. package/tests/interceptor/interceptor-advanced-integration.test.ts +0 -1
  55. package/tests/interceptor/interceptor-chain.test.ts +0 -1
  56. package/tests/interceptor/interceptor-integration.test.ts +0 -1
  57. package/tests/interceptor/interceptor-metadata.test.ts +0 -1
  58. package/tests/interceptor/interceptor-registry.test.ts +0 -1
  59. package/tests/interceptor/perf/interceptor-performance.test.ts +0 -1
  60. package/tests/metrics/metrics-module.test.ts +0 -1
  61. package/tests/microservice/config-center.test.ts +0 -1
  62. package/tests/microservice/service-client-decorators.test.ts +0 -1
  63. package/tests/microservice/service-registry-decorators.test.ts +0 -1
  64. package/tests/microservice/service-registry.test.ts +0 -1
  65. package/tests/middleware/builtin/middleware-builtin-extended.test.ts +0 -1
  66. package/tests/middleware/builtin/rate-limit.test.ts +0 -1
  67. package/tests/middleware/middleware-decorators.test.ts +0 -1
  68. package/tests/middleware/middleware-pipeline.test.ts +0 -1
  69. package/tests/middleware/middleware.test.ts +0 -1
  70. package/tests/perf/optimization.test.ts +0 -1
  71. package/tests/queue/queue-decorators.test.ts +0 -1
  72. package/tests/queue/queue-module.test.ts +0 -1
  73. package/tests/queue/queue-service.test.ts +0 -1
  74. package/tests/router/router-decorators.test.ts +0 -1
  75. package/tests/router/router-extended.test.ts +0 -1
  76. package/tests/security/guards/guards-integration.test.ts +0 -1
  77. package/tests/security/guards/guards.test.ts +0 -1
  78. package/tests/security/guards/reflector.test.ts +0 -1
  79. package/tests/security/security-filter.test.ts +0 -1
  80. package/tests/security/security-module-extended.test.ts +0 -1
  81. package/tests/security/security-module.test.ts +0 -1
  82. package/tests/session/session-decorators.test.ts +0 -1
  83. package/tests/session/session-module.test.ts +0 -1
  84. package/tests/swagger/decorators.test.ts +0 -1
  85. package/tests/swagger/swagger-module.test.ts +0 -1
  86. package/tests/swagger/ui.test.ts +0 -1
  87. package/tests/validation/class-validator.test.ts +0 -1
  88. package/tests/validation/controller-validation.test.ts +0 -1
package/README.md CHANGED
@@ -433,22 +433,71 @@ learning paths, difficulty ratings, and usage scenarios.
433
433
 
434
434
  ## Benchmark Suite
435
435
 
436
- Benchmarks live in `benchmark/` and rely on `PerformanceHarness` &
437
- `StressTester`.
436
+ ### Internal Micro-benchmarks
437
+
438
+ `PerformanceHarness` & `StressTester` based benchmarks:
438
439
 
439
440
  | Script | Description |
440
441
  | ----------------- | --------------------------------------------------------------------- |
441
442
  | `router.bench.ts` | static/dynamic route hits, `router.handle` and stress runs |
442
443
  | `di.bench.ts` | singleton vs factory resolves, nested dependencies, concurrent stress |
443
444
 
444
- Run directly:
445
-
446
445
  ```bash
447
446
  bun benchmark/router.bench.ts
448
447
  bun benchmark/di.bench.ts
449
448
  ```
450
449
 
451
- Or use `bun run bench*` scripts for convenience.
450
+ ### Framework Comparison (bun-server vs Express vs NestJS)
451
+
452
+ Real HTTP load testing with [wrk](https://github.com/wg/wrk), comparing
453
+ bun-server against Express 5 and NestJS 11. All frameworks run on the same Bun
454
+ runtime to isolate framework overhead.
455
+
456
+ **Prerequisites:** wrk (`brew install wrk` / `apt install wrk`). The script
457
+ automatically raises `ulimit -n` to 10240 for child processes.
458
+
459
+ ```bash
460
+ bun benchmark/run-wrk-compare.ts # full comparison (3 tiers)
461
+ TIER=0 bun benchmark/run-wrk-compare.ts # Light tier only
462
+ bun benchmark/run-wrk.ts # bun-server only (3 tiers)
463
+ ```
464
+
465
+ > **Environment:** Apple M2 Pro (8P + 4E cores) / darwin arm64 / Bun 1.3.10
466
+
467
+ #### Req/Sec (Light: -t2 -c50 -d10s)
468
+
469
+ | Endpoint | bun-server | Express | NestJS |
470
+ |-----------------------|--------------|----------|----------|
471
+ | GET /ping | **31.41k** | 30.01k | 26.52k |
472
+ | GET /json | **28.22k** | 25.99k | 23.64k |
473
+ | GET /users/:id | **30.88k** | 29.91k | 25.62k |
474
+ | GET /search?q= | **29.96k** | 28.70k | 25.17k |
475
+ | POST /users | **27.65k** | 21.37k | 19.38k |
476
+ | POST /users/validated | **26.60k** | 21.28k | 18.93k |
477
+ | GET /middleware | **29.52k** | 28.57k | 24.69k |
478
+ | GET /headers | **30.98k** | 29.57k | 26.43k |
479
+ | GET /io | **21.37k** | 19.46k | 18.49k |
480
+
481
+ Zero errors across all frameworks and tiers. See the full report for Medium and
482
+ Heavy tier results.
483
+
484
+ > 📊 Full comparison report (3 tiers, latency breakdown, per-framework
485
+ > details): [`benchmark/REPORT_COMPARE.md`](./benchmark/REPORT_COMPARE.md)
486
+ >
487
+ > 📋 Single-framework detailed report:
488
+ > [`benchmark/REPORT.md`](./benchmark/REPORT.md)
489
+
490
+ ### Multi-process Benchmark (reusePort, Linux only)
491
+
492
+ ```bash
493
+ bun benchmark/run-wrk-cluster.ts # default: 1 worker per CPU core
494
+ WORKERS=4 bun benchmark/run-wrk-cluster.ts
495
+ ```
496
+
497
+ Spawns N workers sharing the same port via `SO_REUSEPORT`. The kernel
498
+ distributes connections across processes. Report saved to
499
+ `benchmark/REPORT_CLUSTER.md`. Note: `reusePort` only works on **Linux**;
500
+ macOS/Windows silently ignore it.
452
501
 
453
502
  ## Docs & Localization
454
503
 
@@ -458,6 +507,11 @@ Or use `bun run bench*` scripts for convenience.
458
507
  `docs/error-handling.md`, `docs/request-lifecycle.md`.
459
508
  - **Chinese**: mirrored under `docs/zh/`. If something is missing, please fall
460
509
  back to the English source.
510
+ - **Skills & Troubleshooting**: `skills/` directory
511
+ - Real-world problems encountered during development with solutions
512
+ - Organized by category (events, di, modules, common)
513
+ - Each issue includes complete error info, root cause analysis, and fix steps
514
+ - [View Skills Repository](./skills/README.md)
461
515
 
462
516
  ## Roadmap
463
517
 
@@ -520,6 +574,6 @@ Released under the [MIT License](./LICENSE).
520
574
 
521
575
  ## Other Languages
522
576
 
523
- - [中文 README](./readme_zh.md)
577
+ - [中文 README](./README_ZH.md)
524
578
 
525
579
  Enjoy building on Bun Server!
@@ -25,6 +25,13 @@ export interface ApplicationOptions {
25
25
  * 默认 true
26
26
  */
27
27
  enableSignalHandlers?: boolean;
28
+ /**
29
+ * 是否启用 SO_REUSEPORT
30
+ * 允许多进程绑定同一端口,用于多进程负载均衡
31
+ * 仅 Linux 有效,macOS/Windows 会忽略
32
+ * @default false
33
+ */
34
+ reusePort?: boolean;
28
35
  }
29
36
  /**
30
37
  * 应用主类
@@ -56,6 +63,11 @@ export declare class Application {
56
63
  * 在所有模块注册完成后调用,确保 ConfigCenterModule 已注册
57
64
  */
58
65
  private initializeConfigCenter;
66
+ /**
67
+ * 初始化事件监听器
68
+ * 在所有模块注册完成后调用,自动扫描并注册使用 @OnEvent 装饰器的类
69
+ */
70
+ private initializeEventListeners;
59
71
  /**
60
72
  * 停止应用(立即停止,不等待请求完成)
61
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,uBAAuB,CAAkB;gBAE9B,OAAO,GAAE,kBAAuB;IAsBnD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9D;;OAEG;YACW,eAAe;IAkB7B;;;;OAIG;YACW,aAAa;IAyC3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAqBrD;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAc1C;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;YACW,gBAAgB;IAsB9B;;;OAGG;YACW,kBAAkB;IAwBhC;;;OAGG;IACI,YAAY;IAInB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAS3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,uBAAuB,CAAkB;gBAE9B,OAAO,GAAE,kBAAuB;IAsBnD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9D;;OAEG;YACW,eAAe;IAkB7B;;;;OAIG;YACW,aAAa;IAyC3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAqBrD;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAc1C;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;YACW,gBAAgB;IAsB9B;;;OAGG;YACW,kBAAkB;IAwBhC;;;OAGG;IACI,YAAY;IAInB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -27,6 +27,13 @@ export interface ServerOptions {
27
27
  * 默认 30 秒
28
28
  */
29
29
  gracefulShutdownTimeout?: number;
30
+ /**
31
+ * 是否启用 SO_REUSEPORT
32
+ * 允许多进程绑定同一端口,用于多进程负载均衡
33
+ * 仅 Linux 有效,macOS/Windows 会忽略
34
+ * @default false
35
+ */
36
+ reusePort?: boolean;
30
37
  }
31
38
  /**
32
39
  * 服务器封装类
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAElB,OAAO,EAAE,aAAa;IAIzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAoGpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAWnB;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9D;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;;OAGG;IACI,SAAS,IAAI,MAAM,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAI/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;CAGzC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAElB,OAAO,EAAE,aAAa;IAIzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAqGpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAWnB;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9D;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;;OAGG;IACI,SAAS,IAAI,MAAM,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAI/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;CAGzC"}
@@ -34,6 +34,10 @@ export declare class EventModule {
34
34
  * 已注册的监听器类(用于模块初始化后扫描)
35
35
  */
36
36
  private static listenerClasses;
37
+ /**
38
+ * 模块选项
39
+ */
40
+ private static options;
37
41
  /**
38
42
  * 创建事件模块
39
43
  * @param options - 模块配置
@@ -1 +1 @@
1
- {"version":3,"file":"event-module.d.ts","sourceRoot":"","sources":["../../src/events/event-module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B;;;;OAIG;gBAEgB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;IAGvC;;;OAGG;IACI,eAAe,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMzD;;;OAGG;IACI,qBAAqB,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI;CA2C5D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,eAExC,CAAC;AAEF,qBAGa,WAAW;IACtB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe,CAAkB;IAEhD;;;;;;;;;;;;;;;;;OAiBG;WACW,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,WAAW;IAsC3E;;;;;;;;;;OAUG;WACW,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI;IAIlE;;;;;;;;;;;;;;;;;;;OAmBG;WACW,mBAAmB,CAC/B,iBAAiB,CAAC,EAAE,SAAS,EAC7B,mBAAmB,GAAE,QAAQ,EAAO,GACnC,IAAI;IA2CP;;;;;OAKG;WACW,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;CAwB/E"}
1
+ {"version":3,"file":"event-module.d.ts","sourceRoot":"","sources":["../../src/events/event-module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B;;;;OAIG;gBAEgB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;IAGvC;;;OAGG;IACI,eAAe,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMzD;;;OAGG;IACI,qBAAqB,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI;CA2C5D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,eAExC,CAAC;AAEF,qBAGa,WAAW;IACtB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe,CAAkB;IAEhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO,CAAmD;IAEzE;;;;;;;;;;;;;;;;;OAiBG;WACW,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,WAAW;IA4C3E;;;;;;;;;;OAUG;WACW,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI;IAIlE;;;;;;;;;;;;;;;;;;;OAmBG;WACW,mBAAmB,CAC/B,iBAAiB,CAAC,EAAE,SAAS,EAC7B,mBAAmB,GAAE,QAAQ,EAAO,GACnC,IAAI;IA2CP;;;;;OAKG;WACW,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;CAyH/E"}
@@ -143,6 +143,22 @@ export interface EventModuleOptions {
143
143
  * @param payload - 事件负载
144
144
  */
145
145
  onError?: (error: Error, event: string | symbol, payload: unknown) => void;
146
+ /**
147
+ * 是否自动扫描和注册事件监听器
148
+ * 当设置为 true 时,框架会在应用启动时自动扫描所有模块中使用 @OnEvent 装饰器的类
149
+ * @default true
150
+ */
151
+ autoScan?: boolean;
152
+ /**
153
+ * 需要排除的监听器类(不自动注册)
154
+ * 用于在自动扫描时排除某些类
155
+ */
156
+ excludeListeners?: Function[];
157
+ /**
158
+ * 额外的监听器类(强制注册)
159
+ * 即使 autoScan 为 false,这些类也会被注册
160
+ */
161
+ includeListeners?: Function[];
146
162
  }
147
163
  /**
148
164
  * 装饰器方法元数据
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"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"}