@effect/platform-node 0.44.10 → 0.45.0

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.
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/NodeSocket.js",
3
+ "module": "../dist/esm/NodeSocket.js",
4
+ "types": "../dist/dts/NodeSocket.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _NodeSocket = /*#__PURE__*/require("@effect/platform-node-shared/NodeSocket");
7
+ Object.keys(_NodeSocket).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _NodeSocket[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _NodeSocket[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=NodeSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeSocket.js","names":["_NodeSocket","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":";;;;;AAOA,IAAAA,WAAA,gBAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.NodeWorkerRunner = exports.NodeWorker = exports.NodeTerminal = exports.NodeStream = exports.NodeSink = exports.NodeRuntime = exports.NodePath = exports.NodeKeyValueStore = exports.NodeHttpServer = exports.NodeHttpClient = exports.NodeFileSystem = exports.NodeContext = exports.NodeCommandExecutor = void 0;
6
+ exports.NodeWorkerRunner = exports.NodeWorker = exports.NodeTerminal = exports.NodeStream = exports.NodeSocket = exports.NodeSink = exports.NodeRuntime = exports.NodePath = exports.NodeKeyValueStore = exports.NodeHttpServer = exports.NodeHttpClient = exports.NodeFileSystem = exports.NodeContext = exports.NodeCommandExecutor = void 0;
7
7
  var _NodeCommandExecutor = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeCommandExecutor.js"));
8
8
  exports.NodeCommandExecutor = _NodeCommandExecutor;
9
9
  var _NodeContext = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeContext.js"));
@@ -22,6 +22,8 @@ var _NodeRuntime = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require(".
22
22
  exports.NodeRuntime = _NodeRuntime;
23
23
  var _NodeSink = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeSink.js"));
24
24
  exports.NodeSink = _NodeSink;
25
+ var _NodeSocket = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeSocket.js"));
26
+ exports.NodeSocket = _NodeSocket;
25
27
  var _NodeStream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeStream.js"));
26
28
  exports.NodeStream = _NodeStream;
27
29
  var _NodeTerminal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./NodeTerminal.js"));
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.requestSource = exports.makeHandler = exports.make = exports.layerServer = exports.layerConfig = exports.layer = void 0;
6
+ exports.requestSource = exports.makeUpgradeHandler = exports.makeHandler = exports.make = exports.layerServer = exports.layerConfig = exports.layer = void 0;
7
7
  var Etag = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform-node-shared/Http/Etag"));
8
8
  var MultipartNode = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform-node-shared/Http/Multipart"));
9
9
  var FileSystem = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/FileSystem"));
@@ -13,15 +13,19 @@ var Middleware = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@ef
13
13
  var Server = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Server"));
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
+ var Socket = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Socket"));
16
17
  var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
17
18
  var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Config"));
18
19
  var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
19
20
  var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
20
21
  var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Option"));
21
22
  var Runtime = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Runtime"));
23
+ var Scope = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Scope"));
22
24
  var Stream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Stream"));
25
+ var Http = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("node:http"));
23
26
  var _nodeStream = /*#__PURE__*/require("node:stream");
24
27
  var _promises = /*#__PURE__*/require("node:stream/promises");
28
+ var WS = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("ws"));
25
29
  var NodeContext = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../../NodeContext.js"));
26
30
  var NodeSink = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../../NodeSink.js"));
27
31
  var _incomingMessage = /*#__PURE__*/require("./incomingMessage.js");
@@ -53,6 +57,7 @@ function _interopRequireWildcard(e, r) {
53
57
  }
54
58
  /** @internal */
55
59
  const make = (evaluate, options) => Effect.gen(function* (_) {
60
+ const scope = yield* _(Effect.scope);
56
61
  const server = yield* _(Effect.acquireRelease(Effect.sync(evaluate), server => Effect.async(resume => {
57
62
  server.close(error => {
58
63
  if (error) {
@@ -73,6 +78,11 @@ const make = (evaluate, options) => Effect.gen(function* (_) {
73
78
  });
74
79
  }));
75
80
  const address = server.address();
81
+ const wss = yield* _(Effect.acquireRelease(Effect.sync(() => new WS.WebSocketServer({
82
+ noServer: true
83
+ })), wss => Effect.async(resume => {
84
+ wss.close(() => resume(Effect.unit));
85
+ })), Scope.extend(scope), Effect.cached);
76
86
  return Server.make({
77
87
  address: typeof address === "string" ? {
78
88
  _tag: "UnixAddress",
@@ -84,10 +94,13 @@ const make = (evaluate, options) => Effect.gen(function* (_) {
84
94
  },
85
95
  serve: (httpApp, middleware) => Effect.gen(function* (_) {
86
96
  const handler = yield* _(makeHandler(httpApp, middleware));
97
+ const upgradeHandler = yield* _(makeUpgradeHandler(wss, httpApp, middleware));
87
98
  yield* _(Effect.addFinalizer(() => Effect.sync(() => {
88
99
  server.off("request", handler);
100
+ server.off("upgrade", upgradeHandler);
89
101
  })));
90
102
  server.on("request", handler);
103
+ server.on("upgrade", upgradeHandler);
91
104
  })
92
105
  });
93
106
  }).pipe(Effect.locally(IncomingMessage.maxBodySize, Option.some(FileSystem.Size(1024 * 1024 * 10))));
@@ -111,9 +124,41 @@ const makeHandler = (httpApp, middleware) => {
111
124
  };
112
125
  });
113
126
  };
127
+ /** @internal */
114
128
  exports.makeHandler = makeHandler;
129
+ const makeUpgradeHandler = (lazyWss, httpApp, middleware) => {
130
+ const handledApp = Effect.scoped(middleware ? middleware(App.withDefaultMiddleware(respond(httpApp))) : App.withDefaultMiddleware(respond(httpApp)));
131
+ return Effect.map(Effect.runtime(), runtime => {
132
+ const runFork = Runtime.runFork(runtime);
133
+ return function handler(nodeRequest, socket, head) {
134
+ let nodeResponse_ = undefined;
135
+ const nodeResponse = () => {
136
+ if (nodeResponse_ === undefined) {
137
+ nodeResponse_ = new Http.ServerResponse(nodeRequest);
138
+ nodeResponse_.assignSocket(socket);
139
+ }
140
+ return nodeResponse_;
141
+ };
142
+ const upgradeEffect = Socket.fromWebSocket(Effect.flatMap(lazyWss, wss => Effect.acquireRelease(Effect.async(resume => wss.handleUpgrade(nodeRequest, socket, head, ws => {
143
+ resume(Effect.succeed(ws));
144
+ })), ws => Effect.sync(() => ws.close()))));
145
+ const fiber = runFork(Effect.provideService(handledApp, ServerRequest.ServerRequest, new ServerRequestImpl(nodeRequest, nodeResponse, upgradeEffect)));
146
+ socket.on("close", () => {
147
+ const res = nodeResponse();
148
+ if (!socket.writableEnded) {
149
+ if (!res.headersSent) {
150
+ res.writeHead(499);
151
+ }
152
+ res.end();
153
+ runFork(fiber.interruptAsFork(Error.clientAbortFiberId));
154
+ }
155
+ });
156
+ };
157
+ });
158
+ };
159
+ exports.makeUpgradeHandler = makeUpgradeHandler;
115
160
  const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.uninterruptibleMask(restore => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.tapErrorCause(restore(Effect.tap(Effect.flatMap(httpApp, response => Effect.flatMap(App.preResponseHandler, f => f(request, response))), response => handleResponse(request, response))), cause => Effect.sync(() => {
116
- const nodeResponse = request.response;
161
+ const nodeResponse = request.resolvedResponse;
117
162
  if (!nodeResponse.headersSent) {
118
163
  nodeResponse.writeHead(Cause.isInterruptedOnly(cause) ? 503 : 500);
119
164
  }
@@ -124,10 +169,11 @@ const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.uninterruptibleMa
124
169
  class ServerRequestImpl extends _incomingMessage.IncomingMessageImpl {
125
170
  source;
126
171
  response;
172
+ upgradeEffect;
127
173
  url;
128
174
  headersOverride;
129
175
  [ServerRequest.TypeId];
130
- constructor(source, response, url = source.url, headersOverride, remoteAddressOverride) {
176
+ constructor(source, response, upgradeEffect, url = source.url, headersOverride, remoteAddressOverride) {
131
177
  super(source, _ => Error.RequestError({
132
178
  request: this,
133
179
  reason: "Decode",
@@ -135,12 +181,16 @@ class ServerRequestImpl extends _incomingMessage.IncomingMessageImpl {
135
181
  }), remoteAddressOverride);
136
182
  this.source = source;
137
183
  this.response = response;
184
+ this.upgradeEffect = upgradeEffect;
138
185
  this.url = url;
139
186
  this.headersOverride = headersOverride;
140
187
  this[ServerRequest.TypeId] = ServerRequest.TypeId;
141
188
  }
189
+ get resolvedResponse() {
190
+ return typeof this.response === "function" ? this.response() : this.response;
191
+ }
142
192
  modify(options) {
143
- return new ServerRequestImpl(this.source, this.response, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
193
+ return new ServerRequestImpl(this.source, this.response, this.upgradeEffect, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
144
194
  }
145
195
  get originalUrl() {
146
196
  return this.source.url;
@@ -163,6 +213,13 @@ class ServerRequestImpl extends _incomingMessage.IncomingMessageImpl {
163
213
  get multipartStream() {
164
214
  return MultipartNode.stream(this.source, this.source.headers);
165
215
  }
216
+ get upgrade() {
217
+ return this.upgradeEffect ?? Effect.fail(Error.RequestError({
218
+ request: this,
219
+ reason: "Decode",
220
+ error: "not an upgradeable ServerRequest"
221
+ }));
222
+ }
166
223
  toString() {
167
224
  return `ServerRequest(${this.method} ${this.url})`;
168
225
  }
@@ -186,8 +243,10 @@ exports.layer = layer;
186
243
  const layerConfig = (evaluate, options) => Layer.mergeAll(Layer.scoped(Server.Server, Effect.flatMap(Config.unwrap(options), options => make(evaluate, options))), internalPlatform.layer, Etag.layerWeak, NodeContext.layer);
187
244
  exports.layerConfig = layerConfig;
188
245
  const handleResponse = (request, response) => Effect.suspend(() => {
189
- const nodeResponse = request.response;
190
- if (request.method === "HEAD") {
246
+ const nodeResponse = request.resolvedResponse;
247
+ if (nodeResponse.writableEnded) {
248
+ return Effect.unit;
249
+ } else if (request.method === "HEAD") {
191
250
  nodeResponse.writeHead(response.status, response.headers);
192
251
  nodeResponse.end();
193
252
  return Effect.unit;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["Etag","_interopRequireWildcard","require","MultipartNode","FileSystem","App","IncomingMessage","Middleware","Server","Error","ServerRequest","Cause","Config","Effect","Layer","Option","Runtime","Stream","_nodeStream","_promises","NodeContext","NodeSink","_incomingMessage","internalPlatform","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","make","evaluate","options","gen","_","server","acquireRelease","sync","async","resume","close","error","die","unit","on","fail","ServeError","listen","address","_tag","path","hostname","port","serve","httpApp","middleware","handler","makeHandler","addFinalizer","off","pipe","locally","maxBodySize","some","Size","exports","handledApp","scoped","withDefaultMiddleware","respond","map","runtime","runFork","nodeRequest","nodeResponse","fiber","provideService","ServerRequestImpl","writableEnded","headersSent","writeHead","end","interruptAsFork","clientAbortFiberId","uninterruptibleMask","restore","flatMap","request","tapErrorCause","tap","response","preResponseHandler","f","handleResponse","cause","isInterruptedOnly","IncomingMessageImpl","source","url","headersOverride","TypeId","constructor","remoteAddressOverride","RequestError","reason","modify","headers","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","cached","persisted","multipartStream","stream","toString","toJSON","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","suspend","status","body","tryPromise","try","signal","pipeline","catch","ResponseError","Response","formData","fromEntries","Readable","fromWeb","once","run","mapError","fromWritable","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","FileSystem","App","IncomingMessage","Middleware","Server","Error","ServerRequest","Socket","Cause","Config","Effect","Layer","Option","Runtime","Scope","Stream","Http","_nodeStream","_promises","WS","NodeContext","NodeSink","_incomingMessage","internalPlatform","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","make","evaluate","options","gen","_","scope","server","acquireRelease","sync","async","resume","close","error","die","unit","on","fail","ServeError","listen","address","wss","WebSocketServer","noServer","extend","cached","_tag","path","hostname","port","serve","httpApp","middleware","handler","makeHandler","upgradeHandler","makeUpgradeHandler","addFinalizer","off","pipe","locally","maxBodySize","some","Size","exports","handledApp","scoped","withDefaultMiddleware","respond","map","runtime","runFork","nodeRequest","nodeResponse","fiber","provideService","ServerRequestImpl","writableEnded","headersSent","writeHead","end","interruptAsFork","clientAbortFiberId","lazyWss","socket","head","nodeResponse_","undefined","ServerResponse","assignSocket","upgradeEffect","fromWebSocket","flatMap","handleUpgrade","ws","succeed","res","uninterruptibleMask","restore","request","tapErrorCause","tap","response","preResponseHandler","f","handleResponse","cause","resolvedResponse","isInterruptedOnly","IncomingMessageImpl","source","url","headersOverride","TypeId","constructor","remoteAddressOverride","RequestError","reason","modify","headers","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","persisted","multipartStream","stream","upgrade","toString","toJSON","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","suspend","status","body","tryPromise","try","signal","pipeline","catch","ResponseError","Response","formData","fromEntries","Readable","fromWeb","once","run","mapError","fromWritable","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -29,8 +29,8 @@ export declare const make: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMe
29
29
  * @category constructors
30
30
  */
31
31
  export declare const makeHandler: {
32
- <R, E>(httpApp: App.Default<R, E>): Effect.Effect<Exclude<R, Scope.Scope | ServerRequest.ServerRequest>, never, (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void>;
33
- <R, E, App extends App.Default<any, any>>(httpApp: App.Default<R, E>, middleware: Middleware.Middleware.Applied<R, E, App>): Effect.Effect<Exclude<Effect.Effect.Context<App>, Scope.Scope | ServerRequest.ServerRequest>, never, (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void>;
32
+ <R, E>(httpApp: App.Default<R, E>): Effect.Effect<(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void, never, Exclude<R, Scope.Scope | ServerRequest.ServerRequest>>;
33
+ <R, E, App extends App.Default<any, any>>(httpApp: App.Default<R, E>, middleware: Middleware.Middleware.Applied<R, E, App>): Effect.Effect<(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void, never, Exclude<Effect.Effect.Context<App>, Scope.Scope | ServerRequest.ServerRequest>>;
34
34
  };
35
35
  /**
36
36
  * @since 1.0.0
@@ -41,10 +41,10 @@ export declare const layerServer: (evaluate: LazyArg<Http.Server>, options: Net.
41
41
  * @since 1.0.0
42
42
  * @category layers
43
43
  */
44
- export declare const layer: (evaluate: LazyArg<Http.Server>, options: Net.ListenOptions) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ServeError>;
44
+ export declare const layer: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Net.ListenOptions) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ServeError>;
45
45
  /**
46
46
  * @since 1.0.0
47
47
  * @category layers
48
48
  */
49
- export declare const layerConfig: (evaluate: LazyArg<Http.Server>, options: Config.Config.Wrap<Net.ListenOptions>) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ServeError | ConfigError.ConfigError>;
49
+ export declare const layerConfig: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Config.Config.Wrap<Net.ListenOptions>) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ConfigError.ConfigError | ServeError>;
50
50
  //# sourceMappingURL=Server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../src/Http/Server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../src/Http/Server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ /**
5
+ * @category models
6
+ */
7
+ export * from "@effect/platform-node-shared/NodeSocket";
8
+ //# sourceMappingURL=NodeSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../../src/NodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,cAAc,yCAAyC,CAAA"}
@@ -34,6 +34,10 @@ export * as NodeRuntime from "./NodeRuntime.js";
34
34
  * @since 1.0.0
35
35
  */
36
36
  export * as NodeSink from "./NodeSink.js";
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ export * as NodeSocket from "./NodeSocket.js";
37
41
  /**
38
42
  * @since 1.0.0
39
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ /**
5
+ * @category models
6
+ */
7
+ export * from "@effect/platform-node-shared/NodeSocket";
8
+ //# sourceMappingURL=NodeSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeSocket.js","names":[],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;;;AAGA,cAAc,yCAAyC"}
package/dist/esm/index.js CHANGED
@@ -34,6 +34,10 @@ export * as NodeRuntime from "./NodeRuntime.js";
34
34
  * @since 1.0.0
35
35
  */
36
36
  export * as NodeSink from "./NodeSink.js";
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ export * as NodeSocket from "./NodeSocket.js";
37
41
  /**
38
42
  * @since 1.0.0
39
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["NodeCommandExecutor","NodeContext","NodeFileSystem","NodeHttpClient","NodeHttpServer","NodeKeyValueStore","NodePath","NodeRuntime","NodeSink","NodeStream","NodeTerminal","NodeWorker","NodeWorkerRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB"}
1
+ {"version":3,"file":"index.js","names":["NodeCommandExecutor","NodeContext","NodeFileSystem","NodeHttpClient","NodeHttpServer","NodeKeyValueStore","NodePath","NodeRuntime","NodeSink","NodeSocket","NodeStream","NodeTerminal","NodeWorker","NodeWorkerRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB"}
@@ -7,21 +7,26 @@ import * as Middleware from "@effect/platform/Http/Middleware";
7
7
  import * as Server from "@effect/platform/Http/Server";
8
8
  import * as Error from "@effect/platform/Http/ServerError";
9
9
  import * as ServerRequest from "@effect/platform/Http/ServerRequest";
10
+ import * as Socket from "@effect/platform/Socket";
10
11
  import * as Cause from "effect/Cause";
11
12
  import * as Config from "effect/Config";
12
13
  import * as Effect from "effect/Effect";
13
14
  import * as Layer from "effect/Layer";
14
15
  import * as Option from "effect/Option";
15
16
  import * as Runtime from "effect/Runtime";
17
+ import * as Scope from "effect/Scope";
16
18
  import * as Stream from "effect/Stream";
19
+ import * as Http from "node:http";
17
20
  import { Readable } from "node:stream";
18
21
  import { pipeline } from "node:stream/promises";
22
+ import * as WS from "ws";
19
23
  import * as NodeContext from "../../NodeContext.js";
20
24
  import * as NodeSink from "../../NodeSink.js";
21
25
  import { IncomingMessageImpl } from "./incomingMessage.js";
22
26
  import * as internalPlatform from "./platform.js";
23
27
  /** @internal */
24
28
  export const make = (evaluate, options) => Effect.gen(function* (_) {
29
+ const scope = yield* _(Effect.scope);
25
30
  const server = yield* _(Effect.acquireRelease(Effect.sync(evaluate), server => Effect.async(resume => {
26
31
  server.close(error => {
27
32
  if (error) {
@@ -42,6 +47,11 @@ export const make = (evaluate, options) => Effect.gen(function* (_) {
42
47
  });
43
48
  }));
44
49
  const address = server.address();
50
+ const wss = yield* _(Effect.acquireRelease(Effect.sync(() => new WS.WebSocketServer({
51
+ noServer: true
52
+ })), wss => Effect.async(resume => {
53
+ wss.close(() => resume(Effect.unit));
54
+ })), Scope.extend(scope), Effect.cached);
45
55
  return Server.make({
46
56
  address: typeof address === "string" ? {
47
57
  _tag: "UnixAddress",
@@ -53,10 +63,13 @@ export const make = (evaluate, options) => Effect.gen(function* (_) {
53
63
  },
54
64
  serve: (httpApp, middleware) => Effect.gen(function* (_) {
55
65
  const handler = yield* _(makeHandler(httpApp, middleware));
66
+ const upgradeHandler = yield* _(makeUpgradeHandler(wss, httpApp, middleware));
56
67
  yield* _(Effect.addFinalizer(() => Effect.sync(() => {
57
68
  server.off("request", handler);
69
+ server.off("upgrade", upgradeHandler);
58
70
  })));
59
71
  server.on("request", handler);
72
+ server.on("upgrade", upgradeHandler);
60
73
  })
61
74
  });
62
75
  }).pipe(Effect.locally(IncomingMessage.maxBodySize, Option.some(FileSystem.Size(1024 * 1024 * 10))));
@@ -79,8 +92,39 @@ export const makeHandler = (httpApp, middleware) => {
79
92
  };
80
93
  });
81
94
  };
95
+ /** @internal */
96
+ export const makeUpgradeHandler = (lazyWss, httpApp, middleware) => {
97
+ const handledApp = Effect.scoped(middleware ? middleware(App.withDefaultMiddleware(respond(httpApp))) : App.withDefaultMiddleware(respond(httpApp)));
98
+ return Effect.map(Effect.runtime(), runtime => {
99
+ const runFork = Runtime.runFork(runtime);
100
+ return function handler(nodeRequest, socket, head) {
101
+ let nodeResponse_ = undefined;
102
+ const nodeResponse = () => {
103
+ if (nodeResponse_ === undefined) {
104
+ nodeResponse_ = new Http.ServerResponse(nodeRequest);
105
+ nodeResponse_.assignSocket(socket);
106
+ }
107
+ return nodeResponse_;
108
+ };
109
+ const upgradeEffect = Socket.fromWebSocket(Effect.flatMap(lazyWss, wss => Effect.acquireRelease(Effect.async(resume => wss.handleUpgrade(nodeRequest, socket, head, ws => {
110
+ resume(Effect.succeed(ws));
111
+ })), ws => Effect.sync(() => ws.close()))));
112
+ const fiber = runFork(Effect.provideService(handledApp, ServerRequest.ServerRequest, new ServerRequestImpl(nodeRequest, nodeResponse, upgradeEffect)));
113
+ socket.on("close", () => {
114
+ const res = nodeResponse();
115
+ if (!socket.writableEnded) {
116
+ if (!res.headersSent) {
117
+ res.writeHead(499);
118
+ }
119
+ res.end();
120
+ runFork(fiber.interruptAsFork(Error.clientAbortFiberId));
121
+ }
122
+ });
123
+ };
124
+ });
125
+ };
82
126
  const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.uninterruptibleMask(restore => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.tapErrorCause(restore(Effect.tap(Effect.flatMap(httpApp, response => Effect.flatMap(App.preResponseHandler, f => f(request, response))), response => handleResponse(request, response))), cause => Effect.sync(() => {
83
- const nodeResponse = request.response;
127
+ const nodeResponse = request.resolvedResponse;
84
128
  if (!nodeResponse.headersSent) {
85
129
  nodeResponse.writeHead(Cause.isInterruptedOnly(cause) ? 503 : 500);
86
130
  }
@@ -91,10 +135,11 @@ const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.uninterruptibleMa
91
135
  class ServerRequestImpl extends IncomingMessageImpl {
92
136
  source;
93
137
  response;
138
+ upgradeEffect;
94
139
  url;
95
140
  headersOverride;
96
141
  [ServerRequest.TypeId];
97
- constructor(source, response, url = source.url, headersOverride, remoteAddressOverride) {
142
+ constructor(source, response, upgradeEffect, url = source.url, headersOverride, remoteAddressOverride) {
98
143
  super(source, _ => Error.RequestError({
99
144
  request: this,
100
145
  reason: "Decode",
@@ -102,12 +147,16 @@ class ServerRequestImpl extends IncomingMessageImpl {
102
147
  }), remoteAddressOverride);
103
148
  this.source = source;
104
149
  this.response = response;
150
+ this.upgradeEffect = upgradeEffect;
105
151
  this.url = url;
106
152
  this.headersOverride = headersOverride;
107
153
  this[ServerRequest.TypeId] = ServerRequest.TypeId;
108
154
  }
155
+ get resolvedResponse() {
156
+ return typeof this.response === "function" ? this.response() : this.response;
157
+ }
109
158
  modify(options) {
110
- return new ServerRequestImpl(this.source, this.response, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
159
+ return new ServerRequestImpl(this.source, this.response, this.upgradeEffect, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
111
160
  }
112
161
  get originalUrl() {
113
162
  return this.source.url;
@@ -130,6 +179,13 @@ class ServerRequestImpl extends IncomingMessageImpl {
130
179
  get multipartStream() {
131
180
  return MultipartNode.stream(this.source, this.source.headers);
132
181
  }
182
+ get upgrade() {
183
+ return this.upgradeEffect ?? Effect.fail(Error.RequestError({
184
+ request: this,
185
+ reason: "Decode",
186
+ error: "not an upgradeable ServerRequest"
187
+ }));
188
+ }
133
189
  toString() {
134
190
  return `ServerRequest(${this.method} ${this.url})`;
135
191
  }
@@ -150,8 +206,10 @@ export const layer = (evaluate, options) => Layer.mergeAll(Layer.scoped(Server.S
150
206
  /** @internal */
151
207
  export const layerConfig = (evaluate, options) => Layer.mergeAll(Layer.scoped(Server.Server, Effect.flatMap(Config.unwrap(options), options => make(evaluate, options))), internalPlatform.layer, Etag.layerWeak, NodeContext.layer);
152
208
  const handleResponse = (request, response) => Effect.suspend(() => {
153
- const nodeResponse = request.response;
154
- if (request.method === "HEAD") {
209
+ const nodeResponse = request.resolvedResponse;
210
+ if (nodeResponse.writableEnded) {
211
+ return Effect.unit;
212
+ } else if (request.method === "HEAD") {
155
213
  nodeResponse.writeHead(response.status, response.headers);
156
214
  nodeResponse.end();
157
215
  return Effect.unit;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["Etag","MultipartNode","FileSystem","App","IncomingMessage","Middleware","Server","Error","ServerRequest","Cause","Config","Effect","Layer","Option","Runtime","Stream","Readable","pipeline","NodeContext","NodeSink","IncomingMessageImpl","internalPlatform","make","evaluate","options","gen","_","server","acquireRelease","sync","async","resume","close","error","die","unit","on","fail","ServeError","listen","address","_tag","path","hostname","port","serve","httpApp","middleware","handler","makeHandler","addFinalizer","off","pipe","locally","maxBodySize","some","Size","handledApp","scoped","withDefaultMiddleware","respond","map","runtime","runFork","nodeRequest","nodeResponse","fiber","provideService","ServerRequestImpl","writableEnded","headersSent","writeHead","end","interruptAsFork","clientAbortFiberId","uninterruptibleMask","restore","flatMap","request","tapErrorCause","tap","response","preResponseHandler","f","handleResponse","cause","isInterruptedOnly","source","url","headersOverride","TypeId","constructor","remoteAddressOverride","RequestError","reason","modify","headers","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","cached","persisted","multipartStream","stream","toString","toJSON","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","suspend","status","body","tryPromise","try","signal","catch","ResponseError","r","Response","formData","Object","fromEntries","fromWeb","once","run","mapError","fromWritable","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"server.js","names":["Etag","MultipartNode","FileSystem","App","IncomingMessage","Middleware","Server","Error","ServerRequest","Socket","Cause","Config","Effect","Layer","Option","Runtime","Scope","Stream","Http","Readable","pipeline","WS","NodeContext","NodeSink","IncomingMessageImpl","internalPlatform","make","evaluate","options","gen","_","scope","server","acquireRelease","sync","async","resume","close","error","die","unit","on","fail","ServeError","listen","address","wss","WebSocketServer","noServer","extend","cached","_tag","path","hostname","port","serve","httpApp","middleware","handler","makeHandler","upgradeHandler","makeUpgradeHandler","addFinalizer","off","pipe","locally","maxBodySize","some","Size","handledApp","scoped","withDefaultMiddleware","respond","map","runtime","runFork","nodeRequest","nodeResponse","fiber","provideService","ServerRequestImpl","writableEnded","headersSent","writeHead","end","interruptAsFork","clientAbortFiberId","lazyWss","socket","head","nodeResponse_","undefined","ServerResponse","assignSocket","upgradeEffect","fromWebSocket","flatMap","handleUpgrade","ws","succeed","res","uninterruptibleMask","restore","request","tapErrorCause","tap","response","preResponseHandler","f","handleResponse","cause","resolvedResponse","isInterruptedOnly","source","url","headersOverride","TypeId","constructor","remoteAddressOverride","RequestError","reason","modify","headers","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","persisted","multipartStream","stream","upgrade","toString","toJSON","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","suspend","status","body","tryPromise","try","signal","catch","ResponseError","r","Response","formData","Object","fromEntries","fromWeb","once","run","mapError","fromWritable","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-node",
3
- "version": "0.44.10",
3
+ "version": "0.45.0",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,11 +11,12 @@
11
11
  "sideEffects": [],
12
12
  "dependencies": {
13
13
  "mime": "^3.0.0",
14
- "@effect/platform-node-shared": "^0.2.2"
14
+ "ws": "^8.16.0",
15
+ "@effect/platform-node-shared": "^0.2.4"
15
16
  },
16
17
  "peerDependencies": {
17
- "@effect/platform": "^0.46.2",
18
- "effect": "^2.4.0"
18
+ "@effect/platform": "^0.47.0",
19
+ "effect": "^2.4.2"
19
20
  },
20
21
  "main": "./dist/cjs/index.js",
21
22
  "module": "./dist/esm/index.js",
@@ -87,6 +88,11 @@
87
88
  "import": "./dist/esm/NodeSink.js",
88
89
  "default": "./dist/cjs/NodeSink.js"
89
90
  },
91
+ "./NodeSocket": {
92
+ "types": "./dist/dts/NodeSocket.d.ts",
93
+ "import": "./dist/esm/NodeSocket.js",
94
+ "default": "./dist/cjs/NodeSocket.js"
95
+ },
90
96
  "./NodeStream": {
91
97
  "types": "./dist/dts/NodeStream.d.ts",
92
98
  "import": "./dist/esm/NodeStream.js",
@@ -146,6 +152,9 @@
146
152
  "NodeSink": [
147
153
  "./dist/dts/NodeSink.d.ts"
148
154
  ],
155
+ "NodeSocket": [
156
+ "./dist/dts/NodeSocket.d.ts"
157
+ ],
149
158
  "NodeStream": [
150
159
  "./dist/dts/NodeStream.d.ts"
151
160
  ],
@@ -40,17 +40,17 @@ export const makeHandler: {
40
40
  <R, E>(
41
41
  httpApp: App.Default<R, E>
42
42
  ): Effect.Effect<
43
- Exclude<R, Scope.Scope | ServerRequest.ServerRequest>,
43
+ (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void,
44
44
  never,
45
- (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void
45
+ Exclude<R, Scope.Scope | ServerRequest.ServerRequest>
46
46
  >
47
47
  <R, E, App extends App.Default<any, any>>(
48
48
  httpApp: App.Default<R, E>,
49
49
  middleware: Middleware.Middleware.Applied<R, E, App>
50
50
  ): Effect.Effect<
51
- Exclude<Effect.Effect.Context<App>, Scope.Scope | ServerRequest.ServerRequest>,
51
+ (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void,
52
52
  never,
53
- (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void
53
+ Exclude<Effect.Effect.Context<App>, Scope.Scope | ServerRequest.ServerRequest>
54
54
  >
55
55
  } = internal.makeHandler
56
56
 
@@ -68,7 +68,7 @@ export const layerServer: (
68
68
  * @category layers
69
69
  */
70
70
  export const layer: (
71
- evaluate: LazyArg<Http.Server>,
71
+ evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
72
72
  options: Net.ListenOptions
73
73
  ) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ServeError> =
74
74
  internal.layer
@@ -78,9 +78,9 @@ export const layer: (
78
78
  * @category layers
79
79
  */
80
80
  export const layerConfig: (
81
- evaluate: LazyArg<Http.Server>,
81
+ evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
82
82
  options: Config.Config.Wrap<Net.ListenOptions>
83
83
  ) => Layer.Layer<
84
84
  Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server,
85
- ServeError | ConfigError.ConfigError
85
+ ConfigError.ConfigError | ServeError
86
86
  > = internal.layerConfig
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ /**
6
+ * @category models
7
+ */
8
+ export * from "@effect/platform-node-shared/NodeSocket"
package/src/index.ts CHANGED
@@ -43,6 +43,11 @@ export * as NodeRuntime from "./NodeRuntime.js"
43
43
  */
44
44
  export * as NodeSink from "./NodeSink.js"
45
45
 
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ export * as NodeSocket from "./NodeSocket.js"
50
+
46
51
  /**
47
52
  * @since 1.0.0
48
53
  */
@@ -12,6 +12,7 @@ import * as Error from "@effect/platform/Http/ServerError"
12
12
  import * as ServerRequest from "@effect/platform/Http/ServerRequest"
13
13
  import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
14
14
  import type * as Path from "@effect/platform/Path"
15
+ import * as Socket from "@effect/platform/Socket"
15
16
  import * as Cause from "effect/Cause"
16
17
  import * as Config from "effect/Config"
17
18
  import * as Effect from "effect/Effect"
@@ -19,12 +20,14 @@ import { type LazyArg } from "effect/Function"
19
20
  import * as Layer from "effect/Layer"
20
21
  import * as Option from "effect/Option"
21
22
  import * as Runtime from "effect/Runtime"
22
- import type * as Scope from "effect/Scope"
23
+ import * as Scope from "effect/Scope"
23
24
  import * as Stream from "effect/Stream"
24
- import type * as Http from "node:http"
25
+ import * as Http from "node:http"
25
26
  import type * as Net from "node:net"
27
+ import type { Duplex } from "node:stream"
26
28
  import { Readable } from "node:stream"
27
29
  import { pipeline } from "node:stream/promises"
30
+ import * as WS from "ws"
28
31
  import * as NodeContext from "../../NodeContext.js"
29
32
  import * as NodeSink from "../../NodeSink.js"
30
33
  import { IncomingMessageImpl } from "./incomingMessage.js"
@@ -36,6 +39,8 @@ export const make = (
36
39
  options: Net.ListenOptions
37
40
  ): Effect.Effect<Server.Server, Error.ServeError, Scope.Scope> =>
38
41
  Effect.gen(function*(_) {
42
+ const scope = yield* _(Effect.scope)
43
+
39
44
  const server = yield* _(Effect.acquireRelease(
40
45
  Effect.sync(evaluate),
41
46
  (server) =>
@@ -61,6 +66,18 @@ export const make = (
61
66
 
62
67
  const address = server.address()!
63
68
 
69
+ const wss = yield* _(
70
+ Effect.acquireRelease(
71
+ Effect.sync(() => new WS.WebSocketServer({ noServer: true })),
72
+ (wss) =>
73
+ Effect.async<void>((resume) => {
74
+ wss.close(() => resume(Effect.unit))
75
+ })
76
+ ),
77
+ Scope.extend(scope),
78
+ Effect.cached
79
+ )
80
+
64
81
  return Server.make({
65
82
  address: typeof address === "string" ?
66
83
  {
@@ -75,12 +92,15 @@ export const make = (
75
92
  serve: (httpApp, middleware) =>
76
93
  Effect.gen(function*(_) {
77
94
  const handler = yield* _(makeHandler(httpApp, middleware!))
95
+ const upgradeHandler = yield* _(makeUpgradeHandler(wss, httpApp, middleware!))
78
96
  yield* _(Effect.addFinalizer(() =>
79
97
  Effect.sync(() => {
80
98
  server.off("request", handler)
99
+ server.off("upgrade", upgradeHandler)
81
100
  })
82
101
  ))
83
102
  server.on("request", handler)
103
+ server.on("upgrade", upgradeHandler)
84
104
  })
85
105
  })
86
106
  }).pipe(
@@ -113,7 +133,10 @@ export const makeHandler: {
113
133
  )
114
134
  return Effect.map(Effect.runtime<R>(), (runtime) => {
115
135
  const runFork = Runtime.runFork(runtime)
116
- return function handler(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) {
136
+ return function handler(
137
+ nodeRequest: Http.IncomingMessage,
138
+ nodeResponse: Http.ServerResponse
139
+ ) {
117
140
  const fiber = runFork(
118
141
  Effect.provideService(
119
142
  handledApp,
@@ -134,6 +157,65 @@ export const makeHandler: {
134
157
  })
135
158
  }
136
159
 
160
+ /** @internal */
161
+ export const makeUpgradeHandler = <R, E>(
162
+ lazyWss: Effect.Effect<WS.WebSocketServer>,
163
+ httpApp: App.Default<R, E>,
164
+ middleware?: Middleware.Middleware
165
+ ) => {
166
+ const handledApp = Effect.scoped(
167
+ middleware
168
+ ? middleware(App.withDefaultMiddleware(respond(httpApp)))
169
+ : App.withDefaultMiddleware(respond(httpApp))
170
+ )
171
+ return Effect.map(Effect.runtime<R>(), (runtime) => {
172
+ const runFork = Runtime.runFork(runtime)
173
+ return function handler(
174
+ nodeRequest: Http.IncomingMessage,
175
+ socket: Duplex,
176
+ head: Buffer
177
+ ) {
178
+ let nodeResponse_: Http.ServerResponse | undefined = undefined
179
+ const nodeResponse = () => {
180
+ if (nodeResponse_ === undefined) {
181
+ nodeResponse_ = new Http.ServerResponse(nodeRequest)
182
+ nodeResponse_.assignSocket(socket as any)
183
+ }
184
+ return nodeResponse_
185
+ }
186
+ const upgradeEffect = Socket.fromWebSocket(Effect.flatMap(
187
+ lazyWss,
188
+ (wss) =>
189
+ Effect.acquireRelease(
190
+ Effect.async<globalThis.WebSocket>((resume) =>
191
+ wss.handleUpgrade(nodeRequest, socket, head, (ws) => {
192
+ resume(Effect.succeed(ws as any))
193
+ })
194
+ ),
195
+ (ws) => Effect.sync(() => ws.close())
196
+ )
197
+ ))
198
+ const fiber = runFork(
199
+ Effect.provideService(
200
+ handledApp,
201
+ ServerRequest.ServerRequest,
202
+ new ServerRequestImpl(nodeRequest, nodeResponse, upgradeEffect)
203
+ )
204
+ )
205
+ socket.on("close", () => {
206
+ const res = nodeResponse()
207
+ if (!socket.writableEnded) {
208
+ if (!res.headersSent) {
209
+ res.writeHead(499)
210
+ }
211
+ res.end()
212
+ runFork(fiber.interruptAsFork(Error.clientAbortFiberId))
213
+ }
214
+ })
215
+ }
216
+ })
217
+ }
218
+
137
219
  const respond = Middleware.make((httpApp) =>
138
220
  Effect.uninterruptibleMask((restore) =>
139
221
  Effect.flatMap(ServerRequest.ServerRequest, (request) =>
@@ -149,7 +231,7 @@ const respond = Middleware.make((httpApp) =>
149
231
  ),
150
232
  (cause) =>
151
233
  Effect.sync(() => {
152
- const nodeResponse = (request as ServerRequestImpl).response
234
+ const nodeResponse = (request as ServerRequestImpl).resolvedResponse
153
235
  if (!nodeResponse.headersSent) {
154
236
  nodeResponse.writeHead(Cause.isInterruptedOnly(cause) ? 503 : 500)
155
237
  }
@@ -166,7 +248,8 @@ class ServerRequestImpl extends IncomingMessageImpl<Error.RequestError> implemen
166
248
 
167
249
  constructor(
168
250
  readonly source: Http.IncomingMessage,
169
- readonly response: Http.ServerResponse,
251
+ readonly response: Http.ServerResponse | LazyArg<Http.ServerResponse>,
252
+ private upgradeEffect?: Effect.Effect<Socket.Socket, Error.RequestError>,
170
253
  readonly url = source.url!,
171
254
  private headersOverride?: Headers.Headers,
172
255
  remoteAddressOverride?: string
@@ -180,6 +263,10 @@ class ServerRequestImpl extends IncomingMessageImpl<Error.RequestError> implemen
180
263
  this[ServerRequest.TypeId] = ServerRequest.TypeId
181
264
  }
182
265
 
266
+ get resolvedResponse(): Http.ServerResponse {
267
+ return typeof this.response === "function" ? this.response() : this.response
268
+ }
269
+
183
270
  modify(
184
271
  options: {
185
272
  readonly url?: string | undefined
@@ -190,6 +277,7 @@ class ServerRequestImpl extends IncomingMessageImpl<Error.RequestError> implemen
190
277
  return new ServerRequestImpl(
191
278
  this.source,
192
279
  this.response,
280
+ this.upgradeEffect,
193
281
  options.url ?? this.url,
194
282
  options.headers ?? this.headersOverride,
195
283
  options.remoteAddress ?? this.remoteAddressOverride
@@ -234,6 +322,14 @@ class ServerRequestImpl extends IncomingMessageImpl<Error.RequestError> implemen
234
322
  return MultipartNode.stream(this.source, this.source.headers)
235
323
  }
236
324
 
325
+ get upgrade(): Effect.Effect<Socket.Socket, Error.RequestError> {
326
+ return this.upgradeEffect ?? Effect.fail(Error.RequestError({
327
+ request: this,
328
+ reason: "Decode",
329
+ error: "not an upgradeable ServerRequest"
330
+ }))
331
+ }
332
+
237
333
  toString(): string {
238
334
  return `ServerRequest(${this.method} ${this.url})`
239
335
  }
@@ -284,8 +380,10 @@ export const layerConfig = (
284
380
 
285
381
  const handleResponse = (request: ServerRequest.ServerRequest, response: ServerResponse.ServerResponse) =>
286
382
  Effect.suspend((): Effect.Effect<void, Error.ResponseError> => {
287
- const nodeResponse = (request as ServerRequestImpl).response
288
- if (request.method === "HEAD") {
383
+ const nodeResponse = (request as ServerRequestImpl).resolvedResponse
384
+ if (nodeResponse.writableEnded) {
385
+ return Effect.unit
386
+ } else if (request.method === "HEAD") {
289
387
  nodeResponse.writeHead(response.status, response.headers)
290
388
  nodeResponse.end()
291
389
  return Effect.unit