@dangao/bun-server 2.3.0 → 3.0.1

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 (151) hide show
  1. package/README.md +81 -3
  2. package/dist/auth/jwt.d.ts.map +1 -1
  3. package/dist/config/service.d.ts +0 -1
  4. package/dist/config/service.d.ts.map +1 -1
  5. package/dist/core/application.d.ts +13 -0
  6. package/dist/core/application.d.ts.map +1 -1
  7. package/dist/core/cluster.d.ts.map +1 -1
  8. package/dist/core/server.d.ts +12 -9
  9. package/dist/core/server.d.ts.map +1 -1
  10. package/dist/dashboard/controller.d.ts.map +1 -1
  11. package/dist/database/connection-manager.d.ts.map +1 -1
  12. package/dist/database/connection-pool.d.ts +3 -3
  13. package/dist/database/connection-pool.d.ts.map +1 -1
  14. package/dist/database/service.d.ts +2 -1
  15. package/dist/database/service.d.ts.map +1 -1
  16. package/dist/database/sql-manager.d.ts +8 -4
  17. package/dist/database/sql-manager.d.ts.map +1 -1
  18. package/dist/database/sqlite-adapter.d.ts +7 -3
  19. package/dist/database/sqlite-adapter.d.ts.map +1 -1
  20. package/dist/debug/recorder.d.ts +0 -1
  21. package/dist/debug/recorder.d.ts.map +1 -1
  22. package/dist/files/static-middleware.d.ts.map +1 -1
  23. package/dist/files/storage.d.ts.map +1 -1
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +39487 -3496
  27. package/dist/index.node.mjs +17723 -0
  28. package/dist/middleware/builtin/static-file.d.ts +4 -2
  29. package/dist/middleware/builtin/static-file.d.ts.map +1 -1
  30. package/dist/platform/bun/crypto.d.ts +3 -0
  31. package/dist/platform/bun/crypto.d.ts.map +1 -0
  32. package/dist/platform/bun/fs.d.ts +3 -0
  33. package/dist/platform/bun/fs.d.ts.map +1 -0
  34. package/dist/platform/bun/http.d.ts +15 -0
  35. package/dist/platform/bun/http.d.ts.map +1 -0
  36. package/dist/platform/bun/index.d.ts +3 -0
  37. package/dist/platform/bun/index.d.ts.map +1 -0
  38. package/dist/platform/bun/parser.d.ts +3 -0
  39. package/dist/platform/bun/parser.d.ts.map +1 -0
  40. package/dist/platform/bun/process.d.ts +3 -0
  41. package/dist/platform/bun/process.d.ts.map +1 -0
  42. package/dist/platform/detector.d.ts +9 -0
  43. package/dist/platform/detector.d.ts.map +1 -0
  44. package/dist/platform/index.d.ts +4 -0
  45. package/dist/platform/index.d.ts.map +1 -0
  46. package/dist/platform/node/crypto.d.ts +3 -0
  47. package/dist/platform/node/crypto.d.ts.map +1 -0
  48. package/dist/platform/node/fs.d.ts +3 -0
  49. package/dist/platform/node/fs.d.ts.map +1 -0
  50. package/dist/platform/node/http.d.ts +3 -0
  51. package/dist/platform/node/http.d.ts.map +1 -0
  52. package/dist/platform/node/index.d.ts +3 -0
  53. package/dist/platform/node/index.d.ts.map +1 -0
  54. package/dist/platform/node/parser.d.ts +3 -0
  55. package/dist/platform/node/parser.d.ts.map +1 -0
  56. package/dist/platform/node/process.d.ts +3 -0
  57. package/dist/platform/node/process.d.ts.map +1 -0
  58. package/dist/platform/runtime.d.ts +14 -0
  59. package/dist/platform/runtime.d.ts.map +1 -0
  60. package/dist/platform/types.d.ts +139 -0
  61. package/dist/platform/types.d.ts.map +1 -0
  62. package/dist/prompt/stores/file-store.d.ts.map +1 -1
  63. package/dist/rag/service.d.ts.map +1 -1
  64. package/dist/request/response.d.ts +3 -1
  65. package/dist/request/response.d.ts.map +1 -1
  66. package/dist/security/guards/execution-context.d.ts +2 -2
  67. package/dist/security/guards/execution-context.d.ts.map +1 -1
  68. package/dist/security/guards/types.d.ts +2 -2
  69. package/dist/security/guards/types.d.ts.map +1 -1
  70. package/dist/swagger/generator.d.ts.map +1 -1
  71. package/dist/websocket/registry.d.ts +4 -4
  72. package/dist/websocket/registry.d.ts.map +1 -1
  73. package/docs/deployment.md +31 -7
  74. package/docs/idle-timeout.md +6 -4
  75. package/docs/migration.md +43 -0
  76. package/docs/platform.md +299 -0
  77. package/docs/testing.md +60 -0
  78. package/docs/zh/deployment.md +30 -7
  79. package/docs/zh/idle-timeout.md +6 -4
  80. package/docs/zh/migration.md +42 -0
  81. package/docs/zh/platform.md +299 -0
  82. package/docs/zh/testing.md +60 -0
  83. package/package.json +24 -7
  84. package/src/auth/jwt.ts +4 -3
  85. package/src/config/service.ts +7 -6
  86. package/src/core/application.ts +19 -1
  87. package/src/core/cluster.ts +16 -14
  88. package/src/core/server.ts +48 -35
  89. package/src/dashboard/controller.ts +3 -2
  90. package/src/database/connection-manager.ts +19 -12
  91. package/src/database/connection-pool.ts +33 -20
  92. package/src/database/database-module.ts +1 -1
  93. package/src/database/db-proxy.ts +2 -2
  94. package/src/database/orm/transaction-manager.ts +1 -1
  95. package/src/database/service.ts +21 -5
  96. package/src/database/sql-manager.ts +48 -13
  97. package/src/database/sqlite-adapter.ts +54 -13
  98. package/src/debug/recorder.ts +4 -3
  99. package/src/files/static-middleware.ts +3 -2
  100. package/src/files/storage.ts +2 -1
  101. package/src/index.ts +13 -0
  102. package/src/middleware/builtin/static-file.ts +8 -5
  103. package/src/platform/bun/crypto.ts +30 -0
  104. package/src/platform/bun/fs.ts +52 -0
  105. package/src/platform/bun/http.ts +106 -0
  106. package/src/platform/bun/index.ts +17 -0
  107. package/src/platform/bun/parser.ts +19 -0
  108. package/src/platform/bun/process.ts +37 -0
  109. package/src/platform/detector.ts +36 -0
  110. package/src/platform/index.ts +20 -0
  111. package/src/platform/node/crypto.ts +40 -0
  112. package/src/platform/node/fs.ts +115 -0
  113. package/src/platform/node/http.ts +196 -0
  114. package/src/platform/node/index.ts +17 -0
  115. package/src/platform/node/parser.ts +34 -0
  116. package/src/platform/node/process.ts +51 -0
  117. package/src/platform/runtime.ts +50 -0
  118. package/src/platform/types.ts +150 -0
  119. package/src/prompt/stores/file-store.ts +6 -5
  120. package/src/rag/service.ts +2 -1
  121. package/src/request/response.ts +7 -4
  122. package/src/security/guards/execution-context.ts +4 -4
  123. package/src/security/guards/types.ts +2 -2
  124. package/src/swagger/generator.ts +2 -1
  125. package/src/websocket/registry.ts +6 -7
  126. package/tests/controller/path-combination.test.ts +196 -2
  127. package/tests/files/static-middleware.test.ts +5 -2
  128. package/tests/middleware/static-file.test.ts +5 -2
  129. package/tests/platform/bun/crypto.test.ts +8 -0
  130. package/tests/platform/bun/database.test.ts +8 -0
  131. package/tests/platform/bun/fs.test.ts +8 -0
  132. package/tests/platform/bun/parser.test.ts +8 -0
  133. package/tests/platform/bun/process.test.ts +8 -0
  134. package/tests/platform/bun/websocket.test.ts +8 -0
  135. package/tests/platform/detector.test.ts +57 -0
  136. package/tests/platform/node/build-smoke.test.ts +92 -0
  137. package/tests/platform/node/crypto.test.ts +9 -0
  138. package/tests/platform/node/database.test.ts +9 -0
  139. package/tests/platform/node/fs.test.ts +9 -0
  140. package/tests/platform/node/parser.test.ts +9 -0
  141. package/tests/platform/node/process.test.ts +9 -0
  142. package/tests/platform/node/websocket.test.ts +9 -0
  143. package/tests/platform/shared/crypto.cases.ts +49 -0
  144. package/tests/platform/shared/database.cases.ts +43 -0
  145. package/tests/platform/shared/fs.cases.ts +82 -0
  146. package/tests/platform/shared/parser.cases.ts +55 -0
  147. package/tests/platform/shared/process.cases.ts +26 -0
  148. package/tests/platform/shared/suite.ts +33 -0
  149. package/tests/platform/shared/websocket.cases.ts +61 -0
  150. package/tests/request/response.test.ts +5 -2
  151. package/tests/router/router-extended.test.ts +53 -0
