@fluojs/platform-bun 1.0.0-beta.1 → 1.0.0-beta.2
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.ko.md +24 -0
- package/README.md +24 -0
- package/dist/adapter.d.ts +80 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +77 -0
- package/package.json +2 -2
package/README.ko.md
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
- [빠른 시작](#빠른-시작)
|
|
12
12
|
- [주요 패턴](#주요-패턴)
|
|
13
13
|
- [공개 API 개요](#공개-api-개요)
|
|
14
|
+
- [어댑터 계약](#어댑터-계약)
|
|
15
|
+
- [Conformance 커버리지](#conformance-커버리지)
|
|
14
16
|
- [관련 패키지](#관련-패키지)
|
|
15
17
|
- [예제 소스](#예제-소스)
|
|
16
18
|
|
|
@@ -76,6 +78,28 @@ export class MyGateway {}
|
|
|
76
78
|
- `bootstrapBunApplication(module, options)`: 암시적 시작 로그 없이 애플리케이션을 부트스트랩하는 고급 헬퍼입니다.
|
|
77
79
|
- `runBunApplication(module, options)`: 시그널 연결을 포함한 빠른 시작을 위한 호환 헬퍼입니다.
|
|
78
80
|
|
|
81
|
+
어댑터는 realtime 패키지가 사용하는 타입 지정 Bun 통합 seam도 함께 내보냅니다.
|
|
82
|
+
|
|
83
|
+
- `BunHttpApplicationAdapter`: `Bun.serve()`를 기반으로 동작하는 `HttpApplicationAdapter` 구현체입니다.
|
|
84
|
+
- `BunAdapterOptions`: `createBunAdapter()`가 받는 host, port, TLS, raw-body, multipart, shutdown 옵션입니다.
|
|
85
|
+
- `BootstrapBunApplicationOptions` 및 `RunBunApplicationOptions`: Bun 호스팅 애플리케이션의 bootstrap/run 옵션입니다.
|
|
86
|
+
- `BunWebSocketBinding` 및 `BunRealtimeBindingHost`: 일반 HTTP dispatch 전에 `@fluojs/websockets/bun`이 사용하는 binding 계약입니다.
|
|
87
|
+
|
|
88
|
+
## 어댑터 계약
|
|
89
|
+
|
|
90
|
+
- **런타임 host**: 이 패키지는 listen 시점에 `globalThis.Bun.serve()`가 필요합니다. 테스트에서는 Bun 호환 test double을 제공할 수 있지만, production 사용은 Bun 전용입니다.
|
|
91
|
+
- **요청 portability**: Fetch 요청은 shared web dispatcher를 통해 변환되며 malformed cookie 값, query 배열, `rawBody: true`일 때 JSON/text raw body, SSE framing을 보존합니다.
|
|
92
|
+
- **Multipart 동작**: Multipart 요청은 `rawBody`를 노출하지 않으며 multipart limit은 shared runtime parser를 통해 계속 적용됩니다.
|
|
93
|
+
- **시작 target**: `hostname`, `port`, `tls`는 `Bun.serve()`로 전달됩니다. 시작 로그는 설정된 HTTP 또는 HTTPS listen URL을 보고합니다.
|
|
94
|
+
- **종료 소유권**: `close()`는 새 유입을 중단하고, in-flight HTTP handler를 기다린 뒤, drain이 끝나면 adapter state를 정리하며 `runBunApplication()`이 등록한 signal listener를 제거합니다.
|
|
95
|
+
- **Realtime seam**: Bun websocket binding은 서버를 시작하는 `listen()` 전에 구성해야 합니다. Upgrade 요청은 HTTP dispatch로 넘어가기 전에 구성된 binding에 먼저 전달됩니다.
|
|
96
|
+
|
|
97
|
+
## Conformance 커버리지
|
|
98
|
+
|
|
99
|
+
`packages/platform-bun/src/adapter.test.ts`는 문서화된 계약을 검증하는 package-local regression 대상입니다. 이 파일은 malformed cookie, JSON/text raw-body 보존, multipart raw-body 제외, SSE framing을 검증하는 Bun fetch-style portability assertion과 startup logging, shutdown listener cleanup, in-flight drain, timeout reporting, websocket binding delegation을 검증하는 집중 테스트를 포함합니다.
|
|
100
|
+
|
|
101
|
+
저장소의 더 넓은 suite도 `packages/testing/src/portability/web-runtime-adapter-portability.test.ts`에서 `createWebRuntimeHttpAdapterPortabilityHarness(...)`로 Bun을 Deno 및 Cloudflare Workers와 함께 실행해 fetch-style platform 간 shared web-runtime portability baseline을 맞춥니다.
|
|
102
|
+
|
|
79
103
|
## 관련 패키지
|
|
80
104
|
|
|
81
105
|
- `@fluojs/runtime`: 핵심 런타임입니다.
|
package/README.md
CHANGED
|
@@ -11,6 +11,8 @@ Bun-backed HTTP adapter for the fluo runtime, built on native `Bun.serve()`.
|
|
|
11
11
|
- [Quick Start](#quick-start)
|
|
12
12
|
- [Common Patterns](#common-patterns)
|
|
13
13
|
- [Public API Overview](#public-api-overview)
|
|
14
|
+
- [Adapter Contract](#adapter-contract)
|
|
15
|
+
- [Conformance Coverage](#conformance-coverage)
|
|
14
16
|
- [Related Packages](#related-packages)
|
|
15
17
|
- [Example Sources](#example-sources)
|
|
16
18
|
|
|
@@ -76,6 +78,28 @@ export class MyGateway {}
|
|
|
76
78
|
- `bootstrapBunApplication(module, options)`: Advanced bootstrap without implicit startup logging.
|
|
77
79
|
- `runBunApplication(module, options)`: Compatibility helper for quick startup with signal wiring.
|
|
78
80
|
|
|
81
|
+
The adapter also exports the typed Bun integration seams used by realtime packages:
|
|
82
|
+
|
|
83
|
+
- `BunHttpApplicationAdapter`: `HttpApplicationAdapter` implementation backed by `Bun.serve()`.
|
|
84
|
+
- `BunAdapterOptions`: host, port, TLS, raw-body, multipart, and shutdown options accepted by `createBunAdapter()`.
|
|
85
|
+
- `BootstrapBunApplicationOptions` and `RunBunApplicationOptions`: application bootstrap/run options for Bun-hosted apps.
|
|
86
|
+
- `BunWebSocketBinding` and `BunRealtimeBindingHost`: binding contracts used by `@fluojs/websockets/bun` before normal HTTP dispatch.
|
|
87
|
+
|
|
88
|
+
## Adapter Contract
|
|
89
|
+
|
|
90
|
+
- **Runtime host**: This package requires `globalThis.Bun.serve()` at listen time. Tests may provide a Bun-compatible test double, but production use is Bun-only.
|
|
91
|
+
- **Request portability**: Fetch requests are translated through the shared web dispatcher, preserving malformed cookie values, query arrays, JSON/text raw bodies when `rawBody: true`, and SSE framing.
|
|
92
|
+
- **Multipart behavior**: Multipart requests never expose `rawBody`, and multipart limits continue to flow through the shared runtime parser.
|
|
93
|
+
- **Startup target**: `hostname`, `port`, and `tls` are forwarded to `Bun.serve()`. Startup logs report the configured HTTP or HTTPS listen URL.
|
|
94
|
+
- **Shutdown ownership**: `close()` stops new ingress, waits for in-flight HTTP handlers, clears adapter state after drain settles, and removes signal listeners registered by `runBunApplication()`.
|
|
95
|
+
- **Realtime seam**: Bun websocket bindings must be configured before `listen()` starts the server. Upgrade requests are offered to the configured binding before falling back to HTTP dispatch.
|
|
96
|
+
|
|
97
|
+
## Conformance Coverage
|
|
98
|
+
|
|
99
|
+
`packages/platform-bun/src/adapter.test.ts` is the package-local regression target for the documented contract. It includes Bun fetch-style portability assertions for malformed cookies, JSON/text raw-body preservation, multipart raw-body exclusion, and SSE framing, plus focused tests for startup logging, shutdown listener cleanup, in-flight drain behavior, timeout reporting, and websocket binding delegation.
|
|
100
|
+
|
|
101
|
+
The broader repository suite also exercises Bun through `createWebRuntimeHttpAdapterPortabilityHarness(...)` alongside Deno and Cloudflare Workers in `packages/testing/src/portability/web-runtime-adapter-portability.test.ts`, keeping the shared web-runtime portability baseline aligned across fetch-style platforms.
|
|
102
|
+
|
|
79
103
|
## Related Packages
|
|
80
104
|
|
|
81
105
|
- `@fluojs/runtime`: Core framework runtime.
|
package/dist/adapter.d.ts
CHANGED
|
@@ -8,10 +8,15 @@ declare module '@fluojs/http' {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
type BunHostname = string;
|
|
11
|
+
/** Shutdown signal names that `runBunApplication()` can register. */
|
|
11
12
|
export type BunApplicationSignal = 'SIGINT' | 'SIGTERM';
|
|
13
|
+
/** CORS input accepted by Bun application bootstrap helpers. */
|
|
12
14
|
export type BunCorsInput = false | string | string[] | CorsOptions;
|
|
15
|
+
/** TLS options forwarded to `Bun.serve()` without adapter-level normalization. */
|
|
13
16
|
export type BunTlsOptions = Record<string, unknown>;
|
|
17
|
+
/** Message payloads accepted by Bun server websocket bindings. */
|
|
14
18
|
export type BunWebSocketMessage = string | ArrayBuffer | Uint8Array;
|
|
19
|
+
/** Minimal Bun server websocket shape used by the official websocket binding seam. */
|
|
15
20
|
export interface BunServerWebSocket<TData = unknown> {
|
|
16
21
|
readonly data: TData;
|
|
17
22
|
readonly readyState: number;
|
|
@@ -25,6 +30,7 @@ export interface BunServerWebSocket<TData = unknown> {
|
|
|
25
30
|
subscribe(topic: string): void;
|
|
26
31
|
unsubscribe(topic: string): void;
|
|
27
32
|
}
|
|
33
|
+
/** Callback contract forwarded to the `websocket` option of `Bun.serve()`. */
|
|
28
34
|
export interface BunWebSocketHandler<TData = unknown> {
|
|
29
35
|
backpressureLimit?: number;
|
|
30
36
|
close?(socket: BunServerWebSocket<TData>, code: number, reason: string): void | Promise<void>;
|
|
@@ -43,18 +49,22 @@ export interface BunWebSocketHandler<TData = unknown> {
|
|
|
43
49
|
publishToSelf?: boolean;
|
|
44
50
|
sendPings?: boolean;
|
|
45
51
|
}
|
|
52
|
+
/** Fetch-style websocket binding consumed before normal HTTP dispatch. */
|
|
46
53
|
export interface BunWebSocketBinding<TData = unknown> {
|
|
47
54
|
fetch(request: Request, server: BunServerLike): Response | Promise<Response> | undefined | Promise<Response | undefined>;
|
|
48
55
|
idleTimeout?: number;
|
|
49
56
|
maxRequestBodySize?: number;
|
|
50
57
|
websocket: BunWebSocketHandler<TData>;
|
|
51
58
|
}
|
|
59
|
+
/** Host contract exposed by Bun adapters that can install a realtime binding. */
|
|
52
60
|
export interface BunRealtimeBindingHost {
|
|
53
61
|
configureRealtimeBinding<TData>(binding: BunWebSocketBinding<TData> | undefined): void;
|
|
54
62
|
}
|
|
63
|
+
/** Backward-compatible host contract for Bun websocket-specific bindings. */
|
|
55
64
|
export interface BunWebSocketBindingHost extends BunRealtimeBindingHost {
|
|
56
65
|
configureWebSocketBinding<TData>(binding: BunWebSocketBinding<TData> | undefined): void;
|
|
57
66
|
}
|
|
67
|
+
/** Subset of `Bun.serve()` options used by the adapter and its tests. */
|
|
58
68
|
export interface BunServeOptions {
|
|
59
69
|
development?: boolean;
|
|
60
70
|
error?: (error: Error) => Response | Promise<Response>;
|
|
@@ -66,6 +76,7 @@ export interface BunServeOptions {
|
|
|
66
76
|
tls?: BunTlsOptions;
|
|
67
77
|
websocket?: BunWebSocketHandler;
|
|
68
78
|
}
|
|
79
|
+
/** Minimal Bun server handle used by fluo for fetch dispatch, upgrades, and shutdown. */
|
|
69
80
|
export interface BunServerLike {
|
|
70
81
|
fetch?(request: Request): Response | Promise<Response> | undefined | Promise<Response | undefined>;
|
|
71
82
|
hostname?: BunHostname;
|
|
@@ -77,45 +88,81 @@ export interface BunServerLike {
|
|
|
77
88
|
}): boolean;
|
|
78
89
|
url?: URL;
|
|
79
90
|
}
|
|
91
|
+
/** Options for `createBunAdapter()`. */
|
|
80
92
|
export interface BunAdapterOptions {
|
|
93
|
+
/** Enables Bun development-mode behavior when supported by the host runtime. */
|
|
81
94
|
development?: boolean;
|
|
95
|
+
/** Hostname passed through to `Bun.serve()`. */
|
|
82
96
|
hostname?: BunHostname;
|
|
97
|
+
/** Idle timeout passed through to `Bun.serve()`. */
|
|
83
98
|
idleTimeout?: number;
|
|
99
|
+
/** Maximum request body size forwarded as Bun's `maxRequestBodySize`. */
|
|
84
100
|
maxBodySize?: number;
|
|
101
|
+
/** Multipart parsing limits used by the shared web request dispatcher. */
|
|
85
102
|
multipart?: MultipartOptions;
|
|
103
|
+
/** Port passed through to `Bun.serve()`, defaulting to 3000. */
|
|
86
104
|
port?: number;
|
|
105
|
+
/** Preserves raw bodies for non-multipart requests when enabled. */
|
|
87
106
|
rawBody?: boolean;
|
|
107
|
+
/** Whether shutdown asks Bun to stop active connections immediately. */
|
|
88
108
|
stopActiveConnections?: boolean;
|
|
109
|
+
/** TLS options forwarded to `Bun.serve()` for HTTPS startup. */
|
|
89
110
|
tls?: BunTlsOptions;
|
|
90
111
|
}
|
|
112
|
+
/** Options for creating a standalone Bun `fetch(request)` handler. */
|
|
91
113
|
export interface CreateBunFetchHandlerOptions {
|
|
114
|
+
/** Dispatcher that receives translated fluo framework requests. */
|
|
92
115
|
dispatcher: Dispatcher;
|
|
116
|
+
/** Error message used when a request arrives before dispatcher binding is ready. */
|
|
93
117
|
dispatcherNotReadyMessage?: string;
|
|
118
|
+
/** Maximum request body size enforced by the shared web dispatcher. */
|
|
94
119
|
maxBodySize?: number;
|
|
120
|
+
/** Multipart parsing limits used by the shared web dispatcher. */
|
|
95
121
|
multipart?: MultipartOptions;
|
|
122
|
+
/** Preserves raw bodies for JSON and text requests when enabled. */
|
|
96
123
|
rawBody?: boolean;
|
|
97
124
|
}
|
|
125
|
+
/** Bootstrap options for Bun applications that do not install shutdown signal wiring. */
|
|
98
126
|
export interface BootstrapBunApplicationOptions extends Omit<CreateApplicationOptions, 'adapter' | 'logger' | 'middleware'> {
|
|
127
|
+
/** CORS policy applied by the shared HTTP bootstrap path. */
|
|
99
128
|
cors?: BunCorsInput;
|
|
129
|
+
/** Enables Bun development-mode behavior when supported by the host runtime. */
|
|
100
130
|
development?: boolean;
|
|
131
|
+
/** Global route prefix applied by the shared HTTP bootstrap path. */
|
|
101
132
|
globalPrefix?: string;
|
|
133
|
+
/** Routes excluded from the global prefix. */
|
|
102
134
|
globalPrefixExclude?: readonly string[];
|
|
135
|
+
/** Hostname passed through to `Bun.serve()`. */
|
|
103
136
|
hostname?: BunHostname;
|
|
137
|
+
/** Idle timeout passed through to `Bun.serve()`. */
|
|
104
138
|
idleTimeout?: number;
|
|
139
|
+
/** Application logger used for startup, shutdown, and failure reporting. */
|
|
105
140
|
logger?: ApplicationLogger;
|
|
141
|
+
/** Maximum request body size forwarded as Bun's `maxRequestBodySize`. */
|
|
106
142
|
maxBodySize?: number;
|
|
143
|
+
/** Middleware applied by the shared HTTP bootstrap path. */
|
|
107
144
|
middleware?: MiddlewareLike[];
|
|
145
|
+
/** Multipart parsing limits used by the shared web request dispatcher. */
|
|
108
146
|
multipart?: MultipartOptions;
|
|
147
|
+
/** Port passed through to `Bun.serve()`, defaulting to 3000. */
|
|
109
148
|
port?: number;
|
|
149
|
+
/** Preserves raw bodies for non-multipart requests when enabled. */
|
|
110
150
|
rawBody?: boolean;
|
|
151
|
+
/** Security header policy applied by the shared HTTP bootstrap path. */
|
|
111
152
|
securityHeaders?: false | SecurityHeadersOptions;
|
|
153
|
+
/** Whether shutdown asks Bun to stop active connections immediately. */
|
|
112
154
|
stopActiveConnections?: boolean;
|
|
155
|
+
/** TLS options forwarded to `Bun.serve()` for HTTPS startup. */
|
|
113
156
|
tls?: BunTlsOptions;
|
|
114
157
|
}
|
|
158
|
+
/** Run options for Bun applications with optional shutdown signal wiring. */
|
|
115
159
|
export interface RunBunApplicationOptions extends BootstrapBunApplicationOptions {
|
|
160
|
+
/** Maximum signal-driven shutdown duration before fluo reports timeout via `process.exitCode`. */
|
|
116
161
|
forceExitTimeoutMs?: number;
|
|
162
|
+
/** Shutdown signals to register, or `false` to disable signal wiring. */
|
|
117
163
|
shutdownSignals?: false | readonly BunApplicationSignal[];
|
|
118
164
|
}
|
|
165
|
+
/** HTTP application adapter backed by native `Bun.serve()`. */
|
|
119
166
|
export declare class BunHttpApplicationAdapter implements HttpApplicationAdapter, BunWebSocketBindingHost {
|
|
120
167
|
private readonly options;
|
|
121
168
|
private closeInFlight?;
|
|
@@ -125,20 +172,53 @@ export declare class BunHttpApplicationAdapter implements HttpApplicationAdapter
|
|
|
125
172
|
private server?;
|
|
126
173
|
private realtimeBinding?;
|
|
127
174
|
constructor(options?: BunAdapterOptions);
|
|
175
|
+
/** Returns the active Bun server handle after `listen()` starts. */
|
|
128
176
|
getServer(): BunServerLike | undefined;
|
|
177
|
+
/** Returns the bind target and externally logged URL for the current Bun server. */
|
|
129
178
|
getListenTarget(): HttpAdapterListenTarget;
|
|
179
|
+
/** Reports Bun's fetch-style websocket capability for realtime package integration. */
|
|
130
180
|
getRealtimeCapability(): import("@fluojs/http").FetchStyleHttpAdapterRealtimeCapability;
|
|
181
|
+
/** Configures the official realtime binding before the Bun server starts. */
|
|
131
182
|
configureRealtimeBinding<TData>(binding: BunWebSocketBinding<TData> | undefined): void;
|
|
183
|
+
/** Configures a Bun websocket binding through the legacy websocket host name. */
|
|
132
184
|
configureWebSocketBinding<TData>(binding: BunWebSocketBinding<TData> | undefined): void;
|
|
185
|
+
/** Starts the Bun server and binds framework dispatch to native fetch requests. */
|
|
133
186
|
listen(dispatcher: Dispatcher): Promise<void>;
|
|
187
|
+
/** Stops ingress, waits for in-flight HTTP handlers, and releases adapter state. */
|
|
134
188
|
close(): Promise<void>;
|
|
135
189
|
private dispatchHttpRequest;
|
|
136
190
|
private trackInFlightRequest;
|
|
137
191
|
private waitForInFlightRequests;
|
|
138
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Creates a standalone Bun-compatible fetch handler.
|
|
195
|
+
*
|
|
196
|
+
* @param options - Dispatcher and request parsing options for translating native requests.
|
|
197
|
+
* @returns A `fetch(request)` handler suitable for custom `Bun.serve()` calls.
|
|
198
|
+
*/
|
|
139
199
|
export declare function createBunFetchHandler({ dispatcher, dispatcherNotReadyMessage, maxBodySize, multipart, rawBody, }: CreateBunFetchHandlerOptions): (request: Request) => Promise<Response>;
|
|
200
|
+
/**
|
|
201
|
+
* Creates the recommended Bun HTTP adapter instance.
|
|
202
|
+
*
|
|
203
|
+
* @param options - Bun server and request parsing options.
|
|
204
|
+
* @returns A fluo HTTP application adapter backed by `Bun.serve()`.
|
|
205
|
+
*/
|
|
140
206
|
export declare function createBunAdapter(options?: BunAdapterOptions): HttpApplicationAdapter;
|
|
207
|
+
/**
|
|
208
|
+
* Bootstraps a fluo application with the Bun adapter without starting signal wiring.
|
|
209
|
+
*
|
|
210
|
+
* @param rootModule - Root fluo module to compile.
|
|
211
|
+
* @param options - Bun adapter and application bootstrap options.
|
|
212
|
+
* @returns The bootstrapped application; call `listen()` to start serving.
|
|
213
|
+
*/
|
|
141
214
|
export declare function bootstrapBunApplication(rootModule: ModuleType, options: BootstrapBunApplicationOptions): Promise<Application>;
|
|
215
|
+
/**
|
|
216
|
+
* Bootstraps, starts, and wires shutdown handling for a Bun-hosted fluo application.
|
|
217
|
+
*
|
|
218
|
+
* @param rootModule - Root fluo module to compile.
|
|
219
|
+
* @param options - Bun adapter, application, and shutdown options.
|
|
220
|
+
* @returns The running application instance.
|
|
221
|
+
*/
|
|
142
222
|
export declare function runBunApplication(rootModule: ModuleType, options: RunBunApplicationOptions): Promise<Application>;
|
|
143
223
|
export {};
|
|
144
224
|
//# sourceMappingURL=adapter.d.ts.map
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;CACF;AAMD,KAAK,WAAW,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter.js
CHANGED
|
@@ -2,10 +2,43 @@ import { createFetchStyleHttpAdapterRealtimeCapability } from '@fluojs/http';
|
|
|
2
2
|
import { createNodeShutdownSignalRegistration, defaultNodeShutdownSignals } from '@fluojs/runtime/node';
|
|
3
3
|
import { dispatchWebRequest } from '@fluojs/runtime/web';
|
|
4
4
|
import { bootstrapHttpAdapterApplication, runHttpAdapterApplication } from '@fluojs/runtime/internal/http-adapter';
|
|
5
|
+
|
|
6
|
+
/** Shutdown signal names that `runBunApplication()` can register. */
|
|
7
|
+
|
|
8
|
+
/** CORS input accepted by Bun application bootstrap helpers. */
|
|
9
|
+
|
|
10
|
+
/** TLS options forwarded to `Bun.serve()` without adapter-level normalization. */
|
|
11
|
+
|
|
12
|
+
/** Message payloads accepted by Bun server websocket bindings. */
|
|
13
|
+
|
|
14
|
+
/** Minimal Bun server websocket shape used by the official websocket binding seam. */
|
|
15
|
+
|
|
16
|
+
/** Callback contract forwarded to the `websocket` option of `Bun.serve()`. */
|
|
17
|
+
|
|
18
|
+
/** Fetch-style websocket binding consumed before normal HTTP dispatch. */
|
|
19
|
+
|
|
20
|
+
/** Host contract exposed by Bun adapters that can install a realtime binding. */
|
|
21
|
+
|
|
22
|
+
/** Backward-compatible host contract for Bun websocket-specific bindings. */
|
|
23
|
+
|
|
24
|
+
/** Subset of `Bun.serve()` options used by the adapter and its tests. */
|
|
25
|
+
|
|
26
|
+
/** Minimal Bun server handle used by fluo for fetch dispatch, upgrades, and shutdown. */
|
|
27
|
+
|
|
28
|
+
/** Options for `createBunAdapter()`. */
|
|
29
|
+
|
|
30
|
+
/** Options for creating a standalone Bun `fetch(request)` handler. */
|
|
31
|
+
|
|
32
|
+
/** Bootstrap options for Bun applications that do not install shutdown signal wiring. */
|
|
33
|
+
|
|
34
|
+
/** Run options for Bun applications with optional shutdown signal wiring. */
|
|
35
|
+
|
|
5
36
|
const DEFAULT_PORT = 3000;
|
|
6
37
|
const DEFAULT_DISPATCHER_NOT_READY_MESSAGE = 'Bun adapter received a request before dispatcher binding completed.';
|
|
7
38
|
const DEFAULT_SHUTDOWN_TIMEOUT_MS = 10_000;
|
|
8
39
|
const BUN_WEBSOCKET_SUPPORT_REASON = 'Bun exposes Bun.serve() + server.upgrade() request-upgrade hosting. Use @fluojs/websockets/bun for the official raw websocket binding.';
|
|
40
|
+
|
|
41
|
+
/** HTTP application adapter backed by native `Bun.serve()`. */
|
|
9
42
|
export class BunHttpApplicationAdapter {
|
|
10
43
|
closeInFlight;
|
|
11
44
|
dispatcher;
|
|
@@ -16,9 +49,13 @@ export class BunHttpApplicationAdapter {
|
|
|
16
49
|
constructor(options = {}) {
|
|
17
50
|
this.options = options;
|
|
18
51
|
}
|
|
52
|
+
|
|
53
|
+
/** Returns the active Bun server handle after `listen()` starts. */
|
|
19
54
|
getServer() {
|
|
20
55
|
return this.server;
|
|
21
56
|
}
|
|
57
|
+
|
|
58
|
+
/** Returns the bind target and externally logged URL for the current Bun server. */
|
|
22
59
|
getListenTarget() {
|
|
23
60
|
const protocol = this.options.tls ? 'https' : 'http';
|
|
24
61
|
const configuredHostname = this.options.hostname ?? 'localhost';
|
|
@@ -30,20 +67,28 @@ export class BunHttpApplicationAdapter {
|
|
|
30
67
|
url
|
|
31
68
|
};
|
|
32
69
|
}
|
|
70
|
+
|
|
71
|
+
/** Reports Bun's fetch-style websocket capability for realtime package integration. */
|
|
33
72
|
getRealtimeCapability() {
|
|
34
73
|
return createFetchStyleHttpAdapterRealtimeCapability(BUN_WEBSOCKET_SUPPORT_REASON, {
|
|
35
74
|
support: 'supported'
|
|
36
75
|
});
|
|
37
76
|
}
|
|
77
|
+
|
|
78
|
+
/** Configures the official realtime binding before the Bun server starts. */
|
|
38
79
|
configureRealtimeBinding(binding) {
|
|
39
80
|
if (this.server && binding !== undefined) {
|
|
40
81
|
throw new Error('Bun websocket binding must be configured before Bun adapter listen() starts the server.');
|
|
41
82
|
}
|
|
42
83
|
this.realtimeBinding = binding;
|
|
43
84
|
}
|
|
85
|
+
|
|
86
|
+
/** Configures a Bun websocket binding through the legacy websocket host name. */
|
|
44
87
|
configureWebSocketBinding(binding) {
|
|
45
88
|
this.configureRealtimeBinding(binding);
|
|
46
89
|
}
|
|
90
|
+
|
|
91
|
+
/** Starts the Bun server and binds framework dispatch to native fetch requests. */
|
|
47
92
|
async listen(dispatcher) {
|
|
48
93
|
this.dispatcher = dispatcher;
|
|
49
94
|
if (this.server) {
|
|
@@ -73,6 +118,8 @@ export class BunHttpApplicationAdapter {
|
|
|
73
118
|
websocket: realtimeBinding?.websocket
|
|
74
119
|
});
|
|
75
120
|
}
|
|
121
|
+
|
|
122
|
+
/** Stops ingress, waits for in-flight HTTP handlers, and releases adapter state. */
|
|
76
123
|
async close() {
|
|
77
124
|
if (this.closeInFlight) {
|
|
78
125
|
await waitForCloseWithTimeout(this.closeInFlight, DEFAULT_SHUTDOWN_TIMEOUT_MS);
|
|
@@ -136,6 +183,13 @@ export class BunHttpApplicationAdapter {
|
|
|
136
183
|
await this.inFlightDrain?.promise;
|
|
137
184
|
}
|
|
138
185
|
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Creates a standalone Bun-compatible fetch handler.
|
|
189
|
+
*
|
|
190
|
+
* @param options - Dispatcher and request parsing options for translating native requests.
|
|
191
|
+
* @returns A `fetch(request)` handler suitable for custom `Bun.serve()` calls.
|
|
192
|
+
*/
|
|
139
193
|
export function createBunFetchHandler({
|
|
140
194
|
dispatcher,
|
|
141
195
|
dispatcherNotReadyMessage = DEFAULT_DISPATCHER_NOT_READY_MESSAGE,
|
|
@@ -154,9 +208,24 @@ export function createBunFetchHandler({
|
|
|
154
208
|
});
|
|
155
209
|
};
|
|
156
210
|
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Creates the recommended Bun HTTP adapter instance.
|
|
214
|
+
*
|
|
215
|
+
* @param options - Bun server and request parsing options.
|
|
216
|
+
* @returns A fluo HTTP application adapter backed by `Bun.serve()`.
|
|
217
|
+
*/
|
|
157
218
|
export function createBunAdapter(options = {}) {
|
|
158
219
|
return new BunHttpApplicationAdapter(options);
|
|
159
220
|
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Bootstraps a fluo application with the Bun adapter without starting signal wiring.
|
|
224
|
+
*
|
|
225
|
+
* @param rootModule - Root fluo module to compile.
|
|
226
|
+
* @param options - Bun adapter and application bootstrap options.
|
|
227
|
+
* @returns The bootstrapped application; call `listen()` to start serving.
|
|
228
|
+
*/
|
|
160
229
|
export async function bootstrapBunApplication(rootModule, options) {
|
|
161
230
|
return bootstrapHttpAdapterApplication(rootModule, options, createBunAdapter({
|
|
162
231
|
development: options.development,
|
|
@@ -170,6 +239,14 @@ export async function bootstrapBunApplication(rootModule, options) {
|
|
|
170
239
|
tls: options.tls
|
|
171
240
|
}));
|
|
172
241
|
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Bootstraps, starts, and wires shutdown handling for a Bun-hosted fluo application.
|
|
245
|
+
*
|
|
246
|
+
* @param rootModule - Root fluo module to compile.
|
|
247
|
+
* @param options - Bun adapter, application, and shutdown options.
|
|
248
|
+
* @returns The running application instance.
|
|
249
|
+
*/
|
|
173
250
|
export async function runBunApplication(rootModule, options) {
|
|
174
251
|
const adapter = createBunAdapter({
|
|
175
252
|
development: options.development,
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"platform",
|
|
9
9
|
"server"
|
|
10
10
|
],
|
|
11
|
-
"version": "1.0.0-beta.
|
|
11
|
+
"version": "1.0.0-beta.2",
|
|
12
12
|
"private": false,
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@fluojs/http": "^1.0.0-beta.1",
|
|
36
|
-
"@fluojs/runtime": "^1.0.0-beta.
|
|
36
|
+
"@fluojs/runtime": "^1.0.0-beta.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"vitest": "^3.2.4"
|