@effect/platform-node 0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49

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 (181) hide show
  1. package/Http/Platform/package.json +6 -0
  2. package/Http/Server/package.json +6 -0
  3. package/Http/ServerRequest/package.json +6 -0
  4. package/LICENSE +21 -0
  5. package/NodeCommandExecutor/package.json +6 -0
  6. package/NodeContext/package.json +6 -0
  7. package/NodeFileSystem/package.json +6 -0
  8. package/NodeHttpClient/package.json +6 -0
  9. package/NodeHttpServer/package.json +6 -0
  10. package/NodeKeyValueStore/package.json +6 -0
  11. package/NodePath/package.json +6 -0
  12. package/NodeRuntime/package.json +6 -0
  13. package/NodeSink/package.json +6 -0
  14. package/NodeStream/package.json +6 -0
  15. package/NodeTerminal/package.json +6 -0
  16. package/NodeWorker/package.json +6 -0
  17. package/NodeWorkerRunner/package.json +6 -0
  18. package/README.md +64 -0
  19. package/dist/cjs/Http/Platform.js +43 -0
  20. package/dist/cjs/Http/Platform.js.map +1 -0
  21. package/dist/cjs/Http/Server.js +58 -0
  22. package/dist/cjs/Http/Server.js.map +1 -0
  23. package/dist/cjs/Http/ServerRequest.js +38 -0
  24. package/dist/cjs/Http/ServerRequest.js.map +1 -0
  25. package/dist/cjs/NodeCommandExecutor.js +42 -0
  26. package/dist/cjs/NodeCommandExecutor.js.map +1 -0
  27. package/dist/cjs/NodeContext.js +48 -0
  28. package/dist/cjs/NodeContext.js.map +1 -0
  29. package/dist/cjs/NodeFileSystem.js +42 -0
  30. package/dist/cjs/NodeFileSystem.js.map +1 -0
  31. package/dist/cjs/NodeHttpClient.js +73 -0
  32. package/dist/cjs/NodeHttpClient.js.map +1 -0
  33. package/dist/cjs/NodeHttpServer.js +40 -0
  34. package/dist/cjs/NodeHttpServer.js.map +1 -0
  35. package/dist/cjs/NodeKeyValueStore.js +42 -0
  36. package/dist/cjs/NodeKeyValueStore.js.map +1 -0
  37. package/dist/cjs/NodePath.js +52 -0
  38. package/dist/cjs/NodePath.js.map +1 -0
  39. package/dist/cjs/NodeRuntime.js +42 -0
  40. package/dist/cjs/NodeRuntime.js.map +1 -0
  41. package/dist/cjs/NodeSink.js +17 -0
  42. package/dist/cjs/NodeSink.js.map +1 -0
  43. package/dist/cjs/NodeStream.js +17 -0
  44. package/dist/cjs/NodeStream.js.map +1 -0
  45. package/dist/cjs/NodeTerminal.js +47 -0
  46. package/dist/cjs/NodeTerminal.js.map +1 -0
  47. package/dist/cjs/NodeWorker.js +63 -0
  48. package/dist/cjs/NodeWorker.js.map +1 -0
  49. package/dist/cjs/NodeWorkerRunner.js +48 -0
  50. package/dist/cjs/NodeWorkerRunner.js.map +1 -0
  51. package/dist/cjs/index.js +58 -0
  52. package/dist/cjs/index.js.map +1 -0
  53. package/dist/cjs/internal/http/client.js +216 -0
  54. package/dist/cjs/internal/http/client.js.map +1 -0
  55. package/dist/cjs/internal/http/incomingMessage.js +91 -0
  56. package/dist/cjs/internal/http/incomingMessage.js.map +1 -0
  57. package/dist/cjs/internal/http/platform.js +77 -0
  58. package/dist/cjs/internal/http/platform.js.map +1 -0
  59. package/dist/cjs/internal/http/server.js +270 -0
  60. package/dist/cjs/internal/http/server.js.map +1 -0
  61. package/dist/cjs/internal/worker.js +89 -0
  62. package/dist/cjs/internal/worker.js.map +1 -0
  63. package/dist/cjs/internal/workerRunner.js +85 -0
  64. package/dist/cjs/internal/workerRunner.js.map +1 -0
  65. package/dist/dts/Http/Platform.d.ts +19 -0
  66. package/dist/dts/Http/Platform.d.ts.map +1 -0
  67. package/dist/dts/Http/Server.d.ts +50 -0
  68. package/dist/dts/Http/Server.d.ts.map +1 -0
  69. package/dist/dts/Http/ServerRequest.d.ts +12 -0
  70. package/dist/dts/Http/ServerRequest.d.ts.map +1 -0
  71. package/dist/dts/NodeCommandExecutor.d.ts +9 -0
  72. package/dist/dts/NodeCommandExecutor.d.ts.map +1 -0
  73. package/dist/dts/NodeContext.d.ts +17 -0
  74. package/dist/dts/NodeContext.d.ts.map +1 -0
  75. package/dist/dts/NodeFileSystem.d.ts +8 -0
  76. package/dist/dts/NodeFileSystem.d.ts.map +1 -0
  77. package/dist/dts/NodeHttpClient.d.ts +67 -0
  78. package/dist/dts/NodeHttpClient.d.ts.map +1 -0
  79. package/dist/dts/NodeHttpServer.d.ts +37 -0
  80. package/dist/dts/NodeHttpServer.d.ts.map +1 -0
  81. package/dist/dts/NodeKeyValueStore.d.ts +9 -0
  82. package/dist/dts/NodeKeyValueStore.d.ts.map +1 -0
  83. package/dist/dts/NodePath.d.ts +21 -0
  84. package/dist/dts/NodePath.d.ts.map +1 -0
  85. package/dist/dts/NodeRuntime.d.ts +7 -0
  86. package/dist/dts/NodeRuntime.d.ts.map +1 -0
  87. package/dist/dts/NodeSink.d.ts +8 -0
  88. package/dist/dts/NodeSink.d.ts.map +1 -0
  89. package/dist/dts/NodeStream.d.ts +8 -0
  90. package/dist/dts/NodeStream.d.ts.map +1 -0
  91. package/dist/dts/NodeTerminal.d.ts +15 -0
  92. package/dist/dts/NodeTerminal.d.ts.map +1 -0
  93. package/dist/dts/NodeWorker.d.ts +42 -0
  94. package/dist/dts/NodeWorker.d.ts.map +1 -0
  95. package/dist/dts/NodeWorkerRunner.d.ts +24 -0
  96. package/dist/dts/NodeWorkerRunner.d.ts.map +1 -0
  97. package/dist/dts/index.d.ts +53 -0
  98. package/dist/dts/index.d.ts.map +1 -0
  99. package/dist/dts/internal/http/client.d.ts +2 -0
  100. package/dist/dts/internal/http/client.d.ts.map +1 -0
  101. package/dist/dts/internal/http/incomingMessage.d.ts +2 -0
  102. package/dist/dts/internal/http/incomingMessage.d.ts.map +1 -0
  103. package/dist/dts/internal/http/platform.d.ts +2 -0
  104. package/dist/dts/internal/http/platform.d.ts.map +1 -0
  105. package/dist/dts/internal/http/server.d.ts +2 -0
  106. package/dist/dts/internal/http/server.d.ts.map +1 -0
  107. package/dist/dts/internal/worker.d.ts +2 -0
  108. package/dist/dts/internal/worker.d.ts.map +1 -0
  109. package/dist/dts/internal/workerRunner.d.ts +2 -0
  110. package/dist/dts/internal/workerRunner.d.ts.map +1 -0
  111. package/dist/esm/Http/Platform.js +12 -0
  112. package/dist/esm/Http/Platform.js.map +1 -0
  113. package/dist/esm/Http/Server.js +27 -0
  114. package/dist/esm/Http/Server.js.map +1 -0
  115. package/dist/esm/Http/ServerRequest.js +7 -0
  116. package/dist/esm/Http/ServerRequest.js.map +1 -0
  117. package/dist/esm/NodeCommandExecutor.js +10 -0
  118. package/dist/esm/NodeCommandExecutor.js.map +1 -0
  119. package/dist/esm/NodeContext.js +16 -0
  120. package/dist/esm/NodeContext.js.map +1 -0
  121. package/dist/esm/NodeFileSystem.js +10 -0
  122. package/dist/esm/NodeFileSystem.js.map +1 -0
  123. package/dist/esm/NodeHttpClient.js +42 -0
  124. package/dist/esm/NodeHttpClient.js.map +1 -0
  125. package/dist/esm/NodeHttpServer.js +37 -0
  126. package/dist/esm/NodeHttpServer.js.map +1 -0
  127. package/dist/esm/NodeKeyValueStore.js +10 -0
  128. package/dist/esm/NodeKeyValueStore.js.map +1 -0
  129. package/dist/esm/NodePath.js +20 -0
  130. package/dist/esm/NodePath.js.map +1 -0
  131. package/dist/esm/NodeRuntime.js +10 -0
  132. package/dist/esm/NodeRuntime.js.map +1 -0
  133. package/dist/esm/NodeSink.js +8 -0
  134. package/dist/esm/NodeSink.js.map +1 -0
  135. package/dist/esm/NodeStream.js +8 -0
  136. package/dist/esm/NodeStream.js.map +1 -0
  137. package/dist/esm/NodeTerminal.js +15 -0
  138. package/dist/esm/NodeTerminal.js.map +1 -0
  139. package/dist/esm/NodeWorker.js +32 -0
  140. package/dist/esm/NodeWorker.js.map +1 -0
  141. package/dist/esm/NodeWorkerRunner.js +17 -0
  142. package/dist/esm/NodeWorkerRunner.js.map +1 -0
  143. package/dist/esm/index.js +53 -0
  144. package/dist/esm/index.js.map +1 -0
  145. package/dist/esm/internal/http/client.js +183 -0
  146. package/dist/esm/internal/http/client.js.map +1 -0
  147. package/dist/esm/internal/http/incomingMessage.js +59 -0
  148. package/dist/esm/internal/http/incomingMessage.js.map +1 -0
  149. package/dist/esm/internal/http/platform.js +41 -0
  150. package/dist/esm/internal/http/platform.js.map +1 -0
  151. package/dist/esm/internal/http/server.js +233 -0
  152. package/dist/esm/internal/http/server.js.map +1 -0
  153. package/dist/esm/internal/worker.js +58 -0
  154. package/dist/esm/internal/worker.js.map +1 -0
  155. package/dist/esm/internal/workerRunner.js +52 -0
  156. package/dist/esm/internal/workerRunner.js.map +1 -0
  157. package/dist/esm/package.json +4 -0
  158. package/package.json +162 -0
  159. package/src/Http/Platform.ts +21 -0
  160. package/src/Http/Server.ts +86 -0
  161. package/src/Http/ServerRequest.ts +12 -0
  162. package/src/NodeCommandExecutor.ts +13 -0
  163. package/src/NodeContext.ts +40 -0
  164. package/src/NodeFileSystem.ts +12 -0
  165. package/src/NodeHttpClient.ts +76 -0
  166. package/src/NodeHttpServer.ts +38 -0
  167. package/src/NodeKeyValueStore.ts +15 -0
  168. package/src/NodePath.ts +25 -0
  169. package/src/NodeRuntime.ts +11 -0
  170. package/src/NodeSink.ts +8 -0
  171. package/src/NodeStream.ts +8 -0
  172. package/src/NodeTerminal.ts +20 -0
  173. package/src/NodeWorker.ts +58 -0
  174. package/src/NodeWorkerRunner.ts +38 -0
  175. package/src/index.ts +64 -0
  176. package/src/internal/http/client.ts +258 -0
  177. package/src/internal/http/incomingMessage.ts +81 -0
  178. package/src/internal/http/platform.ts +46 -0
  179. package/src/internal/http/server.ts +375 -0
  180. package/src/internal/worker.ts +74 -0
  181. package/src/internal/workerRunner.ts +74 -0
