@dangao/bun-server 2.0.3 → 2.1.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 (135) hide show
  1. package/README.md +4 -0
  2. package/dist/config/config-module.d.ts +3 -0
  3. package/dist/config/config-module.d.ts.map +1 -1
  4. package/dist/controller/controller.d.ts.map +1 -1
  5. package/dist/core/application.d.ts +6 -1
  6. package/dist/core/application.d.ts.map +1 -1
  7. package/dist/core/context.d.ts +10 -0
  8. package/dist/core/context.d.ts.map +1 -1
  9. package/dist/core/server.d.ts +5 -0
  10. package/dist/core/server.d.ts.map +1 -1
  11. package/dist/database/database-context.d.ts +25 -0
  12. package/dist/database/database-context.d.ts.map +1 -0
  13. package/dist/database/database-extension.d.ts +8 -9
  14. package/dist/database/database-extension.d.ts.map +1 -1
  15. package/dist/database/database-module.d.ts +7 -1
  16. package/dist/database/database-module.d.ts.map +1 -1
  17. package/dist/database/db-proxy.d.ts +12 -0
  18. package/dist/database/db-proxy.d.ts.map +1 -0
  19. package/dist/database/index.d.ts +6 -1
  20. package/dist/database/index.d.ts.map +1 -1
  21. package/dist/database/orm/transaction-interceptor.d.ts +0 -16
  22. package/dist/database/orm/transaction-interceptor.d.ts.map +1 -1
  23. package/dist/database/orm/transaction-manager.d.ts +10 -61
  24. package/dist/database/orm/transaction-manager.d.ts.map +1 -1
  25. package/dist/database/service.d.ts +4 -4
  26. package/dist/database/service.d.ts.map +1 -1
  27. package/dist/database/sql-manager.d.ts +14 -0
  28. package/dist/database/sql-manager.d.ts.map +1 -0
  29. package/dist/database/sqlite-adapter.d.ts +32 -0
  30. package/dist/database/sqlite-adapter.d.ts.map +1 -0
  31. package/dist/database/strategy-decorator.d.ts +8 -0
  32. package/dist/database/strategy-decorator.d.ts.map +1 -0
  33. package/dist/database/types.d.ts +122 -1
  34. package/dist/database/types.d.ts.map +1 -1
  35. package/dist/di/module-registry.d.ts.map +1 -1
  36. package/dist/index.d.ts +3 -3
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +3544 -2876
  39. package/dist/microservice/service-registry/service-registry-module.d.ts +16 -0
  40. package/dist/microservice/service-registry/service-registry-module.d.ts.map +1 -1
  41. package/dist/router/index.d.ts +1 -0
  42. package/dist/router/index.d.ts.map +1 -1
  43. package/dist/router/registry.d.ts +1 -1
  44. package/dist/router/registry.d.ts.map +1 -1
  45. package/dist/router/route.d.ts +2 -1
  46. package/dist/router/route.d.ts.map +1 -1
  47. package/dist/router/router.d.ts +1 -1
  48. package/dist/router/router.d.ts.map +1 -1
  49. package/dist/router/timeout-decorator.d.ts +6 -0
  50. package/dist/router/timeout-decorator.d.ts.map +1 -0
  51. package/dist/validation/decorators.d.ts.map +1 -1
  52. package/docs/database.md +48 -15
  53. package/docs/idle-timeout.md +42 -0
  54. package/docs/lifecycle.md +6 -0
  55. package/docs/microservice-nacos.md +1 -0
  56. package/docs/microservice-service-registry.md +7 -0
  57. package/docs/zh/database.md +48 -15
  58. package/docs/zh/idle-timeout.md +41 -0
  59. package/docs/zh/lifecycle.md +5 -0
  60. package/docs/zh/microservice-nacos.md +1 -0
  61. package/docs/zh/microservice-service-registry.md +6 -0
  62. package/package.json +5 -4
  63. package/src/ai/providers/anthropic-provider.ts +1 -1
  64. package/src/ai/providers/google-provider.ts +1 -1
  65. package/src/ai/providers/ollama-provider.ts +1 -1
  66. package/src/ai/providers/openai-provider.ts +2 -2
  67. package/src/auth/jwt.ts +1 -1
  68. package/src/cache/interceptors.ts +3 -3
  69. package/src/cache/types.ts +10 -10
  70. package/src/client/runtime.ts +1 -1
  71. package/src/config/config-module.ts +46 -14
  72. package/src/config/service.ts +2 -2
  73. package/src/controller/controller.ts +11 -1
  74. package/src/controller/param-binder.ts +1 -1
  75. package/src/conversation/service.ts +1 -1
  76. package/src/core/application.ts +61 -2
  77. package/src/core/cluster.ts +4 -4
  78. package/src/core/context.ts +71 -0
  79. package/src/core/server.ts +10 -0
  80. package/src/dashboard/controller.ts +2 -2
  81. package/src/database/connection-manager.ts +4 -4
  82. package/src/database/database-context.ts +43 -0
  83. package/src/database/database-extension.ts +12 -45
  84. package/src/database/database-module.ts +254 -11
  85. package/src/database/db-proxy.ts +75 -0
  86. package/src/database/index.ts +29 -0
  87. package/src/database/orm/transaction-interceptor.ts +12 -149
  88. package/src/database/orm/transaction-manager.ts +143 -210
  89. package/src/database/service.ts +53 -30
  90. package/src/database/sql-manager.ts +62 -0
  91. package/src/database/sqlite-adapter.ts +121 -0
  92. package/src/database/strategy-decorator.ts +42 -0
  93. package/src/database/types.ts +133 -1
  94. package/src/debug/middleware.ts +2 -2
  95. package/src/di/module-registry.ts +21 -5
  96. package/src/error/handler.ts +3 -3
  97. package/src/events/event-module.ts +4 -4
  98. package/src/files/static-middleware.ts +2 -2
  99. package/src/files/storage.ts +1 -1
  100. package/src/index.ts +27 -1
  101. package/src/interceptor/builtin/log-interceptor.ts +1 -1
  102. package/src/mcp/server.ts +1 -1
  103. package/src/microservice/service-registry/service-registry-module.ts +25 -1
  104. package/src/middleware/builtin/error-handler.ts +2 -2
  105. package/src/middleware/builtin/file-upload.ts +1 -1
  106. package/src/middleware/builtin/rate-limit.ts +1 -1
  107. package/src/middleware/builtin/static-file.ts +2 -2
  108. package/src/prompt/stores/file-store.ts +4 -4
  109. package/src/request/body-parser.ts +3 -3
  110. package/src/router/index.ts +1 -0
  111. package/src/router/registry.ts +10 -1
  112. package/src/router/route.ts +31 -3
  113. package/src/router/router.ts +10 -1
  114. package/src/router/timeout-decorator.ts +35 -0
  115. package/src/security/filter.ts +1 -1
  116. package/src/security/guards/guard-registry.ts +1 -1
  117. package/src/session/middleware.ts +1 -1
  118. package/src/session/types.ts +5 -5
  119. package/src/testing/test-client.ts +1 -1
  120. package/src/validation/decorators.ts +70 -2
  121. package/src/validation/rules/common.ts +2 -2
  122. package/tests/config/config-module-extended.test.ts +24 -0
  123. package/tests/core/application.test.ts +10 -0
  124. package/tests/core/context.test.ts +52 -0
  125. package/tests/database/database-module.test.ts +92 -344
  126. package/tests/database/db-proxy.test.ts +93 -0
  127. package/tests/database/sql-manager.test.ts +43 -0
  128. package/tests/database/sqlite-adapter.test.ts +45 -0
  129. package/tests/database/strategy-decorator.test.ts +29 -0
  130. package/tests/database/transaction.test.ts +84 -222
  131. package/tests/di/lifecycle.test.ts +37 -0
  132. package/tests/error/error-handler.test.ts +24 -0
  133. package/tests/microservice/service-registry.test.ts +15 -0
  134. package/tests/router/timeout-decorator.test.ts +48 -0
  135. package/tests/validation/validation.test.ts +18 -0
