@effect/platform-node 0.44.11 → 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.
- package/NodeSocket/package.json +6 -0
- package/dist/cjs/NodeSocket.js +17 -0
- package/dist/cjs/NodeSocket.js.map +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/http/server.js +65 -6
- package/dist/cjs/internal/http/server.js.map +1 -1
- package/dist/dts/Http/Server.d.ts +4 -4
- package/dist/dts/Http/Server.d.ts.map +1 -1
- package/dist/dts/NodeSocket.d.ts +8 -0
- package/dist/dts/NodeSocket.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/NodeSocket.js +8 -0
- package/dist/esm/NodeSocket.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/http/server.js +63 -5
- package/dist/esm/internal/http/server.js.map +1 -1
- package/package.json +13 -4
- package/src/Http/Server.ts +7 -7
- package/src/NodeSocket.ts +8 -0
- package/src/index.ts +5 -0
- package/src/internal/http/server.ts +105 -7
|
@@ -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.
|
|
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.
|
|
190
|
-
if (
|
|
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":";;;;;;AAAA,IAAAA,IAAA,gBAAAC,uBAAA,eAAAC,OAAA;AACA,IAAAC,aAAA,gBAAAF,uBAAA,eAAAC,OAAA;AACA,IAAAE,UAAA,gBAAAH,uBAAA,eAAAC,OAAA;AACA,IAAAG,GAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AAEA,IAAAI,eAAA,gBAAAL,uBAAA,eAAAC,OAAA;AAEA,IAAAK,UAAA,gBAAAN,uBAAA,eAAAC,OAAA;AAEA,IAAAM,MAAA,gBAAAP,uBAAA,eAAAC,OAAA;AACA,IAAAO,KAAA,gBAAAR,uBAAA,eAAAC,OAAA;AACA,IAAAQ,aAAA,gBAAAT,uBAAA,eAAAC,OAAA;AAGA,IAAAS,KAAA,gBAAAV,uBAAA,eAAAC,OAAA;AACA,IAAAU,MAAA,gBAAAX,uBAAA,eAAAC,OAAA;AACA,IAAAW,MAAA,gBAAAZ,uBAAA,eAAAC,OAAA;AAEA,IAAAY,KAAA,gBAAAb,uBAAA,eAAAC,OAAA;AACA,IAAAa,MAAA,gBAAAd,uBAAA,eAAAC,OAAA;AACA,IAAAc,OAAA,gBAAAf,uBAAA,eAAAC,OAAA;AAEA,IAAAe,MAAA,gBAAAhB,uBAAA,eAAAC,OAAA;AAGA,IAAAgB,WAAA,gBAAAhB,OAAA;AACA,IAAAiB,SAAA,gBAAAjB,OAAA;AACA,IAAAkB,WAAA,gBAAAnB,uBAAA,eAAAC,OAAA;AACA,IAAAmB,QAAA,gBAAApB,uBAAA,eAAAC,OAAA;AACA,IAAAoB,gBAAA,gBAAApB,OAAA;AACA,IAAAqB,gBAAA,gBAAAtB,uBAAA,eAAAC,OAAA;AAAiD,SAAAsB,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAxB,wBAAAwB,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA;IAAA,IAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAEjD;AACO,MAAMY,IAAI,GAAGA,CAClBC,QAA8B,EAC9BC,OAA0B,KAE1BlC,MAAM,CAACmC,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,MAAM,GAAG,OAAOD,CAAC,CAACpC,MAAM,CAACsC,cAAc,CAC3CtC,MAAM,CAACuC,IAAI,CAACN,QAAQ,CAAC,EACpBI,MAAM,IACLrC,MAAM,CAACwC,KAAK,CAAQC,MAAM,IAAI;IAC5BJ,MAAM,CAACK,KAAK,CAAEC,KAAK,IAAI;MACrB,IAAIA,KAAK,EAAE;QACTF,MAAM,CAACzC,MAAM,CAAC4C,GAAG,CAACD,KAAK,CAAC,CAAC;MAC3B,CAAC,MAAM;QACLF,MAAM,CAACzC,MAAM,CAAC6C,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,CACL,CAAC;EAEF,OAAOT,CAAC,CAACpC,MAAM,CAACwC,KAAK,CAA0BC,MAAM,IAAI;IACvDJ,MAAM,CAACS,EAAE,CAAC,OAAO,EAAGH,KAAK,IAAI;MAC3BF,MAAM,CAACzC,MAAM,CAAC+C,IAAI,CAACnD,KAAK,CAACoD,UAAU,CAAC;QAAEL;MAAK,CAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACFN,MAAM,CAACY,MAAM,CAACf,OAAO,EAAE,MAAK;MAC1BO,MAAM,CAACzC,MAAM,CAAC6C,IAAI,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,CAAC,CAAC;EAEH,MAAMK,OAAO,GAAGb,MAAM,CAACa,OAAO,EAAG;EAEjC,OAAOvD,MAAM,CAACqC,IAAI,CAAC;IACjBkB,OAAO,EAAE,OAAOA,OAAO,KAAK,QAAQ,GAClC;MACEC,IAAI,EAAE,aAAa;MACnBC,IAAI,EAAEF;KACP,GACD;MACEC,IAAI,EAAE,YAAY;MAClBE,QAAQ,EAAEH,OAAO,CAACA,OAAO,KAAK,IAAI,GAAG,SAAS,GAAGA,OAAO,CAACA,OAAO;MAChEI,IAAI,EAAEJ,OAAO,CAACI;KACf;IACHC,KAAK,EAAEA,CAACC,OAAO,EAAEC,UAAU,KACzBzD,MAAM,CAACmC,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMsB,OAAO,GAAG,OAAOtB,CAAC,CAACuB,WAAW,CAACH,OAAO,EAAEC,UAAW,CAAC,CAAC;MAC3D,OAAOrB,CAAC,CAACpC,MAAM,CAAC4D,YAAY,CAAC,MAC3B5D,MAAM,CAACuC,IAAI,CAAC,MAAK;QACfF,MAAM,CAACwB,GAAG,CAAC,SAAS,EAAEH,OAAO,CAAC;MAChC,CAAC,CAAC,CACH,CAAC;MACFrB,MAAM,CAACS,EAAE,CAAC,SAAS,EAAEY,OAAO,CAAC;IAC/B,CAAC;GACJ,CAAC;AACJ,CAAC,CAAC,CAACI,IAAI,CACL9D,MAAM,CAAC+D,OAAO,CACZtE,eAAe,CAACuE,WAAW,EAC3B9D,MAAM,CAAC+D,IAAI,CAAC1E,UAAU,CAAC2E,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAC/C,CACF;AAEH;AAAAC,OAAA,CAAAnC,IAAA,GAAAA,IAAA;AACO,MAAM2B,WAAW,GAcpBA,CAAOH,OAA0B,EAAEC,UAAkC,KAAI;EAC3E,MAAMW,UAAU,GAAGpE,MAAM,CAACqE,MAAM,CAC9BZ,UAAU,GACNA,UAAU,CAACjE,GAAG,CAAC8E,qBAAqB,CAACC,OAAO,CAACf,OAAO,CAAC,CAAC,CAAC,GACvDhE,GAAG,CAAC8E,qBAAqB,CAACC,OAAO,CAACf,OAAO,CAAC,CAAC,CAChD;EACD,OAAOxD,MAAM,CAACwE,GAAG,CAACxE,MAAM,CAACyE,OAAO,EAAK,EAAGA,OAAO,IAAI;IACjD,MAAMC,OAAO,GAAGvE,OAAO,CAACuE,OAAO,CAACD,OAAO,CAAC;IACxC,OAAO,SAASf,OAAOA,CAACiB,WAAiC,EAAEC,YAAiC;MAC1F,MAAMC,KAAK,GAAGH,OAAO,CACnB1E,MAAM,CAAC8E,cAAc,CACnBV,UAAU,EACVvE,aAAa,CAACA,aAAa,EAC3B,IAAIkF,iBAAiB,CAACJ,WAAW,EAAEC,YAAY,CAAC,CACjD,CACF;MACDA,YAAY,CAAC9B,EAAE,CAAC,OAAO,EAAE,MAAK;QAC5B,IAAI,CAAC8B,YAAY,CAACI,aAAa,EAAE;UAC/B,IAAI,CAACJ,YAAY,CAACK,WAAW,EAAE;YAC7BL,YAAY,CAACM,SAAS,CAAC,GAAG,CAAC;UAC7B;UACAN,YAAY,CAACO,GAAG,EAAE;UAClBT,OAAO,CAACG,KAAK,CAACO,eAAe,CAACxF,KAAK,CAACyF,kBAAkB,CAAC,CAAC;QAC1D;MACF,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;AAAAlB,OAAA,CAAAR,WAAA,GAAAA,WAAA;AAED,MAAMY,OAAO,gBAAG7E,UAAU,CAACsC,IAAI,CAAEwB,OAAO,IACtCxD,MAAM,CAACsF,mBAAmB,CAAEC,OAAO,IACjCvF,MAAM,CAACwF,OAAO,CAAC3F,aAAa,CAACA,aAAa,EAAG4F,OAAO,IAClDzF,MAAM,CAAC0F,aAAa,CAClBH,OAAO,CACLvF,MAAM,CAAC2F,GAAG,CACR3F,MAAM,CAACwF,OAAO,CACZhC,OAAO,EACNoC,QAAQ,IAAK5F,MAAM,CAACwF,OAAO,CAAChG,GAAG,CAACqG,kBAAkB,EAAGC,CAAC,IAAKA,CAAC,CAACL,OAAO,EAAEG,QAAQ,CAAC,CAAC,CAClF,EACAA,QAAQ,IAAKG,cAAc,CAACN,OAAO,EAAEG,QAAQ,CAAC,CAChD,CACF,EACAI,KAAK,IACJhG,MAAM,CAACuC,IAAI,CAAC,MAAK;EACf,MAAMqC,YAAY,GAAIa,OAA6B,CAACG,QAAQ;EAC5D,IAAI,CAAChB,YAAY,CAACK,WAAW,EAAE;IAC7BL,YAAY,CAACM,SAAS,CAACpF,KAAK,CAACmG,iBAAiB,CAACD,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;EACpE;EACA,IAAI,CAACpB,YAAY,CAACI,aAAa,EAAE;IAC/BJ,YAAY,CAACO,GAAG,EAAE;EACpB;AACF,CAAC,CAAC,CACL,CAAC,CACL,CACF;AAED,MAAMJ,iBAAkB,SAAQtE,gBAAA,CAAAyF,mBAAuC;EAI1DC,MAAA;EACAP,QAAA;EACAQ,GAAA;EACDC,eAAA;EAND,CAACxG,aAAa,CAACyG,MAAM;EAE9BC,YACWJ,MAA4B,EAC5BP,QAA6B,EAC7BQ,GAAA,GAAMD,MAAM,CAACC,GAAI,EAClBC,eAAiC,EACzCG,qBAA8B;IAE9B,KAAK,CAACL,MAAM,EAAG/D,CAAC,IACdxC,KAAK,CAAC6G,YAAY,CAAC;MACjBhB,OAAO,EAAE,IAAI;MACbiB,MAAM,EAAE,QAAQ;MAChB/D,KAAK,EAAEP;KACR,CAAC,EAAEoE,qBAAqB,CAAC;IAXnB,KAAAL,MAAM,GAANA,MAAM;IACN,KAAAP,QAAQ,GAARA,QAAQ;IACR,KAAAQ,GAAG,GAAHA,GAAG;IACJ,KAAAC,eAAe,GAAfA,eAAe;IASvB,IAAI,CAACxG,aAAa,CAACyG,MAAM,CAAC,GAAGzG,aAAa,CAACyG,MAAM;EACnD;EAEAK,MAAMA,CACJzE,OAIC;IAED,OAAO,IAAI6C,iBAAiB,CAC1B,IAAI,CAACoB,MAAM,EACX,IAAI,CAACP,QAAQ,EACb1D,OAAO,CAACkE,GAAG,IAAI,IAAI,CAACA,GAAG,EACvBlE,OAAO,CAAC0E,OAAO,IAAI,IAAI,CAACP,eAAe,EACvCnE,OAAO,CAAC2E,aAAa,IAAI,IAAI,CAACL,qBAAqB,CACpD;EACH;EAEA,IAAIM,WAAWA,CAAA;IACb,OAAO,IAAI,CAACX,MAAM,CAACC,GAAI;EACzB;EAEA,IAAIW,MAAMA,CAAA;IACR,OAAO,IAAI,CAACZ,MAAM,CAACY,MAAO,CAACC,WAAW,EAAY;EACpD;EAEA,IAAIJ,OAAOA,CAAA;IACT,IAAI,CAACP,eAAe,KAAK,IAAI,CAACF,MAAM,CAACS,OAA0B;IAC/D,OAAO,IAAI,CAACP,eAAe;EAC7B;EAEQY,eAAe;EAOvB,IAAIC,SAASA,CAAA;IAKX,IAAI,IAAI,CAACD,eAAe,EAAE;MACxB,OAAO,IAAI,CAACA,eAAe;IAC7B;IACA,IAAI,CAACA,eAAe,GAAGjH,MAAM,CAACmH,OAAO,CAACnH,MAAM,CAACoH,MAAM,CACjD9H,aAAa,CAAC+H,SAAS,CAAC,IAAI,CAAClB,MAAM,EAAE,IAAI,CAACA,MAAM,CAACS,OAAO,CAAC,CAC1D,CAAC;IACF,OAAO,IAAI,CAACK,eAAe;EAC7B;EAEA,IAAIK,eAAeA,CAAA;IACjB,OAAOhI,aAAa,CAACiI,MAAM,CAAC,IAAI,CAACpB,MAAM,EAAE,IAAI,CAACA,MAAM,CAACS,OAAO,CAAC;EAC/D;EAEAY,QAAQA,CAAA;IACN,OAAO,iBAAiB,IAAI,CAACT,MAAM,IAAI,IAAI,CAACX,GAAG,GAAG;EACpD;EAEAqB,MAAMA,CAAA;IACJ,OAAO;MACLtE,IAAI,EAAE,eAAe;MACrB4D,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBX,GAAG,EAAE,IAAI,CAACA,GAAG;MACbU,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BF,OAAO,EAAE,IAAI,CAACA;KACf;EACH;;AAGF;AACO,MAAMc,WAAW,GAAGA,CACzBzF,QAA8B,EAC9BC,OAA0B,KACvBjC,KAAK,CAACoE,MAAM,CAAC1E,MAAM,CAACA,MAAM,EAAEqC,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAAC,CAAC;AAEzD;AAAAiC,OAAA,CAAAuD,WAAA,GAAAA,WAAA;AACO,MAAMC,KAAK,GAAGA,CACnB1F,QAA8B,EAC9BC,OAA0B,KAE1BjC,KAAK,CAAC2H,QAAQ,CACZ3H,KAAK,CAACoE,MAAM,CAAC1E,MAAM,CAACA,MAAM,EAAEqC,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAAC,CAAC,EACpDxB,gBAAgB,CAACiH,KAAK,EACtBxI,IAAI,CAAC0I,SAAS,EACdtH,WAAW,CAACoH,KAAK,CAClB;AAEH;AAAAxD,OAAA,CAAAwD,KAAA,GAAAA,KAAA;AACO,MAAMG,WAAW,GAAGA,CACzB7F,QAA8B,EAC9BC,OAA8C,KAE9CjC,KAAK,CAAC2H,QAAQ,CACZ3H,KAAK,CAACoE,MAAM,CACV1E,MAAM,CAACA,MAAM,EACbK,MAAM,CAACwF,OAAO,CAACzF,MAAM,CAACgI,MAAM,CAAC7F,OAAO,CAAC,EAAGA,OAAO,IAAKF,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAAC,CAAC,CAC7E,EACDxB,gBAAgB,CAACiH,KAAK,EACtBxI,IAAI,CAAC0I,SAAS,EACdtH,WAAW,CAACoH,KAAK,CAClB;AAAAxD,OAAA,CAAA2D,WAAA,GAAAA,WAAA;AAEH,MAAM/B,cAAc,GAAGA,CAACN,OAAoC,EAAEG,QAAuC,KACnG5F,MAAM,CAACgI,OAAO,CAAC,MAA+C;EAC5D,MAAMpD,YAAY,GAAIa,OAA6B,CAACG,QAAQ;EAC5D,IAAIH,OAAO,CAACsB,MAAM,KAAK,MAAM,EAAE;IAC7BnC,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErC,QAAQ,CAACgB,OAAO,CAAC;IACzDhC,YAAY,CAACO,GAAG,EAAE;IAClB,OAAOnF,MAAM,CAAC6C,IAAI;EACpB;EACA,MAAMqF,IAAI,GAAGtC,QAAQ,CAACsC,IAAI;EAC1B,QAAQA,IAAI,CAAC/E,IAAI;IACf,KAAK,OAAO;MAAE;QACZyB,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErC,QAAQ,CAACgB,OAAO,CAAC;QACzDhC,YAAY,CAACO,GAAG,EAAE;QAClB,OAAOnF,MAAM,CAAC6C,IAAI;MACpB;IACA,KAAK,KAAK;MAAE;QACV+B,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErC,QAAQ,CAACgB,OAAO,CAAC;QACzD,IACE,OAAOsB,IAAI,CAACA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACA,IAAI,KAAK,IAAI,IAAI,MAAM,IAAIA,IAAI,CAACA,IAAI,IAC1E,OAAOA,IAAI,CAACA,IAAI,CAACpE,IAAI,KAAK,UAAU,EACpC;UACA,OAAO9D,MAAM,CAACmI,UAAU,CAAC;YACvBC,GAAG,EAAGC,MAAM,IAAK,IAAA/H,SAAA,CAAAgI,QAAQ,EAACJ,IAAI,CAACA,IAAW,EAAEtD,YAAY,EAAE;cAAEyD,MAAM;cAAElD,GAAG,EAAE;YAAI,CAAE,CAAC;YAChFoD,KAAK,EAAG5F,KAAK,IACX/C,KAAK,CAAC4I,aAAa,CAAC;cAClB/C,OAAO;cACPG,QAAQ;cACRc,MAAM,EAAE,QAAQ;cAChB/D;aACD;WACJ,CAAC;QACJ;QACAiC,YAAY,CAACO,GAAG,CAAC+C,IAAI,CAACA,IAAI,CAAC;QAC3B,OAAOlI,MAAM,CAAC6C,IAAI;MACpB;IACA,KAAK,YAAY;MAAE;QACjB+B,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErC,QAAQ,CAACgB,OAAO,CAAC;QACzDhC,YAAY,CAACO,GAAG,CAAC+C,IAAI,CAACA,IAAI,CAAC;QAC3B,OAAOlI,MAAM,CAAC6C,IAAI;MACpB;IACA,KAAK,UAAU;MAAE;QACf,OAAO7C,MAAM,CAACwC,KAAK,CAA6BC,MAAM,IAAI;UACxD,MAAM3B,CAAC,GAAG,IAAI2H,QAAQ,CAACP,IAAI,CAACQ,QAAQ,CAAC;UACrC,MAAM9B,OAAO,GAAG;YACd,GAAGhB,QAAQ,CAACgB,OAAO;YACnB,GAAGrF,MAAM,CAACoH,WAAW,CAAC7H,CAAC,CAAC8F,OAAO;WAChC;UACDhC,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErB,OAAO,CAAC;UAChDvG,WAAA,CAAAuI,QAAQ,CAACC,OAAO,CAAC/H,CAAC,CAACoH,IAAW,CAAC,CAC5BpE,IAAI,CAACc,YAAY,CAAC,CAClB9B,EAAE,CAAC,OAAO,EAAGH,KAAK,IAAI;YACrBF,MAAM,CAACzC,MAAM,CAAC+C,IAAI,CAACnD,KAAK,CAAC4I,aAAa,CAAC;cACrC/C,OAAO;cACPG,QAAQ;cACRc,MAAM,EAAE,QAAQ;cAChB/D;aACD,CAAC,CAAC,CAAC;UACN,CAAC,CAAC,CACDmG,IAAI,CAAC,QAAQ,EAAE,MAAK;YACnBrG,MAAM,CAACzC,MAAM,CAAC6C,IAAI,CAAC;UACrB,CAAC,CAAC;QACN,CAAC,CAAC;MACJ;IACA,KAAK,QAAQ;MAAE;QACb+B,YAAY,CAACM,SAAS,CAACU,QAAQ,CAACqC,MAAM,EAAErC,QAAQ,CAACgB,OAAO,CAAC;QACzD,OAAOxG,MAAM,CAAC2I,GAAG,CACf3I,MAAM,CAAC4I,QAAQ,CACbd,IAAI,CAACX,MAAM,EACV5E,KAAK,IACJ/C,KAAK,CAAC4I,aAAa,CAAC;UAClB/C,OAAO;UACPG,QAAQ;UACRc,MAAM,EAAE,QAAQ;UAChB/D;SACD,CAAC,CACL,EACDnC,QAAQ,CAACyI,YAAY,CAAC,MAAMrE,YAAY,EAAGjC,KAAK,IAC9C/C,KAAK,CAAC4I,aAAa,CAAC;UAClB/C,OAAO;UACPG,QAAQ;UACRc,MAAM,EAAE,QAAQ;UAChB/D;SACD,CAAC,CAAC,CACN;MACH;EACF;AACF,CAAC,CAAC;AAEJ;AACO,MAAMuG,aAAa,GAAIC,IAAiC,IAC5DA,IAA0B,CAAChD,MAAM;AAAAhC,OAAA,CAAA+E,aAAA,GAAAA,aAAA"}
|
|
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<
|
|
33
|
-
<R, E, App extends App.Default<any, any>>(httpApp: App.Default<R, E>, middleware: Middleware.Middleware.Applied<R, E, App>): Effect.Effect<
|
|
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
|
|
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
|
|
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":";;AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,GAAG,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,KAAK,IAAI,MAAM,4BAA4B,CAAA;AACvD,OAAO,KAAK,KAAK,UAAU,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,KAAK,QAAQ,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,KAAK,MAAM,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,KAAK,aAAa,MAAM,qCAAqC,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAA;AAEpC,OAAO,KAAK,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,EACvF,OAAO,EAAE,GAAG,CAAC,aAAa,KACvB,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,MAAM,EACb,UAAU,EACV,KAAK,CAAC,KAAK,CACI,CAAA;AAEjB;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE;IACxB,CAAC,CAAC,EAAE,CAAC,EACH,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,MAAM,CAAC,MAAM,CACd,
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../src/Http/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -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 @@
|
|
|
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
package/dist/esm/index.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
154
|
-
if (
|
|
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.
|
|
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
|
-
"
|
|
14
|
+
"ws": "^8.16.0",
|
|
15
|
+
"@effect/platform-node-shared": "^0.2.4"
|
|
15
16
|
},
|
|
16
17
|
"peerDependencies": {
|
|
17
|
-
"@effect/platform": "^0.
|
|
18
|
-
"effect": "^2.4.
|
|
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
|
],
|
package/src/Http/Server.ts
CHANGED
|
@@ -40,17 +40,17 @@ export const makeHandler: {
|
|
|
40
40
|
<R, E>(
|
|
41
41
|
httpApp: App.Default<R, E>
|
|
42
42
|
): Effect.Effect<
|
|
43
|
-
|
|
43
|
+
(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void,
|
|
44
44
|
never,
|
|
45
|
-
|
|
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
|
-
|
|
51
|
+
(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void,
|
|
52
52
|
never,
|
|
53
|
-
|
|
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
|
-
|
|
85
|
+
ConfigError.ConfigError | ServeError
|
|
86
86
|
> = internal.layerConfig
|
package/src/index.ts
CHANGED
|
@@ -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
|
|
23
|
+
import * as Scope from "effect/Scope"
|
|
23
24
|
import * as Stream from "effect/Stream"
|
|
24
|
-
import
|
|
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(
|
|
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).
|
|
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).
|
|
288
|
-
if (
|
|
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
|