@effect/platform-bun 0.32.10 → 0.32.11

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.
@@ -14,9 +14,13 @@ var Server = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect
14
14
  var Error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ServerError"));
15
15
  var ServerRequest = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ServerRequest"));
16
16
  var UrlParams = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/UrlParams"));
17
+ var Socket = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Socket"));
17
18
  var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
18
19
  var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Config"));
20
+ var Deferred = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Deferred"));
19
21
  var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
22
+ var Exit = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Exit"));
23
+ var FiberSet = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/FiberSet"));
20
24
  var _Function = /*#__PURE__*/require("effect/Function");
21
25
  var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
22
26
  var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Option"));
@@ -59,9 +63,27 @@ const make = options => Effect.gen(function* (_) {
59
63
  status: 404
60
64
  });
61
65
  }];
66
+ const encoder = new TextEncoder();
62
67
  const server = Bun.serve({
63
68
  ...options,
64
- fetch: handlerStack[0]
69
+ fetch: handlerStack[0],
70
+ websocket: {
71
+ open(ws) {
72
+ Deferred.unsafeDone(ws.data.deferred, Exit.succeed(ws));
73
+ },
74
+ message(ws, message) {
75
+ ws.data.run(typeof message === "string" ? encoder.encode(message) : message);
76
+ },
77
+ close(ws, code, reason) {
78
+ Deferred.unsafeDone(ws.data.closeDeferred, Socket.defaultCloseCodeIsError(code) ? Exit.fail(new Socket.SocketError({
79
+ reason: "Close",
80
+ error: {
81
+ code,
82
+ reason
83
+ }
84
+ })) : Exit.unit);
85
+ }
86
+ }
65
87
  });