package/README.md CHANGED
@@ -42,6 +42,8 @@
42
42
  and `ResponseBuilder` helpers.
43
43
  - 🧩 **Dependency injection container** with `@Injectable`, `@Inject`, module
44
44
  metadata, lifecycle management and cached dependency plans.
45
+ - 🗄️ **Database v2** with `db` proxy, route-level pool/session strategy,
46
+ multi-tenant manager and unified transactions.
45
47
  - 🧵 **Middleware pipeline** with global/class/method scopes plus built-ins
46
48
  (logging, error, CORS, upload, static, ...).
47
49
  - ✅ **Input validation** via decorators and `ValidationError` integration.
@@ -420,11 +422,13 @@ Examples are organized by difficulty and feature category:
420
422
  - `full-app.ts` - Validation, uploads, static files, WebSocket
421
423
  - `lifecycle-app.ts` - Lifecycle hooks (OnModuleInit, OnModuleDestroy, etc.)
422
424
  - `async-config-app.ts` - Async module config with `forRootAsync()`
425
+ - `idle-timeout-app.ts` - Global and route-level idleTimeout
423
426
 
424
427
  - **[Official Modules](./examples/02-official-modules/)** - Ready-to-use modules
425
428
  - `auth-app.ts` - JWT + OAuth2 authentication (with Web UI)
