@effect/platform-node-shared 4.0.0-beta.5 → 4.0.0-beta.50

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 (44) hide show
  1. package/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  2. package/dist/NodeChildProcessSpawner.js +91 -115
  3. package/dist/NodeChildProcessSpawner.js.map +1 -1
  4. package/dist/NodeClusterSocket.d.ts.map +1 -1
  5. package/dist/NodeClusterSocket.js +4 -3
  6. package/dist/NodeClusterSocket.js.map +1 -1
  7. package/dist/NodeFileSystem.d.ts.map +1 -1
  8. package/dist/NodeFileSystem.js +18 -22
  9. package/dist/NodeFileSystem.js.map +1 -1
  10. package/dist/NodeRuntime.d.ts.map +1 -1
  11. package/dist/NodeRuntime.js +2 -6
  12. package/dist/NodeRuntime.js.map +1 -1
  13. package/dist/NodeSink.d.ts.map +1 -1
  14. package/dist/NodeSink.js +7 -1
  15. package/dist/NodeSink.js.map +1 -1
  16. package/dist/NodeSocket.d.ts +4 -4
  17. package/dist/NodeSocket.d.ts.map +1 -1
  18. package/dist/NodeSocket.js +9 -8
  19. package/dist/NodeSocket.js.map +1 -1
  20. package/dist/NodeSocketServer.d.ts +2 -2
  21. package/dist/NodeSocketServer.d.ts.map +1 -1
  22. package/dist/NodeSocketServer.js +6 -6
  23. package/dist/NodeSocketServer.js.map +1 -1
  24. package/dist/NodeStdio.d.ts +0 -3
  25. package/dist/NodeStdio.d.ts.map +1 -1
  26. package/dist/NodeStdio.js +8 -4
  27. package/dist/NodeStdio.js.map +1 -1
  28. package/dist/NodeStream.d.ts.map +1 -1
  29. package/dist/NodeStream.js +8 -6
  30. package/dist/NodeStream.js.map +1 -1
  31. package/dist/NodeTerminal.d.ts.map +1 -1
  32. package/dist/NodeTerminal.js +2 -1
  33. package/dist/NodeTerminal.js.map +1 -1
  34. package/package.json +6 -6
  35. package/src/NodeChildProcessSpawner.ts +121 -135
  36. package/src/NodeClusterSocket.ts +4 -3
  37. package/src/NodeFileSystem.ts +25 -24
  38. package/src/NodeRuntime.ts +2 -6
  39. package/src/NodeSink.ts +7 -0
  40. package/src/NodeSocket.ts +11 -10
  41. package/src/NodeSocketServer.ts +6 -6
  42. package/src/NodeStdio.ts +26 -20
  43. package/src/NodeStream.ts +11 -8
  44. package/src/NodeTerminal.ts +2 -1
@@ -4,14 +4,15 @@
4
4
  import * as Arr from "effect/Array";
5
5
  import * as Cause from "effect/Cause";
6
6
  import * as Channel from "effect/Channel";
7
+ import * as Context from "effect/Context";
7
8
  import * as Effect from "effect/Effect";
8
9
  import * as Exit from "effect/Exit";
9
10
  import * as Fiber from "effect/Fiber";
10
11
  import { dual } from "effect/Function";
12
+ import * as Latch from "effect/Latch";
11
13
  import * as MutableRef from "effect/MutableRef";
12
14
  import * as Pull from "effect/Pull";
13
15
  import * as Scope from "effect/Scope";
14
- import * as ServiceMap from "effect/ServiceMap";
15
16
  import * as Stream from "effect/Stream";
16
17
  import { Readable } from "node:stream";
17
18
  import { pullIntoWritable } from "./NodeSink.js";
