12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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';
|