@effect/platform-node 0.33.3 → 0.33.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,74 +29,73 @@ const runCommand = fileSystem => command => {
29
29
  switch (command._tag) {
30
30
  case "StandardCommand":
31
31
  {
32
- return pipe(
33
- // Validate that the directory is accessible
34
- Option.match(command.cwd, {
35
- onNone: () => Effect.unit,
36
- onSome: dir => fileSystem.access(dir)
37
- }), Effect.zipRight(Effect.sync(() => globalThis.process.env)), Effect.zip(Deferred.make()), Effect.flatMap(([env, exitCode]) => Effect.acquireRelease(Effect.sync(() => {
32
+ const spawn = Effect.flatMap(Deferred.make(), exitCode => Effect.async(resume => {
38
33
  const handle = ChildProcess.spawn(command.command, command.args, {
39
34
  stdio: [inputToStdioOption(command.stdin), outputToStdioOption(command.stdout), outputToStdioOption(command.stderr)],
40
35
  cwd: Option.getOrElse(command.cwd, constUndefined),
41
36
  shell: command.shell,
42
37
  env: {
43
- ...env,
38
+ ...process.env,
44
39
  ...Object.fromEntries(command.env)
45
40
  }
46
41
  });
47
- handle.once("exit", () => {
48
- Deferred.unsafeDone(exitCode, Effect.succeed([handle.exitCode, handle.signalCode]));
42
+ handle.on("error", err => {
43
+ resume(Effect.fail(toPlatformError("spawn", err, command)));
44
+ });
45
+ handle.on("exit", (...args) => {
46
+ Deferred.unsafeDone(exitCode, Effect.succeed(args));
47
+ });
48
+ handle.on("spawn", () => {
49
+ resume(Effect.succeed([handle, exitCode]));
50
+ });
51
+ return Effect.sync(() => {
52
+ handle.kill("SIGTERM");
49
53
  });
50
- return [handle, exitCode];
51
- }), ([handle, exitCode]) => Effect.flatMap(Deferred.isDone(exitCode), done => done ? Effect.unit : Effect.suspend(() => {
52
- if (handle.pid && handle.kill("SIGTERM")) {
54
+ }));
55
+ return pipe(
56
+ // Validate that the directory is accessible
57
+ Option.match(command.cwd, {
58
+ onNone: () => Effect.unit,
59
+ onSome: dir => fileSystem.access(dir)
60
+ }), Effect.zipRight(Effect.acquireRelease(spawn, ([handle, exitCode]) => Effect.flatMap(Deferred.isDone(exitCode), done => done ? Effect.unit : Effect.suspend(() => {
61
+ if (handle.kill("SIGTERM")) {
53
62
  return Deferred.await(exitCode);
54
63
  }
55
64
  return Effect.unit;
56
- })))), Effect.flatMap(([handle, exitCodeDeferred]) => Effect.async(resume => {
57
- // If starting the process throws an error, make sure to capture it
58
- handle.on("error", err => {
59
- resume(Effect.fail(toPlatformError("spawn", err, command)));
60
- });
61
- // If the process is assigned a process identifier, then we know it
62
- // was spawned successfully
63
- if (handle.pid) {
64
- let stdin = Sink.drain;
65
- if (handle.stdin !== null) {
66
- stdin = fromWritable(() => handle.stdin, err => toPlatformError("toWritable", toError(err), command));
65
+ })))), Effect.map(([handle, exitCodeDeferred]) => {
66
+ let stdin = Sink.drain;
67
+ if (handle.stdin !== null) {
68
+ stdin = fromWritable(() => handle.stdin, err => toPlatformError("toWritable", toError(err), command));
69
+ }
70
+ const exitCode = Effect.flatMap(Deferred.await(exitCodeDeferred), ([code, signal]) => {
71
+ if (code !== null) {
72
+ return Effect.succeed(CommandExecutor.ExitCode(code));
67
73
  }
68
- const exitCode = Effect.flatMap(Deferred.await(exitCodeDeferred), ([code, signal]) => {
69
- if (code !== null) {
70
- return Effect.succeed(CommandExecutor.ExitCode(code));
71
- }
72
- // If code is `null`, then `signal` must be defined. See the NodeJS
73
- // documentation for the `"exit"` event on a `child_process`.
74
- // https://nodejs.org/api/child_process.html#child_process_event_exit
75
- return Effect.fail(toPlatformError("exitCode", new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`), command));
76
- });
77
- const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred));
78
- const kill = (signal = "SIGTERM") => Effect.flatMap(Effect.sync(() => handle.kill(signal)), success => success ? Effect.asUnit(Deferred.await(exitCodeDeferred)) : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command)));
79
- resume(Effect.sync(() => {
80
- const pid = CommandExecutor.ProcessId(handle.pid);
81
- const stderr = fromReadable(() => handle.stderr, err => toPlatformError("fromReadable(stderr)", toError(err), command));
82
- let stdout = fromReadable(() => handle.stdout, err => toPlatformError("fromReadable(stdout)", toError(err), command));
83
- // TODO: add Sink.isSink
84
- if (typeof command.stdout !== "string") {
85
- stdout = Stream.transduce(stdout, command.stdout);
86
- }
87
- return {
88
- [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
89
- pid,
90
- exitCode,
91
- isRunning,
92
- kill,
93
- stdin,
94
- stderr,
95
- stdout
96
- };
97
- }));
74
+ // If code is `null`, then `signal` must be defined. See the NodeJS
75
+ // documentation for the `"exit"` event on a `child_process`.
76
+ // https://nodejs.org/api/child_process.html#child_process_event_exit
77
+ return Effect.fail(toPlatformError("exitCode", new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`), command));
78
+ });
79
+ const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred));
80
+ const kill = (signal = "SIGTERM") => Effect.suspend(() => handle.kill(signal) ? Effect.asUnit(Deferred.await(exitCodeDeferred)) : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command)));
81
+ const pid = CommandExecutor.ProcessId(handle.pid);
82
+ const stderr = fromReadable(() => handle.stderr, err => toPlatformError("fromReadable(stderr)", toError(err), command));
83
+ let stdout = fromReadable(() => handle.stdout, err => toPlatformError("fromReadable(stdout)", toError(err), command));
84
+ // TODO: add Sink.isSink
85
+ if (typeof command.stdout !== "string") {
86
+ stdout = Stream.transduce(stdout, command.stdout);
98
87
  }
99
- })), Effect.tap(process => Option.match(command.stdin, {
88
+ return {
89
+ [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
90
+ pid,
91
+ exitCode,
92
+ isRunning,
93
+ kill,
94
+ stdin,
95
+ stderr,
96
+ stdout
97
+ };
98
+ }), Effect.tap(process => Option.match(command.stdin, {
100
99
  onNone: () => Effect.unit,
101
100
  onSome: stdin => Effect.forkDaemon(Stream.run(stdin, process.stdin))
102
101
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"commandExecutor.js","names":["Command","CommandExecutor","FileSystem","Deferred","Effect","constUndefined","pipe","Layer","Option","Sink","Stream","ChildProcess","handleErrnoException","fromWritable","fromReadable","inputToStdioOption","stdin","match","onNone","onSome","outputToStdioOption","output","toError","err","globalThis","Error","String","toPlatformError","method","error","command","flattened","flatten","reduce","acc","curr","args","join","length","runCommand","fileSystem","_tag","cwd","unit","dir","access","zipRight","sync","process","env","zip","make","flatMap","exitCode","acquireRelease","handle","spawn","stdio","stdout","stderr","getOrElse","shell","Object","fromEntries","once","unsafeDone","succeed","signalCode","isDone","done","suspend","pid","kill","await","exitCodeDeferred","async","resume","on","fail","drain","code","signal","ExitCode","isRunning","negate","success","asUnit","ProcessId","transduce","ProcessTypeId","tap","forkDaemon","run","head","tail","slice","initial","last","stream","map","unwrapScoped","layer","effect","makeExecutor"],"sources":["../../../src/internal/commandExecutor.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"commandExecutor.js","names":["Command","CommandExecutor","FileSystem","Deferred","Effect","constUndefined","pipe","Layer","Option","Sink","Stream","ChildProcess","handleErrnoException","fromWritable","fromReadable","inputToStdioOption","stdin","match","onNone","onSome","outputToStdioOption","output","toError","err","globalThis","Error","String","toPlatformError","method","error","command","flattened","flatten","reduce","acc","curr","args","join","length","runCommand","fileSystem","_tag","spawn","flatMap","make","exitCode","async","resume","handle","stdio","stdout","stderr","cwd","getOrElse","shell","env","process","Object","fromEntries","on","fail","unsafeDone","succeed","sync","kill","unit","dir","access","zipRight","acquireRelease","isDone","done","suspend","await","map","exitCodeDeferred","drain","code","signal","ExitCode","isRunning","negate","asUnit","pid","ProcessId","transduce","ProcessTypeId","tap","forkDaemon","run","head","tail","slice","initial","last","stream","unwrapScoped","layer","effect","makeExecutor"],"sources":["../../../src/internal/commandExecutor.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { defaultTeardown } from "@effect/platform/Runtime";
2
+ import * as Cause from "effect/Cause";
2
3
  import * as Effect from "effect/Effect";
3
4
  import { equals } from "effect/Equal";
4
5
  import * as Fiber from "effect/Fiber";
5
6
  /** @internal */
6
7
  export const runMain = (effect, teardown = defaultTeardown) => {
7
- const fiber = Effect.runFork(effect);
8
+ const fiber = Effect.runFork(Effect.tapErrorCause(effect, cause => {
9
+ if (Cause.isInterruptedOnly(cause)) {
10
+ return Effect.unit;
11
+ }
12
+ return Effect.logError(cause);
13
+ }));
8
14
  fiber.addObserver(exit => teardown(exit, code => {
9
15
  Effect.runCallback(interruptAll(fiber.id()), () => {
10
16
  process.exit(code);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["defaultTeardown","Effect","equals","Fiber","runMain","effect","teardown","fiber","runFork","addObserver","exit","code","runCallback","interruptAll","id","process","onSigint","removeListener","interruptAsFork","once","rootWithoutSelf","fiberIdWith","selfId","map","roots","filter","flatMap","length","unit","interruptAllAs","postInterruptRoots"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,QAAsB,0BAA0B;AACxE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,MAAM,QAAQ,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAGrC;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,MAAkC,EAClCC,QAAQ,GAAGN,eAAe,KACxB;EACF,MAAMO,KAAK,GAAGN,MAAM,CAACO,OAAO,CAACH,MAAM,CAAC;EAEpCE,KAAK,CAACE,WAAW,CAAEC,IAAI,IACrBJ,QAAQ,CAACI,IAAI,EAAGC,IAAI,IAAI;IACtBV,MAAM,CAACW,WAAW,CAACC,YAAY,CAACN,KAAK,CAACO,EAAE,EAAE,CAAC,EAAE,MAAK;MAChDC,OAAO,CAACL,IAAI,CAACC,IAAI,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC,CACH;EAED,SAASK,QAAQA,CAAA;IACfD,OAAO,CAACE,cAAc,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC1CD,OAAO,CAACE,cAAc,CAAC,SAAS,EAAED,QAAQ,CAAC;IAC3Cf,MAAM,CAACO,OAAO,CAACD,KAAK,CAACW,eAAe,CAACX,KAAK,CAACO,EAAE,EAAE,CAAC,CAAC;EACnD;EAEAC,OAAO,CAACI,IAAI,CAAC,QAAQ,EAAEH,QAAQ,CAAC;EAChCD,OAAO,CAACI,IAAI,CAAC,SAAS,EAAEH,QAAQ,CAAC;AACnC,CAAC;AAED,MAAMI,eAAe,gBAAGnB,MAAM,CAACoB,WAAW,CAAEC,MAAM,IAChDrB,MAAM,CAACsB,GAAG,CAACpB,KAAK,CAACqB,KAAK,EAAGA,KAAK,IAAKA,KAAK,CAACC,MAAM,CAAElB,KAAK,IAAK,CAACL,MAAM,CAACK,KAAK,CAACO,EAAE,EAAE,EAAEQ,MAAM,CAAC,CAAC,CAAC,CACzF;AAED,MAAMT,YAAY,GAAIC,EAAmB,IACvCb,MAAM,CAACyB,OAAO,CAACN,eAAe,EAAGI,KAAK,IAAI;EACxC,IAAIA,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO1B,MAAM,CAAC2B,IAAI;EACpB;EACA,OAAO3B,MAAM,CAACyB,OAAO,CACnBvB,KAAK,CAAC0B,cAAc,CAACL,KAAK,EAAEV,EAAE,CAAC,EAC/B,MACEb,MAAM,CAACyB,OAAO,CACZN,eAAe,EACdU,kBAAkB,IAAKA,kBAAkB,CAACH,MAAM,GAAG,CAAC,GAAGd,YAAY,CAACC,EAAE,CAAC,GAAGb,MAAM,CAAC2B,IAAI,CACvF,CACJ;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.js","names":["defaultTeardown","Cause","Effect","equals","Fiber","runMain","effect","teardown","fiber","runFork","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","code","runCallback","interruptAll","id","process","onSigint","removeListener","interruptAsFork","once","rootWithoutSelf","fiberIdWith","selfId","map","roots","filter","flatMap","length","interruptAllAs","postInterruptRoots"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,QAAsB,0BAA0B;AACxE,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,MAAM,QAAQ,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAGrC;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,MAAkC,EAClCC,QAAQ,GAAGP,eAAe,KACxB;EACF,MAAMQ,KAAK,GAAGN,MAAM,CAACO,OAAO,CAC1BP,MAAM,CAACQ,aAAa,CAACJ,MAAM,EAAGK,KAAK,IAAI;IACrC,IAAIV,KAAK,CAACW,iBAAiB,CAACD,KAAK,CAAC,EAAE;MAClC,OAAOT,MAAM,CAACW,IAAI;IACpB;IACA,OAAOX,MAAM,CAACY,QAAQ,CAACH,KAAK,CAAC;EAC/B,CAAC,CAAC,CACH;EAEDH,KAAK,CAACO,WAAW,CAAEC,IAAI,IACrBT,QAAQ,CAACS,IAAI,EAAGC,IAAI,IAAI;IACtBf,MAAM,CAACgB,WAAW,CAACC,YAAY,CAACX,KAAK,CAACY,EAAE,EAAE,CAAC,EAAE,MAAK;MAChDC,OAAO,CAACL,IAAI,CAACC,IAAI,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC,CACH;EAED,SAASK,QAAQA,CAAA;IACfD,OAAO,CAACE,cAAc,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC1CD,OAAO,CAACE,cAAc,CAAC,SAAS,EAAED,QAAQ,CAAC;IAC3CpB,MAAM,CAACO,OAAO,CAACD,KAAK,CAACgB,eAAe,CAAChB,KAAK,CAACY,EAAE,EAAE,CAAC,CAAC;EACnD;EAEAC,OAAO,CAACI,IAAI,CAAC,QAAQ,EAAEH,QAAQ,CAAC;EAChCD,OAAO,CAACI,IAAI,CAAC,SAAS,EAAEH,QAAQ,CAAC;AACnC,CAAC;AAED,MAAMI,eAAe,gBAAGxB,MAAM,CAACyB,WAAW,CAAEC,MAAM,IAChD1B,MAAM,CAAC2B,GAAG,CAACzB,KAAK,CAAC0B,KAAK,EAAGA,KAAK,IAAKA,KAAK,CAACC,MAAM,CAAEvB,KAAK,IAAK,CAACL,MAAM,CAACK,KAAK,CAACY,EAAE,EAAE,EAAEQ,MAAM,CAAC,CAAC,CAAC,CACzF;AAED,MAAMT,YAAY,GAAIC,EAAmB,IACvClB,MAAM,CAAC8B,OAAO,CAACN,eAAe,EAAGI,KAAK,IAAI;EACxC,IAAIA,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO/B,MAAM,CAACW,IAAI;EACpB;EACA,OAAOX,MAAM,CAAC8B,OAAO,CACnB5B,KAAK,CAAC8B,cAAc,CAACJ,KAAK,EAAEV,EAAE,CAAC,EAC/B,MACElB,MAAM,CAAC8B,OAAO,CACZN,eAAe,EACdS,kBAAkB,IAAKA,kBAAkB,CAACF,MAAM,GAAG,CAAC,GAAGd,YAAY,CAACC,EAAE,CAAC,GAAGlB,MAAM,CAACW,IAAI,CACvF,CACJ;AACH,CAAC,CAAC"}
@@ -60,74 +60,73 @@ const runCommand = fileSystem => command => {
60
60
  switch (command._tag) {
61
61
  case "StandardCommand":
62
62
  {
63
- return (0, _Function.pipe)(
64
- // Validate that the directory is accessible
65
- Option.match(command.cwd, {
66
- onNone: () => Effect.unit,
67
- onSome: dir => fileSystem.access(dir)
68
- }), Effect.zipRight(Effect.sync(() => globalThis.process.env)), Effect.zip(Deferred.make()), Effect.flatMap(([env, exitCode]) => Effect.acquireRelease(Effect.sync(() => {
63
+ const spawn = Effect.flatMap(Deferred.make(), exitCode => Effect.async(resume => {
69
64
  const handle = ChildProcess.spawn(command.command, command.args, {
70
65
  stdio: [inputToStdioOption(command.stdin), outputToStdioOption(command.stdout), outputToStdioOption(command.stderr)],
71
66
  cwd: Option.getOrElse(command.cwd, _Function.constUndefined),
72
67
  shell: command.shell,
73
68
  env: {
74
- ...env,
69
+ ...process.env,
75
70
  ...Object.fromEntries(command.env)
76
71
  }
77
72
  });
78
- handle.once("exit", () => {
79
- Deferred.unsafeDone(exitCode, Effect.succeed([handle.exitCode, handle.signalCode]));
73
+ handle.on("error", err => {
74
+ resume(Effect.fail(toPlatformError("spawn", err, command)));
75
+ });
76
+ handle.on("exit", (...args) => {
77
+ Deferred.unsafeDone(exitCode, Effect.succeed(args));
78
+ });
79
+ handle.on("spawn", () => {
80
+ resume(Effect.succeed([handle, exitCode]));
81
+ });
82
+ return Effect.sync(() => {
83
+ handle.kill("SIGTERM");
80
84
  });
81
- return [handle, exitCode];
82
- }), ([handle, exitCode]) => Effect.flatMap(Deferred.isDone(exitCode), done => done ? Effect.unit : Effect.suspend(() => {
83
- if (handle.pid && handle.kill("SIGTERM")) {
85
+ }));
86
+ return (0, _Function.pipe)(
87
+ // Validate that the directory is accessible
88
+ Option.match(command.cwd, {
89
+ onNone: () => Effect.unit,
90
+ onSome: dir => fileSystem.access(dir)
91
+ }), Effect.zipRight(Effect.acquireRelease(spawn, ([handle, exitCode]) => Effect.flatMap(Deferred.isDone(exitCode), done => done ? Effect.unit : Effect.suspend(() => {
92
+ if (handle.kill("SIGTERM")) {
84
93
  return Deferred.await(exitCode);
85
94
  }
86
95
  return Effect.unit;
87
- })))), Effect.flatMap(([handle, exitCodeDeferred]) => Effect.async(resume => {
88
- // If starting the process throws an error, make sure to capture it
89
- handle.on("error", err => {
90
- resume(Effect.fail(toPlatformError("spawn", err, command)));
91
- });
92
- // If the process is assigned a process identifier, then we know it
93
- // was spawned successfully
94
- if (handle.pid) {
95
- let stdin = Sink.drain;
96
- if (handle.stdin !== null) {
97
- stdin = (0, _sink.fromWritable)(() => handle.stdin, err => toPlatformError("toWritable", toError(err), command));
96
+ })))), Effect.map(([handle, exitCodeDeferred]) => {
97
+ let stdin = Sink.drain;
98
+ if (handle.stdin !== null) {
99
+ stdin = (0, _sink.fromWritable)(() => handle.stdin, err => toPlatformError("toWritable", toError(err), command));
100
+ }
101
+ const exitCode = Effect.flatMap(Deferred.await(exitCodeDeferred), ([code, signal]) => {
102
+ if (code !== null) {
103
+ return Effect.succeed(CommandExecutor.ExitCode(code));
98
104
  }
99
- const exitCode = Effect.flatMap(Deferred.await(exitCodeDeferred), ([code, signal]) => {
100
- if (code !== null) {
101
- return Effect.succeed(CommandExecutor.ExitCode(code));
102
- }
103
- // If code is `null`, then `signal` must be defined. See the NodeJS
104
- // documentation for the `"exit"` event on a `child_process`.
105
- // https://nodejs.org/api/child_process.html#child_process_event_exit
106
- return Effect.fail(toPlatformError("exitCode", new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`), command));
107
- });
108
- const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred));
109
- const kill = (signal = "SIGTERM") => Effect.flatMap(Effect.sync(() => handle.kill(signal)), success => success ? Effect.asUnit(Deferred.await(exitCodeDeferred)) : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command)));
110
- resume(Effect.sync(() => {
111
- const pid = CommandExecutor.ProcessId(handle.pid);
112
- const stderr = (0, _stream.fromReadable)(() => handle.stderr, err => toPlatformError("fromReadable(stderr)", toError(err), command));
113
- let stdout = (0, _stream.fromReadable)(() => handle.stdout, err => toPlatformError("fromReadable(stdout)", toError(err), command));
114
- // TODO: add Sink.isSink
115
- if (typeof command.stdout !== "string") {
116
- stdout = Stream.transduce(stdout, command.stdout);
117
- }
118
- return {
119
- [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
120
- pid,
121
- exitCode,
122
- isRunning,
123
- kill,
124
- stdin,
125
- stderr,
126
- stdout
127
- };
128
- }));
105
+ // If code is `null`, then `signal` must be defined. See the NodeJS
106
+ // documentation for the `"exit"` event on a `child_process`.
107
+ // https://nodejs.org/api/child_process.html#child_process_event_exit
108
+ return Effect.fail(toPlatformError("exitCode", new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`), command));
109
+ });
110
+ const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred));
111
+ const kill = (signal = "SIGTERM") => Effect.suspend(() => handle.kill(signal) ? Effect.asUnit(Deferred.await(exitCodeDeferred)) : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command)));
112
+ const pid = CommandExecutor.ProcessId(handle.pid);
113
+ const stderr = (0, _stream.fromReadable)(() => handle.stderr, err => toPlatformError("fromReadable(stderr)", toError(err), command));
114
+ let stdout = (0, _stream.fromReadable)(() => handle.stdout, err => toPlatformError("fromReadable(stdout)", toError(err), command));
115
+ // TODO: add Sink.isSink
116
+ if (typeof command.stdout !== "string") {
117
+ stdout = Stream.transduce(stdout, command.stdout);
129
118
  }
130
- })), Effect.tap(process => Option.match(command.stdin, {
119
+ return {
120
+ [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
121
+ pid,
122
+ exitCode,
123
+ isRunning,
124
+ kill,
125
+ stdin,
126
+ stderr,
127
+ stdout
128
+ };
129
+ }), Effect.tap(process => Option.match(command.stdin, {
131
130
  onNone: () => Effect.unit,
132
131
  onSome: stdin => Effect.forkDaemon(Stream.run(stdin, process.stdin))
133
132
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"commandExecutor.js","names":["Command","_interopRequireWildcard","require","CommandExecutor","FileSystem","Deferred","Effect","_Function","Layer","Option","Sink","Stream","ChildProcess","_error","_sink","_stream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","inputToStdioOption","stdin","match","onNone","onSome","outputToStdioOption","output","toError","err","globalThis","Error","String","toPlatformError","method","error","command","flattened","flatten","reduce","acc","curr","args","join","length","handleErrnoException","runCommand","fileSystem","_tag","pipe","cwd","unit","dir","access","zipRight","sync","process","env","zip","make","flatMap","exitCode","acquireRelease","handle","spawn","stdio","stdout","stderr","getOrElse","constUndefined","shell","fromEntries","once","unsafeDone","succeed","signalCode","isDone","done","suspend","pid","kill","await","exitCodeDeferred","async","resume","on","fail","drain","fromWritable","code","signal","ExitCode","isRunning","negate","success","asUnit","ProcessId","fromReadable","transduce","ProcessTypeId","tap","forkDaemon","run","head","tail","slice","initial","last","stream","map","unwrapScoped","layer","exports","effect","makeExecutor"],"sources":["../src/internal/commandExecutor.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,uBAAA,eAAAC,OAAA;AACA,IAAAC,eAAA,gBAAAF,uBAAA,eAAAC,OAAA;AAEA,IAAAE,UAAA,gBAAAH,uBAAA,eAAAC,OAAA;AACA,IAAAG,QAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AACA,IAAAI,MAAA,gBAAAL,uBAAA,eAAAC,OAAA;AACA,IAAAK,SAAA,gBAAAL,OAAA;AACA,IAAAM,KAAA,gBAAAP,uBAAA,eAAAC,OAAA;AACA,IAAAO,MAAA,gBAAAR,uBAAA,eAAAC,OAAA;AAEA,IAAAQ,IAAA,gBAAAT,uBAAA,eAAAC,OAAA;AACA,IAAAS,MAAA,gBAAAV,uBAAA,eAAAC,OAAA;AACA,IAAAU,YAAA,gBAAAX,uBAAA,eAAAC,OAAA;AACA,IAAAW,MAAA,gBAAAX,OAAA;AACA,IAAAY,KAAA,gBAAAZ,OAAA;AACA,IAAAa,OAAA,gBAAAb,OAAA;AAA0C,SAAAc,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA;IAAA,IAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAE1C,MAAMY,kBAAkB,GAAIC,KAA2C,IACrE7B,MAAM,CAAC8B,KAAK,CAACD,KAAK,EAAE;EAAEE,MAAM,EAAEA,CAAA,KAAM,SAAS;EAAEC,MAAM,EAAEA,CAAA,KAAM;AAAM,CAAE,CAAC;AAExE,MAAMC,mBAAmB,GAAIC,MAA8B,IACzD,OAAOA,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,MAAM;AAE9C,MAAMC,OAAO,GAAIC,GAAY,IAAYA,GAAG,YAAYC,UAAU,CAACC,KAAK,GAAGF,GAAG,GAAG,IAAIC,UAAU,CAACC,KAAK,CAACC,MAAM,CAACH,GAAG,CAAC,CAAC;AAElH,MAAMI,eAAe,GAAGA,CACtBC,MAAc,EACdC,KAA4B,EAC5BC,OAAwB,KACD;EACvB,MAAMC,SAAS,GAAGrD,OAAO,CAACsD,OAAO,CAACF,OAAO,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAI;IAC9D,MAAML,OAAO,GAAG,GAAGK,IAAI,CAACL,OAAO,IAAIK,IAAI,CAACC,IAAI,CAACC,IAAI,CAAC,GAAG,CAAC,EAAE;IACxD,OAAOH,GAAG,CAACI,MAAM,KAAK,CAAC,GAAGR,OAAO,GAAG,GAAGI,GAAG,MAAMJ,OAAO,EAAE;EAC3D,CAAC,EAAE,EAAE,CAAC;EACN,OAAO,IAAAvC,MAAA,CAAAgD,oBAAoB,EAAC,SAAS,EAAEX,MAAM,CAAC,CAACC,KAAK,EAAE,CAACE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,MAAMS,UAAU,GACbC,UAAiC,IACjCX,OAAwB,IAA8E;EACrG,QAAQA,OAAO,CAACY,IAAI;IAClB,KAAK,iBAAiB;MAAE;QACtB,OAAO,IAAAzD,SAAA,CAAA0D,IAAI;QACT;QACAxD,MAAM,CAAC8B,KAAK,CAACa,OAAO,CAACc,GAAG,EAAE;UACxB1B,MAAM,EAAEA,CAAA,KAAMlC,MAAM,CAAC6D,IAAI;UACzB1B,MAAM,EAAG2B,GAAG,IAAKL,UAAU,CAACM,MAAM,CAACD,GAAG;SACvC,CAAC,EACF9D,MAAM,CAACgE,QAAQ,CAAChE,MAAM,CAACiE,IAAI,CAAC,MAAMzB,UAAU,CAAC0B,OAAO,CAACC,GAAG,CAAC,CAAC,EAC1DnE,MAAM,CAACoE,GAAG,CAACrE,QAAQ,CAACsE,IAAI,EAAwE,CAAC,EACjGrE,MAAM,CAACsE,OAAO,CAAC,CAAC,CAACH,GAAG,EAAEI,QAAQ,CAAC,KAC7BvE,MAAM,CAACwE,cAAc,CACnBxE,MAAM,CAACiE,IAAI,CAAC,MAAK;UACf,MAAMQ,MAAM,GAAGnE,YAAY,CAACoE,KAAK,CAAC5B,OAAO,CAACA,OAAO,EAAEA,OAAO,CAACM,IAAI,EAAE;YAC/DuB,KAAK,EAAE,CACL5C,kBAAkB,CAACe,OAAO,CAACd,KAAK,CAAC,EACjCI,mBAAmB,CAACU,OAAO,CAAC8B,MAAM,CAAC,EACnCxC,mBAAmB,CAACU,OAAO,CAAC+B,MAAM,CAAC,CACpC;YACDjB,GAAG,EAAEzD,MAAM,CAAC2E,SAAS,CAAChC,OAAO,CAACc,GAAG,EAAE3D,SAAA,CAAA8E,cAAc,CAAC;YAClDC,KAAK,EAAElC,OAAO,CAACkC,KAAK;YACpBb,GAAG,EAAE;cAAE,GAAGA,GAAG;cAAE,GAAG7C,MAAM,CAAC2D,WAAW,CAACnC,OAAO,CAACqB,GAAG;YAAC;WAClD,CAAC;UACFM,MAAM,CAACS,IAAI,CAAC,MAAM,EAAE,MAAK;YACvBnF,QAAQ,CAACoF,UAAU,CAACZ,QAAQ,EAAEvE,MAAM,CAACoF,OAAO,CAAC,CAACX,MAAM,CAACF,QAAQ,EAAEE,MAAM,CAACY,UAAU,CAAU,CAAC,CAAC;UAC9F,CAAC,CAAC;UACF,OAAO,CAACZ,MAAM,EAAEF,QAAQ,CAAU;QACpC,CAAC,CAAC,EACF,CAAC,CAACE,MAAM,EAAEF,QAAQ,CAAC,KACjBvE,MAAM,CAACsE,OAAO,CAACvE,QAAQ,CAACuF,MAAM,CAACf,QAAQ,CAAC,EAAGgB,IAAI,IAC7CA,IAAI,GAAGvF,MAAM,CAAC6D,IAAI,GAAG7D,MAAM,CAACwF,OAAO,CAAC,MAAK;UACvC,IAAIf,MAAM,CAACgB,GAAG,IAAIhB,MAAM,CAACiB,IAAI,CAAC,SAAS,CAAC,EAAE;YACxC,OAAO3F,QAAQ,CAAC4F,KAAK,CAACpB,QAAQ,CAAC;UACjC;UACA,OAAOvE,MAAM,CAAC6D,IAAI;QACpB,CAAC,CAAC,CAAC,CACR,CACF,EACD7D,MAAM,CAACsE,OAAO,CAAC,CAAC,CAACG,MAAM,EAAEmB,gBAAgB,CAAC,KACxC5F,MAAM,CAAC6F,KAAK,CAAuDC,MAAM,IAAI;UAC3E;UACArB,MAAM,CAACsB,EAAE,CAAC,OAAO,EAAGxD,GAAG,IAAI;YACzBuD,MAAM,CAAC9F,MAAM,CAACgG,IAAI,CAACrD,eAAe,CAAC,OAAO,EAAEJ,GAAG,EAAEO,OAAO,CAAC,CAAC,CAAC;UAC7D,CAAC,CAAC;UAEF;UACA;UACA,IAAI2B,MAAM,CAACgB,GAAG,EAAE;YACd,IAAIzD,KAAK,GAAgE5B,IAAI,CAAC6F,KAAK;YAEnF,IAAIxB,MAAM,CAACzC,KAAK,KAAK,IAAI,EAAE;cACzBA,KAAK,GAAG,IAAAxB,KAAA,CAAA0F,YAAY,EAClB,MAAMzB,MAAM,CAACzC,KAAM,EAClBO,GAAG,IAAKI,eAAe,CAAC,YAAY,EAAEL,OAAO,CAACC,GAAG,CAAC,EAAEO,OAAO,CAAC,CAC9D;YACH;YAEA,MAAMyB,QAAQ,GAAwCvE,MAAM,CAACsE,OAAO,CAClEvE,QAAQ,CAAC4F,KAAK,CAACC,gBAAgB,CAAC,EAChC,CAAC,CAACO,IAAI,EAAEC,MAAM,CAAC,KAAI;cACjB,IAAID,IAAI,KAAK,IAAI,EAAE;gBACjB,OAAOnG,MAAM,CAACoF,OAAO,CAACvF,eAAe,CAACwG,QAAQ,CAACF,IAAI,CAAC,CAAC;cACvD;cACA;cACA;cACA;cACA,OAAOnG,MAAM,CAACgG,IAAI,CAChBrD,eAAe,CACb,UAAU,EACV,IAAIH,UAAU,CAACC,KAAK,CAAC,iDAAiD2D,MAAM,EAAE,CAAC,EAC/EtD,OAAO,CACR,CACF;YACH,CAAC,CACF;YAED,MAAMwD,SAAS,GAAGtG,MAAM,CAACuG,MAAM,CAACxG,QAAQ,CAACuF,MAAM,CAACM,gBAAgB,CAAC,CAAC;YAElE,MAAMF,IAAI,GAAoCA,CAACU,MAAM,GAAG,SAAS,KAC/DpG,MAAM,CAACsE,OAAO,CACZtE,MAAM,CAACiE,IAAI,CAAC,MAAMQ,MAAM,CAACiB,IAAI,CAACU,MAAM,CAAC,CAAC,EACrCI,OAAO,IACNA,OAAO,GACHxG,MAAM,CAACyG,MAAM,CAAC1G,QAAQ,CAAC4F,KAAK,CAACC,gBAAgB,CAAC,CAAC,GAC/C5F,MAAM,CAACgG,IAAI,CAACrD,eAAe,CAAC,MAAM,EAAE,IAAIH,UAAU,CAACC,KAAK,CAAC,wBAAwB,CAAC,EAAEK,OAAO,CAAC,CAAC,CACpG;YAEHgD,MAAM,CAAC9F,MAAM,CAACiE,IAAI,CAA0B,MAAK;cAC/C,MAAMwB,GAAG,GAAG5F,eAAe,CAAC6G,SAAS,CAACjC,MAAM,CAACgB,GAAI,CAAC;cAClD,MAAMZ,MAAM,GAAG,IAAApE,OAAA,CAAAkG,YAAY,EACzB,MAAMlC,MAAM,CAACI,MAAO,EACnBtC,GAAG,IAAKI,eAAe,CAAC,sBAAsB,EAAEL,OAAO,CAACC,GAAG,CAAC,EAAEO,OAAO,CAAC,CACxE;cACD,IAAI8B,MAAM,GAA0D,IAAAnE,OAAA,CAAAkG,YAAY,EAI9E,MAAMlC,MAAM,CAACG,MAAO,EACnBrC,GAAG,IAAKI,eAAe,CAAC,sBAAsB,EAAEL,OAAO,CAACC,GAAG,CAAC,EAAEO,OAAO,CAAC,CACxE;cACD;cACA,IAAI,OAAOA,OAAO,CAAC8B,MAAM,KAAK,QAAQ,EAAE;gBACtCA,MAAM,GAAGvE,MAAM,CAACuG,SAAS,CAAChC,MAAM,EAAE9B,OAAO,CAAC8B,MAAM,CAAC;cACnD;cACA,OAAO;gBACL,CAAC/E,eAAe,CAACgH,aAAa,GAAGhH,eAAe,CAACgH,aAAa;gBAC9DpB,GAAG;gBACHlB,QAAQ;gBACR+B,SAAS;gBACTZ,IAAI;gBACJ1D,KAAK;gBACL6C,MAAM;gBACND;eACD;YACH,CAAC,CAAC,CAAC;UACL;QACF,CAAC,CAAC,CACH,EACD5E,MAAM,CAAC8G,GAAG,CAAE5C,OAAO,IACjB/D,MAAM,CAAC8B,KAAK,CAACa,OAAO,CAACd,KAAK,EAAE;UAC1BE,MAAM,EAAEA,CAAA,KAAMlC,MAAM,CAAC6D,IAAI;UACzB1B,MAAM,EAAGH,KAAK,IAAKhC,MAAM,CAAC+G,UAAU,CAAC1G,MAAM,CAAC2G,GAAG,CAAChF,KAAK,EAAEkC,OAAO,CAAClC,KAAK,CAAC;SACtE,CAAC,CACH,CACF;MACH;IACA,KAAK,cAAc;MAAE;QACnB,MAAMe,SAAS,GAAGrD,OAAO,CAACsD,OAAO,CAACF,OAAO,CAAC;QAC1C,IAAIC,SAAS,CAACO,MAAM,KAAK,CAAC,EAAE;UAC1B,OAAO,IAAArD,SAAA,CAAA0D,IAAI,EAACZ,SAAS,CAAC,CAAC,CAAC,EAAES,UAAU,CAACC,UAAU,CAAC,CAAC;QACnD;QACA,MAAMwD,IAAI,GAAGlE,SAAS,CAAC,CAAC,CAAC;QACzB,MAAMmE,IAAI,GAAGnE,SAAS,CAACoE,KAAK,CAAC,CAAC,CAAC;QAC/B,MAAMC,OAAO,GAAGF,IAAI,CAACC,KAAK,CAAC,CAAC,EAAED,IAAI,CAAC5D,MAAM,GAAG,CAAC,CAAC;QAC9C,MAAM+D,IAAI,GAAGH,IAAI,CAACA,IAAI,CAAC5D,MAAM,GAAG,CAAC,CAAC;QAClC,MAAMgE,MAAM,GAAGF,OAAO,CAACnE,MAAM,CAC3B,CAACjB,KAAK,EAAEc,OAAO,KACb,IAAA7C,SAAA,CAAA0D,IAAI,EACFjE,OAAO,CAACsC,KAAK,CAACc,OAAO,EAAEd,KAAK,CAAC,EAC7BwB,UAAU,CAACC,UAAU,CAAC,EACtBzD,MAAM,CAACuH,GAAG,CAAErD,OAAO,IAAKA,OAAO,CAACU,MAAM,CAAC,EACvCvE,MAAM,CAACmH,YAAY,CACpB,EACH,IAAAvH,SAAA,CAAA0D,IAAI,EACFH,UAAU,CAACC,UAAU,CAAC,CAACwD,IAAI,CAAC,EAC5BjH,MAAM,CAACuH,GAAG,CAAErD,OAAO,IAAKA,OAAO,CAACU,MAAM,CAAC,EACvCvE,MAAM,CAACmH,YAAY,CACpB,CACF;QACD,OAAO,IAAAvH,SAAA,CAAA0D,IAAI,EAACjE,OAAO,CAACsC,KAAK,CAACqF,IAAI,EAAEC,MAAM,CAAC,EAAE9D,UAAU,CAACC,UAAU,CAAC,CAAC;MAClE;EACF;AACF,CAAC;AAEH;AACO,MAAMgE,KAAK,GAAAC,OAAA,CAAAD,KAAA,gBAA+EvH,KAAK,CAACyH,MAAM,CAC3G9H,eAAe,CAACA,eAAe,eAC/B,IAAAI,SAAA,CAAA0D,IAAI,EACF7D,UAAU,CAACA,UAAU,eACrBE,MAAM,CAACuH,GAAG,CAAE9D,UAAU,IAAK5D,eAAe,CAAC+H,YAAY,CAACpE,UAAU,CAACC,UAAU,CAAC,CAAC,CAAC,CACjF,CACF"}
1
+ {"version":3,"file":"commandExecutor.js","names":["Command","_interopRequireWildcard","require","CommandExecutor","FileSystem","Deferred","Effect","_Function","Layer","Option","Sink","Stream","ChildProcess","_error","_sink","_stream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","inputToStdioOption","stdin","match","onNone","onSome","outputToStdioOption","output","toError","err","globalThis","Error","String","toPlatformError","method","error","command","flattened","flatten","reduce","acc","curr","args","join","length","handleErrnoException","runCommand","fileSystem","_tag","spawn","flatMap","make","exitCode","async","resume","handle","stdio","stdout","stderr","cwd","getOrElse","constUndefined","shell","env","process","fromEntries","on","fail","unsafeDone","succeed","sync","kill","pipe","unit","dir","access","zipRight","acquireRelease","isDone","done","suspend","await","map","exitCodeDeferred","drain","fromWritable","code","signal","ExitCode","isRunning","negate","asUnit","pid","ProcessId","fromReadable","transduce","ProcessTypeId","tap","forkDaemon","run","head","tail","slice","initial","last","stream","unwrapScoped","layer","exports","effect","makeExecutor"],"sources":["../src/internal/commandExecutor.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.runMain = void 0;
7
7
  var _Runtime = /*#__PURE__*/require("@effect/platform/Runtime");
8
+ var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
8
9
  var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
9
10
  var _Equal = /*#__PURE__*/require("effect/Equal");
10
11
  var Fiber = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Fiber"));
@@ -35,7 +36,12 @@ function _interopRequireWildcard(e, r) {
35
36
  }
36
37
  /** @internal */
37
38
  const runMain = (effect, teardown = _Runtime.defaultTeardown) => {
38
- const fiber = Effect.runFork(effect);
39
+ const fiber = Effect.runFork(Effect.tapErrorCause(effect, cause => {
40
+ if (Cause.isInterruptedOnly(cause)) {
41
+ return Effect.unit;
42
+ }
43
+ return Effect.logError(cause);
44
+ }));
39
45
  fiber.addObserver(exit => teardown(exit, code => {
40
46
  Effect.runCallback(interruptAll(fiber.id()), () => {
41
47
  process.exit(code);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["_Runtime","require","Effect","_interopRequireWildcard","_Equal","Fiber","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","runMain","effect","teardown","defaultTeardown","fiber","runFork","addObserver","exit","code","runCallback","interruptAll","id","process","onSigint","removeListener","interruptAsFork","once","exports","rootWithoutSelf","fiberIdWith","selfId","map","roots","filter","equals","flatMap","length","unit","interruptAllAs","postInterruptRoots"],"sources":["../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","names":["_Runtime","require","Cause","_interopRequireWildcard","Effect","_Equal","Fiber","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","runMain","effect","teardown","defaultTeardown","fiber","runFork","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","code","runCallback","interruptAll","id","process","onSigint","removeListener","interruptAsFork","once","exports","rootWithoutSelf","fiberIdWith","selfId","map","roots","filter","equals","flatMap","length","interruptAllAs","postInterruptRoots"],"sources":["../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
- "version": "0.33.3",
3
+ "version": "0.33.5",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -35,22 +35,19 @@ const toPlatformError = (
35
35
  return handleErrnoException("Command", method)(error, [flattened])
36
36
  }
37
37
 
38
+ type ExitCode = readonly [code: number | null, signal: NodeJS.Signals | null]
39
+ type ExitCodeDeferred = Deferred.Deferred<never, ExitCode>
40
+
38
41
  const runCommand =
39
42
  (fileSystem: FileSystem.FileSystem) =>
40
43
  (command: Command.Command): Effect.Effect<Scope.Scope, Error.PlatformError, CommandExecutor.Process> => {
41
44
  switch (command._tag) {
42
45
  case "StandardCommand": {
43
- return pipe(
44
- // Validate that the directory is accessible
45
- Option.match(command.cwd, {
46
- onNone: () => Effect.unit,
47
- onSome: (dir) => fileSystem.access(dir)
48
- }),
49
- Effect.zipRight(Effect.sync(() => globalThis.process.env)),
50
- Effect.zip(Deferred.make<never, readonly [code: number | null, signal: NodeJS.Signals | null]>()),
51
- Effect.flatMap(([env, exitCode]) =>
52
- Effect.acquireRelease(
53
- Effect.sync(() => {
46
+ const spawn = Effect.flatMap(
47
+ Deferred.make<never, ExitCode>(),
48
+ (exitCode) =>
49
+ Effect.async<never, Error.PlatformError, readonly [ChildProcess.ChildProcess, ExitCodeDeferred]>(
50
+ (resume) => {
54
51
  const handle = ChildProcess.spawn(command.command, command.args, {
55
52
  stdio: [
56
53
  inputToStdioOption(command.stdin),
@@ -59,103 +56,107 @@ const runCommand =
59
56
  ],
60
57
  cwd: Option.getOrElse(command.cwd, constUndefined),
61
58
  shell: command.shell,
62
- env: { ...env, ...Object.fromEntries(command.env) }
59
+ env: { ...process.env, ...Object.fromEntries(command.env) }
60
+ })
61
+ handle.on("error", (err) => {
62
+ resume(Effect.fail(toPlatformError("spawn", err, command)))
63
63
  })
64
- handle.once("exit", () => {
65
- Deferred.unsafeDone(exitCode, Effect.succeed([handle.exitCode, handle.signalCode] as const))
64
+ handle.on("exit", (...args) => {
65
+ Deferred.unsafeDone(exitCode, Effect.succeed(args))
66
66
  })
67
- return [handle, exitCode] as const
68
- }),
67
+ handle.on("spawn", () => {
68
+ resume(Effect.succeed([handle, exitCode]))
69
+ })
70
+ return Effect.sync(() => {
71
+ handle.kill("SIGTERM")
72
+ })
73
+ }
74
+ )
75
+ )
76
+ return pipe(
77
+ // Validate that the directory is accessible
78
+ Option.match(command.cwd, {
79
+ onNone: () => Effect.unit,
80
+ onSome: (dir) => fileSystem.access(dir)
81
+ }),
82
+ Effect.zipRight(
83
+ Effect.acquireRelease(
84
+ spawn,
69
85
  ([handle, exitCode]) =>
70
86
  Effect.flatMap(Deferred.isDone(exitCode), (done) =>
71
87
  done ? Effect.unit : Effect.suspend(() => {
72
- if (handle.pid && handle.kill("SIGTERM")) {
88
+ if (handle.kill("SIGTERM")) {
73
89
  return Deferred.await(exitCode)
74
90
  }
75
91
  return Effect.unit
76
92
  }))
77
93
  )
78
94
  ),
79
- Effect.flatMap(([handle, exitCodeDeferred]) =>
80
- Effect.async<never, Error.PlatformError, CommandExecutor.Process>((resume) => {
81
- // If starting the process throws an error, make sure to capture it
82
- handle.on("error", (err) => {
83
- resume(Effect.fail(toPlatformError("spawn", err, command)))
84
- })
95
+ Effect.map(([handle, exitCodeDeferred]): CommandExecutor.Process => {
96
+ let stdin: Sink.Sink<never, Error.PlatformError, unknown, never, void> = Sink.drain
85
97
 
86
- // If the process is assigned a process identifier, then we know it
87
- // was spawned successfully
88
- if (handle.pid) {
89
- let stdin: Sink.Sink<never, Error.PlatformError, unknown, never, void> = Sink.drain
98
+ if (handle.stdin !== null) {
99
+ stdin = fromWritable(
100
+ () => handle.stdin!,
101
+ (err) => toPlatformError("toWritable", toError(err), command)
102
+ )
103
+ }
90
104
 
91
- if (handle.stdin !== null) {
92
- stdin = fromWritable(
93
- () => handle.stdin!,
94
- (err) => toPlatformError("toWritable", toError(err), command)
95
- )
105
+ const exitCode: CommandExecutor.Process["exitCode"] = Effect.flatMap(
106
+ Deferred.await(exitCodeDeferred),
107
+ ([code, signal]) => {
108
+ if (code !== null) {
109
+ return Effect.succeed(CommandExecutor.ExitCode(code))
96
110
  }
97
-
98
- const exitCode: CommandExecutor.Process["exitCode"] = Effect.flatMap(
99
- Deferred.await(exitCodeDeferred),
100
- ([code, signal]) => {
101
- if (code !== null) {
102
- return Effect.succeed(CommandExecutor.ExitCode(code))
103
- }
104
- // If code is `null`, then `signal` must be defined. See the NodeJS
105
- // documentation for the `"exit"` event on a `child_process`.
106
- // https://nodejs.org/api/child_process.html#child_process_event_exit
107
- return Effect.fail(
108
- toPlatformError(
109
- "exitCode",
110
- new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`),
111
- command
112
- )
113
- )
114
- }
111
+ // If code is `null`, then `signal` must be defined. See the NodeJS
112
+ // documentation for the `"exit"` event on a `child_process`.
113
+ // https://nodejs.org/api/child_process.html#child_process_event_exit
114
+ return Effect.fail(
115
+ toPlatformError(
116
+ "exitCode",
117
+ new globalThis.Error(`Process interrupted due to receipt of signal: ${signal}`),
118
+ command
119
+ )
115
120
  )
121
+ }
122
+ )
116
123
 
117
- const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred))
124
+ const isRunning = Effect.negate(Deferred.isDone(exitCodeDeferred))
118
125
 
119
- const kill: CommandExecutor.Process["kill"] = (signal = "SIGTERM") =>
120
- Effect.flatMap(
121
- Effect.sync(() => handle.kill(signal)),
122
- (success) =>
123
- success
124
- ? Effect.asUnit(Deferred.await(exitCodeDeferred))
125
- : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command))
126
- )
126
+ const kill: CommandExecutor.Process["kill"] = (signal = "SIGTERM") =>
127
+ Effect.suspend(() =>
128
+ handle.kill(signal)
129
+ ? Effect.asUnit(Deferred.await(exitCodeDeferred))
130
+ : Effect.fail(toPlatformError("kill", new globalThis.Error("Failed to kill process"), command))
131
+ )
127
132
 
128
- resume(Effect.sync<CommandExecutor.Process>(() => {
129
- const pid = CommandExecutor.ProcessId(handle.pid!)
130
- const stderr = fromReadable<Error.PlatformError, Uint8Array>(
131
- () => handle.stderr!,
132
- (err) => toPlatformError("fromReadable(stderr)", toError(err), command)
133
- )
134
- let stdout: Stream.Stream<never, Error.PlatformError, Uint8Array> = fromReadable<
135
- Error.PlatformError,
136
- Uint8Array
137
- >(
138
- () => handle.stdout!,
139
- (err) => toPlatformError("fromReadable(stdout)", toError(err), command)
140
- )
141
- // TODO: add Sink.isSink
142
- if (typeof command.stdout !== "string") {
143
- stdout = Stream.transduce(stdout, command.stdout)
144
- }
145
- return {
146
- [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
147
- pid,
148
- exitCode,
149
- isRunning,
150
- kill,
151
- stdin,
152
- stderr,
153
- stdout
154
- }
155
- }))
156
- }
157
- })
158
- ),
133
+ const pid = CommandExecutor.ProcessId(handle.pid!)
134
+ const stderr = fromReadable<Error.PlatformError, Uint8Array>(
135
+ () => handle.stderr!,
136
+ (err) => toPlatformError("fromReadable(stderr)", toError(err), command)
137
+ )
138
+ let stdout: Stream.Stream<never, Error.PlatformError, Uint8Array> = fromReadable<
139
+ Error.PlatformError,
140
+ Uint8Array
141
+ >(
142
+ () => handle.stdout!,
143
+ (err) => toPlatformError("fromReadable(stdout)", toError(err), command)
144
+ )
145
+ // TODO: add Sink.isSink
146
+ if (typeof command.stdout !== "string") {
147
+ stdout = Stream.transduce(stdout, command.stdout)
148
+ }
149
+ return {
150
+ [CommandExecutor.ProcessTypeId]: CommandExecutor.ProcessTypeId,
151
+ pid,
152
+ exitCode,
153
+ isRunning,
154
+ kill,
155
+ stdin,
156
+ stderr,
157
+ stdout
158
+ }
159
+ }),
159
160
  Effect.tap((process) =>
160
161
  Option.match(command.stdin, {
161
162
  onNone: () => Effect.unit,
@@ -1,4 +1,5 @@
1
1
  import { defaultTeardown, type RunMain } from "@effect/platform/Runtime"
2
+ import * as Cause from "effect/Cause"
2
3
  import * as Effect from "effect/Effect"
3
4
  import { equals } from "effect/Equal"
4
5
  import * as Fiber from "effect/Fiber"
@@ -9,7 +10,14 @@ export const runMain: RunMain = <E, A>(
9
10
  effect: Effect.Effect<never, E, A>,
10
11
  teardown = defaultTeardown
11
12
  ) => {
12
- const fiber = Effect.runFork(effect)
13
+ const fiber = Effect.runFork(
14
+ Effect.tapErrorCause(effect, (cause) => {
15
+ if (Cause.isInterruptedOnly(cause)) {
16
+ return Effect.unit
17
+ }
18
+ return Effect.logError(cause)
19
+ })
20
+ )
13
21
 
14
22
  fiber.addObserver((exit) =>
15
23
  teardown(exit, (code) => {