@effect/platform-node 0.11.5 → 0.12.1

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.
Files changed (63) hide show
  1. package/Http/NodeClient.d.ts +10 -0
  2. package/Http/NodeClient.d.ts.map +1 -1
  3. package/Http/NodeClient.js +14 -2
  4. package/Http/NodeClient.js.map +1 -1
  5. package/Http/Server.d.ts +34 -0
  6. package/Http/Server.d.ts.map +1 -0
  7. package/Http/Server.js +49 -0
  8. package/Http/Server.js.map +1 -0
  9. package/HttpServer.d.ts +9 -0
  10. package/HttpServer.d.ts.map +1 -0
  11. package/HttpServer.js +26 -0
  12. package/HttpServer.js.map +1 -0
  13. package/Stream.d.ts +14 -6
  14. package/Stream.d.ts.map +1 -1
  15. package/Stream.js.map +1 -1
  16. package/internal/fileSystem.js +9 -9
  17. package/internal/fileSystem.js.map +1 -1
  18. package/internal/http/formData.d.ts +5 -0
  19. package/internal/http/formData.d.ts.map +1 -0
  20. package/internal/http/formData.js +106 -0
  21. package/internal/http/formData.js.map +1 -0
  22. package/internal/http/incomingMessage.d.ts +2 -0
  23. package/internal/http/incomingMessage.d.ts.map +1 -0
  24. package/internal/http/incomingMessage.js +62 -0
  25. package/internal/http/incomingMessage.js.map +1 -0
  26. package/internal/http/nodeClient.js +28 -65
  27. package/internal/http/nodeClient.js.map +1 -1
  28. package/internal/http/server.d.ts +2 -0
  29. package/internal/http/server.d.ts.map +1 -0
  30. package/internal/http/server.js +218 -0
  31. package/internal/http/server.js.map +1 -0
  32. package/internal/stream.js +54 -35
  33. package/internal/stream.js.map +1 -1
  34. package/mjs/Http/NodeClient.mjs +10 -0
  35. package/mjs/Http/NodeClient.mjs.map +1 -1
  36. package/mjs/Http/Server.mjs +21 -0
  37. package/mjs/Http/Server.mjs.map +1 -0
  38. package/mjs/HttpServer.mjs +7 -0
  39. package/mjs/HttpServer.mjs.map +1 -0
  40. package/mjs/Stream.mjs.map +1 -1
  41. package/mjs/internal/fileSystem.mjs +9 -9
  42. package/mjs/internal/fileSystem.mjs.map +1 -1
  43. package/mjs/internal/http/formData.mjs +95 -0
  44. package/mjs/internal/http/formData.mjs.map +1 -0
  45. package/mjs/internal/http/incomingMessage.mjs +53 -0
  46. package/mjs/internal/http/incomingMessage.mjs.map +1 -0
  47. package/mjs/internal/http/nodeClient.mjs +25 -64
  48. package/mjs/internal/http/nodeClient.mjs.map +1 -1
  49. package/mjs/internal/http/server.mjs +207 -0
  50. package/mjs/internal/http/server.mjs.map +1 -0
  51. package/mjs/internal/stream.mjs +54 -35
  52. package/mjs/internal/stream.mjs.map +1 -1
  53. package/package.json +5 -2
  54. package/src/Http/NodeClient.ts +13 -0
  55. package/src/Http/Server.ts +45 -0
  56. package/src/HttpServer.ts +10 -0
  57. package/src/Stream.ts +14 -9
  58. package/src/internal/fileSystem.ts +16 -11
  59. package/src/internal/http/formData.ts +158 -0
  60. package/src/internal/http/incomingMessage.ts +78 -0
  61. package/src/internal/http/nodeClient.ts +30 -78
  62. package/src/internal/http/server.ts +323 -0
  63. package/src/internal/stream.ts +81 -46
@@ -1,14 +1,11 @@
1
- var _a, _b;
2
1
  import * as Context from "@effect/data/Context";
3
2
  import * as Effect from "@effect/io/Effect";
4
3
  import * as Layer from "@effect/io/Layer";
4
+ import { IncomingMessageImpl } from "@effect/platform-node/internal/http/incomingMessage";
5
5
  import * as NodeSink from "@effect/platform-node/Sink";
6
- import * as NodeStream from "@effect/platform-node/Stream";
7
6
  import * as Client from "@effect/platform/Http/Client";
