@effect/platform-bun 4.0.0-beta.7 → 4.0.0-beta.71
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/dist/BunChildProcessSpawner.d.ts +1 -1
- package/dist/BunChildProcessSpawner.js +1 -1
- package/dist/BunClusterHttp.d.ts +70 -7
- package/dist/BunClusterHttp.d.ts.map +1 -1
- package/dist/BunClusterHttp.js +41 -10
- package/dist/BunClusterHttp.js.map +1 -1
- package/dist/BunClusterSocket.d.ts +54 -9
- package/dist/BunClusterSocket.d.ts.map +1 -1
- package/dist/BunClusterSocket.js +54 -9
- package/dist/BunClusterSocket.js.map +1 -1
- package/dist/BunCrypto.d.ts +10 -0
- package/dist/BunCrypto.d.ts.map +1 -0
- package/dist/BunCrypto.js +22 -0
- package/dist/BunCrypto.js.map +1 -0
- package/dist/BunFileSystem.d.ts +4 -2
- package/dist/BunFileSystem.d.ts.map +1 -1
- package/dist/BunFileSystem.js +27 -3
- package/dist/BunFileSystem.js.map +1 -1
- package/dist/BunHttpClient.d.ts +2 -2
- package/dist/BunHttpClient.js +2 -2
- package/dist/BunHttpPlatform.d.ts +4 -2
- package/dist/BunHttpPlatform.d.ts.map +1 -1
- package/dist/BunHttpPlatform.js +5 -3
- package/dist/BunHttpPlatform.js.map +1 -1
- package/dist/BunHttpServer.d.ts +77 -19
- package/dist/BunHttpServer.d.ts.map +1 -1
- package/dist/BunHttpServer.js +63 -36
- package/dist/BunHttpServer.js.map +1 -1
- package/dist/BunHttpServerRequest.d.ts +26 -2
- package/dist/BunHttpServerRequest.d.ts.map +1 -1
- package/dist/BunHttpServerRequest.js +3 -1
- package/dist/BunHttpServerRequest.js.map +1 -1
- package/dist/BunMultipart.d.ts +28 -5
- package/dist/BunMultipart.d.ts.map +1 -1
- package/dist/BunMultipart.js +15 -5
- package/dist/BunMultipart.js.map +1 -1
- package/dist/BunPath.d.ts +12 -6
- package/dist/BunPath.d.ts.map +1 -1
- package/dist/BunPath.js +42 -7
- package/dist/BunPath.js.map +1 -1
- package/dist/BunRedis.d.ts +48 -9
- package/dist/BunRedis.d.ts.map +1 -1
- package/dist/BunRedis.js +51 -12
- package/dist/BunRedis.js.map +1 -1
- package/dist/BunRuntime.d.ts +24 -30
- package/dist/BunRuntime.d.ts.map +1 -1
- package/dist/BunRuntime.js +38 -11
- package/dist/BunRuntime.js.map +1 -1
- package/dist/BunServices.d.ts +32 -5
- package/dist/BunServices.d.ts.map +1 -1
- package/dist/BunServices.js +7 -3
- package/dist/BunServices.js.map +1 -1
- package/dist/BunSink.d.ts +2 -2
- package/dist/BunSink.js +2 -2
- package/dist/BunSocket.d.ts +30 -4
- package/dist/BunSocket.d.ts.map +1 -1
- package/dist/BunSocket.js +10 -3
- package/dist/BunSocket.js.map +1 -1
- package/dist/BunSocketServer.d.ts +2 -2
- package/dist/BunSocketServer.js +2 -2
- package/dist/BunStdio.d.ts +5 -2
- package/dist/BunStdio.d.ts.map +1 -1
- package/dist/BunStdio.js +36 -3
- package/dist/BunStdio.js.map +1 -1
- package/dist/BunStream.d.ts +3 -2
- package/dist/BunStream.d.ts.map +1 -1
- package/dist/BunStream.js +34 -3
- package/dist/BunStream.js.map +1 -1
- package/dist/BunTerminal.d.ts +8 -2
- package/dist/BunTerminal.d.ts.map +1 -1
- package/dist/BunTerminal.js +41 -3
- package/dist/BunTerminal.js.map +1 -1
- package/dist/BunWorker.d.ts +9 -2
- package/dist/BunWorker.d.ts.map +1 -1
- package/dist/BunWorker.js +46 -4
- package/dist/BunWorker.js.map +1 -1
- package/dist/BunWorkerRunner.d.ts +5 -1
- package/dist/BunWorkerRunner.d.ts.map +1 -1
- package/dist/BunWorkerRunner.js +41 -5
- package/dist/BunWorkerRunner.js.map +1 -1
- package/dist/index.d.ts +25 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -23
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/BunChildProcessSpawner.ts +1 -1
- package/src/BunClusterHttp.ts +75 -11
- package/src/BunClusterSocket.ts +54 -9
- package/src/BunCrypto.ts +24 -0
- package/src/BunFileSystem.ts +27 -3
- package/src/BunHttpClient.ts +2 -2
- package/src/BunHttpPlatform.ts +28 -4
- package/src/BunHttpServer.ts +128 -56
- package/src/BunHttpServerRequest.ts +26 -2
- package/src/BunMultipart.ts +36 -6
- package/src/BunPath.ts +42 -7
- package/src/BunRedis.ts +53 -14
- package/src/BunRuntime.ts +54 -31
- package/src/BunServices.ts +34 -5
- package/src/BunSink.ts +2 -2
- package/src/BunSocket.ts +30 -4
- package/src/BunSocketServer.ts +2 -2
- package/src/BunStdio.ts +36 -3
- package/src/BunStream.ts +34 -3
- package/src/BunTerminal.ts +41 -3
- package/src/BunWorker.ts +46 -4
- package/src/BunWorkerRunner.ts +41 -5
- package/src/index.ts +26 -23
package/dist/BunHttpServer.d.ts
CHANGED
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bun implementation of the Effect `HttpServer`.
|
|
3
|
+
*
|
|
4
|
+
* This module builds an Effect HTTP server from `Bun.serve`, translating Bun's
|
|
5
|
+
* Web `Request` objects into `HttpServerRequest` values and Effect
|
|
6
|
+
* `HttpServerResponse` values back into Web `Response` objects. It is the Bun
|
|
7
|
+
* runtime entry point for serving `HttpApp`s, streaming responses, file
|
|
8
|
+
* responses through `BunHttpPlatform`, multipart requests, and websocket
|
|
9
|
+
* endpoints through `HttpServerRequest.upgrade`.
|
|
10
|
+
*
|
|
11
|
+
* Common use cases include using {@link layer} or {@link layerConfig} to serve
|
|
12
|
+
* an application from Bun configuration, {@link layerServer} when only the
|
|
13
|
+
* `HttpServer` service is needed, and {@link layerTest} for tests that need an
|
|
14
|
+
* ephemeral Bun listener and fetch-compatible client.
|
|
15
|
+
*
|
|
16
|
+
* Bun supplies absolute request URLs and Web-standard request bodies. This
|
|
17
|
+
* adapter stores the normalized path-and-query URL on `HttpServerRequest.url`,
|
|
18
|
+
* while the underlying `Request` still follows Web body rules: pick the
|
|
19
|
+
* streamed, text, JSON, URL-encoded, or multipart view that matches the route
|
|
20
|
+
* instead of consuming the same body in incompatible ways. Because `Bun.serve`
|
|
21
|
+
* has a single active `fetch` handler, each `serve` call reloads that handler
|
|
22
|
+
* and restores the previous one when the serve scope finalizes.
|
|
23
|
+
*
|
|
24
|
+
* WebSocket upgrades must happen from the Bun request handler. The
|
|
25
|
+
* `HttpServerRequest.upgrade` effect calls `server.upgrade`, fails when Bun says
|
|
26
|
+
* the request is not upgradeable, buffers messages that arrive before the
|
|
27
|
+
* Effect socket handler is installed, and maps non-normal close codes into
|
|
28
|
+
* `Socket` errors. The server is stopped with `server.stop()` when its
|
|
29
|
+
* acquisition scope closes; unless preemptive shutdown is disabled, finalizing
|
|
30
|
+
* a serve scope also starts that stop with the configured graceful shutdown
|
|
31
|
+
* timeout or the default timeout.
|
|
32
|
+
*
|
|
33
|
+
* @since 4.0.0
|
|
3
34
|
*/
|
|
4
35
|
import type { ServerWebSocket } from "bun";
|
|
5
36
|
import * as Config from "effect/Config";
|
|
6
37
|
import type { ConfigError } from "effect/Config";
|
|
7
38
|
import * as Deferred from "effect/Deferred";
|
|
39
|
+
import * as Duration from "effect/Duration";
|
|
8
40
|
import * as Effect from "effect/Effect";
|
|
9
41
|
import type * as FileSystem from "effect/FileSystem";
|
|
10
42
|
import * as Layer from "effect/Layer";
|
|
11
43
|
import type * as Path from "effect/Path";
|
|
12
|
-
import
|
|
44
|
+
import * as Scope from "effect/Scope";
|
|
13
45
|
import * as Etag from "effect/unstable/http/Etag";
|
|
14
46
|
import type { HttpClient } from "effect/unstable/http/HttpClient";
|
|
15
47
|
import type { HttpPlatform } from "effect/unstable/http/HttpPlatform";
|
|
@@ -19,17 +51,24 @@ import type * as ServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
|
19
51
|
import * as Socket from "effect/unstable/socket/Socket";
|
|
20
52
|
import * as BunServices from "./BunServices.ts";
|
|
21
53
|
/**
|
|
22
|
-
*
|
|
54
|
+
* Bun serve options accepted by the HTTP server, extended with typed route definitions.
|
|
55
|
+
*
|
|
23
56
|
* @category Options
|
|
57
|
+
* @since 4.0.0
|
|
24
58
|
*/
|
|
25
59
|
export type ServeOptions<R extends string> = (Bun.Serve.UnixServeOptions<WebSocketContext> | Bun.Serve.HostnamePortServeOptions<WebSocketContext>) & {
|
|
26
60
|
readonly routes?: Bun.Serve.Routes<WebSocketContext, R>;
|
|
27
61
|
};
|
|
28
62
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
63
|
+
* Creates a scoped Bun `HttpServer` from `Bun.serve` options, stopping the server on scope finalization with optional graceful shutdown settings.
|
|
64
|
+
*
|
|
65
|
+
* @category constructors
|
|
66
|
+
* @since 4.0.0
|
|
31
67
|
*/
|
|
32
|
-
export declare const make: <R extends string>(options: ServeOptions<R>
|
|
68
|
+
export declare const make: <R extends string>(options: ServeOptions<R> & {
|
|
69
|
+
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
70
|
+
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
71
|
+
}) => Effect.Effect<{
|
|
33
72
|
readonly serve: {
|
|
34
73
|
<E, R_1>(effect: Effect.Effect<ServerResponse.HttpServerResponse, E, R_1>): Effect.Effect<void, never, Exclude<R_1, ServerRequest.HttpServerRequest> | Scope.Scope>;
|
|
35
74
|
<E, R_2, App extends Effect.Effect<ServerResponse.HttpServerResponse, any, any>>(effect: Effect.Effect<ServerResponse.HttpServerResponse, E, R_2>, middleware: import("effect/unstable/http/HttpMiddleware").HttpMiddleware.Applied<App, E, R_2>): Effect.Effect<void, never, Exclude<R_2, ServerRequest.HttpServerRequest> | Scope.Scope>;
|
|
@@ -37,30 +76,49 @@ export declare const make: <R extends string>(options: ServeOptions<R>) => Effec
|
|
|
37
76
|
readonly address: Server.Address;
|
|
38
77
|
}, never, Scope.Scope>;
|
|
39
78
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
79
|
+
* Layer that provides only `HttpServer` by constructing a scoped Bun server from the supplied serve options.
|
|
80
|
+
*
|
|
81
|
+
* @category layers
|
|
82
|
+
* @since 4.0.0
|
|
42
83
|
*/
|
|
43
|
-
export declare const layerServer: <R extends string>(options: ServeOptions<R>
|
|
84
|
+
export declare const layerServer: <R extends string>(options: ServeOptions<R> & {
|
|
85
|
+
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
86
|
+
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
87
|
+
}) => Layer.Layer<Server.HttpServer>;
|
|
44
88
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
89
|
+
* Layer that provides Bun HTTP support services: `HttpPlatform`, weak ETag generation, and `BunServices`.
|
|
90
|
+
*
|
|
91
|
+
* @category layers
|
|
92
|
+
* @since 4.0.0
|
|
47
93
|
*/
|
|
48
94
|
export declare const layerHttpServices: Layer.Layer<HttpPlatform | Etag.Generator | BunServices.BunServices>;
|
|
49
95
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
96
|
+
* Layer that provides a Bun `HttpServer` together with the Bun HTTP platform, ETag generator, and Bun services.
|
|
97
|
+
*
|
|
98
|
+
* @category layers
|
|
99
|
+
* @since 4.0.0
|
|
52
100
|
*/
|
|
53
|
-
export declare const layer: <R extends string>(options: ServeOptions<R>
|
|
101
|
+
export declare const layer: <R extends string>(options: ServeOptions<R> & {
|
|
102
|
+
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
103
|
+
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
104
|
+
}) => Layer.Layer<Server.HttpServer | HttpPlatform | Etag.Generator | BunServices.BunServices>;
|
|
54
105
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
106
|
+
* Test layer that starts a Bun HTTP server on an ephemeral port and provides the HTTP test client dependencies.
|
|
107
|
+
*
|
|
108
|
+
* @category layers
|
|
109
|
+
* @since 4.0.0
|
|
57
110
|
*/
|
|
58
111
|
export declare const layerTest: Layer.Layer<Server.HttpServer | HttpPlatform | FileSystem.FileSystem | Etag.Generator | Path.Path | HttpClient>;
|
|
59
112
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
113
|
+
* Creates the Bun HTTP server and support-services layer from configurable serve options.
|
|
114
|
+
*
|
|
115
|
+
* @category layers
|
|
116
|
+
* @since 4.0.0
|
|
62
117
|
*/
|
|
63
|
-
export declare const layerConfig: <R extends string>(options: Config.Wrap<ServeOptions<R
|
|
118
|
+
export declare const layerConfig: <R extends string>(options: Config.Wrap<ServeOptions<R> & {
|
|
119
|
+
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
120
|
+
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
121
|
+
}>) => Layer.Layer<Server.HttpServer | HttpPlatform | FileSystem.FileSystem | Etag.Generator | Path.Path, ConfigError>;
|
|
64
122
|
interface WebSocketContext {
|
|
65
123
|
readonly deferred: Deferred.Deferred<ServerWebSocket<WebSocketContext>>;
|
|
66
124
|
readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunHttpServer.d.ts","sourceRoot":"","sources":["../src/BunHttpServer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BunHttpServer.d.ts","sourceRoot":"","sources":["../src/BunHttpServer.ts"],"names":[],"mappings":"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"}
|
package/dist/BunHttpServer.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as Config from "effect/Config";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
2
3
|
import * as Deferred from "effect/Deferred";
|
|
4
|
+
import * as Duration from "effect/Duration";
|
|
3
5
|
import * as Effect from "effect/Effect";
|
|
4
6
|
import * as Exit from "effect/Exit";
|
|
5
7
|
import * as Fiber from "effect/Fiber";
|
|
@@ -7,8 +9,9 @@ import * as FiberSet from "effect/FiberSet";
|
|
|
7
9
|
import { flow } from "effect/Function";
|
|
8
10
|
import * as Inspectable from "effect/Inspectable";
|
|
9
11
|
import * as Layer from "effect/Layer";
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
|
+
import * as Scope from "effect/Scope";
|
|
10
14
|
import * as Semaphore from "effect/Semaphore";
|
|
11
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
12
15
|
import * as Stream from "effect/Stream";
|
|
13
16
|
import * as Cookies from "effect/unstable/http/Cookies";
|
|
14
17
|
import * as Etag from "effect/unstable/http/Etag";
|
|
@@ -26,10 +29,13 @@ import * as BunMultipart from "./BunMultipart.js";
|
|
|
26
29
|
import * as BunServices from "./BunServices.js";
|
|
27
30
|
import * as BunStream from "./BunStream.js";
|
|
28
31
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
32
|
+
* Creates a scoped Bun `HttpServer` from `Bun.serve` options, stopping the server on scope finalization with optional graceful shutdown settings.
|
|
33
|
+
*
|
|
34
|
+
* @category constructors
|
|
35
|
+
* @since 4.0.0
|
|
31
36
|
*/
|
|
32
37
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
38
|
+
const scope = yield* Effect.scope;
|
|
33
39
|
const handlerStack = [function (_request, _server) {
|
|
34
40
|
return new Response("not found", {
|
|
35
41
|
status: 404
|
|
@@ -46,6 +52,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
46
52
|
ws.data.run(message);
|
|
47
53
|
},
|
|
48
54
|
close(ws, code, closeReason) {
|
|
55
|
+
code = typeof code === "number" ? code : 1001;
|
|
49
56
|
Deferred.doneUnsafe(ws.data.closeDeferred, Socket.defaultCloseCodeIsError(code) ? Exit.fail(new Socket.SocketError({
|
|
50
57
|
reason: new Socket.SocketCloseError({
|
|
51
58
|
code,
|
|
@@ -55,7 +62,12 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
});
|
|
58
|
-
yield* Effect.
|
|
65
|
+
const shutdown = yield* Effect.promise(() => server.stop()).pipe(Effect.cached);
|
|
66
|
+
const preemptiveShutdown = options.disablePreemptiveShutdown ? Effect.void : Effect.timeoutOrElse(shutdown, {
|
|
67
|
+
duration: options.gracefulShutdownTimeout ?? Duration.seconds(20),
|
|
68
|
+
orElse: () => Effect.void
|
|
69
|
+
});
|
|
70
|
+
yield* Scope.addFinalizer(scope, shutdown);
|
|
59
71
|
return Server.make({
|
|
60
72
|
address: {
|
|
61
73
|
_tag: "TcpAddress",
|
|
@@ -63,8 +75,10 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
63
75
|
hostname: server.hostname
|
|
64
76
|
},
|
|
65
77
|
serve: Effect.fnUntraced(function* (httpApp, middleware) {
|
|
66
|
-
const
|
|
67
|
-
const services =
|
|
78
|
+
const parent = yield* Effect.fiber;
|
|
79
|
+
const services = parent.context;
|
|
80
|
+
const serveScope = Context.getUnsafe(services, Scope.Scope);
|
|
81
|
+
const scope = Scope.forkUnsafe(serveScope, "parallel");
|
|
68
82
|
const httpEffect = HttpEffect.toHandled(httpApp, (request, response) => Effect.sync(() => {
|
|
69
83
|
;
|
|
70
84
|
request.resolve(makeResponse(request, response, services, scope));
|
|
@@ -73,29 +87,29 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
73
87
|
return new Promise((resolve, _reject) => {
|
|
74
88
|
const map = new Map(services.mapUnsafe);
|
|
75
89
|
map.set(ServerRequest.HttpServerRequest.key, new BunServerRequest(request, resolve, removeHost(request.url), server));
|
|
76
|
-
const fiber = Fiber.runIn(Effect.runForkWith(
|
|
90
|
+
const fiber = Fiber.runIn(Effect.runForkWith(Context.makeUnsafe(map))(httpEffect), scope);
|
|
77
91
|
request.signal.addEventListener("abort", () => {
|
|
78
|
-
fiber.interruptUnsafe(Error.
|
|
92
|
+
fiber.interruptUnsafe(parent.id, Error.ClientAbort.annotation);
|
|
79
93
|
}, {
|
|
80
94
|
once: true
|
|
81
95
|
});
|
|
82
96
|
});
|
|
83
97
|
}
|
|
84
|
-
yield*
|
|
85
|
-
handlerStack.push(handler);
|
|
86
|
-
server.reload({
|
|
87
|
-
fetch: handler
|
|
88
|
-
});
|
|
89
|
-
}), () => Effect.sync(() => {
|
|
98
|
+
yield* Scope.addFinalizerExit(serveScope, () => {
|
|
90
99
|
handlerStack.pop();
|
|
91
100
|
server.reload({
|
|
92
101
|
fetch: handlerStack[handlerStack.length - 1]
|
|
93
102
|
});
|
|
94
|
-
|
|
103
|
+
return preemptiveShutdown;
|
|
104
|
+
});
|
|
105
|
+
handlerStack.push(handler);
|
|
106
|
+
server.reload({
|
|
107
|
+
fetch: handler
|
|
108
|
+
});
|
|
95
109
|
})
|
|
96
110
|
});
|
|
97
111
|
});
|
|
98
|
-
const makeResponse = (request, response,
|
|
112
|
+
const makeResponse = (request, response, context, scope) => {
|
|
99
113
|
const fields = {
|
|
100
114
|
headers: new globalThis.Headers(response.headers),
|
|
101
115
|
status: response.status
|
|
@@ -138,28 +152,36 @@ const makeResponse = (request, response, services, scope) => {
|
|
|
138
152
|
return new Response(Stream.toReadableStreamWith(Stream.unwrap(Effect.withFiber(fiber => {
|
|
139
153
|
Fiber.runIn(fiber, scope);
|
|
140
154
|
return Effect.succeed(body.stream);
|
|
141
|
-
})),
|
|
155
|
+
})), context), fields);
|
|
142
156
|
}
|
|
143
157
|
}
|
|
144
158
|
};
|
|
145
159
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
160
|
+
* Layer that provides only `HttpServer` by constructing a scoped Bun server from the supplied serve options.
|
|
161
|
+
*
|
|
162
|
+
* @category layers
|
|
163
|
+
* @since 4.0.0
|
|
148
164
|
*/
|
|
149
165
|
export const layerServer = /*#__PURE__*/flow(make, /*#__PURE__*/Layer.effect(Server.HttpServer));
|
|
150
166
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
167
|
+
* Layer that provides Bun HTTP support services: `HttpPlatform`, weak ETag generation, and `BunServices`.
|
|
168
|
+
*
|
|
169
|
+
* @category layers
|
|
170
|
+
* @since 4.0.0
|
|
153
171
|
*/
|
|
154
172
|
export const layerHttpServices = /*#__PURE__*/Layer.mergeAll(Platform.layer, Etag.layerWeak, BunServices.layer);
|
|
155
173
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
174
|
+
* Layer that provides a Bun `HttpServer` together with the Bun HTTP platform, ETag generator, and Bun services.
|
|
175
|
+
*
|
|
176
|
+
* @category layers
|
|
177
|
+
* @since 4.0.0
|
|
158
178
|
*/
|
|
159
179
|
export const layer = options => Layer.mergeAll(layerServer(options), layerHttpServices);
|
|
160
180
|
/**
|
|
161
|
-
*
|
|
162
|
-
*
|
|
181
|
+
* Test layer that starts a Bun HTTP server on an ephemeral port and provides the HTTP test client dependencies.
|
|
182
|
+
*
|
|
183
|
+
* @category layers
|
|
184
|
+
* @since 4.0.0
|
|
163
185
|
*/
|
|
164
186
|
export const layerTest = /*#__PURE__*/Server.layerTestClient.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/FetchHttpClient.layer.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.succeed(FetchHttpClient.RequestInit)({
|
|
165
187
|
keepalive: false
|
|
@@ -167,10 +189,12 @@ export const layerTest = /*#__PURE__*/Server.layerTestClient.pipe(/*#__PURE__*/L
|
|
|
167
189
|
port: 0
|
|
168
190
|
})));
|
|
169
191
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
192
|
+
* Creates the Bun HTTP server and support-services layer from configurable serve options.
|
|
193
|
+
*
|
|
194
|
+
* @category layers
|
|
195
|
+
* @since 4.0.0
|
|
172
196
|
*/
|
|
173
|
-
export const layerConfig = options => Layer.mergeAll(Layer.effect(Server.HttpServer)(Effect.flatMap(Config.unwrap(options)
|
|
197
|
+
export const layerConfig = options => Layer.mergeAll(Layer.effect(Server.HttpServer)(Effect.flatMap(Config.unwrap(options), make)), layerHttpServices);
|
|
174
198
|
function wsDefaultRun(_) {
|
|
175
199
|
this.buffer.push(_);
|
|
176
200
|
}
|
|
@@ -202,7 +226,7 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
202
226
|
});
|
|
203
227
|
}
|
|
204
228
|
modify(options) {
|
|
205
|
-
return new BunServerRequest(this.source, this.resolve, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, options.remoteAddress
|
|
229
|
+
return new BunServerRequest(this.source, this.resolve, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, "remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride);
|
|
206
230
|
}
|
|
207
231
|
get method() {
|
|
208
232
|
return this.source.method.toUpperCase();
|
|
@@ -211,7 +235,7 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
211
235
|
return this.source.url;
|
|
212
236
|
}
|
|
213
237
|
get remoteAddress() {
|
|
214
|
-
return this.remoteAddressOverride ?? this.bunServer.requestIP(this.source)?.address;
|
|
238
|
+
return this.remoteAddressOverride ?? Option.fromNullishOr(this.bunServer.requestIP(this.source)?.address);
|
|
215
239
|
}
|
|
216
240
|
get headers() {
|
|
217
241
|
this.headersOverride ??= Headers.fromInput(this.source.headers);
|
|
@@ -226,7 +250,7 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
226
250
|
}
|
|
227
251
|
get stream() {
|
|
228
252
|
return this.source.body ? BunStream.fromReadableStream({
|
|
229
|
-
evaluate: () => this.source.body,
|
|
253
|
+
evaluate: () => this.source.body ?? emptyReadbleStream,
|
|
230
254
|
onError: cause => new Error.HttpServerError({
|
|
231
255
|
reason: new Error.RequestParseError({
|
|
232
256
|
request: this,
|
|
@@ -303,6 +327,7 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
303
327
|
})
|
|
304
328
|
})
|
|
305
329
|
})));
|
|
330
|
+
this.textEffect = Effect.map(this.arrayBufferEffect, _ => new TextDecoder().decode(_));
|
|
306
331
|
return this.arrayBufferEffect;
|
|
307
332
|
}
|
|
308
333
|
get upgrade() {
|
|
@@ -354,11 +379,7 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
354
379
|
if (opts?.onOpen) yield* opts.onOpen;
|
|
355
380
|
return yield* FiberSet.join(set);
|
|
356
381
|
}, Effect.scoped, Effect.onExit(exit => Effect.sync(() => ws.close(exit._tag === "Success" ? 1000 : 1011))), Effect.raceFirst(Deferred.await(closeDeferred)), semaphore.withPermits(1));
|
|
357
|
-
|
|
358
|
-
const run = (handler, opts) => runRaw(data => typeof data === "string" ? handler(encoder.encode(data)) : handler(data), opts);
|
|
359
|
-
return Socket.Socket.of({
|
|
360
|
-
[Socket.TypeId]: Socket.TypeId,
|
|
361
|
-
run,
|
|
382
|
+
return Socket.make({
|
|
362
383
|
runRaw,
|
|
363
384
|
writer
|
|
364
385
|
});
|
|
@@ -366,6 +387,12 @@ class BunServerRequest extends Inspectable.Class {
|
|
|
366
387
|
});
|
|
367
388
|
}
|
|
368
389
|
}
|
|
390
|
+
const emptyReadbleStream = /*#__PURE__*/new ReadableStream({
|
|
391
|
+
start(controller) {
|
|
392
|
+
controller.enqueue(new Uint8Array());
|
|
393
|
+
controller.close();
|
|
394
|
+
}
|
|
395
|
+
});
|
|
369
396
|
const removeHost = url => {
|
|
370
397
|
if (url[0] === "/") {
|
|
371
398
|
return url;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunHttpServer.js","names":["Config","Deferred","Effect","Exit","Fiber","FiberSet","flow","Inspectable","Layer","Semaphore","ServiceMap","Stream","Cookies","Etag","FetchHttpClient","Headers","HttpEffect","IncomingMessage","Server","Error","ServerRequest","UrlParams","Socket","Platform","BunMultipart","BunServices","BunStream","make","fnUntraced","options","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","websocket","open","ws","doneUnsafe","data","deferred","succeed","message","run","close","code","closeReason","closeDeferred","defaultCloseCodeIsError","fail","SocketError","reason","SocketCloseError","void","addFinalizer","promise","stop","address","_tag","port","hostname","httpApp","middleware","scope","services","httpEffect","toHandled","request","response","sync","resolve","makeResponse","handler","Promise","_reject","map","Map","mapUnsafe","set","HttpServerRequest","key","BunServerRequest","removeHost","url","fiber","runIn","runForkWith","makeUnsafe","signal","addEventListener","interruptUnsafe","clientAbortFiberId","once","acquireRelease","push","reload","pop","length","fields","headers","globalThis","isEmpty","cookies","header","toSetCookieHeaders","append","statusText","undefined","method","scopeTransferToStream","body","value","entries","formData","toReadableStreamWith","unwrap","withFiber","stream","layerServer","effect","HttpServer","layerHttpServices","mergeAll","layer","layerWeak","layerTest","layerTestClient","pipe","provide","RequestInit","keepalive","provideMerge","layerConfig","flatMap","asEffect","wsDefaultRun","_","buffer","Class","TypeId","source","bunServer","headersOverride","remoteAddressOverride","constructor","toJSON","inspect","_id","originalUrl","modify","remoteAddress","toUpperCase","requestIP","fromInput","cachedCookies","parseHeader","cookie","fromReadableStream","evaluate","onError","cause","HttpServerError","RequestParseError","description","textEffect","text","runSync","cached","tryPromise","try","catch","json","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","multipartStream","arrayBufferEffect","arrayBuffer","upgrade","callback","resume","semaphore","success","await","write","chunk","sendText","isCloseEvent","sendBinary","writer","runRaw","opts","runtime","result","isEffect","forEach","onOpen","join","scoped","onExit","exit","raceFirst","withPermits","encoder","TextEncoder","encode","of","index","indexOf","slice"],"sources":["../src/BunHttpServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BunHttpServer.js","names":["Config","Context","Deferred","Duration","Effect","Exit","Fiber","FiberSet","flow","Inspectable","Layer","Option","Scope","Semaphore","Stream","Cookies","Etag","FetchHttpClient","Headers","HttpEffect","IncomingMessage","Server","Error","ServerRequest","UrlParams","Socket","Platform","BunMultipart","BunServices","BunStream","make","fnUntraced","options","scope","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","websocket","open","ws","doneUnsafe","data","deferred","succeed","message","run","close","code","closeReason","closeDeferred","defaultCloseCodeIsError","fail","SocketError","reason","SocketCloseError","void","shutdown","promise","stop","pipe","cached","preemptiveShutdown","disablePreemptiveShutdown","timeoutOrElse","duration","gracefulShutdownTimeout","seconds","orElse","addFinalizer","address","_tag","port","hostname","httpApp","middleware","parent","fiber","services","context","serveScope","getUnsafe","forkUnsafe","httpEffect","toHandled","request","response","sync","resolve","makeResponse","handler","Promise","_reject","map","Map","mapUnsafe","set","HttpServerRequest","key","BunServerRequest","removeHost","url","runIn","runForkWith","makeUnsafe","signal","addEventListener","interruptUnsafe","id","ClientAbort","annotation","once","addFinalizerExit","pop","reload","length","push","fields","headers","globalThis","isEmpty","cookies","header","toSetCookieHeaders","append","statusText","undefined","method","scopeTransferToStream","body","value","entries","formData","toReadableStreamWith","unwrap","withFiber","stream","layerServer","effect","HttpServer","layerHttpServices","mergeAll","layer","layerWeak","layerTest","layerTestClient","provide","RequestInit","keepalive","provideMerge","layerConfig","flatMap","wsDefaultRun","_","buffer","Class","TypeId","source","bunServer","headersOverride","remoteAddressOverride","constructor","toJSON","inspect","_id","originalUrl","modify","remoteAddress","toUpperCase","fromNullishOr","requestIP","fromInput","cachedCookies","parseHeader","cookie","fromReadableStream","evaluate","emptyReadbleStream","onError","cause","HttpServerError","RequestParseError","description","textEffect","text","runSync","tryPromise","try","catch","json","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","multipartStream","arrayBufferEffect","arrayBuffer","TextDecoder","decode","upgrade","callback","resume","semaphore","success","await","write","chunk","sendText","isCloseEvent","sendBinary","writer","runRaw","opts","runtime","result","isEffect","forEach","onOpen","join","scoped","onExit","exit","raceFirst","withPermits","ReadableStream","start","controller","enqueue","Uint8Array","index","indexOf","slice"],"sources":["../src/BunHttpServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Accessors for the Bun `Request` object backing a platform Bun
|
|
3
|
+
* `HttpServerRequest`.
|
|
4
|
+
*
|
|
5
|
+
* Use this module at interop boundaries when an Effect HTTP handler needs the
|
|
6
|
+
* original `Bun.BunRequest`, for example to read Bun route parameters, pass the
|
|
7
|
+
* request to Bun-specific APIs, inspect Web `Request` fields that are not
|
|
8
|
+
* exposed by the portable `HttpServerRequest` interface, or coordinate with code
|
|
9
|
+
* that already works directly with Bun's server request type.
|
|
10
|
+
*
|
|
11
|
+
* The returned request is the original Web request supplied by `Bun.serve`. It
|
|
12
|
+
* does not reflect Effect request overrides made by middleware, such as a
|
|
13
|
+
* rewritten URL, adjusted headers, or a substituted remote address. Its body is
|
|
14
|
+
* the same one-shot Web `ReadableStream` used by the Effect body helpers, so
|
|
15
|
+
* calling `text`, `json`, `formData`, `arrayBuffer`, or reading `body` directly
|
|
16
|
+
* can disturb the request and conflict with Effect body, multipart, or stream
|
|
17
|
+
* helpers unless ownership of the body is clear.
|
|
18
|
+
*
|
|
19
|
+
* Bun stores client IP information on the server rather than on the request
|
|
20
|
+
* object. Prefer `HttpServerRequest.remoteAddress` when you need the address
|
|
21
|
+
* seen by Effect or middleware; the raw request returned here will not expose
|
|
22
|
+
* middleware-provided remote address overrides.
|
|
23
|
+
*
|
|
24
|
+
* @since 4.0.0
|
|
3
25
|
*/
|
|
4
26
|
import type { HttpServerRequest } from "effect/unstable/http/HttpServerRequest";
|
|
5
27
|
/**
|
|
6
|
-
*
|
|
28
|
+
* Returns the underlying `Bun.BunRequest` from an Effect `HttpServerRequest`.
|
|
29
|
+
*
|
|
7
30
|
* @category Accessors
|
|
31
|
+
* @since 4.0.0
|
|
8
32
|
*/
|
|
9
33
|
export declare const toBunServerRequest: <T extends string = string>(self: HttpServerRequest) => Bun.BunRequest<T>;
|
|
10
34
|
//# sourceMappingURL=BunHttpServerRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunHttpServerRequest.d.ts","sourceRoot":"","sources":["../src/BunHttpServerRequest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BunHttpServerRequest.d.ts","sourceRoot":"","sources":["../src/BunHttpServerRequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,iBAAiB,KAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAClF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunHttpServerRequest.js","names":["toBunServerRequest","self","source"],"sources":["../src/BunHttpServerRequest.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"BunHttpServerRequest.js","names":["toBunServerRequest","self","source"],"sources":["../src/BunHttpServerRequest.ts"],"sourcesContent":[null],"mappings":"AA2BA;;;;;;AAMA,OAAO,MAAMA,kBAAkB,GAA+BC,IAAuB,IAClFA,IAAY,CAACC,MAAM","ignoreList":[]}
|
package/dist/BunMultipart.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bun-specific helpers for parsing HTTP `multipart/form-data` request bodies.
|
|
3
|
+
*
|
|
4
|
+
* This module adapts a Bun `Request` body and headers into the shared
|
|
5
|
+
* `Multipart` model. Use `stream` from Bun HTTP handlers when form fields and
|
|
6
|
+
* uploaded files should be consumed incrementally, for example validating text
|
|
7
|
+
* fields while piping large file parts to storage. Use `persisted` when the
|
|
8
|
+
* whole form should be collected into a record and file parts should be written
|
|
9
|
+
* to scoped temporary files through the current `FileSystem`, `Path`, and
|
|
10
|
+
* `Scope` services.
|
|
11
|
+
*
|
|
12
|
+
* Bun requests expose one-shot web streams, so choose one body reader and do
|
|
13
|
+
* not call `formData`, `text`, `json`, or `arrayBuffer` before using this
|
|
14
|
+
* module. Incoming `FormData` uploads must include a `multipart/form-data`
|
|
15
|
+
* content type with the boundary generated by the client; when constructing
|
|
16
|
+
* `FormData` requests, let the runtime set that header. Stream file content for
|
|
17
|
+
* large uploads, reserve `contentEffect` for small files, and treat client
|
|
18
|
+
* filenames as metadata rather than trusted filesystem paths. Persisted file
|
|
19
|
+
* paths remain valid only for the surrounding scope.
|
|
20
|
+
*
|
|
21
|
+
* @since 4.0.0
|
|
3
22
|
*/
|
|
4
23
|
import type * as Effect from "effect/Effect";
|
|
5
24
|
import type { FileSystem } from "effect/FileSystem";
|
|
@@ -8,13 +27,17 @@ import type * as Scope from "effect/Scope";
|
|
|
8
27
|
import * as Stream from "effect/Stream";
|
|
9
28
|
import * as Multipart from "effect/unstable/http/Multipart";
|
|
10
29
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
30
|
+
* Parses a Bun `Request` body as multipart data and returns a stream of multipart parts.
|
|
31
|
+
*
|
|
32
|
+
* @category constructors
|
|
33
|
+
* @since 4.0.0
|
|
13
34
|
*/
|
|
14
35
|
export declare const stream: (source: Request) => Stream.Stream<Multipart.Part, Multipart.MultipartError>;
|
|
15
36
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
37
|
+
* Parses and persists multipart data from a Bun `Request`, requiring file-system, path, and scope services.
|
|
38
|
+
*
|
|
39
|
+
* @category constructors
|
|
40
|
+
* @since 4.0.0
|
|
18
41
|
*/
|
|
19
42
|
export declare const persisted: (source: Request) => Effect.Effect<Multipart.Persisted, Multipart.MultipartError, FileSystem | Path | Scope.Scope>;
|
|
20
43
|
//# sourceMappingURL=BunMultipart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunMultipart.d.ts","sourceRoot":"","sources":["../src/BunMultipart.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BunMultipart.d.ts","sourceRoot":"","sources":["../src/BunMultipart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAG3D;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAM5F,CAAA;AASH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,OAAO,KACd,MAAM,CAAC,MAAM,CACd,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,cAAc,EACtB,UAAU,GACV,IAAI,GACJ,KAAK,CAAC,KAAK,CAC2B,CAAA"}
|
package/dist/BunMultipart.js
CHANGED
|
@@ -2,16 +2,26 @@ import * as Stream from "effect/Stream";
|
|
|
2
2
|
import * as Multipart from "effect/unstable/http/Multipart";
|
|
3
3
|
import * as BunStream from "./BunStream.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Parses a Bun `Request` body as multipart data and returns a stream of multipart parts.
|
|
6
|
+
*
|
|
7
|
+
* @category constructors
|
|
8
|
+
* @since 4.0.0
|
|
7
9
|
*/
|
|
8
10
|
export const stream = source => BunStream.fromReadableStream({
|
|
9
|
-
evaluate: () => source.body,
|
|
11
|
+
evaluate: () => source.body ?? emptyReadbleStream,
|
|
10
12
|
onError: cause => Multipart.MultipartError.fromReason("InternalError", cause)
|
|
11
13
|
}).pipe(Stream.pipeThroughChannel(Multipart.makeChannel(Object.fromEntries(source.headers))));
|
|
14
|
+
const emptyReadbleStream = /*#__PURE__*/new ReadableStream({
|
|
15
|
+
start(controller) {
|
|
16
|
+
controller.enqueue(new Uint8Array());
|
|
17
|
+
controller.close();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
12
20
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
21
|
+
* Parses and persists multipart data from a Bun `Request`, requiring file-system, path, and scope services.
|
|
22
|
+
*
|
|
23
|
+
* @category constructors
|
|
24
|
+
* @since 4.0.0
|
|
15
25
|
*/
|
|
16
26
|
export const persisted = source => Multipart.toPersisted(stream(source));
|
|
17
27
|
//# sourceMappingURL=BunMultipart.js.map
|
package/dist/BunMultipart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunMultipart.js","names":["Stream","Multipart","BunStream","stream","source","fromReadableStream","evaluate","body","onError","cause","MultipartError","fromReason","pipe","pipeThroughChannel","makeChannel","Object","fromEntries","headers","persisted","toPersisted"],"sources":["../src/BunMultipart.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"BunMultipart.js","names":["Stream","Multipart","BunStream","stream","source","fromReadableStream","evaluate","body","emptyReadbleStream","onError","cause","MultipartError","fromReason","pipe","pipeThroughChannel","makeChannel","Object","fromEntries","headers","ReadableStream","start","controller","enqueue","Uint8Array","close","persisted","toPersisted"],"sources":["../src/BunMultipart.ts"],"sourcesContent":[null],"mappings":"AA0BA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,SAAS,MAAM,gCAAgC;AAC3D,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAIC,MAAe,IACpCF,SAAS,CAACG,kBAAkB,CAAC;EAC3BC,QAAQ,EAAEA,CAAA,KAAMF,MAAM,CAACG,IAAI,IAAIC,kBAAkB;EACjDC,OAAO,EAAGC,KAAK,IAAKT,SAAS,CAACU,cAAc,CAACC,UAAU,CAAC,eAAe,EAAEF,KAAK;CAC/E,CAAC,CAACG,IAAI,CACLb,MAAM,CAACc,kBAAkB,CAACb,SAAS,CAACc,WAAW,CAACC,MAAM,CAACC,WAAW,CAACb,MAAM,CAACc,OAAO,CAAC,CAAC,CAAC,CACrF;AAEH,MAAMV,kBAAkB,gBAAG,IAAIW,cAAc,CAAC;EAC5CC,KAAKA,CAACC,UAAU;IACdA,UAAU,CAACC,OAAO,CAAC,IAAIC,UAAU,EAAE,CAAC;IACpCF,UAAU,CAACG,KAAK,EAAE;EACpB;CACD,CAAC;AAEF;;;;;;AAMA,OAAO,MAAMC,SAAS,GACpBrB,MAAe,IAOZH,SAAS,CAACyB,WAAW,CAACvB,MAAM,CAACC,MAAM,CAAC,CAAC","ignoreList":[]}
|