@effect/platform-bun 4.0.0-beta.31 → 4.0.0-beta.33

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BunClusterHttp.d.ts","sourceRoot":"","sources":["../src/BunClusterHttp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAGxE,OAAO,KAAK,KAAK,IAAI,MAAM,2BAA2B,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,OAAO;AACL;;;GAGG;AACH,kBAAkB,EACnB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CACrC,YAAY,GACZ,IAAI,CAAC,SAAS,GACd,WAAW,GACX,UAAU,EACZ,UAAU,EACV,cAAc,CAAC,cAAc,CAQV,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,EACxC,KAAK,CAAC,OAAO,SAAS,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EACrD,SAAS;IACT,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5C,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CACxF,KAAG,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,KAAK,CACrC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,MAAM,CAAC,WAAW,EAClB,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CACd,GACD,KAAK,CAAC,KAAK,CACT,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,cAAc,EAC1D,UAAU,GAAG,MAAM,CAAC,WAAW,EAC/B,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CAiDhB,CAAA"}
1
+ {"version":3,"file":"BunClusterHttp.d.ts","sourceRoot":"","sources":["../src/BunClusterHttp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAGxE,OAAO,KAAK,KAAK,IAAI,MAAM,2BAA2B,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,OAAO;AACL;;;GAGG;AACH,kBAAkB,EACnB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CACrC,YAAY,GACZ,IAAI,CAAC,SAAS,GACd,WAAW,GACX,UAAU,EACZ,UAAU,EACV,cAAc,CAAC,cAAc,CAQV,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,EACxC,KAAK,CAAC,OAAO,SAAS,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EACrD,SAAS;IACT,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5C,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CACxF,KAAG,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,KAAK,CACrC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,MAAM,CAAC,WAAW,EAClB,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CACd,GACD,KAAK,CAAC,KAAK,CACT,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,cAAc,EAC1D,UAAU,GAAG,MAAM,CAAC,WAAW,EAC/B,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CAiDhB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Layer from "effect/Layer";
3
+ import * as Option from "effect/Option";
3
4
  import * as HttpRunner from "effect/unstable/cluster/HttpRunner";
4
5
  import * as MessageStorage from "effect/unstable/cluster/MessageStorage";
5
6
  import * as RunnerHealth from "effect/unstable/cluster/RunnerHealth";
@@ -26,11 +27,11 @@ layerK8sHttpClient };
26
27
  */
27
28
  export const layerHttpServer = /*#__PURE__*/Effect.gen(function* () {
28
29
  const config = yield* ShardingConfig.ShardingConfig;
29
- const listenAddress = config.runnerListenAddress ?? config.runnerAddress;
30
- if (listenAddress === undefined) {
31
- return yield* Effect.die("BunClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is undefined");
30
+ const listenAddress = Option.orElse(config.runnerListenAddress, () => config.runnerAddress);
31
+ if (Option.isNone(listenAddress)) {
32
+ return yield* Effect.die("BunClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is None");
32
33
  }
33
- return BunHttpServer.layer(listenAddress);
34
+ return BunHttpServer.layer(listenAddress.value);
34
35
  }).pipe(Layer.unwrap);
35
36
  /**
36
37
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"BunClusterHttp.js","names":["Effect","Layer","HttpRunner","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SqlMessageStorage","SqlRunnerStorage","FetchHttpClient","RpcSerialization","layerK8sHttpClient","BunFileSystem","BunHttpServer","BunSocket","layerHttpServer","gen","config","listenAddress","runnerListenAddress","runnerAddress","undefined","die","layer","pipe","unwrap","options","clientOnly","transport","provide","layerHttpClientOnly","layerWebsocketClientOnly","layerWebSocketConstructor","layerHttp","layerWebsocket","runnerHealth","empty","layerK8s","runnerHealthK8s","layerPing","layerRpc","layerClientProtocolHttpDefault","layerClientProtocolWebsocketDefault","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack"],"sources":["../src/BunClusterHttp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BunClusterHttp.js","names":["Effect","Layer","Option","HttpRunner","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SqlMessageStorage","SqlRunnerStorage","FetchHttpClient","RpcSerialization","layerK8sHttpClient","BunFileSystem","BunHttpServer","BunSocket","layerHttpServer","gen","config","listenAddress","orElse","runnerListenAddress","runnerAddress","isNone","die","layer","value","pipe","unwrap","options","clientOnly","transport","provide","layerHttpClientOnly","layerWebsocketClientOnly","layerWebSocketConstructor","layerHttp","layerWebsocket","runnerHealth","empty","layerK8s","runnerHealthK8s","layerPing","layerRpc","layerClientProtocolHttpDefault","layerClientProtocolWebsocketDefault","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack"],"sources":["../src/BunClusterHttp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -5,11 +5,12 @@ import type { ServerWebSocket } from "bun";
5
5
  import * as Config from "effect/Config";
6
6
  import type { ConfigError } from "effect/Config";
7
7
  import * as Deferred from "effect/Deferred";
8
+ import * as Duration from "effect/Duration";
8
9
  import * as Effect from "effect/Effect";
9
10
  import type * as FileSystem from "effect/FileSystem";
10
11
  import * as Layer from "effect/Layer";
11
12
  import type * as Path from "effect/Path";
12
- import type * as Scope from "effect/Scope";
13
+ import * as Scope from "effect/Scope";
13
14
  import * as Etag from "effect/unstable/http/Etag";
14
15
  import type { HttpClient } from "effect/unstable/http/HttpClient";
15
16
  import type { HttpPlatform } from "effect/unstable/http/HttpPlatform";
@@ -29,7 +30,10 @@ export type ServeOptions<R extends string> = (Bun.Serve.UnixServeOptions<WebSock
29
30
  * @since 1.0.0
30
31
  * @category Constructors
31
32
  */
32
- export declare const make: <R extends string>(options: ServeOptions<R>) => Effect.Effect<{
33
+ export declare const make: <R extends string>(options: ServeOptions<R> & {
34
+ readonly disablePreemptiveShutdown?: boolean | undefined;
35
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined;
36
+ }) => Effect.Effect<{
33
37
  readonly serve: {
34
38
  <E, R_1>(effect: Effect.Effect<ServerResponse.HttpServerResponse, E, R_1>): Effect.Effect<void, never, Exclude<R_1, ServerRequest.HttpServerRequest> | Scope.Scope>;
35
39
  <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>;
@@ -40,7 +44,10 @@ export declare const make: <R extends string>(options: ServeOptions<R>) => Effec
40
44
  * @since 1.0.0
41
45
  * @category Layers
42
46
  */
43
- export declare const layerServer: <R extends string>(options: ServeOptions<R>) => Layer.Layer<Server.HttpServer>;
47
+ export declare const layerServer: <R extends string>(options: ServeOptions<R> & {
48
+ readonly disablePreemptiveShutdown?: boolean | undefined;
49
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined;
50
+ }) => Layer.Layer<Server.HttpServer>;
44
51
  /**
45
52
  * @since 1.0.0
46
53
  * @category Layers
@@ -50,7 +57,10 @@ export declare const layerHttpServices: Layer.Layer<HttpPlatform | Etag.Generato
50
57
  * @since 1.0.0
51
58
  * @category Layers
52
59
  */
53
- export declare const layer: <R extends string>(options: ServeOptions<R>) => Layer.Layer<Server.HttpServer | HttpPlatform | Etag.Generator | BunServices.BunServices>;
60
+ export declare const layer: <R extends string>(options: ServeOptions<R> & {
61
+ readonly disablePreemptiveShutdown?: boolean | undefined;
62
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined;
63
+ }) => Layer.Layer<Server.HttpServer | HttpPlatform | Etag.Generator | BunServices.BunServices>;
54
64
  /**
55
65
  * @since 1.0.0
56
66
  * @category Layers
@@ -60,7 +70,10 @@ export declare const layerTest: Layer.Layer<Server.HttpServer | HttpPlatform | F
60
70
  * @since 1.0.0
61
71
  * @category Layers
62
72
  */
63
- export declare const layerConfig: <R extends string>(options: Config.Wrap<ServeOptions<R>>) => Layer.Layer<Server.HttpServer | HttpPlatform | FileSystem.FileSystem | Etag.Generator | Path.Path, ConfigError>;
73
+ export declare const layerConfig: <R extends string>(options: Config.Wrap<ServeOptions<R> & {
74
+ readonly disablePreemptiveShutdown?: boolean | undefined;
75
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined;
76
+ }>) => Layer.Layer<Server.HttpServer | HttpPlatform | FileSystem.FileSystem | Etag.Generator | Path.Path, ConfigError>;
64
77
  interface WebSocketContext {
65
78
  readonly deferred: Deferred.Deferred<ServerWebSocket<WebSocketContext>>;
66
79
  readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>;
@@ -1 +1 @@
1
- {"version":3,"file":"BunHttpServer.d.ts","sourceRoot":"","sources":["../src/BunHttpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BunHttpServer.d.ts","sourceRoot":"","sources":["../src/BunHttpServer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as Config from "effect/Config";
2
2
  import * as Deferred from "effect/Deferred";
3
+ import * as Duration from "effect/Duration";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as Exit from "effect/Exit";
5
6
  import * as Fiber from "effect/Fiber";
@@ -7,6 +8,8 @@ import * as FiberSet from "effect/FiberSet";
7
8
  import { flow } from "effect/Function";
8
9
  import * as Inspectable from "effect/Inspectable";
9
10
  import * as Layer from "effect/Layer";
11
+ import * as Option from "effect/Option";
12
+ import * as Scope from "effect/Scope";
10
13
  import * as Semaphore from "effect/Semaphore";
11
14
  import * as ServiceMap from "effect/ServiceMap";
12
15
  import * as Stream from "effect/Stream";
@@ -30,6 +33,7 @@ import * as BunStream from "./BunStream.js";
30
33
  * @category Constructors
31
34
  */
32
35
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
36
+ const scope = yield* Effect.scope;
33
37
  const handlerStack = [function (_request, _server) {
34
38
  return new Response("not found", {
35
39
  status: 404
@@ -46,6 +50,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
46
50
  ws.data.run(message);
47
51
  },
48
52
  close(ws, code, closeReason) {
53
+ code = typeof code === "number" ? code : 1001;
49
54
  Deferred.doneUnsafe(ws.data.closeDeferred, Socket.defaultCloseCodeIsError(code) ? Exit.fail(new Socket.SocketError({
50
55
  reason: new Socket.SocketCloseError({
51
56
  code,
@@ -55,7 +60,12 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
55
60
  }
56
61
  }
57
62
  });
58
- yield* Effect.addFinalizer(() => Effect.promise(() => server.stop()));
63
+ const shutdown = yield* Effect.promise(() => server.stop()).pipe(Effect.cached);
64
+ const preemptiveShutdown = options.disablePreemptiveShutdown ? Effect.void : Effect.timeoutOrElse(shutdown, {
65
+ duration: options.gracefulShutdownTimeout ?? Duration.seconds(20),
66
+ onTimeout: () => Effect.void
67
+ });
68
+ yield* Scope.addFinalizer(scope, shutdown);
59
69
  return Server.make({
60
70
  address: {
61
71
  _tag: "TcpAddress",
@@ -64,8 +74,9 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
64
74
  },
65
75
  serve: Effect.fnUntraced(function* (httpApp, middleware) {
66
76
  const parent = yield* Effect.fiber;
67
- const scope = yield* Effect.scope;
68
77
  const services = parent.services;
78
+ const serveScope = ServiceMap.getUnsafe(services, Scope.Scope);
79
+ const scope = Scope.forkUnsafe(serveScope, "parallel");
69
80
  const httpEffect = HttpEffect.toHandled(httpApp, (request, response) => Effect.sync(() => {
70
81
  ;
71
82
  request.resolve(makeResponse(request, response, services, scope));
@@ -82,17 +93,17 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
82
93
  });
83
94
  });
84
95
  }
85
- yield* Effect.acquireRelease(Effect.sync(() => {
86
- handlerStack.push(handler);
87
- server.reload({
88
- fetch: handler
89
- });
90
- }), () => Effect.sync(() => {
96
+ yield* Scope.addFinalizerExit(serveScope, () => {
91
97
  handlerStack.pop();
92
98
  server.reload({
93
99
  fetch: handlerStack[handlerStack.length - 1]
94
100
  });
95
- }));
101
+ return preemptiveShutdown;
102
+ });
103
+ handlerStack.push(handler);
104
+ server.reload({
105
+ fetch: handler
106
+ });
96
107
  })
97
108
  });
98
109
  });
@@ -203,7 +214,7 @@ class BunServerRequest extends Inspectable.Class {
203
214
  });
204
215
  }
205
216
  modify(options) {
206
- return new BunServerRequest(this.source, this.resolve, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
217
+ return new BunServerRequest(this.source, this.resolve, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, "remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride);
207
218
  }
208
219
  get method() {
209
220
  return this.source.method.toUpperCase();
@@ -212,7 +223,7 @@ class BunServerRequest extends Inspectable.Class {
212
223
  return this.source.url;
213
224
  }
214
225
  get remoteAddress() {
215
- return this.remoteAddressOverride ?? this.bunServer.requestIP(this.source)?.address;
226
+ return this.remoteAddressOverride ?? Option.fromNullishOr(this.bunServer.requestIP(this.source)?.address);
216
227
  }
217
228
  get headers() {
218
229
  this.headersOverride ??= Headers.fromInput(this.source.headers);
@@ -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","parent","fiber","scope","services","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","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","Deferred","Duration","Effect","Exit","Fiber","FiberSet","flow","Inspectable","Layer","Option","Scope","Semaphore","ServiceMap","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","onTimeout","addFinalizer","address","_tag","port","hostname","httpApp","middleware","parent","fiber","services","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","asEffect","wsDefaultRun","_","buffer","Class","TypeId","source","bunServer","headersOverride","remoteAddressOverride","constructor","toJSON","inspect","_id","originalUrl","modify","remoteAddress","toUpperCase","fromNullishOr","requestIP","fromInput","cachedCookies","parseHeader","cookie","fromReadableStream","evaluate","onError","cause","HttpServerError","RequestParseError","description","textEffect","text","runSync","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":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/platform-bun",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.31",
4
+ "version": "4.0.0-beta.33",
5
5
  "license": "MIT",
6
6
  "description": "Platform specific implementations for the Bun runtime",
7
7
  "homepage": "https://effect.website",
@@ -45,14 +45,14 @@
45
45
  "provenance": true
46
46
  },
47
47
  "peerDependencies": {
48
- "effect": "^4.0.0-beta.31"
48
+ "effect": "^4.0.0-beta.33"
49
49
  },
50
50
  "dependencies": {
51
- "@effect/platform-node-shared": "^4.0.0-beta.31"
51
+ "@effect/platform-node-shared": "^4.0.0-beta.33"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/bun": "^1.3.8",
55
- "effect": "^4.0.0-beta.31"
55
+ "effect": "^4.0.0-beta.33"
56
56
  },
57
57
  "scripts": {
58
58
  "codegen": "effect-utils codegen",
@@ -4,6 +4,7 @@
4
4
  import type * as Config from "effect/Config"
5
5
  import * as Effect from "effect/Effect"
6
6
  import * as Layer from "effect/Layer"
7
+ import * as Option from "effect/Option"
7
8
  import * as HttpRunner from "effect/unstable/cluster/HttpRunner"
8
9
  import * as MessageStorage from "effect/unstable/cluster/MessageStorage"
9
10
  import * as RunnerHealth from "effect/unstable/cluster/RunnerHealth"
@@ -47,11 +48,11 @@ export const layerHttpServer: Layer.Layer<
47
48
  ShardingConfig.ShardingConfig
48
49
  > = Effect.gen(function*() {
49
50
  const config = yield* ShardingConfig.ShardingConfig
50
- const listenAddress = config.runnerListenAddress ?? config.runnerAddress
51
- if (listenAddress === undefined) {
52
- return yield* Effect.die("BunClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is undefined")
51
+ const listenAddress = Option.orElse(config.runnerListenAddress, () => config.runnerAddress)
52
+ if (Option.isNone(listenAddress)) {
53
+ return yield* Effect.die("BunClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is None")
53
54
  }
54
- return BunHttpServer.layer(listenAddress)
55
+ return BunHttpServer.layer(listenAddress.value)
55
56
  }).pipe(Layer.unwrap)
56
57
 
57
58
  /**
@@ -5,6 +5,7 @@ import type { Server as BunServer, ServerWebSocket } from "bun"
5
5
  import * as Config from "effect/Config"
6
6
  import type { ConfigError } from "effect/Config"
7
7
  import * as Deferred from "effect/Deferred"
8
+ import * as Duration from "effect/Duration"
8
9
  import * as Effect from "effect/Effect"
9
10
  import * as Exit from "effect/Exit"
10
11
  import * as Fiber from "effect/Fiber"
@@ -13,10 +14,11 @@ import type * as FileSystem from "effect/FileSystem"
13
14
  import { flow } from "effect/Function"
14
15
  import * as Inspectable from "effect/Inspectable"
15
16
  import * as Layer from "effect/Layer"
17
+ import * as Option from "effect/Option"
16
18
  import type * as Path from "effect/Path"
17
19
  import type * as Record from "effect/Record"
18
20
  import type * as Schema from "effect/Schema"
19
- import type * as Scope from "effect/Scope"
21
+ import * as Scope from "effect/Scope"
20
22
  import * as Semaphore from "effect/Semaphore"
21
23
  import * as ServiceMap from "effect/ServiceMap"
22
24
  import * as Stream from "effect/Stream"
@@ -58,8 +60,12 @@ export type ServeOptions<R extends string> =
58
60
  */
59
61
  export const make = Effect.fnUntraced(
60
62
  function*<R extends string>(
61
- options: ServeOptions<R>
63
+ options: ServeOptions<R> & {
64
+ readonly disablePreemptiveShutdown?: boolean | undefined
65
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined
66
+ }
62
67
  ) {
68
+ const scope = yield* Effect.scope
63
69
  const handlerStack: Array<(request: Request, server: BunServer<WebSocketContext>) => Response | Promise<Response>> =
64
70
  [
65
71
  function(_request, _server) {
@@ -77,6 +83,7 @@ export const make = Effect.fnUntraced(
77
83
  ws.data.run(message)
78
84
  },
79
85
  close(ws, code, closeReason) {
86
+ code = typeof code === "number" ? code : 1001
80
87
  Deferred.doneUnsafe(
81
88
  ws.data.closeDeferred,
82
89
  Socket.defaultCloseCodeIsError(code)
@@ -91,14 +98,24 @@ export const make = Effect.fnUntraced(
91
98
  }
92
99
  })
93
100
 
94
- yield* Effect.addFinalizer(() => Effect.promise(() => server.stop()))
101
+ const shutdown = yield* Effect.promise(() => server.stop()).pipe(
102
+ Effect.cached
103
+ )
104
+ const preemptiveShutdown = options.disablePreemptiveShutdown ? Effect.void : Effect.timeoutOrElse(shutdown, {
105
+ duration: options.gracefulShutdownTimeout ?? Duration.seconds(20),
106
+ onTimeout: () => Effect.void
107
+ })
108
+
109
+ yield* Scope.addFinalizer(scope, shutdown)
95
110
 
96
111
  return Server.make({
97
112
  address: { _tag: "TcpAddress", port: server.port!, hostname: server.hostname! },
98
113
  serve: Effect.fnUntraced(function*(httpApp, middleware) {
99
114
  const parent = yield* Effect.fiber
100
- const scope = yield* Effect.scope
101
115
  const services = parent.services
116
+ const serveScope = ServiceMap.getUnsafe(services, Scope.Scope)
117
+ const scope = Scope.forkUnsafe(serveScope, "parallel")
118
+
102
119
  const httpEffect = HttpEffect.toHandled(httpApp, (request, response) =>
103
120
  Effect.sync(() => {
104
121
  ;(request as BunServerRequest).resolve(makeResponse(request, response, services, scope))
@@ -118,17 +135,13 @@ export const make = Effect.fnUntraced(
118
135
  })
119
136
  }
120
137
 
121
- yield* Effect.acquireRelease(
122
- Effect.sync(() => {
123
- handlerStack.push(handler)
124
- server.reload({ fetch: handler })
125
- }),
126
- () =>
127
- Effect.sync(() => {
128
- handlerStack.pop()
129
- server.reload({ fetch: handlerStack[handlerStack.length - 1] })
130
- })
131
- )
138
+ yield* Scope.addFinalizerExit(serveScope, () => {
139
+ handlerStack.pop()
140
+ server.reload({ fetch: handlerStack[handlerStack.length - 1] })
141
+ return preemptiveShutdown
142
+ })
143
+ handlerStack.push(handler)
144
+ server.reload({ fetch: handler })
132
145
  })
133
146
  })
134
147
  }
@@ -201,7 +214,10 @@ const makeResponse = (
201
214
  * @category Layers
202
215
  */
203
216
  export const layerServer: <R extends string>(
204
- options: ServeOptions<R>
217
+ options: ServeOptions<R> & {
218
+ readonly disablePreemptiveShutdown?: boolean | undefined
219
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined
220
+ }
205
221
  ) => Layer.Layer<Server.HttpServer> = flow(make, Layer.effect(Server.HttpServer)) as any
206
222
 
207
223
  /**
@@ -223,7 +239,10 @@ export const layerHttpServices: Layer.Layer<
223
239
  * @category Layers
224
240
  */
225
241
  export const layer = <R extends string>(
226
- options: ServeOptions<R>
242
+ options: ServeOptions<R> & {
243
+ readonly disablePreemptiveShutdown?: boolean | undefined
244
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined
245
+ }
227
246
  ): Layer.Layer<
228
247
  | Server.HttpServer
229
248
  | HttpPlatform
@@ -249,7 +268,12 @@ export const layerTest: Layer.Layer<
249
268
  * @category Layers
250
269
  */
251
270
  export const layerConfig = <R extends string>(
252
- options: Config.Wrap<ServeOptions<R>>
271
+ options: Config.Wrap<
272
+ ServeOptions<R> & {
273
+ readonly disablePreemptiveShutdown?: boolean | undefined
274
+ readonly gracefulShutdownTimeout?: Duration.Input | undefined
275
+ }
276
+ >
253
277
  ): Layer.Layer<
254
278
  Server.HttpServer | HttpPlatform | FileSystem.FileSystem | Etag.Generator | Path.Path,
255
279
  ConfigError
@@ -282,7 +306,7 @@ class BunServerRequest extends Inspectable.Class implements ServerRequest.HttpSe
282
306
  readonly url: string
283
307
  private bunServer: BunServer<WebSocketContext>
284
308
  public headersOverride?: Headers.Headers | undefined
285
- private remoteAddressOverride?: string | undefined
309
+ private remoteAddressOverride?: Option.Option<string> | undefined
286
310
 
287
311
  constructor(
288
312
  source: Request,
@@ -290,7 +314,7 @@ class BunServerRequest extends Inspectable.Class implements ServerRequest.HttpSe
290
314
  url: string,
291
315
  bunServer: BunServer<WebSocketContext>,
292
316
  headersOverride?: Headers.Headers,
293
- remoteAddressOverride?: string
317
+ remoteAddressOverride?: Option.Option<string>
294
318
  ) {
295
319
  super()
296
320
  this[ServerRequest.TypeId] = ServerRequest.TypeId
@@ -313,7 +337,7 @@ class BunServerRequest extends Inspectable.Class implements ServerRequest.HttpSe
313
337
  options: {
314
338
  readonly url?: string | undefined
315
339
  readonly headers?: Headers.Headers | undefined
316
- readonly remoteAddress?: string | undefined
340
+ readonly remoteAddress?: Option.Option<string> | undefined
317
341
  }
318
342
  ) {
319
343
  return new BunServerRequest(
@@ -322,7 +346,7 @@ class BunServerRequest extends Inspectable.Class implements ServerRequest.HttpSe
322
346
  options.url ?? this.url,
323
347
  this.bunServer,
324
348
  options.headers ?? this.headersOverride,
325
- options.remoteAddress ?? this.remoteAddressOverride
349
+ "remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride
326
350
  )
327
351
  }
328
352
  get method(): HttpMethod {
@@ -331,8 +355,8 @@ class BunServerRequest extends Inspectable.Class implements ServerRequest.HttpSe
331
355
  get originalUrl() {
332
356
  return this.source.url
333
357
  }
334
- get remoteAddress(): string | undefined {
335
- return this.remoteAddressOverride ?? this.bunServer.requestIP(this.source)?.address
358
+ get remoteAddress(): Option.Option<string> {
359
+ return this.remoteAddressOverride ?? Option.fromNullishOr(this.bunServer.requestIP(this.source)?.address)
336
360
  }
337
361
  get headers(): Headers.Headers {
338
362
  this.headersOverride ??= Headers.fromInput(this.source.headers)