426
429
  - `session-app.ts` - Session management
427
430
  - `database-app.ts` - Database connection and queries
431
+ - `nacos-auto-register-app.ts` - Nacos autoRegister switch example
428
432
  - `orm-app.ts` - Entity + Repository pattern
429
433
  - `cache-app.ts` - Caching with decorators
430
434
  - `queue-app.ts` - Task queues and Cron jobs
@@ -2,6 +2,9 @@ import { type AsyncModuleOptions } from '../di/async-module';
2
2
  import { ConfigService } from './service';
3
3
  import { type ConfigModuleOptions } from './types';
4
4
  export declare class ConfigModule {
5
+ private static readonly DANGEROUS_PATH_SEGMENTS;
6
+ private static isPlainObject;
7
+ private static createSafeContainer;
5
8
  /**
6
9
  * 创建配置模块
7
10
  * @param options - 模块配置
@@ -1 +1 @@
1
- {"version":3,"file":"config-module.d.ts","sourceRoot":"","sources":["../../src/config/config-module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAGa,YAAY;IACvB;;;OAGG;WACW,OAAO,CACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,YAAY;IAsDtB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GACpD,OAAO,YAAY;IAkCtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;OAEG;WACiB,sBAAsB,CACxC,OAAO,EAAE,aAAa,EACtB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;mBACkB,sBAAsB;IAuE3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAwDvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAwB9B"}
1
+ {"version":3,"file":"config-module.d.ts","sourceRoot":"","sources":["../../src/config/config-module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAGa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAI5C;IAEH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAGlC;;;OAGG;WACW,OAAO,CACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,YAAY;IAsDtB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GACpD,OAAO,YAAY;IAkCtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;OAEG;WACiB,sBAAsB,CACxC,OAAO,EAAE,aAAa,EACtB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;mBACkB,sBAAsB;IAuE3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAwDvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAuC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAgKnF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,iBAAiB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIlD;;;OAGG;IACI,wBAAwB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIzD;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAyKnF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,iBAAiB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIlD;;;OAGG;IACI,wBAAwB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIzD;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
@@ -1,7 +1,7 @@
1
1
  import { BunServer } from './server';
2
2
  import type { Middleware } from '../middleware';
3
3
  import type { ApplicationExtension } from '../extensions/types';
4
- import type { ModuleClass } from '../di/module';
4
+ import { type ModuleClass } from '../di/module';
5
5
  import type { Constructor } from './types';
6
6
  /**
7
7
  * 应用配置选项
@@ -32,6 +32,11 @@ export interface ApplicationOptions {
32
32
  * @default false
33
33
  */
34
34
  reusePort?: boolean;
35
+ /**
36
+ * 连接空闲超时时间(毫秒)
37
+ * 框架内部会自动转换为 Bun.serve 的秒单位
38
+ */
39
+ idleTimeout?: number;
35
40
  }
36
41
  /**
37
42
  * 应用主类
@@ -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;AAU3C;;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;IAmDpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D;;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,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAW3C;;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;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;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;IA6BnD;;;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;IAoDpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D;;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;IA0C9B;;;OAGG;YACW,kBAAkB;IAgDhC;;;OAGG;IACI,YAAY;IAInB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -5,6 +5,7 @@ import { type URLSearchParams, URL } from 'url';
5
5
  * 封装 Request 和 Response,提供便捷的访问方法
6
6
  */