@@ -1,14 +1,16 @@
1
1
  import type { Middleware } from '../middleware';
2
- import type { HeadersInit } from 'bun';
2
+ /** Cross-runtime compatible headers input type */
3
+ type HeadersInput = Headers | string[][] | Record<string, string>;
3
4
  export interface StaticFileOptions {
4
5
  root: string;
5
6
  prefix?: string;
6
7
  indexFile?: string;
7
8
  enableCache?: boolean;
8
- headers?: HeadersInit | Headers;
9
+ headers?: HeadersInput;
9
10
  }
10
11
  /**
11
12
  * 静态文件服务中间件
12
13
  */
13
14
  export declare function createStaticFileMiddleware(options: StaticFileOptions): Middleware;
15
+ export {};
14
16
  //# sourceMappingURL=static-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-file.d.ts","sourceRoot":"","sources":["../../../src/middleware/builtin/static-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CACjC;AAYD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA2DjF"}
1
+ {"version":3,"file":"static-file.d.ts","sourceRoot":"","sources":["../../../src/middleware/builtin/static-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,kDAAkD;AAClD,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAYD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA2DjF"}
@@ -0,0 +1,3 @@
1
+ import type { ICryptoAdapter } from '../types';
2
+ export declare const bunCryptoAdapter: ICryptoAdapter;
3
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,UAAU,CAAC;AAyBxD,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IFsAdapter } from '../types';
2
+ export declare const bunFsAdapter: IFsAdapter;
3
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,UAAU,CAAC;AAsCrD,eAAO,MAAM,YAAY,EAAE,UAa1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { IHttpDriver, IWebSocket } from '../types';
2
+ /**
3
+ * Bun ServerWebSocket 的 IWebSocket 包装
4
+ */
5
+ export declare class BunWebSocket<T> implements IWebSocket<T> {
6
+ private readonly ws;
7
+ constructor(ws: import('bun').ServerWebSocket<T>);
8
+ get data(): T;
9
+ get readyState(): number;
10
+ send(data: string | Buffer | Uint8Array): void;
11
+ close(code?: number, reason?: string): void;
12
+ getNative(): import('bun').ServerWebSocket<T>;
13
+ }
14
+ export declare const bunHttpAdapter: IHttpDriver;
15
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmC,UAAU,EAAqB,MAAM,UAAU,CAAC;AAE5G;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,OAAO,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAExE,IAAW,IAAI,IAAI,CAAC,CAEnB;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAEM,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI;IAI9C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,IAAI,OAAO,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;CAGrD;AAgDD,eAAO,MAAM,cAAc,EAAE,WA8B5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IPlatform } from '../types';
2
+ export declare function createBunPlatform(): IPlatform;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C,wBAAgB,iBAAiB,IAAI,SAAS,CAS7C"}
@@ -0,0 +1,3 @@
1
+ import type { IParserAdapter } from '../types';
2
+ export declare const bunParserAdapter: IParserAdapter;
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,cAgB9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IProcessAdapter } from '../types';
2
+ export declare const bunProcessAdapter: IProcessAdapter;
3
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC;AAsB7E,eAAO,MAAM,iBAAiB,EAAE,eAc/B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PlatformEngine } from './types';
2
+ /**
3
+ * 解析运行时平台引擎
4
+ * 优先级:bootstrap config > CLI arg (--platform=) > env var (BUN_SERVER_PLATFORM) > auto-detect
5
+ *
6
+ * @param bootstrapConfig - 应用启动时显式指定的平台(最高优先级)
7
+ */
8
+ export declare function resolvePlatform(bootstrapConfig?: PlatformEngine): PlatformEngine;
9
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/platform/detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,eAAe,CAAC,EAAE,cAAc,GAAG,cAAc,CA2BhF"}
@@ -0,0 +1,4 @@
1
+ export type { PlatformEngine, IPlatform, IFsAdapter, IFileRef, ICryptoAdapter, IHasher, IParserAdapter, IProcessAdapter, IChildProcess, SpawnOptions, IHttpDriver, IServerHandle, IWebSocket, WebSocketHandlers, HttpServeOptions, } from './types';
2
+ export { resolvePlatform } from './detector';
3
+ export { initRuntime, getRuntime, _resetRuntime } from './runtime';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,cAAc,EACd,OAAO,EACP,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ICryptoAdapter } from '../types';
2
+ export declare const nodeCryptoAdapter: ICryptoAdapter;
3
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/platform/node/crypto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,UAAU,CAAC;AAkCxD,eAAO,MAAM,iBAAiB,EAAE,cAI/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IFsAdapter } from '../types';
2
+ export declare const nodeFsAdapter: IFsAdapter;
3
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/platform/node/fs.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,UAAU,CAAC;AAuDrD,eAAO,MAAM,aAAa,EAAE,UA6C3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IHttpDriver } from '../types';
2
+ export declare const nodeHttpAdapter: IHttpDriver;
3
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/platform/node/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAkE,MAAM,UAAU,CAAC;AAsH5G,eAAO,MAAM,eAAe,EAAE,WA4C7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IPlatform } from '../types';
2
+ export declare function createNodePlatform(): IPlatform;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C,wBAAgB,kBAAkB,IAAI,SAAS,CAS9C"}
@@ -0,0 +1,3 @@
1
+ import type { IParserAdapter } from '../types';
2
+ export declare const nodeParserAdapter: IParserAdapter;
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/platform/node/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,cA+B/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IProcessAdapter } from '../types';
2
+ export declare const nodeProcessAdapter: IProcessAdapter;
3
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/platform/node/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC;AAgC7E,eAAO,MAAM,kBAAkB,EAAE,eAiBhC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { IPlatform, PlatformEngine } from './types';
2
+ /**
3
+ * 初始化全局运行时平台
4
+ * 应在 Application 构造函数中最先调用
5
+ *
6
+ * @param engine - 显式指定平台(优先级最高),省略则走优先级检测链
7
+ */
8
+ export declare function initRuntime(engine?: PlatformEngine): void;
9
+ /**
10
+ * 获取当前已初始化的平台运行时
11
+ * 必须在 initRuntime() 调用之后使用
12
+ */
13
+ export declare function getRuntime(): IPlatform;
14
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAezD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAStC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * 支持的运行时平台标识
3
+ */
4
+ export type PlatformEngine = 'bun' | 'node';
5
+ /**
6
+ * 文件引用抽象接口(替代 BunFile 的直接使用)
7
+ */
8
+ export interface IFileRef {
9
+ readonly type: string;
10
+ readonly size: number;
11
+ text(): Promise<string>;
12
+ bytes(): Promise<Uint8Array>;
13
+ arrayBuffer(): Promise<ArrayBuffer>;
14
+ exists(): Promise<boolean>;
15
+ /** 返回可读流,用于 new Response(file.stream(), ...) */
16
+ stream(): ReadableStream<Uint8Array>;
17
+ }
18
+ /**
19
+ * 文件系统适配器接口
20
+ */
21
+ export interface IFsAdapter {
22
+ /** 获取文件引用 */
23
+ file(path: string): IFileRef;
24
+ /** 写入文件 */
25
+ write(path: string, data: string | Uint8Array | ArrayBuffer): Promise<void>;
26
+ /** 匹配文件列表 */
27
+ glob(pattern: string, cwd?: string): string[];
28
+ }
29
+ /**
30
+ * 哈希器接口(替代 Bun.CryptoHasher)
31
+ */
32
+ export interface IHasher {
33
+ update(data: string | Uint8Array | ArrayBuffer): IHasher;
34
+ digest(): Uint8Array;
35
+ digest(encoding: 'hex' | 'base64' | 'base64url'): string;
36
+ }
37
+ /**
38
+ * 加密适配器接口
39
+ */
40
+ export interface ICryptoAdapter {
41
+ createHasher(algorithm: string): IHasher;
42
+ }
43
+ /**
44
+ * 解析器适配器接口
45
+ */
46
+ export interface IParserAdapter {
47
+ parseJSONC(content: string): unknown;
48
+ parseJSON5(content: string): unknown;
49
+ parseJSONL(content: string): unknown[];
50
+ renderMarkdown(md: string): string;
51
+ }
52
+ /**
53
+ * 子进程接口
54
+ */
55
+ export interface IChildProcess {
56
+ readonly pid: number;
57
+ readonly exited: Promise<number | null>;
58
+ kill(signal?: string | number): void;
59
+ }
60
+ /**
61
+ * spawn 选项
62
+ */
63
+ export interface SpawnOptions {
64
+ cmd: string[];
65
+ env?: Record<string, string | undefined>;
66
+ stdout?: 'inherit' | 'pipe' | 'ignore';
67
+ stderr?: 'inherit' | 'pipe' | 'ignore';
68
+ }
69
+ /**
70
+ * 进程适配器接口
71
+ */
72
+ export interface IProcessAdapter {
73
+ spawn(options: SpawnOptions): IChildProcess;
74
+ sleep(ms: number): Promise<void>;
75
+ }
76
+ /**
77
+ * WebSocket 连接抽象接口(替代 Bun.ServerWebSocket)
78
+ */
79
+ export interface IWebSocket<T = unknown> {
80
+ readonly data: T;
81
+ readonly readyState: number;
82
+ send(data: string | Buffer | Uint8Array): void;
83
+ close(code?: number, reason?: string): void;
84
+ }
85
+ /**
86
+ * WebSocket 事件处理器集合
87
+ */
88
+ export interface WebSocketHandlers<T = unknown> {
89
+ open?: (ws: IWebSocket<T>) => void | Promise<void>;
90
+ message?: (ws: IWebSocket<T>, msg: string | Buffer) => void | Promise<void>;
91
+ close?: (ws: IWebSocket<T>, code: number, reason: string) => void | Promise<void>;
92
+ }
93
+ /**
94
+ * HTTP 服务启动选项
95
+ */
96
+ export interface HttpServeOptions<T = unknown> {
97
+ port?: number;
98
+ hostname?: string;
99
+ reusePort?: boolean;
100
+ idleTimeout?: number;
101
+ /** Unix socket 路径(cluster proxy 模式使用) */
102
+ unix?: string;
103
+ fetch: (request: Request, server: IServerHandle) => Response | Promise<Response | undefined> | undefined;
104
+ websocket?: WebSocketHandlers<T>;
105
+ }
106
+ /**
107
+ * 服务器句柄接口(替代 Bun.Server)
108
+ */
109
+ export interface IServerHandle {
110
+ readonly port: number;
111
+ readonly hostname?: string;
112
+ stop(): void;
113
+ /** 升级 WebSocket 连接(Bun 原生升级) */
114
+ upgrade?(request: Request, options?: {
115
+ data?: unknown;
116
+ }): boolean;
117
+ /** 设置连接超时(Bun 专属) */
118
+ timeout?(request: Request, seconds: number): void;
119
+ /** 获取底层原生服务器实例(不推荐,类型为 unknown) */
120
+ getNative(): unknown;
121
+ }
122
+ /**
123
+ * HTTP 驱动适配器接口
124
+ */
125
+ export interface IHttpDriver {
126
+ serve<T = unknown>(options: HttpServeOptions<T>): Promise<IServerHandle>;
127
+ }
128
+ /**
129
+ * 平台接口聚合
130
+ */
131
+ export interface IPlatform {
132
+ readonly engine: PlatformEngine;
133
+ readonly fs: IFsAdapter;
134
+ readonly crypto: ICryptoAdapter;
135
+ readonly parser: IParserAdapter;
136
+ readonly process: IProcessAdapter;
137
+ readonly http: IHttpDriver;
138
+ }
139
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/platform/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../../src/prompt/stores/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAS;gBAEJ,MAAM,GAAE,qBAA0B;IAKxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK/C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKvE,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKjC,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC;IAOjE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC;IAO7E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAcnC,YAAY;YAiCZ,SAAS;CAkBxB"}
1
+ {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../../src/prompt/stores/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAS;gBAEJ,MAAM,GAAE,qBAA0B;IAKxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK/C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKvE,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKjC,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC;IAOjE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC;IAO7E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAcnC,YAAY;YAiCZ,SAAS;CAkBxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/rag/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AAK3F;;;;;GAKG;AACH,qBACa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGrB,OAAO,EAAE,gBAAgB,EACnB,gBAAgB,EAAE,gBAAgB,EACvC,WAAW,EAAE,WAAW;IAStD;;;;;OAKG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoC/E;;;;OAIG;IACU,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB9E;;OAEG;IACU,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAMtE,QAAQ;CAiBvB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/rag/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AAK3F;;;;;GAKG;AACH,qBACa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGrB,OAAO,EAAE,gBAAgB,EACnB,gBAAgB,EAAE,gBAAgB,EACvC,WAAW,EAAE,WAAW;IAStD;;;;;OAKG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoC/E;;;;OAIG;IACU,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB9E;;OAEG;IACU,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAMtE,QAAQ;CAiBvB"}
@@ -1,4 +1,5 @@
1
- import type { HeadersInit } from 'bun';
1
+ /** Cross-runtime compatible headers input type */
2
+ type HeadersInit = Headers | string[][] | Record<string, string>;
2
3
  /**
3
4
  * 响应封装类
4
5
  * 提供便捷的响应创建方法
@@ -62,4 +63,5 @@ export declare class ResponseBuilder {
62
63
  headers?: HeadersInit;
63
64
  }): Response;
64
65
  }
66
+ export {};
65
67
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/request/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,KAAK,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;OAKG;WACW,KAAK,CAAC,MAAM,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ;IAQ1E;;;;;OAKG;WACW,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,QAAQ;IASnE;;;;;OAKG;WACW,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,QAAQ;IAIpE;;;;;OAKG;WACW,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,eAAe,EACrD,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,WAAW,CAAC;KAClB,GACL,QAAQ;CAyBZ"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/request/response.ts"],"names":[],"mappings":"AAEA,kDAAkD;AAClD,KAAK,WAAW,GAAG,OAAO,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjE;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;;OAMG;WACW,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAY,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ;IAUX;;;;;OAKG;WACW,KAAK,CAAC,MAAM,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ;IAQ1E;;;;;OAKG;WACW,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,QAAQ;IASnE;;;;;OAKG;WACW,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,QAAQ;IAIpE;;;;;OAKG;WACW,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,eAAe,EACrD,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,WAAW,CAAC;KAClB,GACL,QAAQ;CAyBZ"}
@@ -1,5 +1,5 @@
1
1
  import 'reflect-metadata';
2
- import type { ServerWebSocket } from 'bun';
2
+ import type { IWebSocket } from '../../platform/types';
3
3
  import type { Context } from '../../core/context';
4
4
  import type { ResponseBuilder } from '../../request/response';
5
5
  import type { Constructor } from '../../core/types';
@@ -21,7 +21,7 @@ export declare class ExecutionContextImpl implements ExecutionContext {
21
21
  * @param client - WebSocket 客户端
22
22
  * @param data - 消息数据
23
23
  */
24
- setWsContext(client: ServerWebSocket<unknown>, data: unknown): void;
24
+ setWsContext(client: IWebSocket<unknown>, data: unknown): void;
25
25
  /**
26
26
  * 获取 HTTP 上下文
27
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../../src/security/guards/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAkDjB;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAKzD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAkB;gBAGd,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EACjB,IAAI,GAAE,OAAO,EAAO,EACrC,eAAe,CAAC,EAAE,eAAe;IAKnC;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAI1E;;OAEG;IACI,YAAY,IAAI,iBAAiB;IAIxC;;OAEG;IACI,UAAU,IAAI,eAAe;IAOpC;;OAEG;IACI,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACI,UAAU,IAAI,QAAQ;IAI7B;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;;;OAIG;IACI,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAe1D;;OAEG;IACI,OAAO,IAAI,OAAO,EAAE;CAG5B"}
1
+ {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../../src/security/guards/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAkDjB;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAKzD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAkB;gBAGd,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EACjB,IAAI,GAAE,OAAO,EAAO,EACrC,eAAe,CAAC,EAAE,eAAe;IAKnC;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAIrE;;OAEG;IACI,YAAY,IAAI,iBAAiB;IAIxC;;OAEG;IACI,UAAU,IAAI,eAAe;IAOpC;;OAEG;IACI,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACI,UAAU,IAAI,QAAQ;IAI7B;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;;;OAIG;IACI,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAe1D;;OAEG;IACI,OAAO,IAAI,OAAO,EAAE;CAG5B"}
@@ -1,7 +1,7 @@
1
1
  import type { Context } from '../../core/context';
2
2
  import type { ResponseBuilder } from '../../request/response';
3
3
  import type { Constructor } from '../../core/types';
4
- import type { ServerWebSocket } from 'bun';
4
+ import type { IWebSocket } from '../../platform/types';
5
5
  /**
6
6
  * 守卫接口
7
7
  * 守卫用于决定请求是否可以继续执行
@@ -39,7 +39,7 @@ export interface WsArgumentsHost {
39
39
  * 获取 WebSocket 客户端
40
40
  * @returns WebSocket 连接对象
41
41
  */
42
- getClient(): ServerWebSocket<unknown>;
42
+ getClient(): IWebSocket<unknown>;
43
43
  /**
44
44
  * 获取消息数据
45
45
  * @returns 消息数据
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/security/guards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,eAAe,GAAG,SAAS,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAEtC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,YAAY,IAAI,iBAAiB,CAAC;IAElC;;;OAGG;IACH,UAAU,IAAI,eAAe,CAAC;IAE9B;;;OAGG;IACH,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC;IAEvB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,OAAO,IAAI,OAAO,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAsC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAA8C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAqC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/security/guards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,eAAe,GAAG,SAAS,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,YAAY,IAAI,iBAAiB,CAAC;IAElC;;;OAGG;IACH,UAAU,IAAI,eAAe,CAAC;IAE9B;;;OAGG;IACH,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC;IAEvB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,OAAO,IAAI,OAAO,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAsC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAA8C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAqC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/swagger/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAWhF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAEtB,OAAO,EAAE,cAAc;IAI1C;;OAEG;IACI,QAAQ,IAAI,eAAe;IAgMlC;;;OAGG;IACI,gBAAgB,IAAI,MAAM;IAuFjC;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAKrC;;OAEG;IACH,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/swagger/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAYhF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAEtB,OAAO,EAAE,cAAc;IAI1C;;OAEG;IACI,QAAQ,IAAI,eAAe;IAgMlC;;;OAGG;IACI,gBAAgB,IAAI,MAAM;IAuFjC;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAKrC;;OAEG;IACH,OAAO,CAAC,aAAa;CAatB"}
@@ -1,4 +1,4 @@
1
- import type { ServerWebSocket } from 'bun';
1
+ import type { IWebSocket } from '../platform/types';
2
2
  import { Context } from '../core/context';
3
3
  import type { Constructor } from '@/core/types';
4
4
  export interface WebSocketConnectionData {
@@ -44,8 +44,8 @@ export declare class WebSocketGatewayRegistry {
44
44
  * @param args - 原始参数(message, code, reason 等,不包括 ws)
45
45
  */
46
46
  private invokeHandler;
47
- handleOpen(ws: ServerWebSocket<WebSocketConnectionData>): Promise<void>;
48
- handleMessage(ws: ServerWebSocket<WebSocketConnectionData>, message: string | ArrayBuffer | ArrayBufferView): Promise<void>;
49
- handleClose(ws: ServerWebSocket<WebSocketConnectionData>, code: number, reason: string): Promise<void>;
47
+ handleOpen(ws: IWebSocket<WebSocketConnectionData>): Promise<void>;
48
+ handleMessage(ws: IWebSocket<WebSocketConnectionData>, message: string | ArrayBuffer | ArrayBufferView | Buffer): Promise<void>;
49
+ handleClose(ws: IWebSocket<WebSocketConnectionData>, code: number, reason: string): Promise<void>;
50
50
  }