66
88
  yield* _(Effect.addFinalizer(() => Effect.sync(() => {
67
89
  server.stop();
@@ -76,9 +98,9 @@ const make = options => Effect.gen(function* (_) {
76
98
  const app = Effect.scoped(middleware ? middleware(App.withDefaultMiddleware(respond(httpApp))) : App.withDefaultMiddleware(respond(httpApp)));
77
99
  return (0, _Function.pipe)(Effect.runtime(), Effect.flatMap(runtime => Effect.async(_ => {
78
100
  const runFork = Runtime.runFork(runtime);
79
- function handler(request, _server) {
101
+ function handler(request, server) {
80
102
  return new Promise((resolve, reject) => {
81
- const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject, removeHost(request.url))));
103
+ const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject, removeHost(request.url), server)));
82
104
  request.signal.addEventListener("abort", () => {
83
105
  runFork(fiber.interruptAsFork(Error.clientAbortFiberId));
84
106
  });
@@ -155,27 +177,32 @@ const layer = options => Layer.mergeAll(Layer.scoped(Server.Server, make(options
155
177
  exports.layer = layer;
156
178
  const layerConfig = options => Layer.mergeAll(Layer.scoped(Server.Server, Effect.flatMap(Config.unwrap(options), make)), Platform.layer, Etag.layerWeak, BunContext.layer);
157
179
  exports.layerConfig = layerConfig;
180
+ function wsDefaultRun(_) {
181
+ this.buffer.push(_);
182
+ }
158
183
  class ServerRequestImpl {
159
184
  source;
160
185
  resolve;
161
186
  reject;
162
187
  url;
188
+ bunServer;
163
189
  headersOverride;
164
190
  remoteAddressOverride;
165
191
  [ServerRequest.TypeId];
166
192
  [IncomingMessage.TypeId];
167
- constructor(source, resolve, reject, url, headersOverride, remoteAddressOverride) {
193
+ constructor(source, resolve, reject, url, bunServer, headersOverride, remoteAddressOverride) {
168
194
  this.source = source;
169
195
  this.resolve = resolve;
170
196
  this.reject = reject;
171
197
  this.url = url;
198
+ this.bunServer = bunServer;
172
199
  this.headersOverride = headersOverride;
173
200
  this.remoteAddressOverride = remoteAddressOverride;
174
201
  this[ServerRequest.TypeId] = ServerRequest.TypeId;
175
202
  this[IncomingMessage.TypeId] = IncomingMessage.TypeId;
176
203
  }
177
204
  modify(options) {
178
- return new ServerRequestImpl(this.source, this.resolve, this.reject, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
205
+ return new ServerRequestImpl(this.source, this.resolve, this.reject, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
179
206
  }
180
207
  get method() {
181
208
  return this.source.method.toUpperCase();
@@ -262,6 +289,43 @@ class ServerRequestImpl {
262
289
  })));
263
290
  return this.arrayBufferEffect;
264
291
  }
292
+ get upgrade() {
293
+ return Effect.flatMap(Effect.all([Deferred.make(), Deferred.make(), Effect.makeSemaphore(1)]), ([deferred, closeDeferred, semaphore]) => Effect.async(resume => {
294
+ const success = this.bunServer.upgrade(this.source, {
295
+ data: {
296
+ deferred,
297
+ closeDeferred,
298
+ buffer: [],
299
+ run: wsDefaultRun
300
+ }
301
+ });
302
+ if (!success) {
303
+ resume(Effect.fail(Error.RequestError({
304
+ request: this,
305
+ reason: "Decode",
306
+ error: "Not an upgradeable ServerRequest"
307
+ })));
308
+ return;
309
+ }
310
+ resume(Effect.map(Deferred.await(deferred), ws => {
311
+ const write = chunk => Effect.sync(() => ws.sendBinary(chunk));
312
+ const writer = Effect.succeed(write);
313
+ const run = handler => FiberSet.make().pipe(Effect.flatMap(set => FiberSet.runtime(set)().pipe(Effect.flatMap(run => {
314
+ ws.data.run = function (data) {
315
+ run(handler(data));
316
+ };
317
+ ws.data.buffer.forEach(data => run(handler(data)));
318
+ ws.data.buffer.length = 0;
319
+ return FiberSet.join(set);
320
+ }))), Effect.scoped, Effect.onExit(exit => Effect.sync(() => ws.close(exit._tag === "Success" ? 1000 : 1011))), Effect.raceFirst(Deferred.await(closeDeferred)), semaphore.withPermits(1));
321
+ return Socket.Socket.of({
322
+ [Socket.SocketTypeId]: Socket.SocketTypeId,
323
+ run,
324
+ writer
325
+ });
326
+ }));
327
+ }));
328
+ }
265
329
  }
266
330
  const removeHost = url => {
267
331
  if (url[0] === "/") {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["Etag","_interopRequireWildcard","require","MultipartNode","App","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Cause","Config","Effect","_Function","Layer","Option","Runtime","Stream","_nodeStream","BunContext","Platform","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","scoped","withDefaultMiddleware","respond","pipe","runtime","flatMap","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","removeHost","url","signal","addEventListener","interruptAsFork","clientAbortFiberId","push","reload","pop","length","interruptible","forkScoped","asUnit","exports","makeResponse","response","fields","headers","undefined","statusText","method","body","formData","toReadableStream","stream","onExit","preResponseHandler","f","exit","impl","value","isInterruptedOnly","cause","source","aborted","pretty","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","headersOverride","remoteAddressOverride","TypeId","constructor","modify","remoteAddress","toUpperCase","originalUrl","some","none","fromInput","fromReadableStream","RequestError","reason","error","fail","textEffect","text","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","Readable","fromWeb","multipartStream","arrayBufferEffect","arrayBuffer","index","indexOf","slice","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"server.js","names":["Etag","_interopRequireWildcard","require","MultipartNode","App","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Socket","Cause","Config","Deferred","Effect","Exit","FiberSet","_Function","Layer","Option","Runtime","Stream","_nodeStream","BunContext","Platform","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","make","options","gen","_","handlerStack","_request","_server","Response","status","encoder","TextEncoder","server","Bun","serve","fetch","websocket","open","ws","unsafeDone","data","deferred","succeed","message","run","encode","close","code","reason","closeDeferred","defaultCloseCodeIsError","fail","SocketError","error","unit","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","scoped","withDefaultMiddleware","respond","pipe","runtime","flatMap","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","removeHost","url","signal","addEventListener","interruptAsFork","clientAbortFiberId","push","reload","pop","length","interruptible","forkScoped","asUnit","exports","makeResponse","response","fields","headers","undefined","statusText","method","body","formData","toReadableStream","stream","onExit","preResponseHandler","f","exit","impl","value","isInterruptedOnly","cause","source","aborted","pretty","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","wsDefaultRun","buffer","bunServer","headersOverride","remoteAddressOverride","TypeId","constructor","modify","remoteAddress","toUpperCase","originalUrl","some","none","fromInput","fromReadableStream","RequestError","textEffect","text","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","Readable","fromWeb","multipartStream","arrayBufferEffect","arrayBuffer","upgrade","all","makeSemaphore","semaphore","resume","success","map","await","write","chunk","sendBinary","writer","forEach","join","raceFirst","withPermits","of","SocketTypeId","index","indexOf","slice","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -9,9 +9,13 @@ import * as Server from "@effect/platform/Http/Server";
9
9
  import * as Error from "@effect/platform/Http/ServerError";
10
10
  import * as ServerRequest from "@effect/platform/Http/ServerRequest";
11
11
  import * as UrlParams from "@effect/platform/Http/UrlParams";
12
+ import * as Socket from "@effect/platform/Socket";
12
13
  import * as Cause from "effect/Cause";
13
14
  import * as Config from "effect/Config";
15
+ import * as Deferred from "effect/Deferred";
14
16
  import * as Effect from "effect/Effect";
17
+ import * as Exit from "effect/Exit";
18
+ import * as FiberSet from "effect/FiberSet";
15
19
  import { pipe } from "effect/Function";
16
20
  import * as Layer from "effect/Layer";
17
21
  import * as Option from "effect/Option";
@@ -27,9 +31,27 @@ export const make = options => Effect.gen(function* (_) {
27
31
  status: 404
28
32
  });
29
33
  }];
34
+ const encoder = new TextEncoder();
30
35
  const server = Bun.serve({
31
36
  ...options,
32
- fetch: handlerStack[0]
37
+ fetch: handlerStack[0],
38
+ websocket: {
39
+ open(ws) {
40
+ Deferred.unsafeDone(ws.data.deferred, Exit.succeed(ws));
41
+ },
42
+ message(ws, message) {
43
+ ws.data.run(typeof message === "string" ? encoder.encode(message) : message);
44
+ },
45
+ close(ws, code, reason) {
46
+ Deferred.unsafeDone(ws.data.closeDeferred, Socket.defaultCloseCodeIsError(code) ? Exit.fail(new Socket.SocketError({
47
+ reason: "Close",
48
+ error: {
49
+ code,
50
+ reason
51
+ }
52
+ })) : Exit.unit);
53
+ }
54
+ }
33
55
  });
34
56
  yield* _(Effect.addFinalizer(() => Effect.sync(() => {
35
57
  server.stop();
@@ -44,9 +66,9 @@ export const make = options => Effect.gen(function* (_) {
44
66
  const app = Effect.scoped(middleware ? middleware(App.withDefaultMiddleware(respond(httpApp))) : App.withDefaultMiddleware(respond(httpApp)));
45
67
  return pipe(Effect.runtime(), Effect.flatMap(runtime => Effect.async(_ => {
46
68
  const runFork = Runtime.runFork(runtime);
47
- function handler(request, _server) {
69
+ function handler(request, server) {
48
70
  return new Promise((resolve, reject) => {
49
- const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject, removeHost(request.url))));
71
+ const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject, removeHost(request.url), server)));
50
72
  request.signal.addEventListener("abort", () => {
51
73
  runFork(fiber.interruptAsFork(Error.clientAbortFiberId));
52
74
  });
@@ -119,27 +141,32 @@ export const layerServer = options => Layer.scoped(Server.Server, make(options))
119
141
  export const layer = options => Layer.mergeAll(Layer.scoped(Server.Server, make(options)), Platform.layer, Etag.layerWeak, BunContext.layer);
120
142
  /** @internal */
121
143
  export const layerConfig = options => Layer.mergeAll(Layer.scoped(Server.Server, Effect.flatMap(Config.unwrap(options), make)), Platform.layer, Etag.layerWeak, BunContext.layer);
144
+ function wsDefaultRun(_) {
145
+ this.buffer.push(_);
146
+ }
122
147
  class ServerRequestImpl {
123
148
  source;
124
149
  resolve;
125
150
  reject;
126
151
  url;
152
+ bunServer;
127
153
  headersOverride;
128
154
  remoteAddressOverride;
129
155
  [ServerRequest.TypeId];
130
156
  [IncomingMessage.TypeId];
131
- constructor(source, resolve, reject, url, headersOverride, remoteAddressOverride) {
157
+ constructor(source, resolve, reject, url, bunServer, headersOverride, remoteAddressOverride) {
132
158
  this.source = source;
133
159
  this.resolve = resolve;
134
160
  this.reject = reject;
135
161
  this.url = url;
162
+ this.bunServer = bunServer;
136
163
  this.headersOverride = headersOverride;
137
164
  this.remoteAddressOverride = remoteAddressOverride;
138
165
  this[ServerRequest.TypeId] = ServerRequest.TypeId;
139
166
  this[IncomingMessage.TypeId] = IncomingMessage.TypeId;
140
167
  }
141
168
  modify(options) {
142
- return new ServerRequestImpl(this.source, this.resolve, this.reject, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
169
+ return new ServerRequestImpl(this.source, this.resolve, this.reject, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
143
170
  }
144
171
  get method() {
145
172
  return this.source.method.toUpperCase();
@@ -226,6 +253,43 @@ class ServerRequestImpl {
226
253
  })));
227
254
  return this.arrayBufferEffect;
228
255
  }
256
+ get upgrade() {
257
+ return Effect.flatMap(Effect.all([Deferred.make(), Deferred.make(), Effect.makeSemaphore(1)]), ([deferred, closeDeferred, semaphore]) => Effect.async(resume => {
258
+ const success = this.bunServer.upgrade(this.source, {
259
+ data: {
260
+ deferred,
261
+ closeDeferred,
262
+ buffer: [],
263
+ run: wsDefaultRun
264
+ }
265
+ });
266
+ if (!success) {
267
+ resume(Effect.fail(Error.RequestError({
268
+ request: this,
269
+ reason: "Decode",
270
+ error: "Not an upgradeable ServerRequest"
271
+ })));
272
+ return;
273
+ }
274
+ resume(Effect.map(Deferred.await(deferred), ws => {
275
+ const write = chunk => Effect.sync(() => ws.sendBinary(chunk));
276
+ const writer = Effect.succeed(write);
277
+ const run = handler => FiberSet.make().pipe(Effect.flatMap(set => FiberSet.runtime(set)().pipe(Effect.flatMap(run => {
278
+ ws.data.run = function (data) {
279
+ run(handler(data));
280
+ };
281
+ ws.data.buffer.forEach(data => run(handler(data)));
282
+ ws.data.buffer.length = 0;
283
+ return FiberSet.join(set);
284
+ }))), Effect.scoped, Effect.onExit(exit => Effect.sync(() => ws.close(exit._tag === "Success" ? 1000 : 1011))), Effect.raceFirst(Deferred.await(closeDeferred)), semaphore.withPermits(1));
285
+ return Socket.Socket.of({
286
+ [Socket.SocketTypeId]: Socket.SocketTypeId,
287
+ run,
288
+ writer
289
+ });
290
+ }));
291
+ }));
292
+ }
229
293
  }
230
294
  const removeHost = url => {
231
295
  if (url[0] === "/") {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["Etag","MultipartNode","App","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Cause","Config","Effect","pipe","Layer","Option","Runtime","Stream","Readable","BunContext","Platform","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","scoped","withDefaultMiddleware","respond","runtime","flatMap","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","removeHost","url","signal","addEventListener","interruptAsFork","clientAbortFiberId","push","reload","pop","length","interruptible","forkScoped","asUnit","makeResponse","response","fields","headers","undefined","statusText","method","body","formData","toReadableStream","stream","onExit","preResponseHandler","f","exit","impl","value","isInterruptedOnly","cause","source","aborted","pretty","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","headersOverride","remoteAddressOverride","TypeId","constructor","modify","remoteAddress","toUpperCase","originalUrl","some","none","fromInput","fromReadableStream","RequestError","reason","error","fail","textEffect","text","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","fromWeb","multipartStream","arrayBufferEffect","arrayBuffer","index","indexOf","slice","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"server.js","names":["Etag","MultipartNode","App","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Socket","Cause","Config","Deferred","Effect","Exit","FiberSet","pipe","Layer","Option","Runtime","Stream","Readable","BunContext","Platform","make","options","gen","_","handlerStack","_request","_server","Response","status","encoder","TextEncoder","server","Bun","serve","fetch","websocket","open","ws","unsafeDone","data","deferred","succeed","message","run","encode","close","code","reason","closeDeferred","defaultCloseCodeIsError","fail","SocketError","error","unit","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","scoped","withDefaultMiddleware","respond","runtime","flatMap","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","removeHost","url","signal","addEventListener","interruptAsFork","clientAbortFiberId","push","reload","pop","length","interruptible","forkScoped","asUnit","makeResponse","response","fields","headers","undefined","statusText","method","body","formData","toReadableStream","stream","onExit","preResponseHandler","f","exit","impl","value","isInterruptedOnly","cause","source","aborted","pretty","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","wsDefaultRun","buffer","bunServer","headersOverride","remoteAddressOverride","TypeId","constructor","modify","remoteAddress","toUpperCase","originalUrl","some","none","fromInput","fromReadableStream","RequestError","textEffect","text","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","multipartEffect","multipart","persisted","fromWeb","multipartStream","arrayBufferEffect","arrayBuffer","upgrade","all","makeSemaphore","semaphore","resume","success","map","await","write","chunk","sendBinary","writer","set","forEach","join","raceFirst","withPermits","of","SocketTypeId","index","indexOf","slice","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-bun",
3
- "version": "0.32.10",
3
+ "version": "0.32.11",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,11 +10,11 @@
10
10
  },
11
11
  "sideEffects": [],
12
12
  "dependencies": {
13
- "@effect/platform-node-shared": "^0.2.3"
13
+ "@effect/platform-node-shared": "^0.2.4"
14
14
  },
15
15
  "peerDependencies": {
16
- "@effect/platform": "^0.46.3",
17
- "effect": "^2.4.1"
16
+ "@effect/platform": "^0.47.0",
17
+ "effect": "^2.4.2"
18
18
  },
19
19
  "main": "./dist/cjs/index.js",
20
20
  "module": "./dist/esm/index.js",
@@ -14,10 +14,14 @@ import * as ServerRequest from "@effect/platform/Http/ServerRequest"
14
14
  import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
15
15
  import * as UrlParams from "@effect/platform/Http/UrlParams"
16
16
  import type * as Path from "@effect/platform/Path"
17
- import type { ServeOptions, Server as BunServer } from "bun"
17
+ import * as Socket from "@effect/platform/Socket"
18
+ import type { ServeOptions, Server as BunServer, ServerWebSocket } from "bun"
18
19
  import * as Cause from "effect/Cause"
19
20
  import * as Config from "effect/Config"
21
+ import * as Deferred from "effect/Deferred"
20
22
  import * as Effect from "effect/Effect"
23
+ import * as Exit from "effect/Exit"
24
+ import * as FiberSet from "effect/FiberSet"
21
25
  import { pipe } from "effect/Function"
22
26
  import * as Layer from "effect/Layer"
23
27
  import * as Option from "effect/Option"
@@ -38,9 +42,26 @@ export const make = (
38
42
  return new Response("not found", { status: 404 })
39
43
  }
40
44
  ]
41
- const server = Bun.serve({
45
+ const encoder = new TextEncoder()
46
+ const server = Bun.serve<WebSocketContext>({
42
47
  ...options,
43
- fetch: handlerStack[0]
48
+ fetch: handlerStack[0],
49
+ websocket: {
50
+ open(ws) {
51
+ Deferred.unsafeDone(ws.data.deferred, Exit.succeed(ws))
52
+ },
53
+ message(ws, message) {
54
+ ws.data.run(typeof message === "string" ? encoder.encode(message) : message)
55
+ },
56
+ close(ws, code, reason) {
57
+ Deferred.unsafeDone(
58
+ ws.data.closeDeferred,
59
+ Socket.defaultCloseCodeIsError(code)
60
+ ? Exit.fail(new Socket.SocketError({ reason: "Close", error: { code, reason } }))
61
+ : Exit.unit
62
+ )
63
+ }
64
+ }
44
65
  })
45
66
 
46
67
  yield* _(Effect.addFinalizer(() =>
@@ -63,12 +84,12 @@ export const make = (
63
84
  Effect.flatMap((runtime) =>
64
85
  Effect.async<never>((_) => {
65
86
  const runFork = Runtime.runFork(runtime)
66
- function handler(request: Request, _server: BunServer) {
87
+ function handler(request: Request, server: BunServer) {
67
88
  return new Promise<Response>((resolve, reject) => {
68
89
  const fiber = runFork(Effect.provideService(
69
90
  app,
70
91
  ServerRequest.ServerRequest,
71
- new ServerRequestImpl(request, resolve, reject, removeHost(request.url))
92
+ new ServerRequestImpl(request, resolve, reject, removeHost(request.url), server)
72
93
  ))
73
94
  request.signal.addEventListener("abort", () => {
74
95
  runFork(fiber.interruptAsFork(Error.clientAbortFiberId))
@@ -184,6 +205,17 @@ export const layerConfig = (
184
205
  BunContext.layer
185
206
  )
186
207
 
208
+ interface WebSocketContext {
209
+ readonly deferred: Deferred.Deferred<ServerWebSocket<WebSocketContext>>
210
+ readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>
211
+ readonly buffer: Array<Uint8Array>
212
+ run: (_: Uint8Array) => void
213
+ }
214
+
215
+ function wsDefaultRun(this: WebSocketContext, _: Uint8Array) {
216
+ this.buffer.push(_)
217
+ }
218
+
187
219
  class ServerRequestImpl implements ServerRequest.ServerRequest {
188
220
  readonly [ServerRequest.TypeId]: ServerRequest.TypeId
189
221
  readonly [IncomingMessage.TypeId]: IncomingMessage.TypeId
@@ -192,6 +224,7 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
192
224
  public resolve: (response: Response) => void,
193
225
  public reject: (reason: any) => void,
194
226
  readonly url: string,
227
+ private bunServer: BunServer,
195
228
  public headersOverride?: Headers.Headers,
196
229
  private remoteAddressOverride?: string
197
230
  ) {
@@ -210,6 +243,7 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
210
243
  this.resolve,
211
244
  this.reject,
212
245
  options.url ?? this.url,
246
+ this.bunServer,
213
247
  options.headers ?? this.headersOverride,
214
248
  options.remoteAddress ?? this.remoteAddressOverride
215
249
  )
@@ -330,6 +364,68 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
330
364
  ))
331
365
  return this.arrayBufferEffect
332
366
  }
367
+
368
+ get upgrade(): Effect.Effect<Socket.Socket, Error.RequestError> {
369
+ return Effect.flatMap(
370
+ Effect.all([
371
+ Deferred.make<ServerWebSocket<WebSocketContext>>(),
372
+ Deferred.make<void, Socket.SocketError>(),
373
+ Effect.makeSemaphore(1)
374
+ ]),
375
+ ([deferred, closeDeferred, semaphore]) =>
376
+ Effect.async<Socket.Socket, Error.RequestError>((resume) => {
377
+ const success = this.bunServer.upgrade<WebSocketContext>(this.source, {
378
+ data: {
379
+ deferred,
380
+ closeDeferred,
381
+ buffer: [],
382
+ run: wsDefaultRun
383
+ }
384
+ })
385
+ if (!success) {
386
+ resume(Effect.fail(
387
+ Error.RequestError({
388
+ request: this,
389
+ reason: "Decode",
390
+ error: "Not an upgradeable ServerRequest"
391
+ })
392
+ ))
393
+ return
394
+ }
395
+ resume(Effect.map(Deferred.await(deferred), (ws) => {
396
+ const write = (chunk: Uint8Array) => Effect.sync(() => ws.sendBinary(chunk))
397
+ const writer = Effect.succeed(write)
398
+ const run = <R, E, _>(
399
+ handler: (_: Uint8Array) => Effect.Effect<_, E, R>
400
+ ): Effect.Effect<void, Socket.SocketError | E, R> =>
401
+ FiberSet.make<any, E>().pipe(
402
+ Effect.flatMap((set) =>
403
+ FiberSet.runtime(set)<R>().pipe(
404
+ Effect.flatMap((run) => {
405
+ ws.data.run = function(data: Uint8Array) {
406
+ run(handler(data))
407
+ }
408
+ ws.data.buffer.forEach((data) => run(handler(data)))
409
+ ws.data.buffer.length = 0
410
+ return FiberSet.join(set)
411
+ })
412
+ )
413
+ ),
414
+ Effect.scoped,
415
+ Effect.onExit((exit) => Effect.sync(() => ws.close(exit._tag === "Success" ? 1000 : 1011))),
416
+ Effect.raceFirst(Deferred.await(closeDeferred)),
417
+ semaphore.withPermits(1)
418
+ )
419
+
420
+ return Socket.Socket.of({
421
+ [Socket.SocketTypeId]: Socket.SocketTypeId,
422
+ run,
423
+ writer
424
+ })
425
+ }))
426
+ })
427
+ )
428
+ }
333
429
  }
334
430
 
335
431
  const removeHost = (url: string) => {