@@ -0,0 +1,233 @@
1
+ import * as Etag from "@effect/platform-node-shared/Http/Etag";
2
+ import * as MultipartNode from "@effect/platform-node-shared/Http/Multipart";
3
+ import * as FileSystem from "@effect/platform/FileSystem";
4
+ import * as App from "@effect/platform/Http/App";
5
+ import * as IncomingMessage from "@effect/platform/Http/IncomingMessage";
6
+ import * as Middleware from "@effect/platform/Http/Middleware";
7
+ import * as Server from "@effect/platform/Http/Server";
8
+ import * as Error from "@effect/platform/Http/ServerError";
9
+ import * as ServerRequest from "@effect/platform/Http/ServerRequest";
10
+ import * as Cause from "effect/Cause";
11
+ import * as Config from "effect/Config";
12
+ import * as Effect from "effect/Effect";
13
+ import * as Layer from "effect/Layer";
14
+ import * as Option from "effect/Option";
15
+ import * as Runtime from "effect/Runtime";
16
+ import * as Stream from "effect/Stream";
17
+ import { Readable } from "node:stream";
18
+ import { pipeline } from "node:stream/promises";
19
+ import * as NodeContext from "../../NodeContext.js";
20
+ import * as NodeSink from "../../NodeSink.js";
21
+ import { IncomingMessageImpl } from "./incomingMessage.js";
22
+ import * as internalPlatform from "./platform.js";
23
+ /** @internal */
24
+ export const make = (evaluate, options) => Effect.gen(function* (_) {
25
+ const server = yield* _(Effect.acquireRelease(Effect.sync(evaluate), server => Effect.async(resume => {
26
+ server.close(error => {
27
+ if (error) {
28
+ resume(Effect.die(error));
29
+ } else {
30
+ resume(Effect.unit);
31
+ }
32
+ });
33
+ })));
34
+ yield* _(Effect.async(resume => {
35
+ server.on("error", error => {
36
+ resume(Effect.fail(Error.ServeError({
37
+ error
38
+ })));
39
+ });
40
+ server.listen(options, () => {
41
+ resume(Effect.unit);
42
+ });
43
+ }));
44
+ const address = server.address();
45
+ return Server.make({
46
+ address: typeof address === "string" ? {
47
+ _tag: "UnixAddress",
48
+ path: address
49
+ } : {
50
+ _tag: "TcpAddress",
51
+ hostname: address.address === "::" ? "0.0.0.0" : address.address,
52
+ port: address.port
53
+ },
54
+ serve: (httpApp, middleware) => Effect.gen(function* (_) {
55
+ const handler = yield* _(makeHandler(httpApp, middleware));
56
+ yield* _(Effect.addFinalizer(() => Effect.sync(() => {
57
+ server.off("request", handler);
58
+ })));
59
+ server.on("request", handler);
60
+ })
61
+ });
62
+ }).pipe(Effect.locally(IncomingMessage.maxBodySize, Option.some(FileSystem.Size(1024 * 1024 * 10))));
63
+ /** @internal */
64
+ export const makeHandler = (httpApp, middleware) => {
65
+ const handledApp = Effect.scoped(middleware ? middleware(App.withDefaultMiddleware(respond(httpApp))) : App.withDefaultMiddleware(respond(httpApp)));
66
+ return Effect.map(Effect.runtime(), runtime => {
67
+ const runFork = Runtime.runFork(runtime);
68
+ return function handler(nodeRequest, nodeResponse) {
69
+ const fiber = runFork(Effect.provideService(handledApp, ServerRequest.ServerRequest, new ServerRequestImpl(nodeRequest, nodeResponse)));
70
+ nodeResponse.on("close", () => {
71
+ if (!nodeResponse.writableEnded) {
72
+ if (!nodeResponse.headersSent) {
73
+ nodeResponse.writeHead(499);
74
+ }
75
+ nodeResponse.end();
76
+ runFork(fiber.interruptAsFork(Error.clientAbortFiberId));
77
+ }
78
+ });
79
+ };
80
+ });
81
+ };
82
+ const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.uninterruptibleMask(restore => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.tapErrorCause(restore(Effect.tap(Effect.flatMap(httpApp, response => Effect.flatMap(App.preResponseHandler, f => f(request, response))), response => handleResponse(request, response))), cause => Effect.sync(() => {
83
+ const nodeResponse = request.response;
84
+ if (!nodeResponse.headersSent) {
85
+ nodeResponse.writeHead(Cause.isInterruptedOnly(cause) ? 503 : 500);
86
+ }
87
+ if (!nodeResponse.writableEnded) {
88
+ nodeResponse.end();
89
+ }
90
+ })))));
91
+ class ServerRequestImpl extends IncomingMessageImpl {
92
+ source;
93
+ response;
94
+ url;
95
+ headersOverride;
96
+ [ServerRequest.TypeId];
97
+ constructor(source, response, url = source.url, headersOverride, remoteAddressOverride) {
98
+ super(source, _ => Error.RequestError({
99
+ request: this,
100
+ reason: "Decode",
101
+ error: _
102
+ }), remoteAddressOverride);
103
+ this.source = source;
104
+ this.response = response;
105
+ this.url = url;
106
+ this.headersOverride = headersOverride;
107
+ this[ServerRequest.TypeId] = ServerRequest.TypeId;
108
+ }
109
+ modify(options) {
110
+ return new ServerRequestImpl(this.source, this.response, options.url ?? this.url, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
111
+ }
112
+ get originalUrl() {
113
+ return this.source.url;
114
+ }
115
+ get method() {
116
+ return this.source.method.toUpperCase();
117
+ }
118
+ get headers() {
119
+ this.headersOverride ??= this.source.headers;
120
+ return this.headersOverride;
121
+ }
122
+ multipartEffect;
123
+ get multipart() {
124
+ if (this.multipartEffect) {
125
+ return this.multipartEffect;
126
+ }
127
+ this.multipartEffect = Effect.runSync(Effect.cached(MultipartNode.persisted(this.source, this.source.headers)));
128
+ return this.multipartEffect;
129
+ }
130
+ get multipartStream() {
131
+ return MultipartNode.stream(this.source, this.source.headers);
132
+ }
133
+ toString() {
134
+ return `ServerRequest(${this.method} ${this.url})`;
135
+ }
136
+ toJSON() {
137
+ return {
138
+ _tag: "ServerRequest",
139
+ method: this.method,
140
+ url: this.url,
141
+ originalUrl: this.originalUrl,
142
+ headers: this.headers
143
+ };
144
+ }
145
+ }
146
+ /** @internal */
147
+ export const layerServer = (evaluate, options) => Layer.scoped(Server.Server, make(evaluate, options));
148
+ /** @internal */
149
+ export const layer = (evaluate, options) => Layer.mergeAll(Layer.scoped(Server.Server, make(evaluate, options)), internalPlatform.layer, Etag.layerWeak, NodeContext.layer);
150
+ /** @internal */
151
+ export const layerConfig = (evaluate, options) => Layer.mergeAll(Layer.scoped(Server.Server, Effect.flatMap(Config.unwrap(options), options => make(evaluate, options))), internalPlatform.layer, Etag.layerWeak, NodeContext.layer);
152
+ const handleResponse = (request, response) => Effect.suspend(() => {
153
+ const nodeResponse = request.response;
154
+ if (request.method === "HEAD") {
155
+ nodeResponse.writeHead(response.status, response.headers);
156
+ nodeResponse.end();
157
+ return Effect.unit;
158
+ }
159
+ const body = response.body;
160
+ switch (body._tag) {
161
+ case "Empty":
162
+ {
163
+ nodeResponse.writeHead(response.status, response.headers);
164
+ nodeResponse.end();
165
+ return Effect.unit;
166
+ }
167
+ case "Raw":
168
+ {
169
+ nodeResponse.writeHead(response.status, response.headers);
170
+ if (typeof body.body === "object" && body.body !== null && "pipe" in body.body && typeof body.body.pipe === "function") {
171
+ return Effect.tryPromise({
172
+ try: signal => pipeline(body.body, nodeResponse, {
173
+ signal,
174
+ end: true
175
+ }),
176
+ catch: error => Error.ResponseError({
177
+ request,
178
+ response,
179
+ reason: "Decode",
180
+ error
181
+ })
182
+ });
183
+ }
184
+ nodeResponse.end(body.body);
185
+ return Effect.unit;
186
+ }
187
+ case "Uint8Array":
188
+ {
189
+ nodeResponse.writeHead(response.status, response.headers);
190
+ nodeResponse.end(body.body);
191
+ return Effect.unit;
192
+ }
193
+ case "FormData":
194
+ {
195
+ return Effect.async(resume => {
196
+ const r = new Response(body.formData);
197
+ const headers = {
198
+ ...response.headers,
199
+ ...Object.fromEntries(r.headers)
200
+ };
201
+ nodeResponse.writeHead(response.status, headers);
202
+ Readable.fromWeb(r.body).pipe(nodeResponse).on("error", error => {
203
+ resume(Effect.fail(Error.ResponseError({
204
+ request,
205
+ response,
206
+ reason: "Decode",
207
+ error
208
+ })));
209
+ }).once("finish", () => {
210
+ resume(Effect.unit);
211
+ });
212
+ });
213
+ }
214
+ case "Stream":
215
+ {
216
+ nodeResponse.writeHead(response.status, response.headers);
217
+ return Stream.run(Stream.mapError(body.stream, error => Error.ResponseError({
218
+ request,
219
+ response,
220
+ reason: "Decode",
221
+ error
222
+ })), NodeSink.fromWritable(() => nodeResponse, error => Error.ResponseError({
223
+ request,
224
+ response,
225
+ reason: "Decode",
226
+ error
227
+ })));
228
+ }
229
+ }
230
+ });
231
+ /** @internal */
232
+ export const requestSource = self => self.source;
233
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","names":["Etag","MultipartNode","FileSystem","App","IncomingMessage","Middleware","Server","Error","ServerRequest","Cause","Config","Effect","Layer","Option","Runtime","Stream","Readable","pipeline","NodeContext","NodeSink","IncomingMessageImpl","internalPlatform","make","evaluate","options","gen","_","server","acquireRelease","sync","async","resume","close","error","die","unit","on","fail","ServeError","listen","address","_tag","path","hostname","port","serve","httpApp","middleware","handler","makeHandler","addFinalizer","off","pipe","locally","maxBodySize","some","Size","handledApp","scoped","withDefaultMiddleware","respond","map","runtime","runFork","nodeRequest","nodeResponse","fiber","provideService","ServerRequestImpl","writableEnded","headersSent","writeHead","end","interruptAsFork","clientAbortFiberId","uninterruptibleMask","restore","flatMap","request","tapErrorCause","tap","response","preResponseHandler","f","handleResponse","cause","isInterruptedOnly","source","url","headersOverride","TypeId","constructor","remoteAddressOverride","RequestError","reason","modify","headers","remoteAddress","originalUrl","method","toUpperCase","multipartEffect","multipart","runSync","cached","persisted","multipartStream","stream","toString","toJSON","layerServer","layer","mergeAll","layerWeak","layerConfig","unwrap","suspend","status","body","tryPromise","try","signal","catch","ResponseError","r","Response","formData","Object","fromEntries","fromWeb","once","run","mapError","fromWritable","requestSource","self"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import * as Worker from "@effect/platform/Worker";
2
+ import { WorkerError } from "@effect/platform/WorkerError";
3
+ import * as Effect from "effect/Effect";
4
+ import { pipe } from "effect/Function";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Queue from "effect/Queue";
7
+ const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
8
+ [Worker.PlatformWorkerTypeId]: Worker.PlatformWorkerTypeId,
9
+ spawn(worker_) {
10
+ return Effect.gen(function* (_) {
11
+ const worker = worker_;
12
+ yield* _(Effect.addFinalizer(() => pipe(Effect.async(resume => {
13
+ worker.once("exit", () => {
14
+ resume(Effect.unit);
15
+ });
16
+ worker.postMessage([1]);
17
+ }), Effect.timeout(5000), Effect.orElse(() => Effect.sync(() => worker.terminate())))));
18
+ const queue = yield* _(Queue.unbounded());
19
+ yield* _(Effect.addFinalizer(() => Queue.shutdown(queue)));
20
+ const fiber = yield* _(Effect.async(resume => {
21
+ worker.on("message", message => {
22
+ queue.unsafeOffer(message);
23
+ });
24
+ worker.on("messageerror", error => {
25
+ resume(Effect.fail(WorkerError("decode", error.message, error.stack)));
26
+ });
27
+ worker.on("error", error => {
28
+ resume(Effect.fail(WorkerError("unknown", error.message, error.stack)));
29
+ });
30
+ worker.on("exit", code => {
31
+ resume(Effect.fail(WorkerError("unknown", new Error(`exited with code ${code}`))));
32
+ });
33
+ }), Effect.interruptible, Effect.forkScoped);
34
+ const send = (message, transfers) => Effect.try({
35
+ try: () => worker.postMessage([0, message], transfers),
36
+ catch: error => WorkerError("send", error.message, error.stack)
37
+ });
38
+ return {
39
+ fiber,
40
+ queue,
41
+ send
42
+ };
43
+ });
44
+ }
45
+ });
46
+ /** @internal */
47
+ export const layerWorker = /*#__PURE__*/Layer.succeed(Worker.PlatformWorker, platformWorkerImpl);
48
+ /** @internal */
49
+ export const layerManager = /*#__PURE__*/Layer.provide(Worker.layerManager, layerWorker);
50
+ /** @internal */
51
+ export const makePool = /*#__PURE__*/Worker.makePool();
52
+ /** @internal */
53
+ export const makePoolLayer = /*#__PURE__*/Worker.makePoolLayer(layerManager);
54
+ /** @internal */
55
+ export const makePoolSerialized = /*#__PURE__*/Worker.makePoolSerialized();
56
+ /** @internal */
57
+ export const makePoolSerializedLayer = /*#__PURE__*/Worker.makePoolSerializedLayer(layerManager);
58
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","names":["Worker","WorkerError","Effect","pipe","Layer","Queue","platformWorkerImpl","PlatformWorker","of","PlatformWorkerTypeId","spawn","worker_","gen","_","worker","addFinalizer","async","resume","once","unit","postMessage","timeout","orElse","sync","terminate","queue","unbounded","shutdown","fiber","on","message","unsafeOffer","error","fail","stack","code","Error","interruptible","forkScoped","send","transfers","try","catch","layerWorker","succeed","layerManager","provide","makePool","makePoolLayer","makePoolSerialized","makePoolSerializedLayer"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { WorkerError } from "@effect/platform/WorkerError";
2
+ import * as Runner from "@effect/platform/WorkerRunner";
3
+ import * as Cause from "effect/Cause";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Queue from "effect/Queue";
7
+ import * as Schedule from "effect/Schedule";
8
+ import * as WorkerThreads from "node:worker_threads";
9
+ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
10
+ [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
11
+ start(shutdown) {
12
+ return Effect.gen(function* (_) {
13
+ if (!WorkerThreads.parentPort) {
14
+ return yield* _(Effect.fail(WorkerError("spawn", "not in worker")));
15
+ }
16
+ const port = WorkerThreads.parentPort;
17
+ const queue = yield* _(Queue.unbounded());
18
+ yield* _(Effect.async(resume => {
19
+ port.on("message", message => {
20
+ if (message[0] === 0) {
21
+ queue.unsafeOffer(message[1]);
22
+ } else {
23
+ Effect.runFork(shutdown);
24
+ }
25
+ });
26
+ port.on("messageerror", error => {
27
+ resume(Effect.fail(WorkerError("decode", error.message, error.stack)));
28
+ });
29
+ port.on("error", error => {
30
+ resume(Effect.fail(WorkerError("unknown", error.message, error.stack)));
31
+ });
32
+ }), Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.unit : Effect.logDebug(cause)), Effect.retry(Schedule.forever), Effect.annotateLogs({
33
+ package: "@effect/platform-node",
34
+ module: "WorkerRunner"
35
+ }), Effect.interruptible, Effect.forkScoped);
36
+ const send = (message, transfers) => Effect.sync(() => port.postMessage([1, message], transfers));
37
+ // ready
38
+ port.postMessage([0]);
39
+ return {
40
+ queue,
41
+ send
42
+ };
43
+ });
44
+ }
45
+ });
46
+ /** @internal */
47
+ export const layerPlatform = /*#__PURE__*/Layer.succeed(Runner.PlatformRunner, platformRunnerImpl);
48
+ /** @internal */
49
+ export const layer = (process, options) => Layer.provide(Runner.layer(process, options), layerPlatform);
50
+ /** @internal */
51
+ export const layerSerialized = (schema, handlers) => Layer.provide(Runner.layerSerialized(schema, handlers), layerPlatform);
52
+ //# sourceMappingURL=workerRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Effect","Layer","Queue","Schedule","WorkerThreads","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","shutdown","gen","_","parentPort","fail","port","queue","unbounded","async","resume","on","message","unsafeOffer","runFork","error","stack","tapErrorCause","cause","isInterruptedOnly","unit","logDebug","retry","forever","annotateLogs","package","module","interruptible","forkScoped","send","transfers","sync","postMessage","layerPlatform","succeed","layer","process","options","provide","layerSerialized","schema","handlers"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": []
4
+ }
package/package.json ADDED
@@ -0,0 +1,162 @@
1
+ {
2
+ "name": "@effect/platform-node",
3
+ "version": "0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49",
4
+ "description": "Unified interfaces for common platform-specific services",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/effect-ts/effect.git"
9
+ },
10
+ "sideEffects": [],
11
+ "dependencies": {
12
+ "mime": "^3.0.0",
13
+ "@effect/platform-node-shared": "^0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49"
14
+ },
15
+ "peerDependencies": {
16
+ "@effect/platform": "^0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49",
17
+ "effect": "^0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49"
18
+ },
19
+ "main": "./dist/cjs/index.js",
20
+ "module": "./dist/esm/index.js",
21
+ "types": "./dist/dts/index.d.ts",
22
+ "exports": {
23
+ "./package.json": "./package.json",
24
+ ".": {
25
+ "types": "./dist/dts/index.d.ts",
26
+ "import": "./dist/esm/index.js",
27
+ "default": "./dist/cjs/index.js"
28
+ },
29
+ "./Http/Platform": {
30
+ "types": "./dist/dts/Http/Platform.d.ts",
31
+ "import": "./dist/esm/Http/Platform.js",
32
+ "default": "./dist/cjs/Http/Platform.js"
33
+ },
34
+ "./Http/Server": {
35
+ "types": "./dist/dts/Http/Server.d.ts",
36
+ "import": "./dist/esm/Http/Server.js",
37
+ "default": "./dist/cjs/Http/Server.js"
38
+ },
39
+ "./Http/ServerRequest": {
40
+ "types": "./dist/dts/Http/ServerRequest.d.ts",
41
+ "import": "./dist/esm/Http/ServerRequest.js",
42
+ "default": "./dist/cjs/Http/ServerRequest.js"
43
+ },
44
+ "./NodeCommandExecutor": {
45
+ "types": "./dist/dts/NodeCommandExecutor.d.ts",
46
+ "import": "./dist/esm/NodeCommandExecutor.js",
47
+ "default": "./dist/cjs/NodeCommandExecutor.js"
48
+ },
49
+ "./NodeContext": {
50
+ "types": "./dist/dts/NodeContext.d.ts",
51
+ "import": "./dist/esm/NodeContext.js",
52
+ "default": "./dist/cjs/NodeContext.js"
53
+ },
54
+ "./NodeFileSystem": {
55
+ "types": "./dist/dts/NodeFileSystem.d.ts",
56
+ "import": "./dist/esm/NodeFileSystem.js",
57
+ "default": "./dist/cjs/NodeFileSystem.js"
58
+ },
59
+ "./NodeHttpClient": {
60
+ "types": "./dist/dts/NodeHttpClient.d.ts",
61
+ "import": "./dist/esm/NodeHttpClient.js",
62
+ "default": "./dist/cjs/NodeHttpClient.js"
63
+ },
64
+ "./NodeHttpServer": {
65
+ "types": "./dist/dts/NodeHttpServer.d.ts",
66
+ "import": "./dist/esm/NodeHttpServer.js",
67
+ "default": "./dist/cjs/NodeHttpServer.js"
68
+ },
69
+ "./NodeKeyValueStore": {
70
+ "types": "./dist/dts/NodeKeyValueStore.d.ts",
71
+ "import": "./dist/esm/NodeKeyValueStore.js",
72
+ "default": "./dist/cjs/NodeKeyValueStore.js"
73
+ },
74
+ "./NodePath": {
75
+ "types": "./dist/dts/NodePath.d.ts",
76
+ "import": "./dist/esm/NodePath.js",
77
+ "default": "./dist/cjs/NodePath.js"
78
+ },
79
+ "./NodeRuntime": {
80
+ "types": "./dist/dts/NodeRuntime.d.ts",
81
+ "import": "./dist/esm/NodeRuntime.js",
82
+ "default": "./dist/cjs/NodeRuntime.js"
83
+ },
84
+ "./NodeSink": {
85
+ "types": "./dist/dts/NodeSink.d.ts",
86
+ "import": "./dist/esm/NodeSink.js",
87
+ "default": "./dist/cjs/NodeSink.js"
88
+ },
89
+ "./NodeStream": {
90
+ "types": "./dist/dts/NodeStream.d.ts",
91
+ "import": "./dist/esm/NodeStream.js",
92
+ "default": "./dist/cjs/NodeStream.js"
93
+ },
94
+ "./NodeTerminal": {
95
+ "types": "./dist/dts/NodeTerminal.d.ts",
96
+ "import": "./dist/esm/NodeTerminal.js",
97
+ "default": "./dist/cjs/NodeTerminal.js"
98
+ },
99
+ "./NodeWorker": {
100
+ "types": "./dist/dts/NodeWorker.d.ts",
101
+ "import": "./dist/esm/NodeWorker.js",
102
+ "default": "./dist/cjs/NodeWorker.js"
103
+ },
104
+ "./NodeWorkerRunner": {
105
+ "types": "./dist/dts/NodeWorkerRunner.d.ts",
106
+ "import": "./dist/esm/NodeWorkerRunner.js",
107
+ "default": "./dist/cjs/NodeWorkerRunner.js"
108
+ }
109
+ },
110
+ "typesVersions": {
111
+ "*": {
112
+ "Http/Platform": [
113
+ "./dist/dts/Http/Platform.d.ts"
114
+ ],
115
+ "Http/Server": [
116
+ "./dist/dts/Http/Server.d.ts"
117
+ ],
118
+ "Http/ServerRequest": [
119
+ "./dist/dts/Http/ServerRequest.d.ts"
120
+ ],
121
+ "NodeCommandExecutor": [
122
+ "./dist/dts/NodeCommandExecutor.d.ts"
123
+ ],
124
+ "NodeContext": [
125
+ "./dist/dts/NodeContext.d.ts"
126
+ ],
127
+ "NodeFileSystem": [
128
+ "./dist/dts/NodeFileSystem.d.ts"
129
+ ],
130
+ "NodeHttpClient": [
131
+ "./dist/dts/NodeHttpClient.d.ts"
132
+ ],
133
+ "NodeHttpServer": [
134
+ "./dist/dts/NodeHttpServer.d.ts"
135
+ ],
136
+ "NodeKeyValueStore": [
137
+ "./dist/dts/NodeKeyValueStore.d.ts"
138
+ ],
139
+ "NodePath": [
140
+ "./dist/dts/NodePath.d.ts"
141
+ ],
142
+ "NodeRuntime": [
143
+ "./dist/dts/NodeRuntime.d.ts"
144
+ ],
145
+ "NodeSink": [
146
+ "./dist/dts/NodeSink.d.ts"
147
+ ],
148
+ "NodeStream": [
149
+ "./dist/dts/NodeStream.d.ts"
150
+ ],
151
+ "NodeTerminal": [
152
+ "./dist/dts/NodeTerminal.d.ts"
153
+ ],
154
+ "NodeWorker": [
155
+ "./dist/dts/NodeWorker.d.ts"
156
+ ],
157
+ "NodeWorkerRunner": [
158
+ "./dist/dts/NodeWorkerRunner.d.ts"
159
+ ]
160
+ }
161
+ }
162
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as FileSystem from "@effect/platform/FileSystem"
5
+ import type * as Etag from "@effect/platform/Http/Etag"
6
+ import type * as Platform from "@effect/platform/Http/Platform"
7
+ import type * as Effect from "effect/Effect"
8
+ import type * as Layer from "effect/Layer"
9
+ import * as internal from "../internal/http/platform.js"
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category constructors
14
+ */
15
+ export const make: Effect.Effect<Platform.Platform, never, FileSystem.FileSystem | Etag.Generator> = internal.make
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category layers
20
+ */
21
+ export const layer: Layer.Layer<Platform.Platform> = internal.layer
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as App from "@effect/platform/Http/App"
5
+ import type * as Etag from "@effect/platform/Http/Etag"
6
+ import type * as Middleware from "@effect/platform/Http/Middleware"
7
+ import type * as Platform from "@effect/platform/Http/Platform"
8
+ import type * as Server from "@effect/platform/Http/Server"
9
+ import type { ServeError } from "@effect/platform/Http/ServerError"
10
+ import type * as ServerRequest from "@effect/platform/Http/ServerRequest"
11
+ import type * as Config from "effect/Config"
12
+ import type * as ConfigError from "effect/ConfigError"
13
+ import type * as Effect from "effect/Effect"
14
+ import type { LazyArg } from "effect/Function"
15
+ import type * as Layer from "effect/Layer"
16
+ import type * as Scope from "effect/Scope"
17
+ import type * as Http from "node:http"
18
+ import type * as Net from "node:net"
19
+ import * as internal from "../internal/http/server.js"
20
+ import type * as NodeContext from "../NodeContext.js"
21
+
22
+ /**
23
+ * @since 1.0.0
24
+ * @category constructors
25
+ */
26
+ export const make: (
27
+ evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
28
+ options: Net.ListenOptions
29
+ ) => Effect.Effect<
30
+ Server.Server,
31
+ ServeError,
32
+ Scope.Scope
33
+ > = internal.make
34
+
35
+ /**
36
+ * @since 1.0.0
37
+ * @category constructors
38
+ */
39
+ export const makeHandler: {
40
+ <R, E>(
41
+ httpApp: App.Default<R, E>
42
+ ): Effect.Effect<
43
+ Exclude<R, Scope.Scope | ServerRequest.ServerRequest>,
44
+ never,
45
+ (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void
46
+ >
47
+ <R, E, App extends App.Default<any, any>>(
48
+ httpApp: App.Default<R, E>,
49
+ middleware: Middleware.Middleware.Applied<R, E, App>
50
+ ): Effect.Effect<
51
+ Exclude<Effect.Effect.Context<App>, Scope.Scope | ServerRequest.ServerRequest>,
52
+ never,
53
+ (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse<Http.IncomingMessage>) => void
54
+ >
55
+ } = internal.makeHandler
56
+
57
+ /**
58
+ * @since 1.0.0
59
+ * @category layers
60
+ */
61
+ export const layerServer: (
62
+ evaluate: LazyArg<Http.Server>,
63
+ options: Net.ListenOptions
64
+ ) => Layer.Layer<Server.Server, ServeError> = internal.layerServer
65
+
66
+ /**
67
+ * @since 1.0.0
68
+ * @category layers
69
+ */
70
+ export const layer: (
71
+ evaluate: LazyArg<Http.Server>,
72
+ options: Net.ListenOptions
73
+ ) => Layer.Layer<Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server, ServeError> =
74
+ internal.layer
75
+
76
+ /**
77
+ * @since 1.0.0
78
+ * @category layers
79
+ */
80
+ export const layerConfig: (
81
+ evaluate: LazyArg<Http.Server>,
82
+ options: Config.Config.Wrap<Net.ListenOptions>
83
+ ) => Layer.Layer<
84
+ Platform.Platform | Etag.Generator | NodeContext.NodeContext | Server.Server,
85
+ ServeError | ConfigError.ConfigError
86
+ > = internal.layerConfig