export type ShellFunction = (input: Uint8Array) => Uint8Array export type ShellExpression = | { toString(): string } | Array | string | { raw: string } | ReadableStream export interface BunShell { (strings: TemplateStringsArray, ...expressions: ShellExpression[]): BunShellPromise /** * Perform bash-like brace expansion on the given pattern. * @param pattern - Brace pattern to expand */ braces(pattern: string): string[] /** * Escape strings for input into shell commands. */ escape(input: string): string /** * Change the default environment variables for shells created by this instance. */ env(newEnv?: Record): BunShell /** * Default working directory to use for shells created by this instance. */ cwd(newCwd?: string): BunShell /** * Configure the shell to not throw an exception on non-zero exit codes. */ nothrow(): BunShell /** * Configure whether or not the shell should throw an exception on non-zero exit codes. */ throws(shouldThrow: boolean): BunShell } export interface BunShellPromise extends Promise { readonly stdin: WritableStream /** * Change the current working directory of the shell. */ cwd(newCwd: string): this /** * Set environment variables for the shell. */ env(newEnv: Record | undefined): this /** * By default, the shell will write to the current process's stdout and stderr, as well as buffering that output. * This configures the shell to only buffer the output. */ quiet(): this /** * Read from stdout as a string, line by line * Automatically calls quiet() to disable echoing to stdout. */ lines(): AsyncIterable /** * Read from stdout as a string. * Automatically calls quiet() to disable echoing to stdout. */ text(encoding?: BufferEncoding): Promise /** * Read from stdout as a JSON object * Automatically calls quiet() */ json(): Promise /** * Read from stdout as an ArrayBuffer * Automatically calls quiet() */ arrayBuffer(): Promise /** * Read from stdout as a Blob * Automatically calls quiet() */ blob(): Promise /** * Configure the shell to not throw an exception on non-zero exit codes. */ nothrow(): this /** * Configure whether or not the shell should throw an exception on non-zero exit codes. */ throws(shouldThrow: boolean): this } export interface BunShellOutput { readonly stdout: Buffer readonly stderr: Buffer readonly exitCode: number /** * Read from stdout as a string */ text(encoding?: BufferEncoding): string /** * Read from stdout as a JSON object */ json(): any /** * Read from stdout as an ArrayBuffer */ arrayBuffer(): ArrayBuffer /** * Read from stdout as an Uint8Array */ bytes(): Uint8Array /** * Read from stdout as a Blob */ blob(): Blob } export type BunShellError = Error & BunShellOutput