@fncts/node 0.0.44 → 0.0.45
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/LICENSE +26 -0
- package/_cjs/chunk.cjs +28 -0
- package/_cjs/fs/api.cjs +288 -277
- package/_cjs/fs/api.cjs.map +1 -1
- package/_cjs/fs.cjs +46 -17
- package/_cjs/global.cjs +0 -2
- package/_cjs/http/IncomingMessage.cjs +60 -60
- package/_cjs/http/IncomingMessage.cjs.map +1 -1
- package/_cjs/http/Server.cjs +180 -195
- package/_cjs/http/Server.cjs.map +1 -1
- package/_cjs/http/ServerRequest.cjs +41 -42
- package/_cjs/http/ServerRequest.cjs.map +1 -1
- package/_cjs/index.cjs +0 -2
- package/_cjs/stream/api.cjs +215 -238
- package/_cjs/stream/api.cjs.map +1 -1
- package/_cjs/stream.cjs +10 -17
- package/_mjs/fs/api.mjs +296 -302
- package/_mjs/fs/api.mjs.map +1 -1
- package/_mjs/fs.mjs +2 -3
- package/_mjs/global.mjs +0 -2
- package/_mjs/http/IncomingMessage.mjs +49 -50
- package/_mjs/http/IncomingMessage.mjs.map +1 -1
- package/_mjs/http/Server.mjs +139 -169
- package/_mjs/http/Server.mjs.map +1 -1
- package/_mjs/http/ServerRequest.mjs +36 -32
- package/_mjs/http/ServerRequest.mjs.map +1 -1
- package/_mjs/index.mjs +0 -2
- package/_mjs/stream/api.mjs +164 -205
- package/_mjs/stream/api.mjs.map +1 -1
- package/_mjs/stream.mjs +2 -3
- package/_src/fs/api.ts +6 -7
- package/package.json +7 -3
- package/_cjs/fs.cjs.map +0 -1
- package/_cjs/global.cjs.map +0 -1
- package/_cjs/index.cjs.map +0 -1
- package/_cjs/stream.cjs.map +0 -1
- package/_mjs/fs.mjs.map +0 -1
- package/_mjs/global.mjs.map +0 -1
- package/_mjs/index.mjs.map +0 -1
- package/_mjs/stream.mjs.map +0 -1
package/_mjs/http/Server.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
const fileName_1 = "(@fncts/node) src/http/Server.ts";
|
|
2
1
|
import * as tsplus_module_1 from "@fncts/io/IO/api";
|
|
2
|
+
import * as tsplus_module_12 from "@fncts/io/IO/runtime";
|
|
3
|
+
import * as tsplus_module_4 from "@fncts/io/IO/api/acquireRelease";
|
|
4
|
+
import * as tsplus_module_17 from "@fncts/io/Stream/api";
|
|
5
|
+
import * as tsplus_module_15 from "@fncts/base/data/Cause/api";
|
|
3
6
|
import * as tsplus_module_2 from "@fncts/io/IO/api/addFinalizer";
|
|
4
7
|
import * as tsplus_module_3 from "@fncts/http/Server";
|
|
5
|
-
import * as tsplus_module_4 from "@fncts/io/IO/api/acquireRelease";
|
|
6
8
|
import * as tsplus_module_5 from "@fncts/io/Scope/api";
|
|
7
9
|
import * as tsplus_module_6 from "@fncts/io/IO/api/memoize";
|
|
8
10
|
import * as tsplus_module_7 from "@fncts/io/IO/api/scope";
|
|
@@ -10,189 +12,157 @@ import * as tsplus_module_8 from "@fncts/base/data/Exit/definition";
|
|
|
10
12
|
import * as tsplus_module_9 from "@fncts/http/HttpApp";
|
|
11
13
|
import * as tsplus_module_10 from "@fncts/http/ServerRequest/definition";
|
|
12
14
|
import * as tsplus_module_11 from "@fncts/io/IO/api/environment";
|
|
13
|
-
import * as tsplus_module_12 from "@fncts/io/IO/runtime";
|
|
14
15
|
import * as tsplus_module_13 from "@fncts/io/FiberSet";
|
|
15
16
|
import * as tsplus_module_14 from "@fncts/http/Socket";
|
|
16
|
-
import * as tsplus_module_15 from "@fncts/base/data/Cause/api";
|
|
17
17
|
import * as tsplus_module_16 from "@fncts/http/Body/definition";
|
|
18
|
-
import * as tsplus_module_17 from "@fncts/io/Stream/api";
|
|
19
|
-
export const makeHandler = makeHandler_1;
|
|
20
18
|
import { ResponseError } from "@fncts/http/ResponseError";
|
|
21
|
-
import {
|
|
22
|
-
import { clientAbortFiberId, ServeError } from "@fncts/http/ServerError";
|
|
19
|
+
import { ServeError, clientAbortFiberId } from "@fncts/http/ServerError";
|
|
23
20
|
import { ServerRequestImpl } from "@fncts/node/http/ServerRequest";
|
|
24
21
|
import * as NodeStream from "@fncts/node/stream";
|
|
25
22
|
import * as Http from "node:http";
|
|
26
23
|
import { Readable } from "node:stream";
|
|
27
24
|
import { pipeline } from "node:stream/promises";
|
|
28
25
|
import * as ws from "ws";
|
|
26
|
+
//#region build/esm/http/Server.js
|
|
27
|
+
const fileName_1 = "(@fncts/node) src/http/Server.ts";
|
|
28
|
+
const makeHandler = makeHandler_1;
|
|
29
29
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
} else {
|
|
65
|
-
resume(tsplus_module_1.unit);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}), fileName_1 + ":34:24")), fileName_1 + ":31:20")(tsplus_module_7.scope);
|
|
30
|
+
* @tsplus static fncts.node.http.ServerOps make
|
|
31
|
+
*/
|
|
32
|
+
function make(evaluate, options) {
|
|
33
|
+
return tsplus_module_1.flatMap((scope) => tsplus_module_1.flatMap((server) => tsplus_module_1.flatMap(() => {
|
|
34
|
+
const address = server.address();
|
|
35
|
+
return tsplus_module_1.map((wss) => tsplus_module_3.make({
|
|
36
|
+
address: typeof address === "string" ? {
|
|
37
|
+
_tag: "UnixAddress",
|
|
38
|
+
path: address
|
|
39
|
+
} : {
|
|
40
|
+
_tag: "TcpAddress",
|
|
41
|
+
hostname: address.address === "::" ? "0.0.0.0" : address.address,
|
|
42
|
+
port: address.port
|
|
43
|
+
},
|
|
44
|
+
serve: (httpApp, middleware) => tsplus_module_1.flatMap((handler) => tsplus_module_1.flatMap((upgradeHandler) => tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":92:12")(tsplus_module_1.succeed(() => server.on("upgrade", upgradeHandler), fileName_1 + ":92:15")), fileName_1 + ":91:12")(tsplus_module_1.succeed(() => server.on("request", handler), fileName_1 + ":91:15")), fileName_1 + ":83:12")(tsplus_module_2.addFinalizer(() => tsplus_module_1.succeed(() => {
|
|
45
|
+
server.off("request", handler);
|
|
46
|
+
server.off("upgrade", upgradeHandler);
|
|
47
|
+
}, fileName_1 + ":85:17"), fileName_1 + ":84:28")), fileName_1 + ":82:35")(makeUpgradeHandler(wss, httpApp, middleware)), fileName_1 + ":81:35")(makeHandler_1(httpApp, middleware))
|
|
48
|
+
}), fileName_1 + ":60:18")(tsplus_module_6.memoize(tsplus_module_5.extend(() => tsplus_module_4.acquireRelease(() => tsplus_module_1.succeed(() => new ws.WebSocketServer({ noServer: true }), fileName_1 + ":62:29"), (wss) => tsplus_module_1.async((resume) => {
|
|
49
|
+
wss.close(() => resume(tsplus_module_1.unit));
|
|
50
|
+
}), fileName_1 + ":62:26"), fileName_1 + ":61:19")(scope), fileName_1 + ":67:8"));
|
|
51
|
+
}, fileName_1 + ":47:6")(tsplus_module_1.async((resume) => {
|
|
52
|
+
server.on("error", (error) => {
|
|
53
|
+
resume(tsplus_module_1.failNow(new ServeError(error), fileName_1 + ":50:28"));
|
|
54
|
+
});
|
|
55
|
+
server.listen(options, () => {
|
|
56
|
+
resume(tsplus_module_1.unit);
|
|
57
|
+
});
|
|
58
|
+
})), fileName_1 + ":33:21")(tsplus_module_4.acquireRelease(() => tsplus_module_1.succeed(evaluate, fileName_1 + ":34:27"), (server) => tsplus_module_1.async((resume) => {
|
|
59
|
+
server.close((error) => {
|
|
60
|
+
if (error) resume(tsplus_module_1.haltNow(error, fileName_1 + ":38:32"));
|
|
61
|
+
else resume(tsplus_module_1.unit);
|
|
62
|
+
});
|
|
63
|
+
}), fileName_1 + ":34:24")), fileName_1 + ":31:20")(tsplus_module_7.scope);
|
|
69
64
|
}
|
|
70
65
|
function makeHandler_1(httpApp, middleware) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
}, fileName_1 + ":131:49")(tsplus_module_13.makeRuntime());
|
|
66
|
+
const handledApp = tsplus_module_9.toHandled((request, exit) => {
|
|
67
|
+
if (tsplus_module_8.isSuccess(exit)) return tsplus_module_1.catchAllCause((cause) => handleCause(request, cause), fileName_1 + ":126:63")(handleResponse(request, exit.value));
|
|
68
|
+
return handleCause(request, exit.cause);
|
|
69
|
+
}, middleware)(httpApp);
|
|
70
|
+
return tsplus_module_1.map((runFork) => {
|
|
71
|
+
return function handler(nodeRequest, nodeResponse) {
|
|
72
|
+
const fiber = runFork(tsplus_module_11.provideSomeService(new ServerRequestImpl(nodeRequest, nodeResponse), tsplus_module_10.ServerRequestTag, fileName_1 + ":134:38")(handledApp));
|
|
73
|
+
nodeResponse.on("close", () => {
|
|
74
|
+
if (!nodeResponse.writableEnded) {
|
|
75
|
+
if (!nodeResponse.headersSent) nodeResponse.writeHead(499);
|
|
76
|
+
nodeResponse.end();
|
|
77
|
+
tsplus_module_12.unsafeRunOrFork(fiber.interruptAsFork(clientAbortFiberId));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
}, fileName_1 + ":131:49")(tsplus_module_13.makeRuntime());
|
|
91
82
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
}, fileName_1 + ":165:49")(tsplus_module_13.makeRuntime());
|
|
83
|
+
function makeUpgradeHandler(wss, httpApp, middleware) {
|
|
84
|
+
const handledApp = tsplus_module_9.toHandled((request, exit) => {
|
|
85
|
+
if (tsplus_module_8.isSuccess(exit)) return tsplus_module_1.catchAllCause((cause) => handleCause(request, cause), fileName_1 + ":160:63")(handleResponse(request, exit.value));
|
|
86
|
+
return handleCause(request, exit.cause);
|
|
87
|
+
}, middleware)(httpApp);
|
|
88
|
+
return tsplus_module_1.map((runFork) => {
|
|
89
|
+
return function handler(nodeRequest, socket, head) {
|
|
90
|
+
let nodeResponse_ = void 0;
|
|
91
|
+
const nodeResponse = () => {
|
|
92
|
+
if (nodeResponse_ === void 0) {
|
|
93
|
+
nodeResponse_ = new Http.ServerResponse(nodeRequest);
|
|
94
|
+
nodeResponse_.assignSocket(socket);
|
|
95
|
+
}
|
|
96
|
+
return nodeResponse_;
|
|
97
|
+
};
|
|
98
|
+
const upgradeEffect = tsplus_module_14.fromWebSocket(tsplus_module_1.flatMap((wss) => tsplus_module_4.acquireRelease(() => tsplus_module_1.async((resume) => {
|
|
99
|
+
wss.handleUpgrade(nodeRequest, socket, head, (ws) => {
|
|
100
|
+
resume(tsplus_module_1.succeedNow(ws, fileName_1 + ":182:37"));
|
|
101
|
+
});
|
|
102
|
+
}), (ws) => tsplus_module_1.succeed(() => ws.close(), fileName_1 + ":185:23"), fileName_1 + ":179:28"), fileName_1 + ":178:20")(wss));
|
|
103
|
+
const fiber = runFork(tsplus_module_11.provideSomeService(new ServerRequestImpl(nodeRequest, nodeResponse, upgradeEffect), tsplus_module_10.ServerRequestTag, fileName_1 + ":191:38")(handledApp));
|
|
104
|
+
socket.on("close", () => {
|
|
105
|
+
const res = nodeResponse();
|
|
106
|
+
if (!socket.writableEnded) {
|
|
107
|
+
if (!res.headersSent) res.writeHead(499);
|
|
108
|
+
res.end();
|
|
109
|
+
tsplus_module_12.unsafeRunOrFork(fiber.interruptAsFork(clientAbortFiberId));
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
}, fileName_1 + ":165:49")(tsplus_module_13.makeRuntime());
|
|
127
114
|
}
|
|
128
115
|
function handleCause(request, cause) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (!nodeResponse.writableEnded) {
|
|
135
|
-
nodeResponse.end();
|
|
136
|
-
}
|
|
137
|
-
}, fileName_1 + ":212:12");
|
|
116
|
+
return tsplus_module_1.succeed(() => {
|
|
117
|
+
const nodeResponse = request.resolvedResponse;
|
|
118
|
+
if (!nodeResponse.headersSent) nodeResponse.writeHead(tsplus_module_15.isInterruptedOnly(cause) ? 503 : 500);
|
|
119
|
+
if (!nodeResponse.writableEnded) nodeResponse.end();
|
|
120
|
+
}, fileName_1 + ":212:12");
|
|
138
121
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
};
|
|
182
|
-
nodeResponse.writeHead(response.status, headers);
|
|
183
|
-
Readable.fromWeb(r.body).pipe(nodeResponse).on("error", error => {
|
|
184
|
-
resume(tsplus_module_1.failNow(new ResponseError(request, response, "Decode", error), fileName_1 + ":272:32"));
|
|
185
|
-
}).once("finish", () => {
|
|
186
|
-
resume(tsplus_module_1.unit);
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
case 4 /* BodyTag.Stream */:
|
|
191
|
-
{
|
|
192
|
-
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
193
|
-
return tsplus_module_17.run(NodeStream.fromWritable(() => nodeResponse, error => new ResponseError(request, response, "Decode", error)), fileName_1 + ":283:15")(tsplus_module_17.mapError(error => new ResponseError(request, response, "Decode", error), fileName_1 + ":282:20")(response.body.stream));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}, fileName_1 + ":224:18");
|
|
122
|
+
function handleResponse(request, response) {
|
|
123
|
+
return tsplus_module_1.defer(() => {
|
|
124
|
+
const nodeResponse = request.resolvedResponse;
|
|
125
|
+
if (nodeResponse.writableEnded) return tsplus_module_1.unit;
|
|
126
|
+
else if (request.method === "HEAD") {
|
|
127
|
+
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
128
|
+
nodeResponse.end();
|
|
129
|
+
return tsplus_module_1.unit;
|
|
130
|
+
}
|
|
131
|
+
tsplus_module_16.concrete(response.body);
|
|
132
|
+
switch (response.body._tag) {
|
|
133
|
+
case 0:
|
|
134
|
+
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
135
|
+
nodeResponse.end();
|
|
136
|
+
return tsplus_module_1.unit;
|
|
137
|
+
case 1:
|
|
138
|
+
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
139
|
+
if (typeof response.body.body === "object" && response.body.body !== null && "pipe" in response.body.body && typeof response.body.body.pipe === "function") return tsplus_module_1.fromPromiseCatch(() => pipeline(response.body.body, nodeResponse, { end: true }), (error) => new ResponseError(request, response, "Decode", error), fileName_1 + ":248:37");
|
|
140
|
+
nodeResponse.end(response.body.body);
|
|
141
|
+
return tsplus_module_1.unit;
|
|
142
|
+
case 2:
|
|
143
|
+
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
144
|
+
nodeResponse.end(response.body.body);
|
|
145
|
+
return tsplus_module_1.unit;
|
|
146
|
+
case 3: return tsplus_module_1.async((resume) => {
|
|
147
|
+
const r = new Response(response.body.formData);
|
|
148
|
+
const headers = {
|
|
149
|
+
...response.headers,
|
|
150
|
+
...Object.fromEntries(r.headers)
|
|
151
|
+
};
|
|
152
|
+
nodeResponse.writeHead(response.status, headers);
|
|
153
|
+
Readable.fromWeb(r.body).pipe(nodeResponse).on("error", (error) => {
|
|
154
|
+
resume(tsplus_module_1.failNow(new ResponseError(request, response, "Decode", error), fileName_1 + ":272:32"));
|
|
155
|
+
}).once("finish", () => {
|
|
156
|
+
resume(tsplus_module_1.unit);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
case 4:
|
|
160
|
+
nodeResponse.writeHead(response.status, response.headers.toHeadersInit());
|
|
161
|
+
return tsplus_module_17.run(NodeStream.fromWritable(() => nodeResponse, (error) => new ResponseError(request, response, "Decode", error)), fileName_1 + ":283:15")(tsplus_module_17.mapError((error) => new ResponseError(request, response, "Decode", error), fileName_1 + ":282:20")(response.body.stream));
|
|
162
|
+
}
|
|
163
|
+
}, fileName_1 + ":224:18");
|
|
197
164
|
}
|
|
165
|
+
//#endregion
|
|
166
|
+
export { handleResponse, make, makeHandler, makeUpgradeHandler };
|
|
167
|
+
|
|
198
168
|
//# sourceMappingURL=Server.mjs.map
|
package/_mjs/http/Server.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.mjs","names":["makeHandler","makeHandler_1","ResponseError","Server","clientAbortFiberId","ServeError","ServerRequestImpl","NodeStream","Http","Readable","pipeline","ws","make","evaluate","options","tsplus_module_1","flatMap","scope","server","address","wss","tsplus_module_3","_tag","path","hostname","port","serve","httpApp","middleware","handler","upgradeHandler","map","fileName_1","succeed","on","tsplus_module_2","addFinalizer","off","makeUpgradeHandler","tsplus_module_6","memoize","tsplus_module_5","extend","tsplus_module_4","acquireRelease","WebSocketServer","noServer","async","resume","close","unit","error","failNow","listen","haltNow","tsplus_module_7","handledApp","tsplus_module_9","toHandled","request","exit","tsplus_module_8","isSuccess","catchAllCause","cause","handleCause","handleResponse","value","runFork","nodeRequest","nodeResponse","fiber","tsplus_module_11","provideSomeService","tsplus_module_10","ServerRequestTag","writableEnded","headersSent","writeHead","end","tsplus_module_12","unsafeRunOrFork","interruptAsFork","tsplus_module_13","makeRuntime","socket","head","nodeResponse_","undefined","ServerResponse","assignSocket","upgradeEffect","tsplus_module_14","fromWebSocket","handleUpgrade","succeedNow","res","resolvedResponse","tsplus_module_15","isInterruptedOnly","response","defer","method","status","headers","toHeadersInit","tsplus_module_16","concrete","body","pipe","fromPromiseCatch","r","Response","formData","Object","fromEntries","fromWeb","once","tsplus_module_17","run","fromWritable","mapError","stream"],"sources":["../../_src/http/Server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Server.mjs","names":[],"sources":["../../esm/http/Server.js"],"sourcesContent":["const fileName_1 = \"(@fncts/node) src/http/Server.ts\";\nimport * as tsplus_module_1 from \"@fncts/io/IO/api\";\nimport * as tsplus_module_2 from \"@fncts/io/IO/api/addFinalizer\";\nimport * as tsplus_module_3 from \"@fncts/http/Server\";\nimport * as tsplus_module_4 from \"@fncts/io/IO/api/acquireRelease\";\nimport * as tsplus_module_5 from \"@fncts/io/Scope/api\";\nimport * as tsplus_module_6 from \"@fncts/io/IO/api/memoize\";\nimport * as tsplus_module_7 from \"@fncts/io/IO/api/scope\";\nimport * as tsplus_module_8 from \"@fncts/base/data/Exit/definition\";\nimport * as tsplus_module_9 from \"@fncts/http/HttpApp\";\nimport * as tsplus_module_10 from \"@fncts/http/ServerRequest/definition\";\nimport * as tsplus_module_11 from \"@fncts/io/IO/api/environment\";\nimport * as tsplus_module_12 from \"@fncts/io/IO/runtime\";\nimport * as tsplus_module_13 from \"@fncts/io/FiberSet\";\nimport * as tsplus_module_14 from \"@fncts/http/Socket\";\nimport * as tsplus_module_15 from \"@fncts/base/data/Cause/api\";\nimport * as tsplus_module_16 from \"@fncts/http/Body/definition\";\nimport * as tsplus_module_17 from \"@fncts/io/Stream/api\";\nexport const makeHandler = makeHandler_1;\nimport { ResponseError } from \"@fncts/http/ResponseError\";\nimport { Server } from \"@fncts/http/Server\";\nimport { clientAbortFiberId, ServeError } from \"@fncts/http/ServerError\";\nimport { ServerRequestImpl } from \"@fncts/node/http/ServerRequest\";\nimport * as NodeStream from \"@fncts/node/stream\";\nimport * as Http from \"node:http\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport * as ws from \"ws\";\n/**\n * @tsplus static fncts.node.http.ServerOps make\n */\nexport function make(evaluate, options) {\n return tsplus_module_1.flatMap(scope => tsplus_module_1.flatMap(server => tsplus_module_1.flatMap(() => {\n const address = server.address();\n return tsplus_module_1.map(wss => tsplus_module_3.make({\n address: typeof address === \"string\"\n ? { _tag: \"UnixAddress\", path: address }\n : {\n _tag: \"TcpAddress\",\n hostname: address.address === \"::\" ? \"0.0.0.0\" : address.address,\n port: address.port,\n },\n serve: (httpApp, middleware) => tsplus_module_1.flatMap(handler => tsplus_module_1.flatMap(upgradeHandler => tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + \":92:12\")(tsplus_module_1.succeed(() => server.on(\"upgrade\", upgradeHandler), fileName_1 + \":92:15\")), fileName_1 + \":91:12\")(tsplus_module_1.succeed(() => server.on(\"request\", handler), fileName_1 + \":91:15\")), fileName_1 + \":83:12\")(tsplus_module_2.addFinalizer(() => tsplus_module_1.succeed(() => {\n server.off(\"request\", handler);\n server.off(\"upgrade\", upgradeHandler);\n }, fileName_1 + \":85:17\"), fileName_1 + \":84:28\")), fileName_1 + \":82:35\")(makeUpgradeHandler(wss, httpApp, middleware)), fileName_1 + \":81:35\")(makeHandler_1(httpApp, middleware)),\n }), fileName_1 + \":60:18\")(tsplus_module_6.memoize(tsplus_module_5.extend(() => tsplus_module_4.acquireRelease(() => tsplus_module_1.succeed(() => new ws.WebSocketServer({ noServer: true }), fileName_1 + \":62:29\"), (wss) => tsplus_module_1.async((resume) => {\n wss.close(() => resume(tsplus_module_1.unit));\n }), fileName_1 + \":62:26\"), fileName_1 + \":61:19\")(scope), fileName_1 + \":67:8\"));\n }, fileName_1 + \":47:6\")(tsplus_module_1.async((resume) => {\n server.on(\"error\", (error) => {\n resume(tsplus_module_1.failNow(new ServeError(error), fileName_1 + \":50:28\"));\n });\n server.listen(options, () => {\n resume(tsplus_module_1.unit);\n });\n })), fileName_1 + \":33:21\")(tsplus_module_4.acquireRelease(() => tsplus_module_1.succeed(evaluate, fileName_1 + \":34:27\"), (server) => tsplus_module_1.async((resume) => {\n server.close((error) => {\n if (error) {\n resume(tsplus_module_1.haltNow(error, fileName_1 + \":38:32\"));\n }\n else {\n resume(tsplus_module_1.unit);\n }\n });\n }), fileName_1 + \":34:24\")), fileName_1 + \":31:20\")(tsplus_module_7.scope);\n}\nfunction makeHandler_1(httpApp, middleware) {\n const handledApp = tsplus_module_9.toHandled((request, exit) => {\n if (tsplus_module_8.isSuccess(exit)) {\n return tsplus_module_1.catchAllCause((cause) => handleCause(request, cause), fileName_1 + \":126:63\")(handleResponse(request, exit.value));\n }\n return handleCause(request, exit.cause);\n }, middleware)(httpApp);\n return tsplus_module_1.map((runFork) => {\n return function handler(nodeRequest, nodeResponse) {\n const fiber = runFork(tsplus_module_11.provideSomeService(new ServerRequestImpl(nodeRequest, nodeResponse), tsplus_module_10.ServerRequestTag, fileName_1 + \":134:38\")(handledApp));\n nodeResponse.on(\"close\", () => {\n if (!nodeResponse.writableEnded) {\n if (!nodeResponse.headersSent) {\n nodeResponse.writeHead(499);\n }\n nodeResponse.end();\n tsplus_module_12.unsafeRunOrFork(fiber.interruptAsFork(clientAbortFiberId));\n }\n });\n };\n }, fileName_1 + \":131:49\")(tsplus_module_13.makeRuntime());\n}\nexport function makeUpgradeHandler(wss, httpApp, middleware) {\n const handledApp = tsplus_module_9.toHandled((request, exit) => {\n if (tsplus_module_8.isSuccess(exit)) {\n return tsplus_module_1.catchAllCause((cause) => handleCause(request, cause), fileName_1 + \":160:63\")(handleResponse(request, exit.value));\n }\n return handleCause(request, exit.cause);\n }, middleware)(httpApp);\n return tsplus_module_1.map((runFork) => {\n return function handler(nodeRequest, socket, head) {\n let nodeResponse_ = undefined;\n const nodeResponse = () => {\n if (nodeResponse_ === undefined) {\n nodeResponse_ = new Http.ServerResponse(nodeRequest);\n nodeResponse_.assignSocket(socket);\n }\n return nodeResponse_;\n };\n const upgradeEffect = tsplus_module_14.fromWebSocket(tsplus_module_1.flatMap((wss) => tsplus_module_4.acquireRelease(() => tsplus_module_1.async((resume) => {\n wss.handleUpgrade(nodeRequest, socket, head, (ws) => {\n resume(tsplus_module_1.succeedNow(ws, fileName_1 + \":182:37\"));\n });\n }), (ws) => tsplus_module_1.succeed(() => ws.close(), fileName_1 + \":185:23\"), fileName_1 + \":179:28\"), fileName_1 + \":178:20\")(wss));\n const fiber = runFork(tsplus_module_11.provideSomeService(new ServerRequestImpl(nodeRequest, nodeResponse, upgradeEffect), tsplus_module_10.ServerRequestTag, fileName_1 + \":191:38\")(handledApp));\n socket.on(\"close\", () => {\n const res = nodeResponse();\n if (!socket.writableEnded) {\n if (!res.headersSent) {\n res.writeHead(499);\n }\n res.end();\n tsplus_module_12.unsafeRunOrFork(fiber.interruptAsFork(clientAbortFiberId));\n }\n });\n };\n }, fileName_1 + \":165:49\")(tsplus_module_13.makeRuntime());\n}\nfunction handleCause(request, cause) {\n return tsplus_module_1.succeed(() => {\n const nodeResponse = request.resolvedResponse;\n if (!nodeResponse.headersSent) {\n nodeResponse.writeHead(tsplus_module_15.isInterruptedOnly(cause) ? 503 : 500);\n }\n if (!nodeResponse.writableEnded) {\n nodeResponse.end();\n }\n }, fileName_1 + \":212:12\");\n}\nexport function handleResponse(request, response) {\n return tsplus_module_1.defer(() => {\n const nodeResponse = request.resolvedResponse;\n if (nodeResponse.writableEnded) {\n return tsplus_module_1.unit;\n }\n else if (request.method === \"HEAD\") {\n nodeResponse.writeHead(response.status, response.headers.toHeadersInit());\n nodeResponse.end();\n return tsplus_module_1.unit;\n }\n tsplus_module_16.concrete(response.body);\n switch (response.body._tag) {\n case 0 /* BodyTag.Empty */: {\n nodeResponse.writeHead(response.status, response.headers.toHeadersInit());\n nodeResponse.end();\n return tsplus_module_1.unit;\n }\n case 1 /* BodyTag.Raw */: {\n nodeResponse.writeHead(response.status, response.headers.toHeadersInit());\n if (typeof response.body.body === \"object\" &&\n response.body.body !== null &&\n \"pipe\" in response.body.body &&\n typeof response.body.body.pipe === \"function\") {\n return tsplus_module_1.fromPromiseCatch(() => pipeline(response.body.body, nodeResponse, { end: true }), (error) => new ResponseError(request, response, \"Decode\", error), fileName_1 + \":248:37\");\n }\n nodeResponse.end(response.body.body);\n return tsplus_module_1.unit;\n }\n case 2 /* BodyTag.Uint8Array */: {\n nodeResponse.writeHead(response.status, response.headers.toHeadersInit());\n nodeResponse.end(response.body.body);\n return tsplus_module_1.unit;\n }\n case 3 /* BodyTag.FormData */: {\n return tsplus_module_1.async((resume) => {\n const r = new Response(response.body.formData);\n const headers = {\n ...response.headers,\n ...Object.fromEntries(r.headers),\n };\n nodeResponse.writeHead(response.status, headers);\n Readable.fromWeb(r.body)\n .pipe(nodeResponse)\n .on(\"error\", (error) => {\n resume(tsplus_module_1.failNow(new ResponseError(request, response, \"Decode\", error), fileName_1 + \":272:32\"));\n })\n .once(\"finish\", () => {\n resume(tsplus_module_1.unit);\n });\n });\n }\n case 4 /* BodyTag.Stream */: {\n nodeResponse.writeHead(response.status, response.headers.toHeadersInit());\n return tsplus_module_17.run(NodeStream.fromWritable(() => nodeResponse, (error) => new ResponseError(request, response, \"Decode\", error)), fileName_1 + \":283:15\")(tsplus_module_17.mapError((error) => new ResponseError(request, response, \"Decode\", error), fileName_1 + \":282:20\")(response.body.stream));\n }\n }\n }, fileName_1 + \":224:18\");\n}\n//# sourceMappingURL=Server.js.map"],"mappings":"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"}
|
|
@@ -1,37 +1,41 @@
|
|
|
1
|
-
const fileName_1 = "(@fncts/node) src/http/ServerRequest.ts";
|
|
2
1
|
import * as tsplus_module_1 from "@fncts/io/IO/api";
|
|
3
2
|
import { RequestError } from "@fncts/http/RequestError";
|
|
4
3
|
import { ServerRequestTypeId } from "@fncts/http/ServerRequest";
|
|
5
4
|
import { IncomingMessageImpl } from "@fncts/node/http/IncomingMessage";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
5
|
+
//#region build/esm/http/ServerRequest.js
|
|
6
|
+
const fileName_1 = "(@fncts/node) src/http/ServerRequest.ts";
|
|
7
|
+
var ServerRequestImpl = class ServerRequestImpl extends IncomingMessageImpl {
|
|
8
|
+
source;
|
|
9
|
+
response;
|
|
10
|
+
upgradeEffect;
|
|
11
|
+
url;
|
|
12
|
+
headersOverride;
|
|
13
|
+
[ServerRequestTypeId] = ServerRequestTypeId;
|
|
14
|
+
constructor(source, response, upgradeEffect, url = source.url, headersOverride, remoteAddressOverride) {
|
|
15
|
+
super(source, (error) => new RequestError(this, "Decode", error), remoteAddressOverride);
|
|
16
|
+
this.source = source;
|
|
17
|
+
this.response = response;
|
|
18
|
+
this.upgradeEffect = upgradeEffect;
|
|
19
|
+
this.url = url;
|
|
20
|
+
this.headersOverride = headersOverride;
|
|
21
|
+
}
|
|
22
|
+
get resolvedResponse() {
|
|
23
|
+
return typeof this.response === "function" ? this.response() : this.response;
|
|
24
|
+
}
|
|
25
|
+
modify(options) {
|
|
26
|
+
return new ServerRequestImpl(this.source, this.response, this.upgradeEffect, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
|
|
27
|
+
}
|
|
28
|
+
get originalUrl() {
|
|
29
|
+
return this.source.url;
|
|
30
|
+
}
|
|
31
|
+
get method() {
|
|
32
|
+
return this.source.method.toUpperCase();
|
|
33
|
+
}
|
|
34
|
+
get upgrade() {
|
|
35
|
+
return this.upgradeEffect ?? tsplus_module_1.failNow(new RequestError(this, "Decode", "Not an upgradeable ServerRequest"), fileName_1 + ":52:44");
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { ServerRequestImpl };
|
|
40
|
+
|
|
37
41
|
//# sourceMappingURL=ServerRequest.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerRequest.mjs","names":["
|
|
1
|
+
{"version":3,"file":"ServerRequest.mjs","names":[],"sources":["../../esm/http/ServerRequest.js"],"sourcesContent":["const fileName_1 = \"(@fncts/node) src/http/ServerRequest.ts\";\nimport * as tsplus_module_1 from \"@fncts/io/IO/api\";\nimport { RequestError } from \"@fncts/http/RequestError\";\nimport { ServerRequestTypeId } from \"@fncts/http/ServerRequest\";\nimport { IncomingMessageImpl } from \"@fncts/node/http/IncomingMessage\";\nexport class ServerRequestImpl extends IncomingMessageImpl {\n source;\n response;\n upgradeEffect;\n url;\n headersOverride;\n [ServerRequestTypeId] = ServerRequestTypeId;\n constructor(source, response, upgradeEffect, url = source.url, headersOverride, remoteAddressOverride) {\n super(source, (error) => new RequestError(this, \"Decode\", error), remoteAddressOverride);\n this.source = source;\n this.response = response;\n this.upgradeEffect = upgradeEffect;\n this.url = url;\n this.headersOverride = headersOverride;\n }\n get resolvedResponse() {\n return typeof this.response === \"function\" ? this.response() : this.response;\n }\n modify(options) {\n return new ServerRequestImpl(this.source, this.response, this.upgradeEffect, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);\n }\n get originalUrl() {\n return this.source.url;\n }\n get method() {\n return this.source.method.toUpperCase();\n }\n get upgrade() {\n return this.upgradeEffect ?? tsplus_module_1.failNow(new RequestError(this, \"Decode\", \"Not an upgradeable ServerRequest\"), fileName_1 + \":52:44\");\n }\n}\n//# sourceMappingURL=ServerRequest.js.map"],"mappings":";;;;;AAAA,MAAM,aAAa;AAKnB,IAAa,oBAAb,MAAa,0BAA0B,oBAAoB;CACvD;CACA;CACA;CACA;CACA;CACA,CAAC,uBAAuB;CACxB,YAAY,QAAQ,UAAU,eAAe,MAAM,OAAO,KAAK,iBAAiB,uBAAuB;AACnG,QAAM,SAAS,UAAU,IAAI,aAAa,MAAM,UAAU,MAAM,EAAE,sBAAsB;AACxF,OAAK,SAAS;AACd,OAAK,WAAW;AAChB,OAAK,gBAAgB;AACrB,OAAK,MAAM;AACX,OAAK,kBAAkB;;CAE3B,IAAI,mBAAmB;AACnB,SAAO,OAAO,KAAK,aAAa,aAAa,KAAK,UAAU,GAAG,KAAK;;CAExE,OAAO,SAAS;AACZ,SAAO,IAAI,kBAAkB,KAAK,QAAQ,KAAK,UAAU,KAAK,eAAe,QAAQ,OAAO,KAAK,KAAK,QAAQ,WAAW,KAAK,iBAAiB,QAAQ,iBAAiB,KAAK,sBAAsB;;CAEvM,IAAI,cAAc;AACd,SAAO,KAAK,OAAO;;CAEvB,IAAI,SAAS;AACT,SAAO,KAAK,OAAO,OAAO,aAAa;;CAE3C,IAAI,UAAU;AACV,SAAO,KAAK,iBAAiB,gBAAgB,QAAQ,IAAI,aAAa,MAAM,UAAU,mCAAmC,EAAE,aAAa,SAAS"}
|
package/_mjs/index.mjs
CHANGED