@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.
- package/README.md +81 -3
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/config/service.d.ts +0 -1
- package/dist/config/service.d.ts.map +1 -1
- package/dist/core/application.d.ts +13 -0
- package/dist/core/application.d.ts.map +1 -1
- package/dist/core/cluster.d.ts.map +1 -1
- package/dist/core/server.d.ts +12 -9
- package/dist/core/server.d.ts.map +1 -1
- package/dist/dashboard/controller.d.ts.map +1 -1
- package/dist/database/connection-manager.d.ts.map +1 -1
- package/dist/database/connection-pool.d.ts +3 -3
- package/dist/database/connection-pool.d.ts.map +1 -1
- package/dist/database/service.d.ts +2 -1
- package/dist/database/service.d.ts.map +1 -1
- package/dist/database/sql-manager.d.ts +8 -4
- package/dist/database/sql-manager.d.ts.map +1 -1
- package/dist/database/sqlite-adapter.d.ts +7 -3
- package/dist/database/sqlite-adapter.d.ts.map +1 -1
- package/dist/debug/recorder.d.ts +0 -1
- package/dist/debug/recorder.d.ts.map +1 -1
- package/dist/files/static-middleware.d.ts.map +1 -1
- package/dist/files/storage.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39487 -3496
- package/dist/index.node.mjs +17723 -0
- package/dist/middleware/builtin/static-file.d.ts +4 -2
- package/dist/middleware/builtin/static-file.d.ts.map +1 -1
- package/dist/platform/bun/crypto.d.ts +3 -0
- package/dist/platform/bun/crypto.d.ts.map +1 -0
- package/dist/platform/bun/fs.d.ts +3 -0
- package/dist/platform/bun/fs.d.ts.map +1 -0
- package/dist/platform/bun/http.d.ts +15 -0
- package/dist/platform/bun/http.d.ts.map +1 -0
- package/dist/platform/bun/index.d.ts +3 -0
- package/dist/platform/bun/index.d.ts.map +1 -0
- package/dist/platform/bun/parser.d.ts +3 -0
- package/dist/platform/bun/parser.d.ts.map +1 -0
- package/dist/platform/bun/process.d.ts +3 -0
- package/dist/platform/bun/process.d.ts.map +1 -0
- package/dist/platform/detector.d.ts +9 -0
- package/dist/platform/detector.d.ts.map +1 -0
- package/dist/platform/index.d.ts +4 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/node/crypto.d.ts +3 -0
- package/dist/platform/node/crypto.d.ts.map +1 -0
- package/dist/platform/node/fs.d.ts +3 -0
- package/dist/platform/node/fs.d.ts.map +1 -0
- package/dist/platform/node/http.d.ts +3 -0
- package/dist/platform/node/http.d.ts.map +1 -0
- package/dist/platform/node/index.d.ts +3 -0
- package/dist/platform/node/index.d.ts.map +1 -0
- package/dist/platform/node/parser.d.ts +3 -0
- package/dist/platform/node/parser.d.ts.map +1 -0
- package/dist/platform/node/process.d.ts +3 -0
- package/dist/platform/node/process.d.ts.map +1 -0
- package/dist/platform/runtime.d.ts +14 -0
- package/dist/platform/runtime.d.ts.map +1 -0
- package/dist/platform/types.d.ts +139 -0
- package/dist/platform/types.d.ts.map +1 -0
- package/dist/prompt/stores/file-store.d.ts.map +1 -1
- package/dist/rag/service.d.ts.map +1 -1
- package/dist/request/response.d.ts +3 -1
- package/dist/request/response.d.ts.map +1 -1
- package/dist/security/guards/execution-context.d.ts +2 -2
- package/dist/security/guards/execution-context.d.ts.map +1 -1
- package/dist/security/guards/types.d.ts +2 -2
- package/dist/security/guards/types.d.ts.map +1 -1
- package/dist/swagger/generator.d.ts.map +1 -1
- package/dist/websocket/registry.d.ts +4 -4
- package/dist/websocket/registry.d.ts.map +1 -1
- package/docs/deployment.md +31 -7
- package/docs/idle-timeout.md +6 -4
- package/docs/migration.md +43 -0
- package/docs/platform.md +299 -0
- package/docs/testing.md +60 -0
- package/docs/zh/deployment.md +30 -7
- package/docs/zh/idle-timeout.md +6 -4
- package/docs/zh/migration.md +42 -0
- package/docs/zh/platform.md +299 -0
- package/docs/zh/testing.md +60 -0
- package/package.json +24 -7
- package/src/auth/jwt.ts +4 -3
- package/src/config/service.ts +7 -6
- package/src/core/application.ts +19 -1
- package/src/core/cluster.ts +16 -14
- package/src/core/server.ts +48 -35
- package/src/dashboard/controller.ts +3 -2
- package/src/database/connection-manager.ts +19 -12
- package/src/database/connection-pool.ts +33 -20
- package/src/database/database-module.ts +1 -1
- package/src/database/db-proxy.ts +2 -2
- package/src/database/orm/transaction-manager.ts +1 -1
- package/src/database/service.ts +21 -5
- package/src/database/sql-manager.ts +48 -13
- package/src/database/sqlite-adapter.ts +54 -13
- package/src/debug/recorder.ts +4 -3
- package/src/files/static-middleware.ts +3 -2
- package/src/files/storage.ts +2 -1
- package/src/index.ts +13 -0
- package/src/middleware/builtin/static-file.ts +8 -5
- package/src/platform/bun/crypto.ts +30 -0
- package/src/platform/bun/fs.ts +52 -0
- package/src/platform/bun/http.ts +106 -0
- package/src/platform/bun/index.ts +17 -0
- package/src/platform/bun/parser.ts +19 -0
- package/src/platform/bun/process.ts +37 -0
- package/src/platform/detector.ts +36 -0
- package/src/platform/index.ts +20 -0
- package/src/platform/node/crypto.ts +40 -0
- package/src/platform/node/fs.ts +115 -0
- package/src/platform/node/http.ts +196 -0
- package/src/platform/node/index.ts +17 -0
- package/src/platform/node/parser.ts +34 -0
- package/src/platform/node/process.ts +51 -0
- package/src/platform/runtime.ts +50 -0
- package/src/platform/types.ts +150 -0
- package/src/prompt/stores/file-store.ts +6 -5
- package/src/rag/service.ts +2 -1
- package/src/request/response.ts +7 -4
- package/src/security/guards/execution-context.ts +4 -4
- package/src/security/guards/types.ts +2 -2
- package/src/swagger/generator.ts +2 -1
- package/src/websocket/registry.ts +6 -7
- package/tests/controller/path-combination.test.ts +196 -2
- package/tests/files/static-middleware.test.ts +5 -2
- package/tests/middleware/static-file.test.ts +5 -2
- package/tests/platform/bun/crypto.test.ts +8 -0
- package/tests/platform/bun/database.test.ts +8 -0
- package/tests/platform/bun/fs.test.ts +8 -0
- package/tests/platform/bun/parser.test.ts +8 -0
- package/tests/platform/bun/process.test.ts +8 -0
- package/tests/platform/bun/websocket.test.ts +8 -0
- package/tests/platform/detector.test.ts +57 -0
- package/tests/platform/node/build-smoke.test.ts +92 -0
- package/tests/platform/node/crypto.test.ts +9 -0
- package/tests/platform/node/database.test.ts +9 -0
- package/tests/platform/node/fs.test.ts +9 -0
- package/tests/platform/node/parser.test.ts +9 -0
- package/tests/platform/node/process.test.ts +9 -0
- package/tests/platform/node/websocket.test.ts +9 -0
- package/tests/platform/shared/crypto.cases.ts +49 -0
- package/tests/platform/shared/database.cases.ts +43 -0
- package/tests/platform/shared/fs.cases.ts +82 -0
- package/tests/platform/shared/parser.cases.ts +55 -0
- package/tests/platform/shared/process.cases.ts +26 -0
- package/tests/platform/shared/suite.ts +33 -0
- package/tests/platform/shared/websocket.cases.ts +61 -0
- package/tests/request/response.test.ts +5 -2
- package/tests/router/router-extended.test.ts +53 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { Middleware } from '../middleware';
|
|
2
|
-
|
|
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?:
|
|
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;
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
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 {
|
|
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:
|
|
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,
|
|
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 {
|
|
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():
|
|
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,
|
|
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;
|
|
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 {
|
|
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:
|
|
48
|
-
handleMessage(ws:
|
|
49
|
-
handleClose(ws:
|
|
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,
|
|
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"}
|
package/docs/deployment.md
CHANGED
|
@@ -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
|
|
20
|
-
-
|
|
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
|
-
###
|
|
39
|
+
### Option A — Bun Runtime
|
|
27
40
|
|
|
28
41
|
```bash
|
|
29
|
-
#
|
|
42
|
+
# Install Bun (Linux/macOS)
|
|
30
43
|
curl -fsSL https://bun.sh/install | bash
|
|
31
44
|
|
|
32
|
-
# Verify
|
|
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:
|
package/docs/idle-timeout.md
CHANGED
|
@@ -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.
|