51
51
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/websocket/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAO3C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAehD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAE3D,OAAO;WAIO,WAAW,IAAI,wBAAwB;IAOrD,OAAO,CAAC,MAAM,CAAC,SAAS;IAYjB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAoCzD;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAcjC,KAAK,IAAI,IAAI;IAMpB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAoBlB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;;;;OAMG;YACW,aAAa;IA0Gd,UAAU,CAAC,EAAE,EAAE,eAAe,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,aAAa,CACxB,EAAE,EAAE,eAAe,CAAC,uBAAuB,CAAC,EAC5C,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAC9C,OAAO,CAAC,IAAI,CAAC;IAcH,WAAW,CACtB,EAAE,EAAE,eAAe,CAAC,uBAAuB,CAAC,EAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;CAQjB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/websocket/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAehD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAE3D,OAAO;WAIO,WAAW,IAAI,wBAAwB;IAOrD,OAAO,CAAC,MAAM,CAAC,SAAS;IAYjB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAoCzD;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAcjC,KAAK,IAAI,IAAI;IAMpB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAoBlB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;;;;OAMG;YACW,aAAa;IA0Gd,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAclE,aAAa,CACxB,EAAE,EAAE,UAAU,CAAC,uBAAuB,CAAC,EACvC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GACvD,OAAO,CAAC,IAAI,CAAC;IAcH,WAAW,CACtB,EAAE,EAAE,UAAU,CAAC,uBAAuB,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;CAQjB"}
@@ -1,11 +1,13 @@
1
1
  # Production Deployment Guide
