@effect/platform-node 0.11.3 → 0.11.5

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/mjs/Stream.mjs CHANGED
@@ -1,7 +1,17 @@
1
1
  import * as internal from "@effect/platform-node/internal/stream";
2
2
  /**
3
- * @category constructor
3
+ * @category constructors
4
4
  * @since 1.0.0
5
5
  */
6
6
  export const fromReadable = internal.fromReadable;
7
+ /**
8
+ * @since 1.0.0
9
+ * @category conversions
10
+ */
11
+ export const toString = internal.toString;
12
+ /**
13
+ * @since 1.0.0
14
+ * @category conversions
15
+ */
16
+ export const toUint8Array = internal.toUint8Array;
7
17
  //# sourceMappingURL=Stream.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stream.mjs","names":["internal","fromReadable"],"sources":["../src/Stream.ts"],"sourcesContent":[null],"mappings":"AAKA,OAAO,KAAKA,QAAQ,MAAM,uCAAuC;AAcjE;;;;AAIA,OAAO,MAAMC,YAAY,GAIED,QAAQ,CAACC,YAAY"}
1
+ {"version":3,"file":"Stream.mjs","names":["internal","fromReadable","toString","toUint8Array"],"sources":["../src/Stream.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,QAAQ,MAAM,uCAAuC;AAcjE;;;;AAIA,OAAO,MAAMC,YAAY,GAIED,QAAQ,CAACC,YAAY;AAEhD;;;;AAIA,OAAO,MAAMC,QAAQ,GAIWF,QAAQ,CAACE,QAAQ;AAEjD;;;;AAIA,OAAO,MAAMC,YAAY,GAGWH,QAAQ,CAACG,YAAY"}
@@ -0,0 +1,197 @@
1
+ var _a, _b;
2
+ import * as Context from "@effect/data/Context";
3
+ import * as Effect from "@effect/io/Effect";
4
+ import * as Layer from "@effect/io/Layer";
5
+ import * as NodeSink from "@effect/platform-node/Sink";
6
+ import * as NodeStream from "@effect/platform-node/Stream";
7
+ import * as Client from "@effect/platform/Http/Client";
8
+ import * as Error from "@effect/platform/Http/ClientError";
9
+ 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
+ import * as UrlParams from "@effect/platform/Http/UrlParams";
13
+ import * as Stream from "@effect/stream/Stream";
14
+ import * as Http from "node:http";
15
+ import * as Https from "node:https";
16
+ import { Readable } from "node:stream";
17
+ import { pipeline } from "node:stream/promises";
18
+ /** @internal */
19
+ export const HttpAgentTypeId = /*#__PURE__*/Symbol.for("@effect/platform-node/Http/NodeClient/HttpAgent");
20
+ /** @internal */
21
+ export const HttpAgent = /*#__PURE__*/Context.Tag("@effect/platform-node/Http/NodeClient/HttpAgent");
22
+ /** @internal */
23
+ export const makeAgent = options => Effect.map(Effect.all([Effect.acquireRelease(Effect.sync(() => new Http.Agent(options)), agent => Effect.sync(() => agent.destroy())), Effect.acquireRelease(Effect.sync(() => new Https.Agent(options)), agent => Effect.sync(() => agent.destroy()))]), ([http, https]) => ({
24
+ [HttpAgentTypeId]: HttpAgentTypeId,
25
+ http,
26
+ https
27
+ }));
28
+ /** @internal */
29
+ export const agentLayer = /*#__PURE__*/Layer.scoped(HttpAgent, /*#__PURE__*/makeAgent());
30
+ const fromAgent = agent => Client.make(request => Effect.flatMap(UrlParams.makeUrl(request.url, request.urlParams, _ => Error.RequestError({
31
+ request,
32
+ reason: "InvalidUrl",
33
+ error: _
34
+ })), url => Effect.suspend(() => {
35
+ const controller = new AbortController();
36
+ const nodeRequest = url.protocol === "https:" ? Https.request(url, {
37
+ agent: agent.https,
38
+ method: request.method,
39
+ headers: Object.fromEntries(request.headers),
40
+ signal: controller.signal
41
+ }) : Http.request(url, {
42
+ agent: agent.http,
43
+ method: request.method,
44
+ headers: Object.fromEntries(request.headers),
45
+ signal: controller.signal
46
+ });
47
+ return Effect.map(_ => new ClientResponseImpl(request, _))(Effect.onInterrupt(() => Effect.sync(() => controller.abort()))(Effect.zipRight(sendBody(nodeRequest, request, request.body), waitForResponse(nodeRequest), {
48
+ concurrent: true
49
+ })));
50
+ })));
51
+ const sendBody = (nodeRequest, request, body) => Effect.suspend(() => {
52
+ switch (body._tag) {
53
+ case "Empty":
54
+ {
55
+ nodeRequest.end();
56
+ return waitForFinish(nodeRequest, request);
57
+ }
58
+ case "Bytes":
59
+ case "Raw":
60
+ {
61
+ nodeRequest.end(body.body);
62
+ return waitForFinish(nodeRequest, request);
63
+ }
64
+ case "FormData":
65
+ {
66
+ const response = new Response(body.formData);
67
+ response.headers.forEach((value, key) => {
68
+ nodeRequest.setHeader(key, value);
69
+ });
70
+ return Effect.tryPromise({
71
+ try: () => pipeline(Readable.fromWeb(response.body), nodeRequest),
72
+ catch: _ => Error.RequestError({
73
+ request,
74
+ reason: "Transport",
75
+ error: _
76
+ })
77
+ });
78
+ }
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
+ case "Stream":
91
+ {
92
+ return Stream.run(Stream.mapError(body.stream, _ => Error.RequestError({
93
+ request,
94
+ reason: "Encode",
95
+ error: _
96
+ })), NodeSink.fromWritable(() => nodeRequest, _ => Error.RequestError({
97
+ request,
98
+ reason: "Transport",
99
+ error: _
100
+ })));
101
+ }
102
+ }
103
+ });
104
+ const waitForResponse = nodeRequest => Effect.async(resume => {
105
+ nodeRequest.on("response", response => {
106
+ resume(Effect.succeed(response));
107
+ });
108
+ return Effect.sync(() => {
109
+ nodeRequest.removeAllListeners("response");
110
+ });
111
+ });
112
+ const waitForFinish = (nodeRequest, request) => Effect.async(resume => {
113
+ nodeRequest.on("error", error => {
114
+ resume(Effect.fail(Error.RequestError({
115
+ request,
116
+ reason: "Transport",
117
+ error
118
+ })));
119
+ });
120
+ nodeRequest.on("finish", () => {
121
+ resume(Effect.unit);
122
+ });
123
+ return Effect.sync(() => {
124
+ nodeRequest.removeAllListeners("error");
125
+ nodeRequest.removeAllListeners("finish");
126
+ });
127
+ });
128
+ class ClientResponseImpl {
129
+ 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,
144
+ response: this,
145
+ reason: "Decode",
146
+ error: _
147
+ }));
148
+ }
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
+ });
159
+ }
160
+ get formData() {
161
+ return Effect.tryPromise({
162
+ try: () => new Response(Readable.toWeb(this.source), {
163
+ headers: new globalThis.Headers(this.source.headers),
164
+ status: this.source.statusCode,
165
+ statusText: this.source.statusMessage
166
+ }).formData(),
167
+ catch: _ => Error.ResponseError({
168
+ request: this.request,
169
+ response: this,
170
+ reason: "Decode",
171
+ error: _
172
+ })
173
+ });
174
+ }
175
+ get stream() {
176
+ return NodeStream.fromReadable(() => this.source, _ => Error.ResponseError({
177
+ request: this.request,
178
+ response: this,
179
+ reason: "Decode",
180
+ error: _
181
+ }));
182
+ }
183
+ get arrayBuffer() {
184
+ return NodeStream.toUint8Array(() => this.source, _ => Error.ResponseError({
185
+ request: this.request,
186
+ response: this,
187
+ reason: "Decode",
188
+ error: _
189
+ }));
190
+ }
191
+ }
192
+ _a = IncomingMessage.TypeId, _b = ClientResponse.TypeId;
193
+ /** @internal */
194
+ export const make = /*#__PURE__*/Effect.map(HttpAgent, fromAgent);
195
+ /** @internal */
196
+ export const layer = /*#__PURE__*/Layer.provide(agentLayer, /*#__PURE__*/Layer.effect(Client.Client, make));
197
+ //# sourceMappingURL=nodeClient.mjs.map
@@ -0,0 +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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"}
@@ -29,4 +29,41 @@ export const fromReadable = (evaluate, onError, {
29
29
  }
30
30
  })))));