@@ -72,12 +73,12 @@ export const pipeThroughSimple = /*#__PURE__*/dual(2, (self, duplex) => pipeThro
72
73
  * @since 1.0.0
73
74
  * @category conversions
74
75
  */
75
- export const toReadable = stream => Effect.map(Effect.services(), context => new StreamAdapter(context, stream));
76
+ export const toReadable = stream => Effect.map(Effect.context(), context => new StreamAdapter(context, stream));
76
77
  /**
77
78
  * @since 1.0.0
78
79
  * @category conversions
79
80
  */
80
- export const toReadableNever = stream => new StreamAdapter(ServiceMap.empty(), stream);
81
+ export const toReadableNever = stream => new StreamAdapter(Context.empty(), stream);
81
82
  /**
82
83
  * @since 1.0.0
83
84
  * @category conversions
@@ -164,9 +165,10 @@ export const toUint8Array = (readable, options) => Effect.map(toArrayBuffer(read
164
165
  // ----------------------------------------------------------------------------
165
166
  const readableToPullUnsafe = options => {
166
167
  const readable = options.readable;
168
+ if (readable.readableEnded) return Effect.succeed(Cause.done());
167
169
  const closeOnDone = options.closeOnDone ?? true;
168
170
  const exit = options.exit ?? MutableRef.make(undefined);
169
- const latch = Effect.makeLatchUnsafe(false);
171
+ const latch = Latch.makeUnsafe(false);
170
172
  function onReadable() {
171
173
  latch.openUnsafe();
172
174
  }
@@ -212,7 +214,7 @@ class StreamAdapter extends Readable {
212
214
  fiber = undefined;
213
215
  constructor(context, stream) {
214
216
  super({});
215
- this.readLatch = Effect.makeLatchUnsafe(false);
217
+ this.readLatch = Latch.makeUnsafe(false);
216
218
  this.fiber = Stream.runForEachArray(stream, chunk => this.readLatch.whenOpen(Effect.sync(() => {
217
219
  this.readLatch.closeUnsafe();
218
220
  for (let i = 0; i < chunk.length; i++) {
@@ -223,7 +225,7 @@ class StreamAdapter extends Readable {
223
225
  this.push(item);
224
226
  }
225
227
  }
226
- }))).pipe(this.readLatch.whenOpen, Effect.provideServices(context), Effect.runFork);
228
+ }))).pipe(this.readLatch.whenOpen, Effect.provideContext(context), Effect.runFork);
227
229
  this.fiber.addObserver(exit => {
228
230
  this.fiber = undefined;
229
231
  if (Exit.isSuccess(exit)) {
@@ -1 +1 @@
1
- {"version":3,"file":"NodeStream.js","names":["Arr","Cause","Channel","Effect","Exit","Fiber","dual","MutableRef","Pull","Scope","ServiceMap","Stream","Readable","pullIntoWritable","fromReadable","options","fromChannel","fromReadableChannel","fromTransform","_","scope","readableToPullUnsafe","readable","evaluate","onError","defaultOnError","chunkSize","closeOnDone","fromDuplex","upstream","duplex","exit","make","undefined","pull","writable","endOnDone","encoding","pipe","catchCause","cause","isDoneCause","void","current","failCause","forkIn","flatMap","pipeThroughDuplex","self","pipeThroughChannelOrFail","pipeThroughSimple","toReadable","stream","map","services","context","StreamAdapter","toReadableNever","empty","toString","maxBytesNumber","maxBytes","Number","callback","resume","setEncoding","once","err","closed","destroy","fail","string","bytes","succeed","on","chunk","Buffer","byteLength","Error","sync","toArrayBuffer","buffer","alloc","slice","byteOffset","concat","length","toUint8Array","Uint8Array","latch","makeLatchUnsafe","onReadable","openUnsafe","error","onEnd","Done","suspend","loop","item","read","closeUnsafe","await","of","push","as","addFinalizer","off","readLatch","fiber","constructor","runForEachArray","whenOpen","i","provideServices","runFork","addObserver","isSuccess","squash","_read","_size","_destroy","interrupt","_tag","UnknownError"],"sources":["../src/NodeStream.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeStream.js","names":["Arr","Cause","Channel","Context","Effect","Exit","Fiber","dual","Latch","MutableRef","Pull","Scope","Stream","Readable","pullIntoWritable","fromReadable","options","fromChannel","fromReadableChannel","fromTransform","_","scope","readableToPullUnsafe","readable","evaluate","onError","defaultOnError","chunkSize","closeOnDone","fromDuplex","upstream","duplex","exit","make","undefined","pull","writable","endOnDone","encoding","pipe","catchCause","cause","isDoneCause","void","current","failCause","forkIn","flatMap","pipeThroughDuplex","self","pipeThroughChannelOrFail","pipeThroughSimple","toReadable","stream","map","context","StreamAdapter","toReadableNever","empty","toString","maxBytesNumber","maxBytes","Number","callback","resume","setEncoding","once","err","closed","destroy","fail","string","bytes","succeed","on","chunk","Buffer","byteLength","Error","sync","toArrayBuffer","buffer","alloc","slice","byteOffset","concat","length","toUint8Array","Uint8Array","readableEnded","done","latch","makeUnsafe","onReadable","openUnsafe","error","onEnd","Done","suspend","loop","item","read","closeUnsafe","await","of","push","as","addFinalizer","off","readLatch","fiber","constructor","runForEachArray","whenOpen","i","provideContext","runFork","addObserver","isSuccess","squash","_read","_size","_destroy","interrupt","_tag","UnknownError"],"sources":["../src/NodeStream.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTerminal.d.ts","sourceRoot":"","sources":["../src/NodeTerminal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAKrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAG3C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,KAAK,OAAO,KAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAgFvD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAA4D,CAAA"}
1
+ {"version":3,"file":"NodeTerminal.d.ts","sourceRoot":"","sources":["../src/NodeTerminal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAMrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAG3C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,KAAK,OAAO,KAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAgFvD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAA4D,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Layer from "effect/Layer";
3
+ import * as Option from "effect/Option";
3
4
  import { badArgument } from "effect/PlatformError";
4
5
  import * as Predicate from "effect/Predicate";
5
6
  import * as Queue from "effect/Queue";
@@ -38,7 +39,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (shouldQuit = defau
38
39
  const queue = yield* Queue.make();
39
40
  const handleKeypress = (s, k) => {
40
41
  const userInput = {
41
- input: s,
42
+ input: Option.fromUndefinedOr(s),
42
43
  key: {
43
44
  name: k.name ?? "",
44
45
  ctrl: !!k.ctrl,
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTerminal.js","names":["Effect","Layer","badArgument","Predicate","Queue","RcRef","Terminal","readline","make","fnUntraced","shouldQuit","defaultShouldQuit","stdin","process","stdout","rlRef","acquire","acquireRelease","sync","rl","createInterface","input","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","close","columns","readInput","gen","get","queue","handleKeypress","s","k","userInput","key","name","ctrl","meta","shift","offerUnsafe","endUnsafe","addFinalizer","off","on","readLine","scoped","flatMap","readlineInterface","callback","resume","onLine","line","succeed","once","display","prompt","uninterruptible","write","err","isNullish","void","fail","module","method","description","cause","layer","effect"],"sources":["../src/NodeTerminal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeTerminal.js","names":["Effect","Layer","Option","badArgument","Predicate","Queue","RcRef","Terminal","readline","make","fnUntraced","shouldQuit","defaultShouldQuit","stdin","process","stdout","rlRef","acquire","acquireRelease","sync","rl","createInterface","input","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","close","columns","readInput","gen","get","queue","handleKeypress","s","k","userInput","fromUndefinedOr","key","name","ctrl","meta","shift","offerUnsafe","endUnsafe","addFinalizer","off","on","readLine","scoped","flatMap","readlineInterface","callback","resume","onLine","line","succeed","once","display","prompt","uninterruptible","write","err","isNullish","void","fail","module","method","description","cause","layer","effect"],"sources":["../src/NodeTerminal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/platform-node-shared",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.5",
4
+ "version": "4.0.0-beta.50",
5
5
  "license": "MIT",
6
6
  "description": "Unified interfaces for common platform-specific services",
7
7
  "homepage": "https://effect.website",
@@ -46,16 +46,16 @@
46
46
  "provenance": true
47
47
  },
48
48
  "peerDependencies": {
49
- "effect": "^4.0.0-beta.5"
49
+ "effect": "^4.0.0-beta.50"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/node": "^25.2.0",
53
- "tar": "^7.5.7",
54
- "effect": "^4.0.0-beta.5"
52
+ "@types/node": "^25.6.0",
53
+ "tar": "^7.5.13",
54
+ "effect": "^4.0.0-beta.50"
55
55
  },
56
56
  "dependencies": {
57
57
  "@types/ws": "^8.18.1",
58
- "ws": "^8.19.0"
58
+ "ws": "^8.20.0"
59
59
  },
60
60
  "scripts": {
61
61
  "build": "tsc -b tsconfig.json && pnpm babel",
@@ -17,9 +17,14 @@ import * as Sink from "effect/Sink"
17
17
  import * as Stream from "effect/Stream"
18
18
  import * as ChildProcess from "effect/unstable/process/ChildProcess"
19
19
  import type { ChildProcessHandle } from "effect/unstable/process/ChildProcessSpawner"
20
- import { ChildProcessSpawner, ExitCode, makeHandle, ProcessId } from "effect/unstable/process/ChildProcessSpawner"
20
+ import {
21
+ ChildProcessSpawner,
22
+ ExitCode,
23
+ make as makeSpawner,
24
+ makeHandle,
25
+ ProcessId
26
+ } from "effect/unstable/process/ChildProcessSpawner"
21
27
  import * as NodeChildProcess from "node:child_process"
22
- import * as NodeJSStream from "node:stream"
23
28
  import { handleErrnoException } from "./internal/utils.ts"
24
29
  import * as NodeSink from "./NodeSink.ts"
25
30
  import * as NodeStream from "./NodeStream.ts"
@@ -181,15 +186,15 @@ const make = Effect.gen(function*() {
181
186
  case "input": {
182
187
  // Create a sink to write to for input file descriptors
183
188
  let sink: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError> = Sink.drain
184
- if (Predicate.isNotNullish(nodeStream) && "write" in nodeStream) {
189
+ if (nodeStream && "write" in nodeStream) {
185
190
  sink = NodeSink.fromWritable({
186
- evaluate: () => nodeStream as NodeJS.WritableStream,
191
+ evaluate: () => nodeStream,
187
192
  onError: (error) => toPlatformError(`fromWritable(fd${fd})`, toError(error), command)
188
193
  })
189
194
  }
190
195
 
191
196
  // If user provided a stream, pipe it into the sink
192
- if (Predicate.isNotUndefined(config.stream)) {
197
+ if (config.stream) {
193
198
  yield* Effect.forkScoped(Stream.run(config.stream, sink))
194
199
  }
195
200
 
@@ -200,15 +205,15 @@ const make = Effect.gen(function*() {
200
205
  case "output": {
201
206
  // Create a stream to read from for output file descriptors
202
207
  let stream: Stream.Stream<Uint8Array, PlatformError.PlatformError> = Stream.empty
203
- if (Predicate.isNotNull(nodeStream) && Predicate.isNotUndefined(nodeStream) && "read" in nodeStream) {
208
+ if (nodeStream && "read" in nodeStream) {
204
209
  stream = NodeStream.fromReadable({
205
- evaluate: () => nodeStream as NodeJS.ReadableStream,
210
+ evaluate: () => nodeStream,
206
211
  onError: (error) => toPlatformError(`fromReadable(fd${fd})`, toError(error), command)
207
212
  })
208
213
  }
209
214
 
210
215
  // If user provided a sink, transduce the stream through it
211
- if (Predicate.isNotUndefined(config.sink)) {
216
+ if (config.sink) {
212
217
  stream = Stream.transduce(stream, config.sink)
213
218
  }
214
219
 
@@ -251,35 +256,6 @@ const make = Effect.gen(function*() {
251
256
  return Effect.succeed(sink)
252
257
  })
253
258
 
254
- /**
255
- * Given that `NodeStream.fromReadable` uses `.read` to read data from the
256
- * provided `Readable` stream, consumers would race to read data from the
257
- * `handle.stdout` and `handle.stderr` streams if they were also simultaneously
258
- * reading from the `handle.all` stream.
259
- *
260
- * To solve this, we leverage the fact that NodeJS `Readable` streams can be
261
- * piped to multiple destinations simultaneously. The logic for the solution
262
- * is as follows:
263
- *
264
- * 1. Pipe each original stream to two `PassThrough` streams:
265
- * - One dedicated PassThrough for individual access (.stdout / .stderr)
266
- * - One shared PassThrough for combined access (.all)
267
- * 2. Create Effect streams from the PassThrough streams (not the originals)
268
- *
269
- * **Diagram**
270
- *
271
- * ┌─────────────┐
272
- * ┌────►│ passthrough │────► Effect stdout Stream
273
- * │ └─────────────┘
274
- * childProcess.stdout ────┤
275
- * │ ┌─────────────┐
276
- * └────►│ passthrough │────► Effect all Stream
277
- * ┌────►│ │
278
- * childProcess.stderr ────┤ └─────────────┘
279
- * │ ┌─────────────┐
280
- * └────►│ passthrough │────► Effect stderr Stream
281
- * └─────────────┘
282
- */
283
259
  const setupChildOutputStreams = (
284
260
  command: ChildProcess.StandardCommand,
285
261
  childProcess: NodeChildProcess.ChildProcess,
@@ -290,85 +266,27 @@ const make = Effect.gen(function*() {
290
266
  stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError>
291
267
  all: Stream.Stream<Uint8Array, PlatformError.PlatformError>
292
268
  } => {
293
- const nodeStdout = childProcess.stdout
294
- const nodeStderr = childProcess.stderr
295
-
296
- // Create PassThrough streams for individual access to stdout and stderr.
297
- // We pipe the original Node.js streams to these PassThroughs so that
298
- // the data can be consumed by both the individual streams AND the
299
- // combined stream (.all) simultaneously.
300
- const stdoutPassThrough = Predicate.isNotNull(nodeStdout)
301
- ? new NodeJSStream.PassThrough()
302
- : null
303
- const stderrPassThrough = Predicate.isNotNull(nodeStderr)
304
- ? new NodeJSStream.PassThrough()
305
- : null
306
-
307
- // Create PassThrough for combined output (.all)
308
- const combinedPassThrough = new NodeJSStream.PassThrough()
309
-
310
- // Track stream endings for the combined stream
311
- const totalStreams = (Predicate.isNotNull(nodeStdout) ? 1 : 0) +
312
- (Predicate.isNotNull(nodeStderr) ? 1 : 0)
313
-
314
- let endedCount = 0
315
- const onStreamEnd = () => {
316
- endedCount++
317
- if (endedCount >= totalStreams) {
318
- combinedPassThrough.end()
319
- }
320
- }
321
-
322
- // Pipe stdout to both its own PassThrough and the combined PassThrough
323
- if (Predicate.isNotNull(nodeStdout) && Predicate.isNotNull(stdoutPassThrough)) {
324
- nodeStdout.pipe(stdoutPassThrough)
325
- nodeStdout.pipe(combinedPassThrough, { end: false })
326
- nodeStdout.once("end", onStreamEnd)
327
- }
328
-
329
- // Pipe stderr to both its own PassThrough and the combined PassThrough
330
- if (Predicate.isNotNull(nodeStderr) && Predicate.isNotNull(stderrPassThrough)) {
331
- nodeStderr.pipe(stderrPassThrough)
332
- nodeStderr.pipe(combinedPassThrough, { end: false })
333
- nodeStderr.once("end", onStreamEnd)
334
- }
335
-
336
- // Handle edge case: no streams available
337
- if (totalStreams === 0) {
338
- combinedPassThrough.end()
339
- }
340
-
341
- // Create Effect stream for stdout from its PassThrough
342
- let stdout: Stream.Stream<Uint8Array, PlatformError.PlatformError> = Stream.empty
343
- if (Predicate.isNotNull(stdoutPassThrough)) {
344
- stdout = NodeStream.fromReadable({
345
- evaluate: () => stdoutPassThrough,
269
+ let stdout = childProcess.stdout ?
270
+ NodeStream.fromReadable({
271
+ evaluate: () => childProcess.stdout!,
346
272
  onError: (error) => toPlatformError("fromReadable(stdout)", toError(error), command)
347
- })
348
- // Apply user-provided Sink if configured
349
- if (Sink.isSink(stdoutConfig.stream)) {
350
- stdout = Stream.transduce(stdout, stdoutConfig.stream)
351
- }
352
- }
353
-
354
- // Create Effect stream for stderr from its PassThrough
355
- let stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError> = Stream.empty
356
- if (Predicate.isNotNull(stderrPassThrough)) {
357
- stderr = NodeStream.fromReadable({
358
- evaluate: () => stderrPassThrough,
273
+ }) :
274
+ Stream.empty
275
+ let stderr = childProcess.stderr ?
276
+ NodeStream.fromReadable({
277
+ evaluate: () => childProcess.stderr!,
359
278
  onError: (error) => toPlatformError("fromReadable(stderr)", toError(error), command)
360
- })
361
- // Apply user-provided Sink if configured
362
- if (Sink.isSink(stderrConfig.stream)) {
363
- stderr = Stream.transduce(stderr, stderrConfig.stream)
364
- }
279
+ }) :
280
+ Stream.empty
281
+
282
+ if (Sink.isSink(stdoutConfig.stream)) {
283
+ stdout = Stream.transduce(stdout, stdoutConfig.stream)
284
+ }
285
+ if (Sink.isSink(stderrConfig.stream)) {
286
+ stderr = Stream.transduce(stderr, stderrConfig.stream)
365
287
  }
366
288
 
367
- // Create Effect stream for combined output from the combined PassThrough
368
- const all: Stream.Stream<Uint8Array, PlatformError.PlatformError> = NodeStream.fromReadable({
369
- evaluate: () => combinedPassThrough,
370
- onError: (error) => toPlatformError("fromReadable(all)", toError(error), command)
371
- })
289
+ const all = Stream.merge(stdout, stderr)
372
290
 
373
291
  return { stdout, stderr, all }
374
292
  }
@@ -425,6 +343,23 @@ const make = Effect.gen(function*() {
425
343
  })
426
344
  }
427
345
 
346
+ const killProcessGroupOnExit = (
347
+ childProcess: NodeChildProcess.ChildProcess,
348
+ signal: NodeJS.Signals
349
+ ): void => {
350
+ if (globalThis.process.platform === "win32") {
351
+ NodeChildProcess.exec(`taskkill /pid ${childProcess.pid} /T /F`, () => {
352
+ // ignore errors during best-effort cleanup
353
+ })
354
+ return
355
+ }
356
+ try {
357
+ globalThis.process.kill(-childProcess.pid!, signal)
358
+ } catch {
359
+ // ignore errors during best-effort cleanup
360
+ }
361
+ }
362
+
428
363
  const killProcess = (
429
364
  command: ChildProcess.StandardCommand,
430
365
  childProcess: NodeChildProcess.ChildProcess,
@@ -456,7 +391,7 @@ const make = Effect.gen(function*() {
456
391
  ? kill(command, childProcess, killSignal)
457
392
  : Effect.timeoutOrElse(kill(command, childProcess, killSignal), {
458
393
  duration: options.forceKillAfter,
459
- onTimeout: () => kill(command, childProcess, "SIGKILL")
394
+ orElse: () => kill(command, childProcess, "SIGKILL")
460
395
  })
461
396
  }
462
397
 
@@ -501,6 +436,8 @@ const make = Effect.gen(function*() {
501
436
  const stdoutConfig = resolveOutputOption(cmd.options, "stdout")
502
437
  const stderrConfig = resolveOutputOption(cmd.options, "stderr")
503
438
  const resolvedAdditionalFds = resolveAdditionalFds(cmd.options)
439
+ let isReferenced = true
440
+ let cleanupOnNonZeroExit = false
504
441
 
505
442
  const cwd = yield* resolveWorkingDirectory(cmd.options)
506
443
  const env = resolveEnvironment(cmd.options)
@@ -526,6 +463,9 @@ const make = Effect.gen(function*() {
526
463
  }
527
464
  return yield* Effect.void
528
465
  }
466
+ if (!isReferenced) {
467
+ return yield* Effect.void
468
+ }
529
469
  // Process is still running, kill it
530
470
  return yield* killWithTimeout((command, childProcess, signal) =>
531
471
  Effect.catch(
@@ -540,6 +480,26 @@ const make = Effect.gen(function*() {
540
480
  )
541
481
 
542
482
  const pid = ProcessId(childProcess.pid!)
483
+ childProcess.on("exit", (code) => {
484
+ if (cleanupOnNonZeroExit && code !== 0 && Predicate.isNotNull(code)) {
485
+ killProcessGroupOnExit(childProcess, cmd.options.killSignal ?? "SIGTERM")
486
+ }
487
+ })
488
+ const reref = Effect.sync(() => {
489
+ if (!isReferenced) {
490
+ childProcess.ref()
491
+ isReferenced = true
492
+ cleanupOnNonZeroExit = false
493
+ }
494
+ })
495
+ const unref = Effect.sync(() => {
496
+ if (isReferenced) {
497
+ childProcess.unref()
498
+ isReferenced = false
499
+ cleanupOnNonZeroExit = true
500
+ }
501
+ return reref
502
+ })
543
503
  const stdin = yield* setupChildStdin(cmd, childProcess, stdinConfig)
544
504
  const { all, stderr, stdout } = setupChildOutputStreams(cmd, childProcess, stdoutConfig, stderrConfig)
545
505
  const { getInputFd, getOutputFd } = yield* setupAdditionalFds(cmd, childProcess, resolvedAdditionalFds)
@@ -577,14 +537,15 @@ const make = Effect.gen(function*() {
577
537
  stderr,
578
538
  all,
579
539
  getInputFd,
580
- getOutputFd
540
+ getOutputFd,
541
+ unref
581
542
  })
582
543
  }
583
544
  case "PipedCommand": {
584
545
  const { commands, pipeOptions } = flattenCommand(cmd)
585
546
  const [root, ...pipeline] = commands
586
547
 
587
- let handle = spawnCommand(root)
548
+ const handles = [yield* spawnCommand(root)]
588
549
 
589
550
  for (let i = 0; i < pipeline.length; i++) {
590
551
  const command = pipeline[i]
@@ -593,7 +554,7 @@ const make = Effect.gen(function*() {
593
554
 
594
555
  // Get the appropriate stream from the source based on `from` option
595
556
  const sourceStream = Stream.unwrap(
596
- Effect.map(handle, (h) => getSourceStream(h, options.from))
557
+ Effect.succeed(getSourceStream(handles[handles.length - 1], options.from))
597
558
  )
598
559
 
599
560
  // Determine where to pipe: stdin or custom fd
@@ -601,41 +562,66 @@ const make = Effect.gen(function*() {
601
562
 
602
563
  if (toOption === "stdin") {
603
564
  // Pipe to stdin (default behavior)
604
- handle = spawnCommand(ChildProcess.make(command.command, command.args, {
605
- ...command.options,
606
- stdin: { ...stdinConfig, stream: sourceStream }
607
- }))
565
+ handles.push(
566
+ yield* spawnCommand(ChildProcess.make(command.command, command.args, {
567
+ ...command.options,
568
+ stdin: { ...stdinConfig, stream: sourceStream }
569
+ }))
570
+ )
608
571
  } else {
609
572
  // Pipe to custom fd (fd3, fd4, etc.)
610
573
  const fd = ChildProcess.parseFdName(toOption)
611
574
  if (Predicate.isNotUndefined(fd)) {
612
575
  const fdName = ChildProcess.fdName(fd) as `fd${number}`
613
576
  const existingFds = command.options.additionalFds ?? {}
614
- handle = spawnCommand(ChildProcess.make(command.command, command.args, {
615
- ...command.options,
616
- additionalFds: {
617
- ...existingFds,
618
- [fdName]: { type: "input" as const, stream: sourceStream }
619
- }
620
- }))
577
+ handles.push(
578
+ yield* spawnCommand(ChildProcess.make(command.command, command.args, {
579
+ ...command.options,
580
+ additionalFds: {
581
+ ...existingFds,
582
+ [fdName]: { type: "input" as const, stream: sourceStream }
583
+ }
584
+ }))
585
+ )
621
586
  } else {
622
587
  // Invalid fd name, fall back to stdin
623
- handle = spawnCommand(ChildProcess.make(command.command, command.args, {
624
- ...command.options,
625
- stdin: { ...stdinConfig, stream: sourceStream }
626
- }))
588
+ handles.push(
589
+ yield* spawnCommand(ChildProcess.make(command.command, command.args, {
590
+ ...command.options,
591
+ stdin: { ...stdinConfig, stream: sourceStream }
592
+ }))
593
+ )
627
594
  }
628
595
  }
629
596
  }
630
597
 
631
- return yield* handle
598
+ const handle = handles[handles.length - 1]
599
+ const unref = Effect.gen(function*() {
600
+ const rerefs: Array<Effect.Effect<void, PlatformError.PlatformError>> = []
601
+ for (const handle of handles) {
602
+ rerefs.push(yield* handle.unref)
603
+ }
604
+ return Effect.forEach([...rerefs].reverse(), (reref) => reref, { discard: true })
605
+ })
606
+
607
+ return makeHandle({
608
+ pid: handle.pid,
609
+ exitCode: handle.exitCode,
610
+ isRunning: handle.isRunning,
611
+ kill: handle.kill,
612
+ stdin: handle.stdin,
613
+ stdout: handle.stdout,
614
+ stderr: handle.stderr,
615
+ all: handle.all,
616
+ getInputFd: handle.getInputFd,
617
+ getOutputFd: handle.getOutputFd,
618
+ unref
619
+ })
632
620
  }
633
621
  }
634
622
  })
635
623
 
636
- return ChildProcessSpawner.of({
637
- spawn: spawnCommand
638
- })
624
+ return makeSpawner(spawnCommand)
639
625
  })
640
626
 
641
627
  /**
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import * as Effect from "effect/Effect"
5
5
  import * as Layer from "effect/Layer"
6
+ import * as Option from "effect/Option"
6
7
  import * as Runners from "effect/unstable/cluster/Runners"
7
8
  import * as ShardingConfig from "effect/unstable/cluster/ShardingConfig"
8
9
  import * as RpcClient from "effect/unstable/rpc/RpcClient"
@@ -48,9 +49,9 @@ export const layerSocketServer: Layer.Layer<
48
49
  ShardingConfig.ShardingConfig
49
50
  > = Effect.gen(function*() {
50
51
  const config = yield* ShardingConfig.ShardingConfig
51
- const listenAddress = config.runnerListenAddress ?? config.runnerAddress
52
- if (listenAddress === undefined) {
52
+ const listenAddress = Option.orElse(config.runnerListenAddress, () => config.runnerAddress)
53
+ if (Option.isNone(listenAddress)) {
53
54
  return yield* Effect.die("layerSocketServer: ShardingConfig.runnerListenAddress is None")
54
55
  }
55
- return NodeSocketServer.layer(listenAddress)
56
+ return NodeSocketServer.layer(listenAddress.value)
56
57
  }).pipe(Layer.unwrap)