@livestore/utils-dev 0.0.0-snapshot-280097840df1d1bd5cd5c8f49b610f845c3a0bb9 → 0.0.0-snapshot-3ba490a5b5d6f5b03e3396d83fe046d6df27cc7e

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-log.d.ts","sourceRoot":"","sources":["../../src/node/cmd-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAY,MAAM,yBAAyB,CAAA;AAE1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,CAqD3G,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,CAClC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,EAAE,kBAAkB,KACxB,MAAM,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,KAAK,CAmBhG,CAAA"}
1
+ {"version":3,"file":"cmd-log.d.ts","sourceRoot":"","sources":["../../src/node/cmd-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAY,MAAM,yBAAyB,CAAA;AAE1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,CAqD3G,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,CAClC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,EAAE,kBAAkB,KACxB,MAAM,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,KAAK,CAahG,CAAA"}
@@ -2,7 +2,6 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { isNotUndefined } from '@livestore/utils';
4
4
  import { Effect, identity } from '@livestore/utils/effect';
5
- const shellEscape = (s) => (/[A-Za-z0-9_./:=+@-]+/.test(s) ? s : `'${s.replaceAll("'", `'"'"'`)}'`);
6
5
  /**
7
6
  * Prepares logging directories, archives previous canonical log and prunes archives.
8
7
  * Returns the canonical current log path if logging is enabled, otherwise undefined.
@@ -42,15 +41,10 @@ export const applyLoggingToCommand = Effect.fn('cmd.logging.apply')(function* (c
42
41
  const asArray = Array.isArray(commandInput);
43
42
  const parts = asArray ? commandInput.filter(isNotUndefined) : undefined;
44
43
  const logPath = yield* prepareCmdLogging(options);
45
- if (!logPath) {
46
- return {
47
- input: asArray ? (parts ?? []) : commandInput,
48
- subshell: false,
49
- };
50
- }
51
- const input = asArray
52
- ? [...(parts ?? []), '2>&1', '|', 'tee', logPath]
53
- : `${commandInput} 2>&1 | tee ${shellEscape(logPath)}`;
54
- return { input, subshell: true, logPath };
44
+ return {
45
+ input: asArray ? (parts ?? []) : commandInput,
46
+ subshell: false,
47
+ ...(logPath ? { logPath } : {}),
48
+ };
55
49
  });
56
50
  //# sourceMappingURL=cmd-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-log.js","sourceRoot":"","sources":["../../src/node/cmd-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd-log.js","sourceRoot":"","sources":["../../src/node/cmd-log.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/node/cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,eAAe,EAAE,MAAM,EAAY,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIrH,eAAO,MAAM,GAAG,EAAE,CAChB,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,CAAC,EACJ;IACE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GACD,SAAS,KACV,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,GAAG,QAAQ,EAAE,eAAe,CAAC,eAAe,CA2EhH,CAAA;AAEJ,eAAO,MAAM,OAAO,EAAE,CACpB,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACzC,KACE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,eAAe,CAyBtF,CAAA;;;;;;;;;;AAED,qBAAa,QAAS,SAAQ,aAM5B;CAAG"}
1
+ {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/node/cmd.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,eAAe,EACpB,MAAM,EAQN,KAAK,aAAa,EAClB,MAAM,EAEP,MAAM,yBAAyB,CAAA;AAOhC,eAAO,MAAM,GAAG,EAAE,CAChB,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,CAAC,EACJ;IACE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GACD,SAAS,KACV,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,GAAG,QAAQ,EAAE,eAAe,CAAC,eAAe,CAiEhH,CAAA;AAEJ,eAAO,MAAM,OAAO,EAAE,CACpB,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACzC,KACE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,eAAe,CAyBtF,CAAA;;;;;;;;;;AAED,qBAAa,QAAS,SAAQ,aAM5B;CAAG"}
package/dist/node/cmd.js CHANGED
@@ -1,6 +1,10 @@
1
+ import fs from 'node:fs';
1
2
  import { isNotUndefined, shouldNeverHappen } from '@livestore/utils';
2
- import { Command, Effect, identity, Schema } from '@livestore/utils/effect';
3
+ import { Cause, Command, Effect, Fiber, FiberId, FiberRefs, HashMap, identity, List, LogLevel, Schema, Stream, } from '@livestore/utils/effect';
3
4
  import { applyLoggingToCommand } from "./cmd-log.js";
5
+ import * as FileLogger from "./FileLogger.js";
6
+ // Branded zero value so we can compare exit codes without touching internals.
7
+ const SUCCESS_EXIT_CODE = 0;
4
8
  export const cmd = Effect.fn('cmd')(function* (commandInput, options) {
5
9
  const cwd = options?.cwd ?? process.env.WORKSPACE_ROOT ?? shouldNeverHappen('WORKSPACE_ROOT is not set');
6
10
  const asArray = Array.isArray(commandInput);
@@ -9,16 +13,17 @@ export const cmd = Effect.fn('cmd')(function* (commandInput, options) {
9
13
  const debugEnvStr = Object.entries(options?.env ?? {})
10
14
  .map(([key, value]) => `${key}='${value}' `)
11
15
  .join('');
12
- // Compose command with optional tee logging via helper
13
16
  const loggingOpts = {
14
17
  ...(options?.logDir ? { logDir: options.logDir } : {}),
15
18
  ...(options?.logFileName ? { logFileName: options.logFileName } : {}),
16
19
  ...(options?.logRetention ? { logRetention: options.logRetention } : {}),
17
20
  };
18
- const { input: finalInput, subshell: needsShell } = yield* applyLoggingToCommand(commandInput, loggingOpts);
19
- const subshell = (options?.shell ? true : false) || needsShell;
21
+ const { input: finalInput, subshell: needsShell, logPath } = yield* applyLoggingToCommand(commandInput, loggingOpts);
22
+ const stdoutMode = options?.stdout ?? 'inherit';
23
+ const stderrMode = options?.stderr ?? 'inherit';
24
+ const useShell = (options?.shell ? true : false) || needsShell;
20
25
  const commandDebugStr = debugEnvStr + (Array.isArray(finalInput) ? finalInput.join(' ') : finalInput);
21
- const subshellStr = subshell ? ' (in subshell)' : '';
26
+ const subshellStr = useShell ? ' (in subshell)' : '';
22
27
  yield* Effect.logDebug(`Running '${commandDebugStr}' in '${cwd}'${subshellStr}`);
23
28
  yield* Effect.annotateCurrentSpan({
24
29
  'span.label': commandDebugStr,
@@ -27,36 +32,30 @@ export const cmd = Effect.fn('cmd')(function* (commandInput, options) {
27
32
  args,
28
33
  logDir: options?.logDir,
29
34
  });
30
- const makeAndRun = (input, useShell) => {
31
- if (Array.isArray(input)) {
32
- const [c, ...a] = input;
33
- return Command.make(c, ...a);
34
- }
35
- else {
36
- if (useShell) {
37
- // Pipeline / tee requires shell
38
- return Command.make(input);
39
- }
40
- // No shell: split into executable and args
41
- const [c, ...a] = input.split(' ');
42
- return Command.make(c, ...a);
43
- }
35
+ const baseArgs = {
36
+ commandInput: finalInput,
37
+ cwd,
38
+ env: options?.env ?? {},
39
+ stdoutMode,
40
+ stderrMode,
41
+ useShell,
44
42
  };
45
- return yield* makeAndRun(finalInput, subshell).pipe(
46
- // TODO don't forward abort signal to the command
47
- Command.stdin('inherit'), // Forward stdin to the command
48
- // inherit = Stream stdout to process.stdout, pipe = Stream stdout to process.stderr
49
- Command.stdout(options?.stdout ?? 'inherit'),
50
- // inherit = Stream stderr to process.stderr, pipe = Stream stderr to process.stdout
51
- Command.stderr(options?.stderr ?? 'inherit'), Command.workingDirectory(cwd), subshell ? Command.runInShell(true) : identity, Command.env(options?.env ?? {}), Command.exitCode, Effect.tap((exitCode) => exitCode === 0
52
- ? Effect.void
53
- : Effect.fail(CmdError.make({
43
+ const exitCode = yield* isNotUndefined(logPath)
44
+ ? Effect.gen(function* () {
45
+ yield* Effect.sync(() => console.log(`Logging output to ${logPath}`));
46
+ return yield* runWithLogging({ ...baseArgs, logPath, threadName: commandDebugStr });
47
+ })
48
+ : runWithoutLogging(baseArgs);
49
+ if (exitCode !== SUCCESS_EXIT_CODE) {
50
+ return yield* Effect.fail(CmdError.make({
54
51
  command: command,
55
52
  args,
56
53
  cwd,
57
54
  env: options?.env ?? {},
58
- stderr: options?.stderr ?? 'inherit',
59
- }))));
55
+ stderr: stderrMode,
56
+ }));
57
+ }
58
+ return exitCode;
60
59
  });
61
60
  export const cmdText = Effect.fn('cmdText')(function* (commandInput, options) {
62
61
  const cwd = options?.cwd ?? process.env.WORKSPACE_ROOT ?? shouldNeverHappen('WORKSPACE_ROOT is not set');
@@ -82,4 +81,154 @@ export class CmdError extends Schema.TaggedError()('CmdError', {
82
81
  stderr: Schema.Literal('inherit', 'pipe'),
83
82
  }) {
84
83
  }
84
+ const runWithoutLogging = ({ commandInput, cwd, env, stdoutMode, stderrMode, useShell }) => buildCommand(commandInput, useShell).pipe(Command.stdin('inherit'), Command.stdout(stdoutMode), Command.stderr(stderrMode), Command.workingDirectory(cwd), useShell ? Command.runInShell(true) : identity, Command.env(env), Command.exitCode);
85
+ const runWithLogging = ({ commandInput, cwd, env, stdoutMode, stderrMode, useShell, logPath, threadName, }) =>
86
+ // When logging is enabled we have to replace the `2>&1 | tee` pipeline the
87
+ // shell used to give us. We now pipe both streams through Effect so we can
88
+ // mirror to the terminal (only when requested) and append formatted entries
89
+ // into the canonical log ourselves.
90
+ Effect.scoped(Effect.gen(function* () {
91
+ const envWithColor = env.FORCE_COLOR === undefined ? { ...env, FORCE_COLOR: '1' } : env;
92
+ const logFile = yield* Effect.acquireRelease(Effect.sync(() => fs.openSync(logPath, 'a', 0o666)), (fd) => Effect.sync(() => fs.closeSync(fd)));
93
+ const prettyLogger = FileLogger.prettyLoggerTty({
94
+ colors: true,
95
+ stderr: false,
96
+ formatDate: (date) => `${FileLogger.defaultDateFormat(date)} ${threadName}`,
97
+ });
98
+ const appendLog = ({ channel, content }) => Effect.sync(() => {
99
+ const formatted = prettyLogger.log({
100
+ fiberId: FiberId.none,
101
+ logLevel: channel === 'stdout' ? LogLevel.Info : LogLevel.Warning,
102
+ message: [`[${channel}]${content.length > 0 ? ` ${content}` : ''}`],
103
+ cause: Cause.empty,
104
+ context: FiberRefs.empty(),
105
+ spans: List.empty(),
106
+ annotations: HashMap.empty(),
107
+ date: new Date(),
108
+ });
109
+ fs.writeSync(logFile, formatted);
110
+ });
111
+ const command = buildCommand(commandInput, useShell).pipe(Command.stdin('inherit'), Command.stdout('pipe'), Command.stderr('pipe'), Command.workingDirectory(cwd), useShell ? Command.runInShell(true) : identity, Command.env(envWithColor));
112
+ // Acquire/start the command and make sure we kill it on interruption.
113
+ const runningProcess = yield* Effect.acquireRelease(command.pipe(Command.start), (proc) => proc.isRunning.pipe(Effect.flatMap((running) => (running ? proc.kill().pipe(Effect.catchAll(() => Effect.void)) : Effect.void)), Effect.ignore));
114
+ const stdoutHandler = makeStreamHandler({
115
+ channel: 'stdout',
116
+ ...(stdoutMode === 'inherit' ? { mirrorTarget: process.stdout } : {}),
117
+ appendLog,
118
+ });
119
+ const stderrHandler = makeStreamHandler({
120
+ channel: 'stderr',
121
+ ...(stderrMode === 'inherit' ? { mirrorTarget: process.stderr } : {}),
122
+ appendLog,
123
+ });
124
+ const stdoutFiber = yield* runningProcess.stdout.pipe(Stream.decodeText('utf8'), Stream.runForEach((chunk) => stdoutHandler.onChunk(chunk)), Effect.forkScoped);
125
+ const stderrFiber = yield* runningProcess.stderr.pipe(Stream.decodeText('utf8'), Stream.runForEach((chunk) => stderrHandler.onChunk(chunk)), Effect.forkScoped);
126
+ // Dump any buffered data and finish both stream fibers before we return.
127
+ const flushOutputs = Effect.gen(function* () {
128
+ const stillRunning = yield* runningProcess.isRunning.pipe(Effect.catchAll(() => Effect.succeed(false)));
129
+ if (stillRunning) {
130
+ yield* Effect.ignore(runningProcess.kill());
131
+ }
132
+ yield* Effect.ignore(Fiber.join(stdoutFiber));
133
+ yield* Effect.ignore(Fiber.join(stderrFiber));
134
+ yield* stdoutHandler.flush();
135
+ yield* stderrHandler.flush();
136
+ });
137
+ const exitCode = yield* runningProcess.exitCode.pipe(Effect.ensuring(flushOutputs));
138
+ return exitCode;
139
+ }));
140
+ const buildCommand = (input, useShell) => {
141
+ if (Array.isArray(input)) {
142
+ const [c, ...a] = input;
143
+ return Command.make(c, ...a);
144
+ }
145
+ if (useShell) {
146
+ return Command.make(input);
147
+ }
148
+ const [c, ...a] = input.split(' ');
149
+ return Command.make(c, ...a);
150
+ };
151
+ const makeStreamHandler = ({ channel, mirrorTarget, appendLog, }) => {
152
+ let buffer = '';
153
+ // Effect's FileLogger expects line-oriented messages, but the subprocess
154
+ // gives us arbitrary UTF-8 chunks. We keep a tiny line splitter here so the
155
+ // log and console stay readable (and consistent with the previous `tee`
156
+ // behaviour).
157
+ const emit = (content, terminator) => emitSegment({
158
+ channel,
159
+ content,
160
+ terminator,
161
+ ...(mirrorTarget ? { mirrorTarget } : {}),
162
+ appendLog,
163
+ });
164
+ const consumeBuffer = () => {
165
+ if (buffer.length === 0)
166
+ return Effect.void;
167
+ const lastChar = buffer[buffer.length - 1];
168
+ if (lastChar === '\r') {
169
+ const line = buffer.slice(0, -1);
170
+ buffer = '';
171
+ return emit(line, 'carriage-return');
172
+ }
173
+ const line = buffer;
174
+ buffer = '';
175
+ return line.length === 0 ? Effect.void : emit(line, 'none');
176
+ };
177
+ return {
178
+ onChunk: (chunk) => Effect.gen(function* () {
179
+ buffer += chunk;
180
+ while (buffer.length > 0) {
181
+ const newlineIndex = buffer.indexOf('\n');
182
+ const carriageIndex = buffer.indexOf('\r');
183
+ if (newlineIndex === -1 && carriageIndex === -1) {
184
+ break;
185
+ }
186
+ let index;
187
+ let terminator;
188
+ let skip = 1;
189
+ if (carriageIndex !== -1 && (newlineIndex === -1 || carriageIndex < newlineIndex)) {
190
+ index = carriageIndex;
191
+ if (carriageIndex + 1 < buffer.length && buffer[carriageIndex + 1] === '\n') {
192
+ skip = 2;
193
+ terminator = 'newline';
194
+ }
195
+ else {
196
+ terminator = 'carriage-return';
197
+ }
198
+ }
199
+ else {
200
+ index = newlineIndex;
201
+ terminator = 'newline';
202
+ }
203
+ const line = buffer.slice(0, index);
204
+ buffer = buffer.slice(index + skip);
205
+ yield* emit(line, terminator);
206
+ }
207
+ }),
208
+ flush: () => consumeBuffer(),
209
+ };
210
+ };
211
+ const emitSegment = ({ channel, content, terminator, mirrorTarget, appendLog, }) => Effect.gen(function* () {
212
+ if (mirrorTarget) {
213
+ yield* Effect.sync(() => mirrorSegment(mirrorTarget, content, terminator));
214
+ }
215
+ const contentForLog = terminator === 'carriage-return' ? `${content}\r` : content;
216
+ yield* appendLog({ channel, content: contentForLog });
217
+ });
218
+ const mirrorSegment = (target, content, terminator) => {
219
+ switch (terminator) {
220
+ case 'newline': {
221
+ target.write(`${content}\n`);
222
+ break;
223
+ }
224
+ case 'carriage-return': {
225
+ target.write(`${content}\r`);
226
+ break;
227
+ }
228
+ case 'none': {
229
+ target.write(content);
230
+ break;
231
+ }
232
+ }
233
+ };
85
234
  //# sourceMappingURL=cmd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/node/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAwB,MAAM,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,CAAC,MAAM,GAAG,GAqBd,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO;IAC/C,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;IAExG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,YAAuC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnG,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAE,YAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE9F,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,uDAAuD;IACvD,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAA;IACV,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAE3G,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAA;IAE9D,MAAM,eAAe,GACnB,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,UAAqB,CAAC,CAAA;IACzG,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;IAEpD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,eAAe,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,CAAA;IAChF,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAChC,YAAY,EAAE,eAAe;QAC7B,GAAG;QACH,OAAO;QACP,IAAI;QACJ,MAAM,EAAE,OAAO,EAAE,MAAM;KACxB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,KAAwB,EAAE,QAAiB,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,EAAE,CAAC;gBACb,gCAAgC;gBAChC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;YACD,2CAA2C;YAC3C,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAA;IAED,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI;IACjD,iDAAiD;IACjD,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,+BAA+B;IACzD,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;IAC5C,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC,EAC5C,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAC7B,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,EAC/B,OAAO,CAAC,QAAQ,EAChB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtB,QAAQ,KAAK,CAAC;QACZ,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,OAAQ;YACjB,IAAI;YACJ,GAAG;YACH,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;YACvB,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS;SACrC,CAAC,CACH,CACN,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,OAAO,GAQuE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAC7G,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;IACxG,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QACpD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC;QACrC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,MAAM,eAAe,GAAG,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClE,MAAM,WAAW,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/D,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,eAAe,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,CAAA;IAChF,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;IAElF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI;IAChD,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC,EAC5C,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAC7B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EACzD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,EAC/B,OAAO,CAAC,MAAM,CACf,CAAA;AACH,CAAC,CACF,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,WAAW,EAAY,CAAC,UAAU,EAAE;IACvE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IACzF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;CAC1C,CAAC;CAAG"}
1
+ {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/node/cmd.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
- import { Effect } from '@livestore/utils/effect';
3
+ import { CommandExecutor, Duration, Effect } from '@livestore/utils/effect';
4
4
  import { PlatformNode } from '@livestore/utils/node';
5
5
  import { Vitest } from '@livestore/utils-dev/node-vitest';
6
6
  import { expect } from 'vitest';
@@ -10,32 +10,51 @@ const withNode = Vitest.makeWithTestCtx({
10
10
  timeout: 20_000,
11
11
  });
12
12
  Vitest.describe('cmd helper', () => {
13
+ const ansiRegex = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*m`, 'g');
13
14
  Vitest.scopedLive('runs tokenized string without shell', (test) => Effect.gen(function* () {
14
15
  const exit = yield* cmd('printf ok');
15
- expect(Number(exit)).toBe(0);
16
+ expect(exit).toBe(CommandExecutor.ExitCode(0));
16
17
  }).pipe(withNode(test)));
17
18
  Vitest.scopedLive('runs array input', (test) => Effect.gen(function* () {
18
19
  const exit = yield* cmd(['printf', 'ok']);
19
- expect(Number(exit)).toBe(0);
20
+ expect(exit).toBe(CommandExecutor.ExitCode(0));
20
21
  }).pipe(withNode(test)));
21
22
  Vitest.scopedLive('supports logging with archive + retention', (test) => Effect.gen(function* () {
22
23
  const workspace = process.env.WORKSPACE_ROOT;
23
24
  const logsDir = path.join(workspace, 'tmp', 'cmd-tests', String(Date.now()));
24
25
  // first run
25
26
  const exit1 = yield* cmd('printf first', { logDir: logsDir });
26
- expect(Number(exit1)).toBe(0);
27
+ expect(exit1).toBe(CommandExecutor.ExitCode(0));
27
28
  const current = path.join(logsDir, 'dev.log');
28
29
  expect(fs.existsSync(current)).toBe(true);
29
- expect(fs.readFileSync(current, 'utf8')).toBe('first');
30
+ const firstLog = fs.readFileSync(current, 'utf8');
31
+ const firstStdoutLines = firstLog.split('\n').filter((line) => line.includes('[stdout]'));
32
+ expect(firstStdoutLines.length).toBeGreaterThan(0);
33
+ for (const line of firstStdoutLines) {
34
+ expect(line).toContain('[stdout] first');
35
+ expect(line).toContain('INFO');
36
+ expect(line).toContain('printf first');
37
+ }
30
38
  // second run — archives previous
31
39
  const exit2 = yield* cmd('printf second', { logDir: logsDir });
32
- expect(Number(exit2)).toBe(0);
40
+ expect(exit2).toBe(CommandExecutor.ExitCode(0));
33
41
  const archiveDir = path.join(logsDir, 'archive');
34
42
  const archives = fs.readdirSync(archiveDir).filter((f) => f.endsWith('.log'));
35
43
  expect(archives.length).toBe(1);
36
44
  const archivedPath = path.join(archiveDir, archives[0]);
37
- expect(fs.readFileSync(archivedPath, 'utf8')).toBe('first');
38
- expect(fs.readFileSync(current, 'utf8')).toBe('second');
45
+ const archivedLog = fs.readFileSync(archivedPath, 'utf8');
46
+ const archivedStdoutLines = archivedLog.split('\n').filter((line) => line.includes('[stdout]'));
47
+ expect(archivedStdoutLines.length).toBeGreaterThan(0);
48
+ for (const line of archivedStdoutLines) {
49
+ expect(line).toContain('[stdout] first');
50
+ }
51
+ const secondLog = fs.readFileSync(current, 'utf8');
52
+ const secondStdoutLines = secondLog.split('\n').filter((line) => line.includes('[stdout]'));
53
+ expect(secondStdoutLines.length).toBeGreaterThan(0);
54
+ for (const line of secondStdoutLines) {
55
+ expect(line).toContain('[stdout] second');
56
+ expect(line).toContain('INFO');
57
+ }
39
58
  // generate many archives to exercise retention (keep 50)
40
59
  for (let i = 0; i < 60; i++) {
41
60
  // Use small unique payloads
@@ -44,5 +63,39 @@ Vitest.describe('cmd helper', () => {
44
63
  const archivesAfter = fs.readdirSync(archiveDir).filter((f) => f.endsWith('.log'));
45
64
  expect(archivesAfter.length).toBeLessThanOrEqual(50);
46
65
  }).pipe(withNode(test)));
66
+ Vitest.scopedLive('streams stdout and stderr with logger formatting', (test) => Effect.gen(function* () {
67
+ const workspace = process.env.WORKSPACE_ROOT;
68
+ const logsDir = path.join(workspace, 'tmp', 'cmd-tests', `format-${Date.now()}`);
69
+ const exit = yield* cmd(['node', '-e', "console.log('out'); console.error('err')"], {
70
+ logDir: logsDir,
71
+ });
72
+ expect(exit).toBe(CommandExecutor.ExitCode(0));
73
+ const current = path.join(logsDir, 'dev.log');
74
+ const logContent = fs.readFileSync(current, 'utf8');
75
+ expect(logContent).toMatch(/\[stdout] out/);
76
+ expect(logContent).toMatch(/\[stderr] err/);
77
+ const relevantLines = logContent
78
+ .split('\n')
79
+ .map((line) => line.trim())
80
+ .filter((line) => line.includes('[stdout]') || line.includes('[stderr]'));
81
+ expect(relevantLines.length).toBeGreaterThanOrEqual(2);
82
+ for (const line of relevantLines) {
83
+ const stripped = line.replace(ansiRegex, '');
84
+ expect(stripped.startsWith('[')).toBe(true);
85
+ expect(stripped).toMatch(/(INFO|WARN)/);
86
+ expect(stripped).toMatch(/\[(stdout|stderr)]/);
87
+ }
88
+ }).pipe(withNode(test)));
89
+ Vitest.scopedLive('cleans up logged child process when interrupted', (test) => Effect.gen(function* () {
90
+ const workspace = process.env.WORKSPACE_ROOT;
91
+ const logsDir = path.join(workspace, 'tmp', 'cmd-tests', `timeout-${Date.now()}`);
92
+ const result = yield* cmd(['node', '-e', 'setTimeout(() => {}, 5000)'], {
93
+ logDir: logsDir,
94
+ stdout: 'pipe',
95
+ stderr: 'pipe',
96
+ }).pipe(Effect.timeoutOption(Duration.millis(200)));
97
+ expect(result._tag).toBe('None');
98
+ expect(fs.existsSync(path.join(logsDir, 'dev.log'))).toBe(true);
99
+ }).pipe(withNode(test)));
47
100
  });
48
101
  //# sourceMappingURL=cmd.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.test.js","sourceRoot":"","sources":["../../src/node/cmd.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd.test.js","sourceRoot":"","sources":["../../src/node/cmd.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/utils-dev",
3
- "version": "0.0.0-snapshot-280097840df1d1bd5cd5c8f49b610f845c3a0bb9",
3
+ "version": "0.0.0-snapshot-3ba490a5b5d6f5b03e3396d83fe046d6df27cc7e",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./src/node-vitest/global.ts",
@@ -22,7 +22,7 @@
22
22
  "@opentelemetry/sdk-trace-base": "2.0.1",
23
23
  "@opentelemetry/sdk-trace-node": "2.0.1",
24
24
  "wrangler": "4.38.0",
25
- "@livestore/utils": "0.0.0-snapshot-280097840df1d1bd5cd5c8f49b610f845c3a0bb9"
25
+ "@livestore/utils": "0.0.0-snapshot-3ba490a5b5d6f5b03e3396d83fe046d6df27cc7e"
26
26
  },
27
27
  "devDependencies": {},
28
28
  "files": [
@@ -10,8 +10,6 @@ export type TCmdLoggingOptions = {
10
10
  readonly logRetention?: number
11
11
  }
12
12
 
13
- const shellEscape = (s: string): string => (/[A-Za-z0-9_./:=+@-]+/.test(s) ? s : `'${s.replaceAll("'", `'"'"'`)}'`)
14
-
15
13
  /**
16
14
  * Prepares logging directories, archives previous canonical log and prunes archives.
17
15
  * Returns the canonical current log path if logging is enabled, otherwise undefined.
@@ -85,16 +83,10 @@ export const applyLoggingToCommand: (
85
83
  const parts = asArray ? (commandInput as (string | undefined)[]).filter(isNotUndefined) : undefined
86
84
 
87
85
  const logPath = yield* prepareCmdLogging(options)
88
- if (!logPath) {
89
- return {
90
- input: asArray ? ((parts as string[]) ?? []) : (commandInput as string),
91
- subshell: false,
92
- }
93
- }
94
86
 
95
- const input = asArray
96
- ? [...((parts as string[]) ?? []), '2>&1', '|', 'tee', logPath]
97
- : `${commandInput as string} 2>&1 | tee ${shellEscape(logPath)}`
98
-
99
- return { input, subshell: true, logPath }
87
+ return {
88
+ input: asArray ? ((parts as string[]) ?? []) : (commandInput as string),
89
+ subshell: false,
90
+ ...(logPath ? { logPath } : {}),
91
+ }
100
92
  })