Initial Commit

This commit is contained in:
2026-01-15 21:52:12 +01:00
committed by erik
parent 3ed42cdeb6
commit 5a70f775f1
6702 changed files with 1389544 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
/// <reference types="node" />
import { SpawnOptions } from "child_process";
export declare type LoggerFunction = (message: string) => void;
/**
* List of string arguments.
*/
export declare type CrossSpawnArgs = ReadonlyArray<string> | undefined;
export declare type CrossSpawnOptions = SpawnOptions & {
/**
* A `Function` such as `console.log` or `debug(name)` to log some information about the
* spawned process.
*/
logger?: LoggerFunction;
/**
* A callback which mutates the error before it is rethrown. Most commonly, this is used to
* augment the error message of `ENOENT` errors to provide a more human-friendly message as to
* how to install the missing executable.
*
* @param error - The error thrown from the `spawn` function
* @param hasLogger - Whether `logger` was set
*/
updateErrorCallback?: (error: Error, hasLogger: boolean) => void;
};
/**
* Wrapper error for when the spawn function itself emits an error.
*/
export declare class CrossSpawnError extends Error {
originalError: Error;
constructor(cmd: string, args: CrossSpawnArgs, originalError: Error, stderr: string);
}
/**
* Base error class for when a process does not exit with a status code of zero.
*/
export declare abstract class ExitError extends Error {
cmd: string;
args: CrossSpawnArgs;
stdout: string;
stderr: string;
constructor(cmd: string, args: CrossSpawnArgs, message: string, stdout: string, stderr: string);
}
/**
* The error thrown when a process emits a non-zero exit code.
*/
export declare class ExitCodeError extends ExitError {
code: number;
constructor(cmd: string, args: CrossSpawnArgs, code: number, stdout: string, stderr: string);
}
/**
* The error thrown when a process exits via a signal.
*/
export declare class ExitSignalError extends ExitError {
signal: string;
constructor(cmd: string, args: CrossSpawnArgs, signal: string, stdout: string, stderr: string);
}
/**
* A wrapper around `cross-spawn`'s `spawn` function which can optionally log the command executed
* and/or change the error object via a callback.
*
* @param cmd - The command to run
*/
export declare function spawn(cmd: string, args?: CrossSpawnArgs, options?: CrossSpawnOptions): Promise<string>;

View File

@@ -0,0 +1,111 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.spawn = exports.ExitSignalError = exports.ExitCodeError = exports.ExitError = exports.CrossSpawnError = void 0;
const cross_spawn_1 = __importDefault(require("cross-spawn"));
function stringifyCommand(cmd, args) {
if (args && Array.isArray(args) && args.length > 0) {
return `${cmd} ${args.join(" ")}`;
}
else {
return cmd;
}
}
/**
* Wrapper error for when the spawn function itself emits an error.
*/
class CrossSpawnError extends Error {
constructor(cmd, args, originalError, stderr) {
const fullCommand = stringifyCommand(cmd, args);
const errorMessage = originalError.message || originalError;
super(`Error executing command (${fullCommand}):\n${errorMessage}\n${stderr}`.trim());
this.originalError = originalError;
}
}
exports.CrossSpawnError = CrossSpawnError;
/**
* Base error class for when a process does not exit with a status code of zero.
*/
class ExitError extends Error {
constructor(cmd, args, message, stdout, stderr) {
super(message);
this.cmd = cmd;
this.args = args;
this.stdout = stdout;
this.stderr = stderr;
}
}
exports.ExitError = ExitError;
/**
* The error thrown when a process emits a non-zero exit code.
*/
class ExitCodeError extends ExitError {
constructor(cmd, args, code, stdout, stderr) {
const fullCommand = stringifyCommand(cmd, args);
super(cmd, args, `Command failed with a non-zero return code (${code}):\n${fullCommand}\n${stdout}\n${stderr}`.trim(), stdout, stderr);
this.code = code;
}
}
exports.ExitCodeError = ExitCodeError;
/**
* The error thrown when a process exits via a signal.
*/
class ExitSignalError extends ExitError {
constructor(cmd, args, signal, stdout, stderr) {
const fullCommand = stringifyCommand(cmd, args);
super(cmd, args, `Command terminated via a signal (${signal}):\n${fullCommand}\n${stdout}\n${stderr}`.trim(), stdout, stderr);
this.signal = signal;
}
}
exports.ExitSignalError = ExitSignalError;
/**
* A wrapper around `cross-spawn`'s `spawn` function which can optionally log the command executed
* and/or change the error object via a callback.
*
* @param cmd - The command to run
*/
async function spawn(cmd, args, options) {
if (!options) {
options = {};
}
const { logger, updateErrorCallback, ...spawnOptions } = options;
if (logger)
logger(`Executing command ${stringifyCommand(cmd, args)}`);
return new Promise((resolve, reject) => {
let stdout = "";
let stderr = "";
const process = cross_spawn_1.default(cmd, args, spawnOptions);
if (process.stdout) {
process.stdout.on("data", (data) => {
stdout += data.toString();
});
}
if (process.stderr) {
process.stderr.on("data",
/* istanbul ignore next */ (data) => {
stderr += data.toString();
});
}
process.on("close", (code, signal) => {
if (code === 0) {
resolve(stdout);
}
else if (code === null) {
reject(new ExitSignalError(cmd, args, signal, stdout, stderr));
}
else {
reject(new ExitCodeError(cmd, args, code, stdout, stderr));
}
});
process.on("error", (err) => {
if (updateErrorCallback) {
updateErrorCallback(err, !!logger);
}
reject(new CrossSpawnError(cmd, args, err, stderr));
});
});
}
exports.spawn = spawn;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}