31
31
  const readChunk = (stream, size) => Effect.flatMap(_ => _ ? Effect.succeed(_) : Effect.fail(Option.none()))(Effect.sync(() => size._tag === "Some" ? stream.read(Number(size)) : stream.read()));
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(() => {
47
+ stream.removeAllListeners();
48
+ stream.destroy();
49
+ });
50
+ });
51
+ /** @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(() => {
65
+ stream.removeAllListeners();
66
+ stream.destroy();
67
+ });
68
+ });
32
69
  //# 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"],"sources":["../../src/internal/stream.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,MAAM,MAAM,qBAAqB;AAC7C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAG3C,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAG/C;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,QAA2B,EAC3BC,OAA8B,EAC9B;EAAEC,SAAS,GAAGN,MAAM,CAACO,IAAI;AAAE,IAA0B,EAAE,KAoCrDL,MAAM,CAACM,OAAO,CAAEC,CAAC,IAAKP,MAAM,CAACQ,kBAAkB,CAACC,SAAS,CAAIF,CAAC,EAAEH,SAAS,CAAC,CAAC,CAAC,CAD5EJ,MAAM,CAACU,YAAY,CAxBnBX,MAAM,CAACY,GAAG,CAAEC,MAAM,IAChBZ,MAAM,CAACa,KAAK,CAAsBC,IAAI,IAAI;EACxCF,MAAM,CAACG,IAAI,CAAC,OAAO,EAAGC,GAAG,IAAI;IAC3BF,IAAI,CAACG,IAAI,CAACd,OAAO,CAACa,GAAG,CAAC,CAAC;EACzB,CAAC,CAAC;EAEF;EACA;EACA;EACA;EACA;EACAJ,MAAM,CAACG,IAAI,CAAC,OAAO,EAAE,MAAK;IACxBD,IAAI,CAACI,GAAG,EAAE;EACZ,CAAC,CAAC;EAEFN,MAAM,CAACO,EAAE,CAAC,UAAU,EAAE,MAAK;IACzBL,IAAI,CAACM,MAAM,CAACR,MAAM,CAAC;EACrB,CAAC,CAAC;EAEF,IAAIA,MAAM,CAACS,QAAQ,EAAE;IACnBP,IAAI,CAACM,MAAM,CAACR,MAAM,CAAC;;AAEvB,CAAC,EAAE,CAAC,CAAC,CACN,CA/BDb,MAAM,CAACuB,cAAc,CAACvB,MAAM,CAACwB,IAAI,CAACrB,QAAQ,CAAC,EAAGU,MAAM,IAClDb,MAAM,CAACwB,IAAI,CAAC,MAAK;EACfX,MAAM,CAACY,kBAAkB,EAAE;EAE3B,IAAI,CAACZ,MAAM,CAACa,MAAM,EAAE;IAClBb,MAAM,CAACc,OAAO,EAAE;;AAEpB,CAAC,CAAC,CAAC,GA2BN;AAEH,MAAMjB,SAAS,GAAGA,CAChBG,MAAgB,EAChBe,IAAyB,KAIvB5B,MAAM,CAACO,OAAO,CAAEC,CAAC,IAAMA,CAAC,GAAGR,MAAM,CAAC6B,OAAO,CAACrB,CAAC,CAAC,GAAGR,MAAM,CAACkB,IAAI,CAACnB,MAAM,CAACO,IAAI,EAAE,CAAE,CAAC,CAD3EN,MAAM,CAACwB,IAAI,CAAC,MAAOI,IAAI,CAACE,IAAI,KAAK,MAAM,GAAGjB,MAAM,CAACkB,IAAI,CAACC,MAAM,CAACJ,IAAI,CAAC,CAAC,GAAGf,MAAM,CAACkB,IAAI,EAAe,CAAC,CAElG"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
- "version": "0.11.3",
3
+ "version": "0.11.5",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,6 +28,6 @@
28
28
  "@effect/data": "^0.17.1",
29
29
  "@effect/io": "^0.38.0",
30
30
  "@effect/stream": "^0.34.0",
31
- "@effect/platform": "^0.11.3"
31
+ "@effect/platform": "^0.11.5"
32
32
  }
33
33
  }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Context from "@effect/data/Context"
5
+ import type * as Effect from "@effect/io/Effect"
6
+ import type * as Layer from "@effect/io/Layer"
7
+ import type * as Scope from "@effect/io/Scope"
8
+ import * as internal from "@effect/platform-node/internal/http/nodeClient"
9
+ import type * as Client from "@effect/platform/Http/Client"
10
+ import type * as Http from "node:http"
11
+ import type * as Https from "node:https"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category agent
16
+ */
17
+ export const HttpAgentTypeId: unique symbol = internal.HttpAgentTypeId
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category agent
22
+ */
23
+ export type HttpAgentTypeId = typeof HttpAgentTypeId
24
+
25
+ /**
26
+ * @since 1.0.0
27
+ * @category agent
28
+ */
29
+ export interface HttpAgent {
30
+ readonly [HttpAgentTypeId]: typeof HttpAgentTypeId
31
+ readonly http: Http.Agent
32
+ readonly https: Https.Agent
33
+ }
34
+
35
+ /**
36
+ * @since 1.0.0
37
+ * @category agent
38
+ */
39
+ export const HttpAgent: Context.Tag<HttpAgent, HttpAgent> = internal.HttpAgent
40
+
41
+ /**
42
+ * @since 1.0.0
43
+ * @category agent
44
+ */
45
+ export const makeAgent: (options?: Https.AgentOptions) => Effect.Effect<Scope.Scope, never, HttpAgent> =
46
+ internal.makeAgent
47
+
48
+ /**
49
+ * @since 1.0.0
50
+ * @category agent
51
+ */
52
+ export const agentLayer: Layer.Layer<never, never, HttpAgent> = internal.agentLayer
53
+
54
+ /**
55
+ * @since 1.0.0
56
+ * @category constructors
57
+ */
58
+ export const make: Effect.Effect<HttpAgent, never, Client.Client.Default> = internal.make
59
+
60
+ /**
61
+ * @since 1.0.0
62
+ * @category layers
63
+ */
64
+ export const layer: Layer.Layer<never, never, Client.Client.Default> = internal.layer
package/src/HttpClient.ts CHANGED
@@ -10,6 +10,10 @@ export * as body from "@effect/platform/Http/Body"
10
10
  * @since 1.0.0
