/// /// /// /// import type { SpawnOptions } from 'child_process'; import type { SimpleGitTask } from './tasks'; import type { SimpleGitProgressEvent } from './handlers'; export * from './handlers'; export * from './tasks'; /** * Most tasks accept custom options as an array of strings as well as the * options object. Unless the task is explicitly documented as such, the * tasks will not accept both formats at the same time, preferring whichever * appears last in the arguments. */ export declare type TaskOptions = string[] | O; /** * Options supplied in most tasks as an optional trailing object */ export declare type OptionsValues = null | string | number; export declare type Options = Record; export declare type OptionFlags = Partial>; /** * A function called by the executor immediately after creating a child * process. Allows the calling application to implement custom handling of * the incoming stream of data from the `git`. */ export declare type outputHandler = (command: string, stdout: NodeJS.ReadableStream, stderr: NodeJS.ReadableStream, args: string[]) => void; /** * Environment variables to be passed into the child process. */ export declare type GitExecutorEnv = NodeJS.ProcessEnv | undefined; /** * Public interface of the Executor */ export interface SimpleGitExecutor { env: GitExecutorEnv; outputHandler?: outputHandler; cwd: string; chain(): SimpleGitExecutor; push(task: SimpleGitTask): Promise; } /** * The resulting output from running the git child process */ export interface GitExecutorResult { stdOut: Buffer[]; stdErr: Buffer[]; exitCode: number; rejection: Maybe; } export interface SimpleGitPluginConfig { abort: AbortSignal; /** * Name of the binary the child processes will spawn - defaults to `git`, * supply as a tuple to enable the use of platforms that require `git` to be * called through an alternative binary (eg: `wsl git ...`). * Note: commands supplied in this way support a restricted set of characters * and should not be used as a way to supply arbitrary config arguments etc. */ binary: string | [string] | [string, string]; /** * Configures the events that should be used to determine when the unederlying child process has * been terminated. * * Version 2 will default to use `onClose=true, onExit=50` to mean the `close` event will be * used to immediately treat the child process as closed and start using the data from `stdOut` * / `stdErr`, whereas the `exit` event will wait `50ms` before treating the child process * as closed. * * This will be changed in version 3 to use `onClose=true, onExit=false` so that only the * close event is used to determine the termination of the process. */ completion: { onClose?: boolean | number; onExit?: boolean | number; }; /** * Configures the content of errors thrown by the `simple-git` instance for each task */ errors(error: Buffer | Error | undefined, result: Omit): Buffer | Error | undefined; /** * Handler to be called with progress events emitted through the progress plugin */ progress(data: SimpleGitProgressEvent): void; /** * Configuration for the `timeoutPlugin` */ timeout: { /** * The number of milliseconds to wait after spawning the process / receiving * content on the stdOut/stdErr streams before forcibly closing the git process. */ block: number; /** * Reset timeout plugin after receiving data on `stdErr` - set to `false` to ignore * `stdErr` content when determining whether to kill the process (defaults to `true`). */ stdErr?: boolean; /** * Reset timeout plugin after receiving data on `stdOut` - set to `false` to ignore * `stdOut` content when determining whether to kill the process (defaults to `true`). */ stdOut?: boolean; }; spawnOptions: Pick; unsafe: { /** * Allows potentially unsafe values to be supplied in the `binary` configuration option and * `git.customBinary()` method call. */ allowUnsafeCustomBinary?: boolean; /** * By default `simple-git` prevents the use of inline configuration * options to override the protocols available for the `git` child * process to prevent accidental security vulnerabilities when * unsanitised user data is passed directly into operations such as * `git.addRemote`, `git.clone` or `git.raw`. * * Enable this override to use the `ext::` protocol (see examples on * [git-scm.com](https://git-scm.com/docs/git-remote-ext#_examples)). */ allowUnsafeProtocolOverride?: boolean; /** * Given the possibility of using `--upload-pack` and `--receive-pack` as * attack vectors, the use of these in any command (or the shorthand * `-u` option in a `clone` operation) are blocked by default. * * Enable this override to permit the use of these arguments. */ allowUnsafePack?: boolean; }; } /** * Optional configuration settings to be passed to the `simpleGit` * builder. */ export interface SimpleGitOptions extends Partial { /** * Base directory for all tasks run through this `simple-git` instance */ baseDir: string; /** * Limit for the number of child processes that will be spawned concurrently from a `simple-git` instance */ maxConcurrentProcesses: number; /** * Per-command configuration parameters to be passed with the `-c` switch to `git` */ config: string[]; /** * Enable trimming of trailing white-space in `git.raw` */ trimmed: boolean; } export declare type Maybe = T | undefined; export declare type MaybeArray = T | T[]; export declare type Primitives = string | number | boolean;