2
2
 
3
3
  This guide covers best practices for deploying Bun Server Framework applications
4
- to production.
4
+ to production. The framework supports both **Bun** (optimal performance) and
5
+ **Node.js 22+** runtimes — choose the one that fits your infrastructure.
5
6
 
6
7
  ## Table of Contents
7
8
 
8
9
  - [Prerequisites](#prerequisites)
10
+ - [Runtime Selection](#runtime-selection)
9
11
  - [Environment Setup](#environment-setup)
10
12
  - [Configuration](#configuration)
11
13
  - [Process Management](#process-management)
@@ -16,23 +18,45 @@ to production.
16
18
 
17
19
  ## Prerequisites
18
20
 
19
- - Bun runtime (latest stable version)
20
- - Node.js 18+ (for compatibility)
21
- - Production-ready database (PostgreSQL, MySQL, etc.)
21
+ - **Bun** >= 1.3.10 (Bun deployment) **or** **Node.js** >= 22.0.0 (Node.js deployment)
22
+ - Production-ready database (PostgreSQL, MySQL, SQLite, etc.)
22
23
  - Reverse proxy (Nginx, Caddy, etc.)
23
24
 
25
+ ## Runtime Selection
26
+
27
+ | Criteria | Bun | Node.js |
28
+ |---|---|---|
29
+ | Performance | Optimal (native APIs) | Good |
30
+ | Ecosystem | Growing | Mature |
31
+ | Docker image | `oven/bun` | `node:22-alpine` |
32
+ | `idleTimeout` / `reusePort` | Supported | Not available |
33
+ | Recommended for | New projects, latency-sensitive | Existing Node.js infra |
34
+
35
+ The framework auto-detects the runtime at startup. See [Platform Guide](./platform.md) for details.
36
+
24
37
  ## Environment Setup
25
38
 
26
- ### Install Bun
39
+ ### Option A — Bun Runtime
27
40
 
28
41
  ```bash
29
- # On Linux/macOS
42
+ # Install Bun (Linux/macOS)
30
43
  curl -fsSL https://bun.sh/install | bash
31
44
 
32
- # Verify installation
45
+ # Verify
33
46
  bun --version
34
47
  ```
35
48
 
49
+ ### Option B — Node.js Runtime
50
+
51
+ ```bash
52
+ # Use Node.js 22+ (LTS)
53
+ node --version # should be v22+
54
+
55
+ # Build TypeScript to JS
56
+ bun build src/main.ts --target=node --outdir=dist
57
+ # or: npx tsc
58
+ ```
59
+
36
60
  ### Set Environment Variables
37
61
 
38
62
  Create a `.env.production` file:
@@ -1,13 +1,15 @@
1
1
  # idleTimeout & SSE Keep-Alive
2
2
 
3
+ > **Platform note:** `idleTimeout`, `reusePort`, and SSE TCP keepalive via `server.timeout` are **Bun-exclusive** features. On Node.js they are silently ignored. The `@IdleTimeout(ms)` decorator (handler-level timeout) works on both runtimes. See [Platform Guide](./platform.md#bun-exclusive-features) for the full list.
4
+
3
5
  ## Two layers of timeout
4
6
 
5
7
  Bun Server has **two independent timeout mechanisms** — understanding their difference is critical for SSE / streaming use cases.
6
8
 
7
- | Layer | Config | Scope | Mechanism |
8
- |-------|--------|-------|-----------|
9
- | **TCP connection** | `Application({ idleTimeout })` | Bun.serve level | Bun kernel closes the TCP socket when no bytes flow for N seconds |
10
- | **Handler logic** | `@IdleTimeout(ms)` decorator | Per-route `Promise.race` | Returns `408 Request Timeout` if the handler doesn't resolve in time |
9
+ | Layer | Config | Scope | Mechanism | Bun | Node.js |
10
+ |-------|--------|-------|-----------|-----|---------|
11
+ | **TCP connection** | `Application({ idleTimeout })` | Bun.serve level | Bun kernel closes the TCP socket when no bytes flow for N seconds | Yes | Ignored |
12
+ | **Handler logic** | `@IdleTimeout(ms)` decorator | Per-route `Promise.race` | Returns `408 Request Timeout` if the handler doesn't resolve in time | Yes | Yes |
11
13
 
12
14
  > **Key point:** For SSE responses the handler returns a `Response` immediately (with a streaming body). The handler-level `@IdleTimeout` has already resolved at that point and will **not** protect or kill the stream. Only the TCP-level `idleTimeout` can break an SSE connection.
13
15
 
package/docs/migration.md CHANGED
@@ -4,6 +4,49 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## v2.x → v3.0 (Platform Adapter)
8
+
9
+ v3.0.0 introduces the **Platform Adapter Layer** enabling Node.js 22+ support alongside Bun.
10
+
11
+ ### Breaking Changes
12
+
13
+ | Change | Before | After |
14
+ |---|---|---|
15
+ | `BunServer.getServer()` return type | `Bun.Server \| undefined` | `IServerHandle \| undefined` |
16
+ | `WsArgumentsHost.getClient()` return type | `ServerWebSocket<T>` | `IWebSocket<T>` |
17
+
18
+ ### Migration Steps
19
+
20
+ **1. Update WebSocket guard types**
21
+
22
+ ```typescript
23
+ // Before
24
+ import type { ServerWebSocket } from 'bun';
25
+ getClient(): ServerWebSocket<unknown>
26
+
27
+ // After
28
+ import type { IWebSocket } from '@dangao/bun-server';
29
+ getClient(): IWebSocket<unknown>
30
+ ```
31
+
32
+ **2. Update server handle access**
33
+
34
+ ```typescript
35
+ // Before
36
+ const server: Bun.Server | undefined = app.getServer();
37
+
38
+ // After
39
+ import type { IServerHandle } from '@dangao/bun-server';
40
+ const server: IServerHandle | undefined = app.getServer();
41
+ // Raw native access (not recommended):
42
+ const native: unknown = app.getNativeServer();
43
+ ```
44
+
45
+ **3. Everything else is backward compatible.**
46
+ Database configuration, module APIs, controllers, services, and middleware require no changes.
47
+
48
+ ---
49
+
7
50
  ## v1.x → v2.0
8
51
 
9
52
  v2.0.0 is **fully backward compatible** with v1.x. All existing modules, APIs, and patterns continue to work without changes.