7
7
  export declare class Context {
8
+ private static readonly ERROR_REDACTED_KEYS;
8
9
  /**
9
10
  * 原始请求对象
10
11
  */
@@ -120,5 +121,14 @@ export declare class Context {
120
121
  * @returns Response 对象
121
122
  */
122
123
  createResponse(body?: unknown, init?: ResponseInit): Response;
124
+ /**
125
+ * 创建错误响应(自动过滤敏感字段)
126
+ * @param body - 错误响应体
127
+ * @param init - 响应初始化选项
128
+ * @returns Response 对象
129
+ */
130
+ createErrorResponse(body?: unknown, init?: ResponseInit): Response;
131
+ private sanitizeErrorPayload;
132
+ private sanitizeValue;
123
133
  }
124
134
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAEhD;;;GAGG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,WAAW,IAAI,MAAM;IAmB5B;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;CA2BrE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAEhD;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;IACnF;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,WAAW,IAAI,MAAM;IAmB5B;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;IA4BpE;;;;;OAKG;IACI,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;IAWzE,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,aAAa;CAqCtB"}
@@ -34,6 +34,11 @@ export interface ServerOptions {
34
34
  * @default false
35
35
  */
36
36
  reusePort?: boolean;
37
+ /**
38
+ * 连接空闲超时时间(毫秒)
39
+ * 框架内部会转换为 Bun.serve 所需的秒
40
+ */
41
+ idleTimeout?: number;
37
42
  }
38
43
  /**
39
44
  * 服务器封装类
@@ -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;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;IAkHpB;;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;;;OAGG;IACI,OAAO,IAAI,MAAM;IAOxB;;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;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;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;IAsHpB;;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;;;OAGG;IACI,OAAO,IAAI,MAAM;IAOxB;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;CAGzC"}
@@ -0,0 +1,25 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import type { TransactionStatus } from './orm/transaction-types';
3
+ import type { SqliteAdapter } from './sqlite-adapter';
4
+ export type SqlTemplateCall = (strings: TemplateStringsArray, ...values: unknown[]) => Promise<unknown>;
5
+ export interface ReservedSqlSession extends SqlTemplateCall {
6
+ begin<T>(fn: () => Promise<T>): Promise<T>;
7
+ release(): Promise<void> | void;
8
+ }
9
+ export interface TransactionState {
10
+ id: string;
11
+ status: TransactionStatus;
12
+ level: number;
13
+ savepoints: string[];
14
+ }
15
+ export interface DatabaseSession {
16
+ reserved?: ReservedSqlSession;
17
+ sqlite?: SqliteAdapter;
18
+ tenantId: string;
19
+ transaction?: TransactionState;
20
+ lazyReserve?: () => Promise<ReservedSqlSession>;
21
+ }
22
+ export declare const databaseSessionStore: AsyncLocalStorage<DatabaseSession>;
23
+ export declare function getCurrentSession(): DatabaseSession | undefined;
24
+ export declare function runWithSession<T>(session: DatabaseSession, fn: () => Promise<T>): Promise<T>;
25
+ //# sourceMappingURL=database-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-context.d.ts","sourceRoot":"","sources":["../../src/database/database-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,oCAA2C,CAAC;AAE7E,wBAAgB,iBAAiB,IAAI,eAAe,GAAG,SAAS,CAE/D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,eAAe,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
@@ -1,20 +1,19 @@
1
1
  import type { Container } from '../di/container';
2
2
  import type { ApplicationExtension } from '../extensions/types';
3
+ import type { BunSQLManager } from './sql-manager';
4
+ import type { SqliteManager } from './sqlite-adapter';
3
5
  /**
4
6
  * 数据库扩展
5
- * 在应用启动时自动初始化数据库连接
7
+ * 注册事务拦截器,并在应用关闭时释放数据库资源
6
8
  */
7
9
  export declare class DatabaseExtension implements ApplicationExtension {
10
+ private readonly sqlManager?;
11
+ private readonly sqliteManager?;
12
+ constructor(sqlManager?: BunSQLManager | undefined, sqliteManager?: SqliteManager | undefined);
8
13
  register(container: Container): void;
9
14
  /**
10
- * 初始化数据库连接
11
- * 应该在应用启动时调用
15
+ * 关闭数据库资源
12
16
  */
13
- initialize(container: Container): Promise<void>;
14
- /**
15
- * 关闭数据库连接
16
- * 应该在应用停止时调用
17
- */
18
- close(container: Container): Promise<void>;
17
+ close(_container: Container): Promise<void>;
19
18
  }
20
19
  //# sourceMappingURL=database-extension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-extension.d.ts","sourceRoot":"","sources":["../../src/database/database-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAWhE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAoB3C;;;OAGG;IACU,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D;;;OAGG;IACU,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBxD"}
1
+ {"version":3,"file":"database-extension.d.ts","sourceRoot":"","sources":["../../src/database/database-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAQhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,UAAU,CAAC,EAAE,aAAa,YAAA,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA;IAGzC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAoB3C;;OAEG;IACU,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
@@ -1,8 +1,14 @@
1
1
  import { type AsyncModuleOptions } from '../di/async-module';
2
2
  import { DatabaseHealthIndicator } from './health-indicator';
3
3
  import { DatabaseService } from './service';
4
- import { type DatabaseModuleOptions } from './types';
4
+ import { type BunSQLConfig, type DatabaseModuleOptions, type SqliteV2Config } from './types';
5
5
  export declare class DatabaseModule {
6
+ private static isBunSqlType;
7
+ static normalizeConfig(options: DatabaseModuleOptions): Array<{
8
+ tenantId: string;
9
+ config: BunSQLConfig | SqliteV2Config;
10
+ }>;
11
+ private static createDatabaseMiddleware;
6
12
  /**
7
13
  * 创建数据库模块
8
14
  * @param options - 模块配置
@@ -1 +1 @@
1
- {"version":3,"file":"database-module.d.ts","sourceRoot":"","sources":["../../src/database/database-module.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AAIjB,qBAGa,cAAc;IACzB;;;OAGG;WACW,OAAO,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,cAAc;IA6ExB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,GACtD,OAAO,cAAc;IAYxB;;;;;OAKG;WACW,qBAAqB,CACjC,eAAe,EAAE,eAAe,GAC/B,uBAAuB;CAG3B"}
1
+ {"version":3,"file":"database-module.d.ts","sourceRoot":"","sources":["../../src/database/database-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAKrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AASjB,qBAGa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,YAAY;WAMb,eAAe,CAC3B,OAAO,EAAE,qBAAqB,GAC7B,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAAA;KAAE,CAAC;IA0FrE,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAyEvC;;;OAGG;WACW,OAAO,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,cAAc;IA+IxB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,GACtD,OAAO,cAAc;IAYxB;;;;;OAKG;WACW,qBAAqB,CACjC,eAAe,EAAE,eAAe,GAC/B,uBAAuB;CAG3B"}
@@ -0,0 +1,12 @@
1
+ import type { BunSQLManager } from './sql-manager';
2
+ import type { TransactionManager } from './orm/transaction-manager';
3
+ type DbResult = Promise<unknown>;
4
+ export interface DbProxy {
5
+ (strings: TemplateStringsArray, ...values: unknown[]): DbResult;
6
+ transaction<T>(fn: () => Promise<T>): Promise<T>;
7
+ tenant(tenantId: string): DbProxy;
8
+ }
9
+ export declare function initDbProxy(sqlManager: BunSQLManager, txManager: TransactionManager): void;
10
+ export declare const db: DbProxy;
11
+ export {};
12
+ //# sourceMappingURL=db-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-proxy.d.ts","sourceRoot":"","sources":["../../src/database/db-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjC,MAAM,WAAW,OAAO;IACtB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAChE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAKD,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,kBAAkB,GAC5B,IAAI,CAGN;AAoDD,eAAO,MAAM,EAAE,EAAE,OAAoB,CAAC"}
@@ -4,6 +4,11 @@ export { DatabaseConnectionManager } from './connection-manager';
4
4
  export { ConnectionPool } from './connection-pool';
5
5
  export { DatabaseHealthIndicator } from './health-indicator';
6
6
  export { DatabaseExtension } from './database-extension';
7
- export { DATABASE_OPTIONS_TOKEN, DATABASE_SERVICE_TOKEN, type ConnectionInfo, type ConnectionPoolOptions, type DatabaseConfig, type DatabaseModuleOptions, type DatabaseType, type MysqlConfig, type PostgresConfig, type SqliteConfig, } from './types';
7
+ export { BunSQLManager } from './sql-manager';
8
+ export { SqliteAdapter, SqliteManager, Semaphore } from './sqlite-adapter';
9
+ export { db, initDbProxy, type DbProxy, } from './db-proxy';
10
+ export { DbStrategy, Session as DbSession, DB_STRATEGY_KEY, getDbStrategy, type DbStrategyType, } from './strategy-decorator';
11
+ export { databaseSessionStore, getCurrentSession, runWithSession, type DatabaseSession, type TransactionState, type ReservedSqlSession, } from './database-context';
12
+ export { BUN_SQL_MANAGER_TOKEN, DB_TOKEN, DATABASE_OPTIONS_TOKEN, DATABASE_SERVICE_TOKEN, SQLITE_MANAGER_TOKEN, type BunSQLConfig, type BunSQLPoolOptions, type ConnectionInfo, type ConnectionPoolOptions, type DatabaseConfig, type DatabaseModuleOptions, type DatabaseType, type MysqlConfig, type PostgresConfig, type SqliteV2Config, type SqliteConfig, type TenantConfig, } from './types';
8
13
  export { Entity, Column, PrimaryKey, Repository, BaseRepository, DrizzleBaseRepository, OrmService, ORM_SERVICE_TOKEN, getEntityMetadata, getColumnMetadata, getRepositoryMetadata, type OrmModuleOptions, type BaseRepository as BaseRepositoryInterface, type EntityMetadata, type ColumnMetadata, Transactional, TransactionManager, TransactionInterceptor, Propagation, IsolationLevel, TransactionStatus, TRANSACTION_SERVICE_TOKEN, getTransactionMetadata, type TransactionOptions, type TransactionContext, } from './orm';
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,IAAI,uBAAuB,EAC9C,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,EAAE,EACF,WAAW,EACX,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,OAAO,IAAI,SAAS,EACpB,eAAe,EACf,aAAa,EACb,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,IAAI,uBAAuB,EAC9C,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,OAAO,CAAC"}
@@ -17,21 +17,5 @@ export declare class TransactionInterceptor implements Interceptor {
17
17
  * @deprecated 使用拦截器机制,此方法保留用于向后兼容
18
18
  */
19
19
  static executeWithTransaction<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container): Promise<T>;
20
- /**
21
- * 在新事务中执行方法
22
- */
23
- private static executeInNewTransaction;
24
- /**
25
- * 在现有事务中执行方法
26
- */
27
- private static executeInExistingTransaction;
28
- /**
29
- * 在嵌套事务中执行方法
30
- */
31
- private static executeInNestedTransaction;
32
- /**
33
- * 判断是否应该回滚
34
- */
35
- private static shouldRollback;
36
20
  }
37
21
  //# sourceMappingURL=transaction-interceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-interceptor.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD;;;OAGG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IA8Gb;;;OAGG;WACiB,sBAAsB,CAAC,CAAC,EAC1C,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,CAAC,CAAC;IAKb;;OAEG;mBACkB,uBAAuB;IA8B5C;;OAEG;mBACkB,4BAA4B;IAWjD;;OAEG;mBACkB,0BAA0B;IA2B/C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAgC9B"}
1
+ {"version":3,"file":"transaction-interceptor.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD;;;OAGG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAqFb;;;OAGG;WACiB,sBAAsB,CAAC,CAAC,EAC1C,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,CAAC,CAAC;CAKd"}
@@ -1,77 +1,26 @@
1
- import type { DatabaseService } from '../service';
1
+ import type { BunSQLManager } from '../sql-manager';
2
2
  import { type TransactionOptions, type TransactionContext } from './transaction-types';
3
3
  /**
4
4
  * 事务管理器
5
5
  * 管理数据库事务的生命周期
6
6
  */
7
7
  export declare class TransactionManager {
8
- private readonly databaseService;
9
- private readonly transactions;
10
- private readonly connectionTransactions;
11
- constructor(databaseService: DatabaseService);
8
+ private readonly sqlManager;
9
+ constructor(sqlManager: BunSQLManager);
12
10
  /**
13
- * 开始事务
11
+ * 在当前 session 中执行事务
14
12
  */
15
- beginTransaction(options?: TransactionOptions): Promise<TransactionContext>;
13
+ runInTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
16
14
  /**
17
- * 提交事务
18
- */
19
- commitTransaction(transactionId: string): Promise<void>;
20
- /**
21
- * 回滚事务
22
- */
23
- rollbackTransaction(transactionId: string): Promise<void>;
24
- /**
25
- * 创建保存点(用于嵌套事务)
26
- */
27
- createSavepoint(transactionId: string): Promise<string>;
28
- /**
29
- * 回滚到保存点
30
- */
31
- rollbackToSavepoint(transactionId: string, savepointName: string): Promise<void>;
32
- /**
33
- * 获取当前事务上下文
15
+ * REQUIRES_NEW:使用独立连接开启新事务
34
16
  */
17
+ runInNewTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
18
+ runInNestedTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
35
19
  getCurrentTransaction(): TransactionContext | null;
36
- /**
37
- * 检查是否有活动事务
38
- */
39
20
  hasActiveTransaction(): boolean;
40
- /**
41
- * 生成事务 ID
42
- */
21
+ runInSqliteTransaction<T>(fn: () => Promise<T>): Promise<T>;
43
22
  private generateTransactionId;
44
- /**
45
- * 查找连接对应的事务 ID
46
- */
47
- private findConnectionByTransactionId;
48
- /**
49
- * 清理事务
50
- */
51
- private cleanupTransaction;
52
- /**
53
- * 执行 BEGIN 语句
54
- */
55
- private executeBegin;
56
- /**
57
- * 执行 COMMIT 语句
58
- */
59
- private executeCommit;
60
- /**
61
- * 执行 ROLLBACK 语句
62
- */
63
- private executeRollback;
64
- /**
65
- * 执行 SAVEPOINT 语句
66
- */
67
- private executeSavepoint;
68
- /**
69
- * 执行 ROLLBACK TO SAVEPOINT 语句
70
- */
71
- private executeRollbackToSavepoint;
72
- /**
73
- * 获取隔离级别的 SQL
74
- */
75
23
  private getIsolationLevelSQL;
24
+ private shouldRollback;
76
25
  }
77
26
  //# sourceMappingURL=transaction-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBACa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA8B;gBAIlD,eAAe,EAAE,eAAe;IAGnD;;OAEG;IACU,gBAAgB,CAC3B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IAqB9B;;OAEG;IACU,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpE;;OAEG;IACU,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtE;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpE;;OAEG;IACU,mBAAmB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACI,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAWzD;;OAEG;IACI,oBAAoB,IAAI,OAAO;IAItC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IASrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,aAAa;IAI3B;;OAEG;YACW,eAAe;IAI7B;;OAEG;YACW,gBAAgB;IAI9B;;OAEG;YACW,0BAA0B;IAOxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAkB7B"}
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAG5C;;OAEG;IACU,gBAAgB,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAqDb;;OAEG;IACU,mBAAmB,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAgBA,sBAAsB,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IA4BN,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAclD,oBAAoB,IAAI,OAAO;IAKzB,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBxE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,cAAc;CAqBvB"}
@@ -59,13 +59,13 @@ export declare class DatabaseService {
59
59
  private querySqlite;
60
60
  /**
61
61
  * Bun.SQL 查询实现(PostgreSQL/MySQL)
62
- * 注意:Bun.SQL 主要使用模板字符串,但为了兼容性,我们尝试支持参数化查询
62
+ * 通过模板字符串调用 Bun.SQL,确保参数走 Bun.SQL 转义逻辑
63
63
  */
64
64
  private queryBunSQL;
65
65
  /**
66
- * 将参数插入到 SQL 中(用于 Bun.SQL 模板字符串)
67
- * 注意:这只是临时方案,Bun.SQL 的模板字符串会自动处理 SQL 注入防护
66
+ * SQL ? 占位符参数转换为模板字符串片段
67
+ * 让参数通过 Bun.SQL values 通道注入,避免手工拼接 SQL
68
68
  */
69
- private interpolateParams;
69
+ private buildTemplateFromSql;
70
70
  }
71
71
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IAQjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAgB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IAiDzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAkB1B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IA2BjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAsB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IA+CzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
@@ -0,0 +1,14 @@
1
+ import { SQL } from 'bun';
2
+ import type { BunSQLConfig } from './types';
3
+ export declare class BunSQLManager {
4
+ private readonly instances;
5
+ private defaultTenantId;
6
+ getOrCreate(tenantId: string, config: BunSQLConfig): SQL;
7
+ hasTenant(tenantId: string): boolean;
8
+ get(tenantId: string): SQL | undefined;
9
+ setDefaultTenant(tenantId: string): void;
10
+ getDefault(): SQL;
11
+ destroy(tenantId: string, timeout?: number): Promise<void>;
12
+ destroyAll(timeout?: number): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=sql-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-manager.d.ts","sourceRoot":"","sources":["../../src/database/sql-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,eAAe,CAAa;IAE7B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG;IAiBxD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAItC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,UAAU,IAAI,GAAG;IAUX,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,UAAU,CAAC,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrD"}
@@ -0,0 +1,32 @@
1
+ import { type SQLQueryBindings } from 'bun:sqlite';
2
+ import type { SqliteV2Config } from './types';
3
+ export interface DisposableLock {
4
+ [Symbol.dispose](): void;
5
+ }
6
+ export declare class Semaphore {
7
+ private readonly max;
8
+ private active;
9
+ private readonly queue;
10
+ constructor(max: number);
11
+ acquire(): Promise<DisposableLock>;
12
+ private createDisposable;
13
+ }
14
+ export declare class SqliteAdapter {
15
+ private readonly db;
16
+ readonly semaphore: Semaphore;
17
+ constructor(config: SqliteV2Config);
18
+ query<T = unknown>(sql: string, params?: SQLQueryBindings[]): T[];
19
+ execute(sql: string, params?: SQLQueryBindings[]): Promise<void>;
20
+ close(): void;
21
+ }
22
+ export declare class SqliteManager {
23
+ private readonly instances;
24
+ private defaultTenantId;
25
+ getOrCreate(tenantId: string, config: SqliteV2Config): SqliteAdapter;
26
+ setDefaultTenant(tenantId: string): void;
27
+ getDefault(): SqliteAdapter;
28
+ getAdapter(tenantId: string): SqliteAdapter;
29
+ destroy(tenantId: string): void;
30
+ destroyAll(): void;
31
+ }
32
+ //# sourceMappingURL=sqlite-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/database/sqlite-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED,qBAAa,SAAS;IAID,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAEX,GAAG,EAAE,MAAM;IAElC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAW/C,OAAO,CAAC,gBAAgB;CAczB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAElB,MAAM,EAAE,cAAc;IAQlC,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAgB,EAAO,GAAG,CAAC,EAAE;IAK/D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAgB,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,KAAK,IAAI,IAAI;CAGrB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,eAAe,CAAa;IAE7B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,aAAa;IAUpE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,UAAU,IAAI,aAAa;IAU3B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAQ3C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS/B,UAAU,IAAI,IAAI;CAM1B"}
@@ -0,0 +1,8 @@
1
+ import 'reflect-metadata';
2
+ import type { Constructor } from '@/core/types';
3
+ export declare const DB_STRATEGY_KEY: unique symbol;
4
+ export type DbStrategyType = 'pool' | 'session';
5
+ export declare function DbStrategy(strategy: DbStrategyType): MethodDecorator & ClassDecorator;
6
+ export declare function Session(): MethodDecorator & ClassDecorator;
7
+ export declare function getDbStrategy(controllerClass: Constructor<unknown>, methodName: string): DbStrategyType | undefined;
8
+ //# sourceMappingURL=strategy-decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-decorator.d.ts","sourceRoot":"","sources":["../../src/database/strategy-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,eAAe,eAAiD,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,GACvB,eAAe,GAAG,cAAc,CAQlC;AAED,wBAAgB,OAAO,IAAI,eAAe,GAAG,cAAc,CAE1D;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,SAAS,CAa5B"}