@effect/platform-node 4.0.0-beta.66 → 4.0.0-beta.68
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/dist/Mime.d.ts +3 -3
- package/dist/Mime.js +3 -3
- package/dist/NodeChildProcessSpawner.d.ts +1 -1
- package/dist/NodeChildProcessSpawner.js +1 -1
- package/dist/NodeClusterHttp.d.ts +47 -7
- package/dist/NodeClusterHttp.d.ts.map +1 -1
- package/dist/NodeClusterHttp.js +13 -6
- package/dist/NodeClusterHttp.js.map +1 -1
- package/dist/NodeClusterSocket.d.ts +51 -11
- package/dist/NodeClusterSocket.d.ts.map +1 -1
- package/dist/NodeClusterSocket.js +51 -11
- package/dist/NodeClusterSocket.js.map +1 -1
- package/dist/NodeCrypto.d.ts +10 -0
- package/dist/NodeCrypto.d.ts.map +1 -0
- package/dist/NodeCrypto.js +14 -0
- package/dist/NodeCrypto.js.map +1 -0
- package/dist/NodeFileSystem.d.ts +4 -2
- package/dist/NodeFileSystem.d.ts.map +1 -1
- package/dist/NodeFileSystem.js +22 -3
- package/dist/NodeFileSystem.js.map +1 -1
- package/dist/NodeHttpClient.d.ts +91 -19
- package/dist/NodeHttpClient.d.ts.map +1 -1
- package/dist/NodeHttpClient.js +91 -19
- package/dist/NodeHttpClient.js.map +1 -1
- package/dist/NodeHttpIncomingMessage.d.ts +22 -4
- package/dist/NodeHttpIncomingMessage.d.ts.map +1 -1
- package/dist/NodeHttpIncomingMessage.js +22 -4
- package/dist/NodeHttpIncomingMessage.js.map +1 -1
- package/dist/NodeHttpPlatform.d.ts +10 -4
- package/dist/NodeHttpPlatform.d.ts.map +1 -1
- package/dist/NodeHttpPlatform.js +32 -5
- package/dist/NodeHttpPlatform.js.map +1 -1
- package/dist/NodeHttpServer.d.ts +39 -12
- package/dist/NodeHttpServer.d.ts.map +1 -1
- package/dist/NodeHttpServer.js +69 -13
- package/dist/NodeHttpServer.js.map +1 -1
- package/dist/NodeHttpServerRequest.d.ts +29 -3
- package/dist/NodeHttpServerRequest.d.ts.map +1 -1
- package/dist/NodeHttpServerRequest.js +9 -2
- package/dist/NodeHttpServerRequest.js.map +1 -1
- package/dist/NodeMultipart.d.ts +32 -4
- package/dist/NodeMultipart.d.ts.map +1 -1
- package/dist/NodeMultipart.js +32 -4
- package/dist/NodeMultipart.js.map +1 -1
- package/dist/NodePath.d.ts +15 -6
- package/dist/NodePath.d.ts.map +1 -1
- package/dist/NodePath.js +30 -7
- package/dist/NodePath.js.map +1 -1
- package/dist/NodeRedis.d.ts +36 -7
- package/dist/NodeRedis.d.ts.map +1 -1
- package/dist/NodeRedis.js +36 -7
- package/dist/NodeRedis.js.map +1 -1
- package/dist/NodeRuntime.d.ts +6 -6
- package/dist/NodeRuntime.d.ts.map +1 -1
- package/dist/NodeRuntime.js +17 -3
- package/dist/NodeRuntime.js.map +1 -1
- package/dist/NodeServices.d.ts +29 -5
- package/dist/NodeServices.d.ts.map +1 -1
- package/dist/NodeServices.js +7 -3
- package/dist/NodeServices.js.map +1 -1
- package/dist/NodeSink.d.ts +2 -2
- package/dist/NodeSink.js +2 -2
- package/dist/NodeSocket.d.ts +14 -4
- package/dist/NodeSocket.d.ts.map +1 -1
- package/dist/NodeSocket.js +32 -5
- package/dist/NodeSocket.js.map +1 -1
- package/dist/NodeSocketServer.d.ts +2 -2
- package/dist/NodeSocketServer.js +2 -2
- package/dist/NodeStdio.d.ts +5 -2
- package/dist/NodeStdio.d.ts.map +1 -1
- package/dist/NodeStdio.js +22 -3
- package/dist/NodeStdio.js.map +1 -1
- package/dist/NodeStream.d.ts +2 -2
- package/dist/NodeStream.js +2 -2
- package/dist/NodeTerminal.d.ts +8 -2
- package/dist/NodeTerminal.d.ts.map +1 -1
- package/dist/NodeTerminal.js +19 -3
- package/dist/NodeTerminal.js.map +1 -1
- package/dist/NodeWorker.d.ts +9 -2
- package/dist/NodeWorker.d.ts.map +1 -1
- package/dist/NodeWorker.js +28 -3
- package/dist/NodeWorker.js.map +1 -1
- package/dist/NodeWorkerRunner.d.ts +5 -1
- package/dist/NodeWorkerRunner.d.ts.map +1 -1
- package/dist/NodeWorkerRunner.js +24 -2
- package/dist/NodeWorkerRunner.js.map +1 -1
- package/dist/Undici.d.ts +3 -3
- package/dist/Undici.js +3 -3
- package/dist/index.d.ts +376 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +376 -24
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/src/Mime.ts +3 -3
- package/src/NodeChildProcessSpawner.ts +1 -1
- package/src/NodeClusterHttp.ts +47 -7
- package/src/NodeClusterSocket.ts +51 -11
- package/src/NodeCrypto.ts +16 -0
- package/src/NodeFileSystem.ts +22 -3
- package/src/NodeHttpClient.ts +91 -19
- package/src/NodeHttpIncomingMessage.ts +22 -4
- package/src/NodeHttpPlatform.ts +32 -5
- package/src/NodeHttpServer.ts +69 -13
- package/src/NodeHttpServerRequest.ts +29 -3
- package/src/NodeMultipart.ts +32 -4
- package/src/NodePath.ts +30 -7
- package/src/NodeRedis.ts +36 -7
- package/src/NodeRuntime.ts +21 -7
- package/src/NodeServices.ts +31 -5
- package/src/NodeSink.ts +2 -2
- package/src/NodeSocket.ts +32 -5
- package/src/NodeSocketServer.ts +2 -2
- package/src/NodeStdio.ts +22 -3
- package/src/NodeStream.ts +2 -2
- package/src/NodeTerminal.ts +19 -3
- package/src/NodeWorker.ts +28 -3
- package/src/NodeWorkerRunner.ts +24 -2
- package/src/Undici.ts +3 -3
- package/src/index.ts +377 -24
package/dist/NodeHttpPlatform.js
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node.js implementation of the Effect HTTP platform service.
|
|
3
|
+
*
|
|
4
|
+
* This module connects the portable `HttpPlatform` file response helpers to
|
|
5
|
+
* Node runtime primitives. It is used by Node HTTP servers and static file
|
|
6
|
+
* handlers when returning local files, public assets, downloads, byte ranges,
|
|
7
|
+
* or Web `File` values as `HttpServerResponse` bodies.
|
|
8
|
+
*
|
|
9
|
+
* Path-based responses are served with `node:fs.createReadStream`; Web `File`
|
|
10
|
+
* responses are bridged with `Readable.fromWeb`. The implementation fills in
|
|
11
|
+
* `content-type` from `Mime`, falls back to `application/octet-stream`, and
|
|
12
|
+
* writes the `content-length` for the selected range or whole file. Node's
|
|
13
|
+
* stream `end` option is inclusive, so the platform converts Effect's half-open
|
|
14
|
+
* range before reading. Empty bodies use an empty readable stream.
|
|
15
|
+
*
|
|
16
|
+
* Provide `layer` at the Node runtime edge when file responses, static serving,
|
|
17
|
+
* or response bodies created from files need real filesystem and ETag support.
|
|
18
|
+
* These responses are raw Node streams, so they are intended for the Node HTTP
|
|
19
|
+
* server adapter; keep files available until the response body has been
|
|
20
|
+
* consumed and prefer the portable `HttpServerResponse` constructors when a
|
|
21
|
+
* response does not depend on Node file or stream behavior.
|
|
22
|
+
*
|
|
23
|
+
* @since 4.0.0
|
|
3
24
|
*/
|
|
4
25
|
import { pipe } from "effect/Function";
|
|
5
26
|
import * as Layer from "effect/Layer";
|
|
@@ -12,8 +33,11 @@ import { Readable } from "node:stream";
|
|
|
12
33
|
import Mime from "./Mime.js";
|
|
13
34
|
import * as NodeFileSystem from "./NodeFileSystem.js";
|
|
14
35
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
36
|
+
* Creates the Node `HttpPlatform`, serving file responses from Node readable
|
|
37
|
+
* streams and adding MIME type and content-length headers when needed.
|
|
38
|
+
*
|
|
39
|
+
* @category constructors
|
|
40
|
+
* @since 4.0.0
|
|
17
41
|
*/
|
|
18
42
|
export const make = /*#__PURE__*/Platform.make({
|
|
19
43
|
fileResponse(path, status, statusText, headers, start, end, contentLength) {
|
|
@@ -43,8 +67,11 @@ export const make = /*#__PURE__*/Platform.make({
|
|
|
43
67
|
}
|
|
44
68
|
});
|
|
45
69
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
70
|
+
* Provides the Node `HttpPlatform` together with the filesystem and ETag
|
|
71
|
+
* services it needs for file responses.
|
|
72
|
+
*
|
|
73
|
+
* @category layers
|
|
74
|
+
* @since 4.0.0
|
|
48
75
|
*/
|
|
49
76
|
export const layer = /*#__PURE__*/pipe(/*#__PURE__*/Layer.effect(Platform.HttpPlatform)(make), /*#__PURE__*/Layer.provide(NodeFileSystem.layer), /*#__PURE__*/Layer.provide(EtagImpl.layer));
|
|
50
77
|
//# sourceMappingURL=NodeHttpPlatform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeHttpPlatform.js","names":["pipe","Layer","EtagImpl","Headers","Platform","ServerResponse","Fs","Readable","Mime","NodeFileSystem","make","fileResponse","path","status","statusText","headers","start","end","contentLength","stream","from","createReadStream","undefined","raw","getType","toString","fileWebResponse","file","_options","fromWeb","merge","fromRecordUnsafe","name","size","layer","effect","HttpPlatform","provide"],"sources":["../src/NodeHttpPlatform.ts"],"sourcesContent":[null],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"NodeHttpPlatform.js","names":["pipe","Layer","EtagImpl","Headers","Platform","ServerResponse","Fs","Readable","Mime","NodeFileSystem","make","fileResponse","path","status","statusText","headers","start","end","contentLength","stream","from","createReadStream","undefined","raw","getType","toString","fileWebResponse","file","_options","fromWeb","merge","fromRecordUnsafe","name","size","layer","effect","HttpPlatform","provide"],"sources":["../src/NodeHttpPlatform.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAASA,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,2BAA2B;AACrD,OAAO,KAAKC,OAAO,MAAM,8BAA8B;AACvD,OAAO,KAAKC,QAAQ,MAAM,mCAAmC;AAC7D,OAAO,KAAKC,cAAc,MAAM,yCAAyC;AACzE,OAAO,KAAKC,EAAE,MAAM,SAAS;AAC7B,SAASC,QAAQ,QAAQ,aAAa;AACtC,OAAOC,IAAI,MAAM,WAAW;AAC5B,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;;;;;AAOA,OAAO,MAAMC,IAAI,gBAAGN,QAAQ,CAACM,IAAI,CAAC;EAChCC,YAAYA,CAACC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEC,KAAK,EAAEC,GAAG,EAAEC,aAAa;IACvE,MAAMC,MAAM,GAAGD,aAAa,KAAK,CAAC,GAC9BX,QAAQ,CAACa,IAAI,CAAC,EAAE,CAAC,GACjBd,EAAE,CAACe,gBAAgB,CAACT,IAAI,EAAE;MAAEI,KAAK;MAAEC,GAAG,EAAEA,GAAG,KAAKK,SAAS,GAAGA,SAAS,GAAGL,GAAG,GAAG;IAAC,CAAE,CAAC;IACtF,OAAOZ,cAAc,CAACkB,GAAG,CAACJ,MAAM,EAAE;MAChCJ,OAAO,EAAE;QACP,GAAGA,OAAO;QACV,cAAc,EAAEA,OAAO,CAAC,cAAc,CAAC,IAAIP,IAAI,CAACgB,OAAO,CAACZ,IAAI,CAAC,IAAI,0BAA0B;QAC3F,gBAAgB,EAAEM,aAAa,CAACO,QAAQ;OACzC;MACDZ,MAAM;MACNC;KACD,CAAC;EACJ,CAAC;EACDY,eAAeA,CAACC,IAAI,EAAEd,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEa,QAAQ;IACzD,OAAOvB,cAAc,CAACkB,GAAG,CAAChB,QAAQ,CAACsB,OAAO,CAACF,IAAI,CAACR,MAAM,EAAS,CAAC,EAAE;MAChEJ,OAAO,EAAEZ,OAAO,CAAC2B,KAAK,CACpBf,OAAO,EACPZ,OAAO,CAAC4B,gBAAgB,CAAC;QACvB,cAAc,EAAEhB,OAAO,CAAC,cAAc,CAAC,IAAIP,IAAI,CAACgB,OAAO,CAACG,IAAI,CAACK,IAAI,CAAC,IAAI,0BAA0B;QAChG,gBAAgB,EAAEL,IAAI,CAACM,IAAI,CAACR,QAAQ;OACrC,CAAC,CACH;MACDZ,MAAM;MACNC;KACD,CAAC;EACJ;CACD,CAAC;AAEF;;;;;;;AAOA,OAAO,MAAMoB,KAAK,gBAAuClC,IAAI,cAC3DC,KAAK,CAACkC,MAAM,CAAC/B,QAAQ,CAACgC,YAAY,CAAC,CAAC1B,IAAI,CAAC,eACzCT,KAAK,CAACoC,OAAO,CAAC5B,cAAc,CAACyB,KAAK,CAAC,eACnCjC,KAAK,CAACoC,OAAO,CAACnC,QAAQ,CAACgC,KAAK,CAAC,CAC9B","ignoreList":[]}
|
package/dist/NodeHttpServer.d.ts
CHANGED
|
@@ -20,8 +20,12 @@ import type { Duplex } from "node:stream";
|
|
|
20
20
|
import * as NodeServices from "./NodeServices.ts";
|
|
21
21
|
import { NodeWS } from "./NodeSocket.ts";
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Creates a scoped `HttpServer` from a Node `http.Server`, starts listening
|
|
24
|
+
* with the supplied options, registers request and upgrade handling, and closes
|
|
25
|
+
* the server during scope finalization with optional graceful-shutdown control.
|
|
26
|
+
*
|
|
24
27
|
* @category constructors
|
|
28
|
+
* @since 4.0.0
|
|
25
29
|
*/
|
|
26
30
|
export declare const make: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Net.ListenOptions & {
|
|
27
31
|
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
@@ -34,53 +38,76 @@ export declare const make: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMe
|
|
|
34
38
|
readonly address: HttpServer.Address;
|
|
35
39
|
}, ServeError, Scope.Scope>;
|
|
36
40
|
/**
|
|
37
|
-
*
|
|
41
|
+
* Creates a Node `request` event handler for an Effect HTTP application,
|
|
42
|
+
* injecting a `HttpServerRequest` and interrupting the request fiber if the
|
|
43
|
+
* client closes the response before it finishes.
|
|
44
|
+
*
|
|
38
45
|
* @category Handlers
|
|
46
|
+
* @since 4.0.0
|
|
39
47
|
*/
|
|
40
48
|
export declare const makeHandler: <R, E, App extends Effect.Effect<HttpServerResponse, any, any> = Effect.Effect<HttpServerResponse, E, R>>(httpEffect: Effect.Effect<HttpServerResponse, E, R>, options: {
|
|
41
49
|
readonly scope: Scope.Scope;
|
|
42
50
|
readonly middleware?: Middleware.HttpMiddleware.Applied<App, E, R> | undefined;
|
|
43
51
|
}) => Effect.Effect<(nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) => void, never, Exclude<Effect.Services<App>, HttpServerRequest | Scope.Scope>>;
|
|
44
52
|
/**
|
|
45
|
-
*
|
|
53
|
+
* Creates a Node `upgrade` event handler for an Effect HTTP application,
|
|
54
|
+
* exposing the upgraded WebSocket as the request's `upgrade` effect and
|
|
55
|
+
* interrupting the request fiber when the socket closes early.
|
|
56
|
+
*
|
|
46
57
|
* @category Handlers
|
|
58
|
+
* @since 4.0.0
|
|
47
59
|
*/
|
|
48
60
|
export declare const makeUpgradeHandler: <R, E, App extends Effect.Effect<HttpServerResponse, any, any> = Effect.Effect<HttpServerResponse, E, R>>(lazyWss: Effect.Effect<NodeWS.WebSocketServer>, httpEffect: Effect.Effect<HttpServerResponse, E, R>, options: {
|
|
49
61
|
readonly scope: Scope.Scope;
|
|
50
62
|
readonly middleware?: Middleware.HttpMiddleware.Applied<App, E, R> | undefined;
|
|
51
63
|
}) => Effect.Effect<(nodeRequest: Http.IncomingMessage, socket: Duplex, head: Buffer) => void, never, Exclude<Effect.Services<App>, HttpServerRequest | Scope.Scope>>;
|
|
52
64
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
65
|
+
* Provides an `HttpServer` by creating and managing a scoped Node
|
|
66
|
+
* `http.Server` with the supplied listen and shutdown options.
|
|
67
|
+
*
|
|
68
|
+
* @category layers
|
|
69
|
+
* @since 4.0.0
|
|
55
70
|
*/
|
|
56
71
|
export declare const layerServer: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Net.ListenOptions & {
|
|
57
72
|
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
58
73
|
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
59
74
|
}) => Layer.Layer<HttpServer.HttpServer, ServeError>;
|
|
60
75
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
76
|
+
* Provides the Node HTTP support services used by `NodeHttpServer`, including
|
|
77
|
+
* the HTTP platform, ETag generator, and core Node platform services.
|
|
78
|
+
*
|
|
79
|
+
* @category layers
|
|
80
|
+
* @since 4.0.0
|
|
63
81
|
*/
|
|
64
82
|
export declare const layerHttpServices: Layer.Layer<NodeServices.NodeServices | HttpPlatform.HttpPlatform | Etag.Generator>;
|
|
65
83
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
84
|
+
* Provides a Node `HttpServer` together with the Node HTTP platform, ETag, and
|
|
85
|
+
* core platform services required to serve requests.
|
|
86
|
+
*
|
|
87
|
+
* @category layers
|
|
88
|
+
* @since 4.0.0
|
|
68
89
|
*/
|
|
69
90
|
export declare const layer: (evaluate: LazyArg<Http.Server>, options: Net.ListenOptions & {
|
|
70
91
|
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
71
92
|
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
72
93
|
}) => Layer.Layer<HttpServer.HttpServer | NodeServices.NodeServices | HttpPlatform.HttpPlatform | Etag.Generator, ServeError>;
|
|
73
94
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
95
|
+
* Provides a Node `HttpServer` and HTTP support services, reading the listen
|
|
96
|
+
* and shutdown options from a `Config` value.
|
|
97
|
+
*
|
|
98
|
+
* @category layers
|
|
99
|
+
* @since 4.0.0
|
|
76
100
|
*/
|
|
77
101
|
export declare const layerConfig: (evaluate: LazyArg<Http.Server>, options: Config.Wrap<Net.ListenOptions & {
|
|
78
102
|
readonly disablePreemptiveShutdown?: boolean | undefined;
|
|
79
103
|
readonly gracefulShutdownTimeout?: Duration.Input | undefined;
|
|
80
104
|
}>) => Layer.Layer<HttpServer.HttpServer | FileSystem.FileSystem | Path.Path | HttpPlatform.HttpPlatform | Etag.Generator, ServeError | Config.ConfigError>;
|
|
81
105
|
/**
|
|
82
|
-
*
|
|
106
|
+
* Provides a test HTTP server listening on an ephemeral port together with a
|
|
107
|
+
* Fetch-backed `HttpClient` configured for server integration tests.
|
|
108
|
+
*
|
|
83
109
|
* @category Testing
|
|
110
|
+
* @since 4.0.0
|
|
84
111
|
*/
|
|
85
112
|
export declare const layerTest: Layer.Layer<HttpServer.HttpServer | FileSystem.FileSystem | Path.Path | HttpPlatform.HttpPlatform | Etag.Generator | HttpClient, ServeError, never>;
|
|
86
113
|
//# sourceMappingURL=NodeHttpServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeHttpServer.d.ts","sourceRoot":"","sources":["../src/NodeHttpServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NodeHttpServer.d.ts","sourceRoot":"","sources":["../src/NodeHttpServer.ts"],"names":[],"mappings":"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"}
|
package/dist/NodeHttpServer.js
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node.js implementation of the Effect `HttpServer`.
|
|
3
|
+
*
|
|
4
|
+
* This module adapts a supplied Node `http.Server` into Effect's
|
|
5
|
+
* platform-independent HTTP server service. It starts the server with Node
|
|
6
|
+
* `listen` options, converts `request` events into `HttpServerRequest` values,
|
|
7
|
+
* writes `HttpServerResponse` bodies through Node's `ServerResponse`, and
|
|
8
|
+
* handles `upgrade` events by exposing the upgraded socket through
|
|
9
|
+
* `HttpServerRequest.upgrade`.
|
|
10
|
+
*
|
|
11
|
+
* Common use cases include serving an Effect HTTP application with {@link layer}
|
|
12
|
+
* or {@link layerConfig}, embedding request or upgrade handlers into an
|
|
13
|
+
* existing Node server with {@link makeHandler} and {@link makeUpgradeHandler},
|
|
14
|
+
* and using {@link layerTest} for integration tests that need an ephemeral
|
|
15
|
+
* listening port and a client pointed at it.
|
|
16
|
+
*
|
|
17
|
+
* Listen options are passed directly to Node, so host, port, backlog, and Unix
|
|
18
|
+
* socket path behavior follow `node:http`. The server begins listening when the
|
|
19
|
+
* `HttpServer` is acquired, and handlers are installed when `serve` is run.
|
|
20
|
+
* Request fibers are interrupted with `ClientAbort` when the client disconnects
|
|
21
|
+
* before a response finishes. WebSocket support only applies to Node `upgrade`
|
|
22
|
+
* requests, and ordinary HTTP requests fail if their application attempts to use
|
|
23
|
+
* `HttpServerRequest.upgrade`.
|
|
24
|
+
*
|
|
25
|
+
* Scope ownership is important: the server is closed when the acquiring scope
|
|
26
|
+
* finalizes, while each `serve` call installs its own request and upgrade
|
|
27
|
+
* listeners and removes them on finalization. Unless preemptive shutdown is
|
|
28
|
+
* disabled, finalizing a serve scope also starts a graceful server close, using
|
|
29
|
+
* the configured timeout or the default timeout.
|
|
30
|
+
*
|
|
31
|
+
* @since 4.0.0
|
|
3
32
|
*/
|
|
4
33
|
import * as Cause from "effect/Cause";
|
|
5
34
|
import * as Config from "effect/Config";
|
|
@@ -31,8 +60,12 @@ import * as NodeMultipart from "./NodeMultipart.js";
|
|
|
31
60
|
import * as NodeServices from "./NodeServices.js";
|
|
32
61
|
import { NodeWS } from "./NodeSocket.js";
|
|
33
62
|
/**
|
|
34
|
-
*
|
|
63
|
+
* Creates a scoped `HttpServer` from a Node `http.Server`, starts listening
|
|
64
|
+
* with the supplied options, registers request and upgrade handling, and closes
|
|
65
|
+
* the server during scope finalization with optional graceful-shutdown control.
|
|
66
|
+
*
|
|
35
67
|
* @category constructors
|
|
68
|
+
* @since 4.0.0
|
|
36
69
|
*/
|
|
37
70
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (evaluate, options) {
|
|
38
71
|
const scope = yield* Effect.scope;
|
|
@@ -103,8 +136,12 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (evaluate, options)
|
|
|
103
136
|
});
|
|
104
137
|
});
|
|
105
138
|
/**
|
|
106
|
-
*
|
|
139
|
+
* Creates a Node `request` event handler for an Effect HTTP application,
|
|
140
|
+
* injecting a `HttpServerRequest` and interrupting the request fiber if the
|
|
141
|
+
* client closes the response before it finishes.
|
|
142
|
+
*
|
|
107
143
|
* @category Handlers
|
|
144
|
+
* @since 4.0.0
|
|
108
145
|
*/
|
|
109
146
|
export const makeHandler = (httpEffect, options) => {
|
|
110
147
|
const handled = HttpEffect.toHandled(httpEffect, handleResponse, options.middleware);
|
|
@@ -123,8 +160,12 @@ export const makeHandler = (httpEffect, options) => {
|
|
|
123
160
|
});
|
|
124
161
|
};
|
|
125
162
|
/**
|
|
126
|
-
*
|
|
163
|
+
* Creates a Node `upgrade` event handler for an Effect HTTP application,
|
|
164
|
+
* exposing the upgraded WebSocket as the request's `upgrade` effect and
|
|
165
|
+
* interrupting the request fiber when the socket closes early.
|
|
166
|
+
*
|
|
127
167
|
* @category Handlers
|
|
168
|
+
* @since 4.0.0
|
|
128
169
|
*/
|
|
129
170
|
export const makeUpgradeHandler = (lazyWss, httpEffect, options) => {
|
|
130
171
|
const handledApp = HttpEffect.toHandled(httpEffect, handleResponse, options.middleware);
|
|
@@ -229,28 +270,43 @@ class ServerRequestImpl extends NodeHttpIncomingMessage {
|
|
|
229
270
|
}
|
|
230
271
|
}
|
|
231
272
|
/**
|
|
232
|
-
*
|
|
233
|
-
*
|
|
273
|
+
* Provides an `HttpServer` by creating and managing a scoped Node
|
|
274
|
+
* `http.Server` with the supplied listen and shutdown options.
|
|
275
|
+
*
|
|
276
|
+
* @category layers
|
|
277
|
+
* @since 4.0.0
|
|
234
278
|
*/
|
|
235
279
|
export const layerServer = /*#__PURE__*/flow(make, /*#__PURE__*/Layer.effect(HttpServer.HttpServer));
|
|
236
280
|
/**
|
|
237
|
-
*
|
|
238
|
-
*
|
|
281
|
+
* Provides the Node HTTP support services used by `NodeHttpServer`, including
|
|
282
|
+
* the HTTP platform, ETag generator, and core Node platform services.
|
|
283
|
+
*
|
|
284
|
+
* @category layers
|
|
285
|
+
* @since 4.0.0
|
|
239
286
|
*/
|
|
240
287
|
export const layerHttpServices = /*#__PURE__*/Layer.mergeAll(NodeHttpPlatform.layer, Etag.layerWeak, NodeServices.layer);
|
|
241
288
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
289
|
+
* Provides a Node `HttpServer` together with the Node HTTP platform, ETag, and
|
|
290
|
+
* core platform services required to serve requests.
|
|
291
|
+
*
|
|
292
|
+
* @category layers
|
|
293
|
+
* @since 4.0.0
|
|
244
294
|
*/
|
|
245
295
|
export const layer = (evaluate, options) => Layer.mergeAll(layerServer(evaluate, options), layerHttpServices);
|
|
246
296
|
/**
|
|
247
|
-
*
|
|
248
|
-
*
|
|
297
|
+
* Provides a Node `HttpServer` and HTTP support services, reading the listen
|
|
298
|
+
* and shutdown options from a `Config` value.
|
|
299
|
+
*
|
|
300
|
+
* @category layers
|
|
301
|
+
* @since 4.0.0
|
|
249
302
|
*/
|
|
250
303
|
export const layerConfig = (evaluate, options) => Layer.mergeAll(Layer.effect(HttpServer.HttpServer)(Effect.flatMap(Config.unwrap(options), options => make(evaluate, options))), layerHttpServices);
|
|
251
304
|
/**
|
|
252
|
-
*
|
|
305
|
+
* Provides a test HTTP server listening on an ephemeral port together with a
|
|
306
|
+
* Fetch-backed `HttpClient` configured for server integration tests.
|
|
307
|
+
*
|
|
253
308
|
* @category Testing
|
|
309
|
+
* @since 4.0.0
|
|
254
310
|
*/
|
|
255
311
|
export const layerTest = /*#__PURE__*/HttpServer.layerTestClient.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.fresh(FetchHttpClient.layer).pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.succeed(FetchHttpClient.RequestInit)({
|
|
256
312
|
keepalive: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeHttpServer.js","names":["Cause","Config","Context","Duration","Effect","Fiber","flow","Latch","Layer","Scope","Stream","Cookies","Etag","FetchHttpClient","HttpEffect","HttpIncomingMessage","HttpServer","causeResponse","ClientAbort","HttpServerError","RequestParseError","ResponseError","ServeError","Request","HttpServerRequest","Socket","Http","Readable","pipeline","NodeHttpIncomingMessage","NodeHttpPlatform","NodeMultipart","NodeServices","NodeWS","make","fnUntraced","evaluate","options","scope","server","shutdown","callback","resume","listening","void","close","error","die","pipe","cached","preemptiveShutdown","disablePreemptiveShutdown","timeoutOrElse","duration","gracefulShutdownTimeout","seconds","orElse","addFinalizer","onError","cause","fail","on","listen","off","address","wss","acquireRelease","sync","WebSocketServer","noServer","provide","_tag","path","hostname","port","serve","httpApp","middleware","serveScope","forkUnsafe","handler","makeHandler","upgradeHandler","makeUpgradeHandler","addFinalizerExit","httpEffect","handled","toHandled","handleResponse","withFiber","parent","services","context","succeed","nodeRequest","nodeResponse","map","Map","mapUnsafe","set","key","ServerRequestImpl","fiber","runIn","runForkWith","makeUnsafe","writableEnded","interruptUnsafe","id","annotation","lazyWss","handledApp","socket","head","nodeResponse_","undefined","ServerResponse","assignSocket","end","upgradeEffect","fromWebSocket","flatMap","handleUpgrade","ws","TypeId","response","url","headersOverride","constructor","source","remoteAddressOverride","reason","request","cachedCookies","cookies","parseHeader","headers","cookie","resolvedResponse","modify","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","persisted","multipartStream","stream","upgrade","description","toString","toJSON","inspect","_id","layerServer","effect","layerHttpServices","mergeAll","layer","layerWeak","layerConfig","unwrap","layerTest","layerTestClient","fresh","RequestInit","keepalive","provideMerge","createServer","isEmpty","toSet","toSetCookieHeaders","push","writeHead","status","body","tryPromise","try","signal","catch","interruptible","tapCause","handleCause","length","suspend","r","globalThis","Response","formData","Object","fromEntries","fromWeb","once","drainLatch","openUnsafe","orDie","runForEachArray","array","needDrain","i","written","write","closeUnsafe","await","matchCauseEffect","onSuccess","onFailure","originalResponse","originalCause","headersSent","failCause","combine"],"sources":["../src/NodeHttpServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NodeHttpServer.js","names":["Cause","Config","Context","Duration","Effect","Fiber","flow","Latch","Layer","Scope","Stream","Cookies","Etag","FetchHttpClient","HttpEffect","HttpIncomingMessage","HttpServer","causeResponse","ClientAbort","HttpServerError","RequestParseError","ResponseError","ServeError","Request","HttpServerRequest","Socket","Http","Readable","pipeline","NodeHttpIncomingMessage","NodeHttpPlatform","NodeMultipart","NodeServices","NodeWS","make","fnUntraced","evaluate","options","scope","server","shutdown","callback","resume","listening","void","close","error","die","pipe","cached","preemptiveShutdown","disablePreemptiveShutdown","timeoutOrElse","duration","gracefulShutdownTimeout","seconds","orElse","addFinalizer","onError","cause","fail","on","listen","off","address","wss","acquireRelease","sync","WebSocketServer","noServer","provide","_tag","path","hostname","port","serve","httpApp","middleware","serveScope","forkUnsafe","handler","makeHandler","upgradeHandler","makeUpgradeHandler","addFinalizerExit","httpEffect","handled","toHandled","handleResponse","withFiber","parent","services","context","succeed","nodeRequest","nodeResponse","map","Map","mapUnsafe","set","key","ServerRequestImpl","fiber","runIn","runForkWith","makeUnsafe","writableEnded","interruptUnsafe","id","annotation","lazyWss","handledApp","socket","head","nodeResponse_","undefined","ServerResponse","assignSocket","end","upgradeEffect","fromWebSocket","flatMap","handleUpgrade","ws","TypeId","response","url","headersOverride","constructor","source","remoteAddressOverride","reason","request","cachedCookies","cookies","parseHeader","headers","cookie","resolvedResponse","modify","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","persisted","multipartStream","stream","upgrade","description","toString","toJSON","inspect","_id","layerServer","effect","layerHttpServices","mergeAll","layer","layerWeak","layerConfig","unwrap","layerTest","layerTestClient","fresh","RequestInit","keepalive","provideMerge","createServer","isEmpty","toSet","toSetCookieHeaders","push","writeHead","status","body","tryPromise","try","signal","catch","interruptible","tapCause","handleCause","length","suspend","r","globalThis","Response","formData","Object","fromEntries","fromWeb","once","drainLatch","openUnsafe","orDie","runForEachArray","array","needDrain","i","written","write","closeUnsafe","await","matchCauseEffect","onSuccess","onFailure","originalResponse","originalCause","headersSent","failCause","combine"],"sources":["../src/NodeHttpServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Accessors for the Node.js objects backing a platform Node
|
|
3
|
+
* `HttpServerRequest`.
|
|
4
|
+
*
|
|
5
|
+
* Use this module at interop boundaries when an Effect HTTP handler needs the
|
|
6
|
+
* original `http.IncomingMessage` or `http.ServerResponse` for APIs that are
|
|
7
|
+
* specific to Node, such as existing middleware, socket inspection, raw stream
|
|
8
|
+
* piping, or response customization that cannot be expressed with the portable
|
|
9
|
+
* `HttpServerRequest` and `HttpServerResponse` interfaces.
|
|
10
|
+
*
|
|
11
|
+
* The returned request is the original Node request supplied to the server. It
|
|
12
|
+
* does not reflect Effect request overrides made by middleware, such as a
|
|
13
|
+
* rewritten URL, adjusted headers, or a substituted remote address. Its body is
|
|
14
|
+
* also Node's one-shot readable stream, so avoid mixing raw stream consumption
|
|
15
|
+
* with Effect body, multipart, or stream helpers unless ownership of the body
|
|
16
|
+
* is clear. The returned response is the Node response owned by the platform
|
|
17
|
+
* server; writing to it directly bypasses the usual Effect response writer and
|
|
18
|
+
* must be coordinated carefully to avoid duplicate writes. Upgrade requests may
|
|
19
|
+
* create that response lazily when it is first requested.
|
|
20
|
+
*
|
|
21
|
+
* @since 4.0.0
|
|
3
22
|
*/
|
|
4
23
|
import type { HttpServerRequest } from "effect/unstable/http/HttpServerRequest";
|
|
5
24
|
import type * as Http from "node:http";
|
|
6
25
|
/**
|
|
7
|
-
*
|
|
26
|
+
* Returns the underlying Node `IncomingMessage` for a platform Node
|
|
27
|
+
* `HttpServerRequest`.
|
|
28
|
+
*
|
|
8
29
|
* @category Accessors
|
|
30
|
+
* @since 4.0.0
|
|
9
31
|
*/
|
|
10
32
|
export declare const toIncomingMessage: (self: HttpServerRequest) => Http.IncomingMessage;
|
|
11
33
|
/**
|
|
12
|
-
*
|
|
34
|
+
* Returns the underlying Node `ServerResponse` for a platform Node
|
|
35
|
+
* `HttpServerRequest`, evaluating the stored response thunk when the response
|
|
36
|
+
* was created lazily.
|
|
37
|
+
*
|
|
13
38
|
* @category Accessors
|
|
39
|
+
* @since 4.0.0
|
|
14
40
|
*/
|
|
15
41
|
export declare const toServerResponse: (self: HttpServerRequest) => Http.ServerResponse;
|
|
16
42
|
//# sourceMappingURL=NodeHttpServerRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeHttpServerRequest.d.ts","sourceRoot":"","sources":["../src/NodeHttpServerRequest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"NodeHttpServerRequest.d.ts","sourceRoot":"","sources":["../src/NodeHttpServerRequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,KAAG,IAAI,CAAC,eAAqC,CAAA;AAEtG;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,iBAAiB,KAAG,IAAI,CAAC,cAG/D,CAAA"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Returns the underlying Node `IncomingMessage` for a platform Node
|
|
3
|
+
* `HttpServerRequest`.
|
|
4
|
+
*
|
|
3
5
|
* @category Accessors
|
|
6
|
+
* @since 4.0.0
|
|
4
7
|
*/
|
|
5
8
|
export const toIncomingMessage = self => self.source;
|
|
6
9
|
/**
|
|
7
|
-
*
|
|
10
|
+
* Returns the underlying Node `ServerResponse` for a platform Node
|
|
11
|
+
* `HttpServerRequest`, evaluating the stored response thunk when the response
|
|
12
|
+
* was created lazily.
|
|
13
|
+
*
|
|
8
14
|
* @category Accessors
|
|
15
|
+
* @since 4.0.0
|
|
9
16
|
*/
|
|
10
17
|
export const toServerResponse = self => {
|
|
11
18
|
const res = self.response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeHttpServerRequest.js","names":["toIncomingMessage","self","source","toServerResponse","res","response"],"sources":["../src/NodeHttpServerRequest.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"NodeHttpServerRequest.js","names":["toIncomingMessage","self","source","toServerResponse","res","response"],"sources":["../src/NodeHttpServerRequest.ts"],"sourcesContent":[null],"mappings":"AAyBA;;;;;;;AAOA,OAAO,MAAMA,iBAAiB,GAAIC,IAAuB,IAA2BA,IAAI,CAACC,MAAa;AAEtG;;;;;;;;AAQA,OAAO,MAAMC,gBAAgB,GAAIF,IAAuB,IAAyB;EAC/E,MAAMG,GAAG,GAAIH,IAAY,CAACI,QAAQ;EAClC,OAAO,OAAOD,GAAG,KAAK,UAAU,GAAGA,GAAG,EAAE,GAAGA,GAAG;AAChD,CAAC","ignoreList":[]}
|
package/dist/NodeMultipart.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node-specific helpers for parsing HTTP `multipart/form-data` request bodies.
|
|
3
|
+
*
|
|
4
|
+
* This module adapts a Node `Readable` request body plus its incoming headers
|
|
5
|
+
* into the shared `Multipart` model. Use `stream` when an HTTP server route
|
|
6
|
+
* wants to handle form fields and uploaded files incrementally, for example API
|
|
7
|
+
* endpoints that validate text fields while piping file parts to storage. Use
|
|
8
|
+
* `persisted` when the whole form should be collected into a record and uploaded
|
|
9
|
+
* files should be written into scoped temporary files through the current
|
|
10
|
+
* `FileSystem` and `Path` services.
|
|
11
|
+
*
|
|
12
|
+
* Node request bodies are one-shot streams, so consume either `stream` or
|
|
13
|
+
* `persisted`, and make sure file parts are drained, piped, or otherwise
|
|
14
|
+
* deliberately handled. `contentEffect` loads a file into memory and should be
|
|
15
|
+
* reserved for small uploads. Persisted paths live only for the surrounding
|
|
16
|
+
* `Scope`, and filenames supplied by clients should be treated as metadata, not
|
|
17
|
+
* trusted filesystem paths.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
3
20
|
*/
|
|
4
21
|
import * as Effect from "effect/Effect";
|
|
5
22
|
import type * as FileSystem from "effect/FileSystem";
|
|
@@ -10,17 +27,28 @@ import * as Multipart from "effect/unstable/http/Multipart";
|
|
|
10
27
|
import type { IncomingHttpHeaders } from "node:http";
|
|
11
28
|
import type { Readable } from "node:stream";
|
|
12
29
|
/**
|
|
13
|
-
*
|
|
30
|
+
* Parses multipart data from a Node readable request body and headers into a
|
|
31
|
+
* stream of `Multipart.Part` values, converting parser failures to
|
|
32
|
+
* `MultipartError`.
|
|
33
|
+
*
|
|
14
34
|
* @category constructors
|
|
35
|
+
* @since 4.0.0
|
|
15
36
|
*/
|
|
16
37
|
export declare const stream: (source: Readable, headers: IncomingHttpHeaders) => Stream.Stream<Multipart.Part, Multipart.MultipartError>;
|
|
17
38
|
/**
|
|
18
|
-
*
|
|
39
|
+
* Parses multipart data from a Node readable request body and persists file
|
|
40
|
+
* parts using the current `FileSystem`, `Path`, and `Scope` services.
|
|
41
|
+
*
|
|
19
42
|
* @category constructors
|
|
43
|
+
* @since 4.0.0
|
|
20
44
|
*/
|
|
21
45
|
export declare const persisted: (source: Readable, headers: IncomingHttpHeaders) => Effect.Effect<Multipart.Persisted, Multipart.MultipartError, Scope.Scope | FileSystem.FileSystem | Path.Path>;
|
|
22
46
|
/**
|
|
23
|
-
*
|
|
47
|
+
* Returns the underlying Node readable stream for a multipart file produced by
|
|
48
|
+
* the Node multipart parser.
|
|
49
|
+
*
|
|
50
|
+
* @category converting
|
|
51
|
+
* @since 4.0.0
|
|
24
52
|
*/
|
|
25
53
|
export declare const fileToReadable: (file: Multipart.File) => Readable;
|
|
26
54
|
//# sourceMappingURL=NodeMultipart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeMultipart.d.ts","sourceRoot":"","sources":["../src/NodeMultipart.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"NodeMultipart.d.ts","sourceRoot":"","sources":["../src/NodeMultipart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAG3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GACjB,QAAQ,QAAQ,EAChB,SAAS,mBAAmB,KAC3B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CActD,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,QAAQ,EAChB,SAAS,mBAAmB,KAC3B,MAAM,CAAC,MAAM,CACd,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,cAAc,EACxB,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAM1C,CAAA;AAEP;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,CAAC,IAAI,KAAG,QAAmC,CAAA"}
|
package/dist/NodeMultipart.js
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node-specific helpers for parsing HTTP `multipart/form-data` request bodies.
|
|
3
|
+
*
|
|
4
|
+
* This module adapts a Node `Readable` request body plus its incoming headers
|
|
5
|
+
* into the shared `Multipart` model. Use `stream` when an HTTP server route
|
|
6
|
+
* wants to handle form fields and uploaded files incrementally, for example API
|
|
7
|
+
* endpoints that validate text fields while piping file parts to storage. Use
|
|
8
|
+
* `persisted` when the whole form should be collected into a record and uploaded
|
|
9
|
+
* files should be written into scoped temporary files through the current
|
|
10
|
+
* `FileSystem` and `Path` services.
|
|
11
|
+
*
|
|
12
|
+
* Node request bodies are one-shot streams, so consume either `stream` or
|
|
13
|
+
* `persisted`, and make sure file parts are drained, piped, or otherwise
|
|
14
|
+
* deliberately handled. `contentEffect` loads a file into memory and should be
|
|
15
|
+
* reserved for small uploads. Persisted paths live only for the surrounding
|
|
16
|
+
* `Scope`, and filenames supplied by clients should be treated as metadata, not
|
|
17
|
+
* trusted filesystem paths.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
3
20
|
*/
|
|
4
21
|
import * as Effect from "effect/Effect";
|
|
5
22
|
import * as Inspectable from "effect/Inspectable";
|
|
@@ -10,8 +27,12 @@ import * as NFS from "node:fs";
|
|
|
10
27
|
import * as NodeStreamP from "node:stream/promises";
|
|
11
28
|
import * as NodeStream from "./NodeStream.js";
|
|
12
29
|
/**
|
|
13
|
-
*
|
|
30
|
+
* Parses multipart data from a Node readable request body and headers into a
|
|
31
|
+
* stream of `Multipart.Part` values, converting parser failures to
|
|
32
|
+
* `MultipartError`.
|
|
33
|
+
*
|
|
14
34
|
* @category constructors
|
|
35
|
+
* @since 4.0.0
|
|
15
36
|
*/
|
|
16
37
|
export const stream = (source, headers) => Multipart.makeConfig(headers).pipe(Effect.map(config => NodeStream.fromReadable({
|
|
17
38
|
evaluate() {
|
|
@@ -22,8 +43,11 @@ export const stream = (source, headers) => Multipart.makeConfig(headers).pipe(Ef
|
|
|
22
43
|
onError: error => convertError(error)
|
|
23
44
|
})), Stream.unwrap, Stream.map(convertPart));
|
|
24
45
|
/**
|
|
25
|
-
*
|
|
46
|
+
* Parses multipart data from a Node readable request body and persists file
|
|
47
|
+
* parts using the current `FileSystem`, `Path`, and `Scope` services.
|
|
48
|
+
*
|
|
26
49
|
* @category constructors
|
|
50
|
+
* @since 4.0.0
|
|
27
51
|
*/
|
|
28
52
|
export const persisted = (source, headers) => Multipart.toPersisted(stream(source, headers), (path, file) => Effect.tryPromise({
|
|
29
53
|
try: signal => NodeStreamP.pipeline(file.file, NFS.createWriteStream(path), {
|
|
@@ -32,7 +56,11 @@ export const persisted = (source, headers) => Multipart.toPersisted(stream(sourc
|
|
|
32
56
|
catch: cause => Multipart.MultipartError.fromReason("InternalError", cause)
|
|
33
57
|
}));
|
|
34
58
|
/**
|
|
35
|
-
*
|
|
59
|
+
* Returns the underlying Node readable stream for a multipart file produced by
|
|
60
|
+
* the Node multipart parser.
|
|
61
|
+
*
|
|
62
|
+
* @category converting
|
|
63
|
+
* @since 4.0.0
|
|
36
64
|
*/
|
|
37
65
|
export const fileToReadable = file => file.file;
|
|
38
66
|
// -----------------------------------------------------------------------------
|