You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import {promisify} from 'node:util';import {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';import path from 'node:path';import {fileURLToPath} from 'node:url';
const execFileOriginal = promisify(execFileCallback);
export function toPath(urlOrPath) { return urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;}
export function rootDirectory(pathInput) { return path.parse(toPath(pathInput)).root;}
export function traversePathUp(startPath) { return { * [Symbol.iterator]() { let currentPath = path.resolve(toPath(startPath)); let previousPath;
while (previousPath !== currentPath) { yield currentPath; previousPath = currentPath; currentPath = path.resolve(currentPath, '..'); } }, };}
const TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;
export async function execFile(file, arguments_, options = {}) { return execFileOriginal(file, arguments_, { maxBuffer: TEN_MEGABYTES_IN_BYTES, ...options, });}
export function execFileSync(file, arguments_ = [], options = {}) { return execFileSyncOriginal(file, arguments_, { maxBuffer: TEN_MEGABYTES_IN_BYTES, encoding: 'utf8', stdio: 'pipe', ...options, });}
export * from './default.js';
|