mirror of
https://github.com/davidkaya/aryx.git
synced 2026-07-27 15:08:39 +02:00
fix: handle bun child_process interop
Resolve execFile from named or default child_process exports so macOS Bun can load gitService in tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,10 +1,32 @@
|
||||
import childProcess, { type ExecFileException } from 'node:child_process';
|
||||
import * as childProcessModule from 'node:child_process';
|
||||
import { promisify } from 'node:util';
|
||||
|
||||
import type { ProjectGitChangeSummary, ProjectGitCommitSummary, ProjectGitContext } from '@shared/domain/project';
|
||||
import { nowIso } from '@shared/utils/ids';
|
||||
|
||||
const execFileAsync = promisify(childProcess.execFile);
|
||||
type ExecFileException = import('node:child_process').ExecFileException;
|
||||
|
||||
type ChildProcessModuleLike = {
|
||||
readonly execFile?: typeof childProcessModule.execFile;
|
||||
readonly default?: {
|
||||
readonly execFile?: typeof childProcessModule.execFile;
|
||||
};
|
||||
};
|
||||
|
||||
export function resolveExecFileForInterop(
|
||||
module: ChildProcessModuleLike,
|
||||
): typeof childProcessModule.execFile {
|
||||
const execFile = module.execFile ?? module.default?.execFile;
|
||||
if (typeof execFile !== 'function') {
|
||||
throw new Error('node:child_process execFile is unavailable.');
|
||||
}
|
||||
|
||||
return execFile;
|
||||
}
|
||||
|
||||
const execFileAsync = promisify(
|
||||
resolveExecFileForInterop(childProcessModule as ChildProcessModuleLike),
|
||||
);
|
||||
const GIT_TIMEOUT_MS = 5_000;
|
||||
|
||||
type GitCommandRunner = (projectPath: string, args: string[]) => Promise<string>;
|
||||
|
||||
Reference in New Issue
Block a user