8
7
  import * as Error from "@effect/platform/Http/ClientError";
9
8
  import * as ClientResponse from "@effect/platform/Http/ClientResponse";
10
- import * as Headers from "@effect/platform/Http/Headers";
11
- import * as IncomingMessage from "@effect/platform/Http/IncomingMessage";
12
9
  import * as UrlParams from "@effect/platform/Http/UrlParams";
13
10
  import * as Stream from "@effect/stream/Stream";
14
11
  import * as Http from "node:http";
@@ -26,7 +23,9 @@ export const makeAgent = options => Effect.map(Effect.all([Effect.acquireRelease
26
23
  https
27
24
  }));
28
25
  /** @internal */
29
- export const agentLayer = /*#__PURE__*/Layer.scoped(HttpAgent, /*#__PURE__*/makeAgent());
26
+ export const makeAgentLayer = options => Layer.scoped(HttpAgent, makeAgent(options));
27
+ /** @internal */
28
+ export const agentLayer = /*#__PURE__*/makeAgentLayer();
30
29
  const fromAgent = agent => Client.make(request => Effect.flatMap(UrlParams.makeUrl(request.url, request.urlParams, _ => Error.RequestError({
31
30
  request,
32
31
  reason: "InvalidUrl",
@@ -55,7 +54,7 @@ const sendBody = (nodeRequest, request, body) => Effect.suspend(() => {
55
54
  nodeRequest.end();
56
55
  return waitForFinish(nodeRequest, request);
57
56
  }
58
- case "Bytes":
57
+ case "Uint8Array":
59
58
  case "Raw":
60
59
  {
61
60
  nodeRequest.end(body.body);
@@ -76,17 +75,6 @@ const sendBody = (nodeRequest, request, body) => Effect.suspend(() => {
76
75
  })
77
76
  });
78
77
  }
79
- case "BytesEffect":
80
- {
81
- return Effect.flatMap(Effect.mapError(body.body, _ => Error.RequestError({
82
- request,
83
- reason: "Encode",
84
- error: _
85
- })), bytes => {
86
- nodeRequest.end(bytes);
87
- return waitForFinish(nodeRequest, request);
88
- });
89
- }
90
78
  case "Stream":
91
79
  {
92
80
  return Stream.run(Stream.mapError(body.stream, _ => Error.RequestError({
@@ -125,37 +113,19 @@ const waitForFinish = (nodeRequest, request) => Effect.async(resume => {
125
113
  nodeRequest.removeAllListeners("finish");
126
114
  });
127
115
  });
128
- class ClientResponseImpl {
116
+ class ClientResponseImpl extends IncomingMessageImpl {
129
117
  constructor(request, source) {
130
- this.request = request;
131
- this.source = source;
132
- this[_a] = IncomingMessage.TypeId;
133
- this[_b] = ClientResponse.TypeId;
134
- }
135
- get status() {
136
- return this.source.statusCode;
137
- }
138
- get headers() {
139
- return Headers.fromInput(this.source.headers);
140
- }
141
- get text() {
142
- return NodeStream.toString(() => this.source, _ => Error.ResponseError({
143
- request: this.request,
118
+ super(source, _ => Error.ResponseError({
119
+ request,
144
120
  response: this,
145
121
  reason: "Decode",
146
122
  error: _
147
123
  }));
124
+ this.request = request;
125
+ this[ClientResponse.TypeId] = ClientResponse.TypeId;
148
126
  }
149
- get json() {
150
- return Effect.tryMap(this.text, {
151
- try: _ => JSON.parse(_),
152
- catch: _ => Error.ResponseError({
153
- request: this.request,
154
- response: this,
155
- reason: "Decode",
156
- error: _
157
- })
158
- });
127
+ get status() {
128
+ return this.source.statusCode;
159
129
  }
160
130
  get formData() {
161
131
  return Effect.tryPromise({
@@ -164,34 +134,25 @@ class ClientResponseImpl {
164
134
  status: this.source.statusCode,
165
135
  statusText: this.source.statusMessage
166
136
  }).formData(),
167
- catch: _ => Error.ResponseError({
168
- request: this.request,
169
- response: this,
170
- reason: "Decode",
171
- error: _
172
- })
137
+ catch: this.onError
173
138
  });
174
139
  }
175
- get stream() {
176
- return NodeStream.fromReadable(() => this.source, _ => Error.ResponseError({
177
- request: this.request,
178
- response: this,
179
- reason: "Decode",
180
- error: _
181
- }));
140
+ toString() {
141
+ return `ClientResponse(${this.status})`;
182
142
  }
183
- get arrayBuffer() {
184
- return NodeStream.toUint8Array(() => this.source, _ => Error.ResponseError({
185
- request: this.request,
186
- response: this,
187
- reason: "Decode",
188
- error: _
189
- }));
143
+ toJSON() {
144
+ return {
145
+ _tag: "ClientResponse",
146
+ status: this.status,
147
+ headers: Object.fromEntries(this.headers)
148
+ };
190
149
  }
191
150
  }
192
- _a = IncomingMessage.TypeId, _b = ClientResponse.TypeId;
151
+ ClientResponse.TypeId;
193
152
  /** @internal */
194
153
  export const make = /*#__PURE__*/Effect.map(HttpAgent, fromAgent);
195
154
  /** @internal */
196
- export const layer = /*#__PURE__*/Layer.provide(agentLayer, /*#__PURE__*/Layer.effect(Client.Client, make));
155
+ export const layerWithoutAgent = /*#__PURE__*/Layer.effect(Client.Client, make);
156
+ /** @internal */
157
+ export const layer = /*#__PURE__*/Layer.provide(agentLayer, layerWithoutAgent);
197
158
  //# sourceMappingURL=nodeClient.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeClient.mjs","names":["Context","Effect","Layer","NodeSink","NodeStream","Client","Error","ClientResponse","Headers","IncomingMessage","UrlParams","Stream","Http","Https","Readable","pipeline","HttpAgentTypeId","Symbol","for","HttpAgent","Tag","makeAgent","options","map","all","acquireRelease","sync","Agent","agent","destroy","http","https","agentLayer","scoped","fromAgent","make","request","flatMap","makeUrl","url","urlParams","_","RequestError","reason","error","suspend","controller","AbortController","nodeRequest","protocol","method","headers","Object","fromEntries","signal","ClientResponseImpl","onInterrupt","abort","zipRight","sendBody","body","waitForResponse","concurrent","_tag","end","waitForFinish","response","Response","formData","forEach","value","key","setHeader","tryPromise","try","fromWeb","catch","mapError","bytes","run","stream","fromWritable","async","resume","on","succeed","removeAllListeners","fail","unit","constructor","source","_a","TypeId","_b","status","statusCode","fromInput","text","toString","ResponseError","json","tryMap","JSON","parse","toWeb","globalThis","statusText","statusMessage","fromReadable","arrayBuffer","toUint8Array","layer","provide","effect"],"sources":["../../../src/internal/http/nodeClient.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"nodeClient.mjs","names":["Context","Effect","Layer","IncomingMessageImpl","NodeSink","Client","Error","ClientResponse","UrlParams","Stream","Http","Https","Readable","pipeline","HttpAgentTypeId","Symbol","for","HttpAgent","Tag","makeAgent","options","map","all","acquireRelease","sync","Agent","agent","destroy","http","https","makeAgentLayer","scoped","agentLayer","fromAgent","make","request","flatMap","makeUrl","url","urlParams","_","RequestError","reason","error","suspend","controller","AbortController","nodeRequest","protocol","method","headers","Object","fromEntries","signal","ClientResponseImpl","onInterrupt","abort","zipRight","sendBody","body","waitForResponse","concurrent","_tag","end","waitForFinish","response","Response","formData","forEach","value","key","setHeader","tryPromise","try","fromWeb","catch","run","mapError","stream","fromWritable","async","resume","on","succeed","removeAllListeners","fail","unit","constructor","source","ResponseError","TypeId","status","statusCode","toWeb","globalThis","Headers","statusText","statusMessage","onError","toString","toJSON","layerWithoutAgent","effect","layer","provide"],"sources":["../../../src/internal/http/nodeClient.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ import * as Option from "@effect/data/Option";
2
+ import * as Config from "@effect/io/Config";
3
+ import * as Effect from "@effect/io/Effect";
4
+ import * as Fiber from "@effect/io/Fiber";
5
+ import * as Layer from "@effect/io/Layer";
6
+ import * as Runtime from "@effect/io/Runtime";
7
+ import * as internalFormData from "@effect/platform-node/internal/http/formData";
8
+ import { IncomingMessageImpl } from "@effect/platform-node/internal/http/incomingMessage";
9
+ import * as NodeSink from "@effect/platform-node/Sink";
10
+ import * as FileSystem from "@effect/platform/FileSystem";
11
+ import * as Headers from "@effect/platform/Http/Headers";
12
+ import * as IncomingMessage from "@effect/platform/Http/IncomingMessage";
13
+ import * as Middleware from "@effect/platform/Http/Middleware";
14
+ import * as Server from "@effect/platform/Http/Server";
15
+ import * as Error from "@effect/platform/Http/ServerError";
16
+ import * as ServerRequest from "@effect/platform/Http/ServerRequest";
17
+ import * as ServerResponse from "@effect/platform/Http/ServerResponse";
18
+ import * as Stream from "@effect/stream/Stream";
19
+ import { Readable } from "node:stream";
20
+ /** @internal */
21
+ export const make = (evaluate, options) => Effect.gen(function* (_) {
22
+ const server = evaluate();
23
+ const serverFiber = yield* _(Effect.addFinalizer(() => Effect.async(resume => {
24
+ server.close(error => {
25
+ if (error) {
26
+ resume(Effect.die(error));
27
+ } else {
28
+ resume(Effect.unit);
29
+ }
30
+ });
31
+ })), Effect.zipRight(Effect.async(resume => {
32
+ server.on("error", error => {
33
+ resume(Effect.fail(Error.ServeError({
34
+ error
35
+ })));
36
+ });
37
+ })), Effect.scoped, Effect.forkScoped);
38
+ yield* _(Effect.async(resume => {
39
+ server.listen(options, () => {
40
+ resume(Effect.unit);
41
+ });
42
+ }));
43
+ const address = server.address();
44
+ return Server.make({
45
+ address: typeof address === "string" ? {
46
+ _tag: "UnixAddress",
47
+ path: address
48
+ } : {
49
+ _tag: "TcpAddress",
50
+ hostname: address.address,
51
+ port: address.port
52
+ },
53
+ serve: (httpApp, middleware) => {
54
+ const handledApp = middleware ? middleware(respond(httpApp)) : respond(httpApp);
55
+ return Effect.flatMap(Effect.runtime(), runtime => {
56
+ const runFork = Runtime.runFork(runtime);
57
+ function handler(nodeRequest, nodeResponse) {
58
+ runFork(Effect.provideService(handledApp, ServerRequest.ServerRequest, new ServerRequestImpl(nodeRequest, nodeResponse)));
59
+ }
60
+ return Effect.all([Effect.acquireRelease(Effect.sync(() => server.on("request", handler)), () => Effect.sync(() => server.off("request", handler))), Fiber.join(serverFiber)], {
61
+ discard: true,
62
+ concurrency: "unbounded"
63
+ });
64
+ });
65
+ }
66
+ });
67
+ }).pipe(Effect.locally(IncomingMessage.maxBodySize, Option.some(FileSystem.Size(1024 * 1024 * 10))));
68
+ const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.tapErrorCause(Effect.tap(Effect.flatMap(httpApp, ServerResponse.toNonEffectBody), response => handleResponse(request, response)), _cause => Effect.sync(() => {
69
+ const nodeResponse = request.response;
70
+ if (!nodeResponse.headersSent) {
71
+ nodeResponse.writeHead(500);
72
+ }
73
+ if (!nodeResponse.writableEnded) {
74
+ nodeResponse.end();
75
+ }
76
+ }))));
77
+ class ServerRequestImpl extends IncomingMessageImpl {
78
+ constructor(source, response, url = source.url, headersOverride) {
79
+ super(source, _ => Error.RequestError({
80
+ request: this,
81
+ reason: "Decode",
82
+ error: _
83
+ }));
84
+ this.source = source;
85
+ this.response = response;
86
+ this.url = url;
87
+ this.headersOverride = headersOverride;
88
+ this[ServerRequest.TypeId] = ServerRequest.TypeId;
89
+ }
90
+ get originalUrl() {
91
+ return this.source.url;
92
+ }
93
+ get method() {
94
+ return this.source.method;
95
+ }
96
+ get headers() {
97
+ this.headersOverride ??= Headers.fromInput(this.source.headers);
98
+ return this.headersOverride;
99
+ }
100
+ get formData() {
101
+ if (this.formDataEffect) {
102
+ return this.formDataEffect;
103
+ }
104
+ this.formDataEffect = Effect.runSync(Effect.cached(internalFormData.formData(this.source)));
105
+ return this.formDataEffect;
106
+ }
107
+ get formDataStream() {
108
+ return internalFormData.fromRequest(this.source);
109
+ }
110
+ setUrl(url) {
111
+ return new ServerRequestImpl(this.source, this.response, url, this.headersOverride);
112
+ }
113
+ replaceHeaders(headers) {
114
+ return new ServerRequestImpl(this.source, this.response, this.url, headers);
115
+ }
116
+ toString() {
117
+ return `ServerRequest(${this.method} ${this.url})`;
118
+ }
119
+ toJSON() {
120
+ return {
121
+ _tag: "ServerRequest",
122
+ method: this.method,
123
+ url: this.url,
124
+ originalUrl: this.originalUrl,
125
+ headers: Object.fromEntries(this.headers)
126
+ };
127
+ }
128
+ }
129
+ ServerRequest.TypeId;
130
+ /** @internal */
131
+ export const layer = (evaluate, options) => Layer.scoped(Server.Server, make(evaluate, options));
132
+ /** @internal */
133
+ export const layerConfig = (evaluate, options) => Layer.scoped(Server.Server, Effect.flatMap(Effect.config(Config.unwrap(options)), options => make(evaluate, options)));
134
+ const handleResponse = (request, response) => Effect.suspend(() => {
135
+ const nodeResponse = request.response;
136
+ switch (response.body._tag) {
137
+ case "Empty":
138
+ {
139
+ nodeResponse.writeHead(response.status, response.headers === Headers.empty ? undefined : Object.fromEntries(response.headers));
140
+ nodeResponse.end();
141
+ return Effect.unit;
142
+ }
143
+ case "Raw":
144
+ {
145
+ const headers = response.headers === Headers.empty ? {} : Object.fromEntries(response.headers);
146
+ if (response.body.contentType) {
147
+ headers["content-type"] = response.body.contentType;
148
+ }
149
+ if (response.body.contentLength) {
150
+ headers["content-length"] = response.body.contentLength.toString();
151
+ }
152
+ nodeResponse.writeHead(response.status, headers);
153
+ nodeResponse.end(response.body.body);
154
+ return Effect.unit;
155
+ }
156
+ case "Uint8Array":
157
+ {
158
+ const headers = response.headers === Headers.empty ? {} : Object.fromEntries(response.headers);
159
+ headers["content-type"] = response.body.contentType;
160
+ headers["content-length"] = response.body.contentLength.toString();
161
+ nodeResponse.writeHead(response.status, headers);
162
+ nodeResponse.end(response.body.body);
163
+ return Effect.unit;
164
+ }
165
+ case "FormData":
166
+ {
167
+ const body = response.body;
168
+ return Effect.async(resume => {
169
+ const r = new Response(body.formData);
170
+ const headers = response.headers ? Object.fromEntries(response.headers) : {};
171
+ headers["content-type"] = r.headers.get("content-type");
172
+ nodeResponse.writeHead(response.status, headers);
173
+ Readable.fromWeb(r.body).pipe(nodeResponse).on("error", error => {
174
+ resume(Effect.fail(Error.ResponseError({
175
+ request,
176
+ response,
177
+ reason: "Decode",
178
+ error
179
+ })));
180
+ }).once("finish", () => {
181
+ resume(Effect.unit);
182
+ });
183
+ });
184
+ }
185
+ case "Stream":
186
+ {
187
+ const headers = response.headers === Headers.empty ? {} : Object.fromEntries(response.headers);
188
+ headers["content-type"] = response.body.contentType;
189
+ if (response.body.contentLength) {
190
+ headers["content-length"] = response.body.contentLength.toString();
191
+ }
192
+ nodeResponse.writeHead(response.status, headers);
193
+ return Stream.run(Stream.mapError(response.body.stream, error => Error.ResponseError({
194
+ request,
195
+ response,
196
+ reason: "Decode",
197
+ error
198
+ })), NodeSink.fromWritable(() => nodeResponse, error => Error.ResponseError({
199
+ request,
200
+ response,
201
+ reason: "Decode",
202
+ error
203
+ })));
204
+ }
205
+ }
206
+ });
207
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","names":["Option","Config","Effect","Fiber","Layer","Runtime","internalFormData","IncomingMessageImpl","NodeSink","FileSystem","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","ServerResponse","Stream","Readable","make","evaluate","options","gen","_","server","serverFiber","addFinalizer","async","resume","close","error","die","unit","zipRight","on","fail","ServeError","scoped","forkScoped","listen","address","_tag","path","hostname","port","serve","httpApp","middleware","handledApp","respond","flatMap","runtime","runFork","handler","nodeRequest","nodeResponse","provideService","ServerRequestImpl","all","acquireRelease","sync","off","join","discard","concurrency","pipe","locally","maxBodySize","some","Size","request","tapErrorCause","tap","toNonEffectBody","response","handleResponse","_cause","headersSent","writeHead","writableEnded","end","constructor","source","url","headersOverride","RequestError","reason","TypeId","originalUrl","method","headers","fromInput","formData","formDataEffect","runSync","cached","formDataStream","fromRequest","setUrl","replaceHeaders","toString","toJSON","Object","fromEntries","layer","layerConfig","config","unwrap","suspend","body","status","empty","undefined","contentType","contentLength","r","Response","get","fromWeb","ResponseError","once","run","mapError","stream","fromWritable"],"sources":["../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -3,7 +3,7 @@ import * as Effect from "@effect/io/Effect";
3
3
  import * as Stream from "@effect/stream/Stream";
4
4
  /** @internal */
5
5
  export const fromReadable = (evaluate, onError, {
6
- chunkSize = Option.none()
6
+ chunkSize
7
7
  } = {}) => Stream.flatMap(_ => Stream.repeatEffectOption(readChunk(_, chunkSize)))(Stream.unwrapScoped(Effect.map(stream => Stream.async(emit => {
8
8
  stream.once("error", err => {
9
9
  emit.fail(onError(err));
@@ -28,42 +28,61 @@ export const fromReadable = (evaluate, onError, {
28
28
  stream.destroy();
29
29
  }
30
30
  })))));
31
- const readChunk = (stream, size) => Effect.flatMap(_ => _ ? Effect.succeed(_) : Effect.fail(Option.none()))(Effect.sync(() => size._tag === "Some" ? stream.read(Number(size)) : stream.read()));
31
+ const readChunk = (stream, size) => Effect.flatMap(_ => _ ? Effect.succeed(_) : Effect.fail(Option.none()))(Effect.sync(() => size ? stream.read(Number(size)) : stream.read()));
32
32
  /** @internal */
33
- export const toString = (evaluate, onError, encoding = "utf-8") => Effect.async(resume => {
34
- const stream = evaluate();
35
- let string = "";
36
- stream.setEncoding(encoding);
37
- stream.once("error", err => {
38
- resume(Effect.fail(onError(err)));
39
- });
40
- stream.once("end", () => {
41
- resume(Effect.succeed(string));
42
- });
43
- stream.on("data", chunk => {
44
- string += chunk;
45
- });
46
- return Effect.sync(() => {
33
+ export const toString = options => {
34
+ const maxBytesNumber = options.maxBytes ? Number(options.maxBytes) : undefined;
35
+ return Effect.acquireUseRelease(Effect.sync(() => {
36
+ const stream = options.readable();
37
+ stream.setEncoding(options.encoding ?? "utf8");
38
+ return stream;
39
+ }), stream => Effect.async(resume => {
40
+ let string = "";
41
+ let bytes = 0;
42
+ stream.once("error", err => {
43
+ resume(Effect.fail(options.onFailure(err)));
44
+ });
45
+ stream.once("end", () => {
46
+ resume(Effect.succeed(string));
47
+ });
48
+ stream.on("data", chunk => {
49
+ string += chunk;
50
+ bytes += Buffer.byteLength(chunk);
51
+ if (maxBytesNumber && bytes > maxBytesNumber) {
52
+ resume(Effect.fail(options.onFailure(new Error("maxBytes exceeded"))));
53
+ }
54
+ });
55
+ }), stream => Effect.sync(() => {
47
56
  stream.removeAllListeners();
48
- stream.destroy();
49
- });
50
- });
57
+ if (!stream.closed) {
58
+ stream.destroy();
59
+ }
60
+ }));
61
+ };
51
62
  /** @internal */
52
- export const toUint8Array = (evaluate, onError) => Effect.async(resume => {
53
- const stream = evaluate();
54
- let buffer = Buffer.alloc(0);
55
- stream.once("error", err => {
56
- resume(Effect.fail(onError(err)));
57
- });
58
- stream.once("end", () => {
59
- resume(Effect.succeed(buffer));
60
- });
61
- stream.on("data", chunk => {
62
- buffer = Buffer.concat([buffer, chunk]);
63
- });
64
- return Effect.sync(() => {
63
+ export const toUint8Array = options => {
64
+ const maxBytesNumber = options.maxBytes ? Number(options.maxBytes) : undefined;
65
+ return Effect.acquireUseRelease(Effect.sync(options.readable), stream => Effect.async(resume => {
66
+ let buffer = Buffer.alloc(0);
67
+ let bytes = 0;
68
+ stream.once("error", err => {
69
+ resume(Effect.fail(options.onFailure(err)));
70
+ });
71
+ stream.once("end", () => {
72
+ resume(Effect.succeed(buffer));
73
+ });
74
+ stream.on("data", chunk => {
75
+ buffer = Buffer.concat([buffer, chunk]);
76
+ bytes += chunk.length;
77
+ if (maxBytesNumber && bytes > maxBytesNumber) {
78
+ resume(Effect.fail(options.onFailure(new Error("maxBytes exceeded"))));
79
+ }
80
+ });
81
+ }), stream => Effect.sync(() => {
65
82
  stream.removeAllListeners();
66
- stream.destroy();
67
- });
68
- });
83
+ if (!stream.closed) {
84
+ stream.destroy();
85
+ }
86
+ }));
87
+ };
69
88
  //# sourceMappingURL=stream.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.mjs","names":["Option","Effect","Stream","fromReadable","evaluate","onError","chunkSize","none","flatMap","_","repeatEffectOption","readChunk","unwrapScoped","map","stream","async","emit","once","err","fail","end","on","single","readable","acquireRelease","sync","removeAllListeners","closed","destroy","size","succeed","_tag","read","Number","toString","encoding","resume","string","setEncoding","chunk","toUint8Array","buffer","Buffer","alloc","concat"],"sources":["../../src/internal/stream.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"stream.mjs","names":["Option","Effect","Stream","fromReadable","evaluate","onError","chunkSize","flatMap","_","repeatEffectOption","readChunk","unwrapScoped","map","stream","async","emit","once","err","fail","end","on","single","readable","acquireRelease","sync","removeAllListeners","closed","destroy","size","succeed","none","read","Number","toString","options","maxBytesNumber","maxBytes","undefined","acquireUseRelease","setEncoding","encoding","resume","string","bytes","onFailure","chunk","Buffer","byteLength","Error","toUint8Array","buffer","alloc","concat","length"],"sources":["../../src/internal/stream.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.11.5",
3
+ "version": "0.12.1",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,10 +24,13 @@
24
24
  },
25
25
  "sideEffects": [],
26
26
  "author": "Effect contributors",
27
+ "dependencies": {
28
+ "busboy": "^1.6.0"
29
+ },
27
30
  "peerDependencies": {
28
31
  "@effect/data": "^0.17.1",
29
32
  "@effect/io": "^0.38.0",
30
33
  "@effect/stream": "^0.34.0",
31
- "@effect/platform": "^0.11.5"
34
+ "@effect/platform": "^0.12.1"
32
35
  }
33
36
  }
@@ -51,6 +51,13 @@ export const makeAgent: (options?: Https.AgentOptions) => Effect.Effect<Scope.Sc
51
51
  */
52
52
  export const agentLayer: Layer.Layer<never, never, HttpAgent> = internal.agentLayer
53
53
 
54
+ /**
55
+ * @since 1.0.0
56
+ * @category agent
57
+ */
58
+ export const makeAgentLayer: (options?: Https.AgentOptions) => Layer.Layer<never, never, HttpAgent> =
59
+ internal.makeAgentLayer
60
+
54
61
  /**
55
62
  * @since 1.0.0
56
63
  * @category constructors
@@ -62,3 +69,9 @@ export const make: Effect.Effect<HttpAgent, never, Client.Client.Default> = inte
62
69
  * @category layers
63
70
  */
64
71
  export const layer: Layer.Layer<never, never, Client.Client.Default> = internal.layer
72
+
73
+ /**
74
+ * @since 1.0.0
75
+ * @category layers
76
+ */
77
+ export const layerWithoutAgent: Layer.Layer<HttpAgent, never, Client.Client.Default> = internal.layerWithoutAgent