11
11
  */
12
12
  export * as client from "@effect/platform/Http/Client"
13
+ /**
14
+ * @since 1.0.0
15
+ */
16
+ export * as nodeClient from "@effect/platform-node/Http/NodeClient"
13
17
  /**
14
18
  * @since 1.0.0
15
19
  */
package/src/Stream.ts CHANGED
@@ -3,13 +3,14 @@
3
3
  */
4
4
  import type { LazyArg } from "@effect/data/Function"
5
5
  import type { Option } from "@effect/data/Option"
6
+ import type { Effect } from "@effect/io/Effect"
6
7
  import * as internal from "@effect/platform-node/internal/stream"
7
8
  import type { Size } from "@effect/platform/FileSystem"
8
9
  import type { Stream } from "@effect/stream/Stream"
9
10
  import type { Readable } from "stream"
10
11
 
11
12
  /**
12
- * @category model
13
+ * @category models
13
14
  * @since 1.0.0
14
15
  */
15
16
  export interface FromReadableOptions {
@@ -18,7 +19,7 @@ export interface FromReadableOptions {
18
19
  }
19
20
 
20
21
  /**
21
- * @category constructor
22
+ * @category constructors
22
23
  * @since 1.0.0
23
24
  */
24
25
  export const fromReadable: <E, A>(
@@ -26,3 +27,22 @@ export const fromReadable: <E, A>(
26
27
  onError: (error: unknown) => E,
27
28
  options?: FromReadableOptions
28
29
  ) => Stream<never, E, A> = internal.fromReadable
30
+
31
+ /**
32
+ * @since 1.0.0
33
+ * @category conversions
34
+ */
35
+ export const toString: <E>(
36
+ evaluate: LazyArg<Readable>,
37
+ onError: (error: unknown) => E,
38
+ encoding?: BufferEncoding
39
+ ) => Effect<never, E, string> = internal.toString
40
+
41
+ /**
42
+ * @since 1.0.0
43
+ * @category conversions
44
+ */
45
+ export const toUint8Array: <E>(
46
+ evaluate: LazyArg<Readable>,
47
+ onError: (error: unknown) => E
48
+ ) => Effect<never, E, Uint8Array> = internal.toUint8Array