@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.
- package/dist/NodeChildProcessSpawner.d.ts.map +1 -1
- package/dist/NodeChildProcessSpawner.js +91 -115
- package/dist/NodeChildProcessSpawner.js.map +1 -1
- package/dist/NodeClusterSocket.d.ts.map +1 -1
- package/dist/NodeClusterSocket.js +4 -3
- package/dist/NodeClusterSocket.js.map +1 -1
- package/dist/NodeFileSystem.d.ts.map +1 -1
- package/dist/NodeFileSystem.js +18 -22
- package/dist/NodeFileSystem.js.map +1 -1
- package/dist/NodeRuntime.d.ts.map +1 -1
- package/dist/NodeRuntime.js +2 -6
- package/dist/NodeRuntime.js.map +1 -1
- package/dist/NodeSink.d.ts.map +1 -1
- package/dist/NodeSink.js +7 -1
- package/dist/NodeSink.js.map +1 -1
- package/dist/NodeSocket.d.ts +4 -4
- package/dist/NodeSocket.d.ts.map +1 -1
- package/dist/NodeSocket.js +9 -8
- package/dist/NodeSocket.js.map +1 -1
- package/dist/NodeSocketServer.d.ts +2 -2
- package/dist/NodeSocketServer.d.ts.map +1 -1
- package/dist/NodeSocketServer.js +6 -6
- package/dist/NodeSocketServer.js.map +1 -1
- package/dist/NodeStdio.d.ts +0 -3
- package/dist/NodeStdio.d.ts.map +1 -1
- package/dist/NodeStdio.js +8 -4
- package/dist/NodeStdio.js.map +1 -1
- package/dist/NodeStream.d.ts.map +1 -1
- package/dist/NodeStream.js +8 -6
- package/dist/NodeStream.js.map +1 -1
- package/dist/NodeTerminal.d.ts.map +1 -1
- package/dist/NodeTerminal.js +2 -1
- package/dist/NodeTerminal.js.map +1 -1
- package/package.json +6 -6
- package/src/NodeChildProcessSpawner.ts +121 -135
- package/src/NodeClusterSocket.ts +4 -3
- package/src/NodeFileSystem.ts +25 -24
- package/src/NodeRuntime.ts +2 -6
- package/src/NodeSink.ts +7 -0
- package/src/NodeSocket.ts +11 -10
- package/src/NodeSocketServer.ts +6 -6
- package/src/NodeStdio.ts +26 -20
- package/src/NodeStream.ts +11 -8
- package/src/NodeTerminal.ts +2 -1
package/dist/NodeStream.js
CHANGED
|
@@ -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.
|
|
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(
|
|
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 =
|
|
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 =
|
|
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.
|
|
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)) {
|
package/dist/NodeStream.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/NodeTerminal.js
CHANGED
|
@@ -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,
|
package/dist/NodeTerminal.js.map
CHANGED
|
@@ -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":"AAIA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,WAAW,QAA4B,sBAAsB;AACtE,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;;AAIA,OAAO,MAAMC,IAAI,
|
|
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.
|
|
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.
|
|
49
|
+
"effect": "^4.0.0-beta.50"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@types/node": "^25.
|
|
53
|
-
"tar": "^7.5.
|
|
54
|
-
"effect": "^4.0.0-beta.
|
|
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.
|
|
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 {
|
|
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 (
|
|
189
|
+
if (nodeStream && "write" in nodeStream) {
|
|
185
190
|
sink = NodeSink.fromWritable({
|
|
186
|
-
evaluate: () => nodeStream
|
|
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 (
|
|
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 (
|
|
208
|
+
if (nodeStream && "read" in nodeStream) {
|
|
204
209
|
stream = NodeStream.fromReadable({
|
|
205
|
-
evaluate: () => nodeStream
|
|
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 (
|
|
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
|
-
|
|
294
|
-
|
|
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
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
605
|
-
|
|
606
|
-
|
|
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
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
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
|
-
|
|
624
|
-
|
|
625
|
-
|
|
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
|
-
|
|
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
|
|
637
|
-
spawn: spawnCommand
|
|
638
|
-
})
|
|
624
|
+
return makeSpawner(spawnCommand)
|
|
639
625
|
})
|
|
640
626
|
|
|
641
627
|
/**
|
package/src/NodeClusterSocket.ts
CHANGED
|
@@ -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
|
|
52
|
-
if (listenAddress
|
|
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)
|