Skip to content

Commit 4092266

Browse files
fix(deps): update dependency execa to v9 (#1519)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [execa](https://togithub.com/sindresorhus/execa) | [`^8.0.1` -> `^9.0.0`](https://renovatebot.com/diffs/npm/execa/8.0.1/9.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/execa/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/execa/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/execa/8.0.1/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/execa/8.0.1/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>sindresorhus/execa (execa)</summary> ### [`v9.0.0`](https://togithub.com/sindresorhus/execa/releases/tag/v9.0.0) [Compare Source](https://togithub.com/sindresorhus/execa/compare/v8.0.1...v9.0.0) This major release brings many important features including: - [Split the output](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#3a26) into lines, or [progressively iterate](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#3a26) over them. - [Transform or filter](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#cbd6) the input/output using [simple functions](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#399a). - Print the output [to the terminal](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#693f) while still retrieving it programmatically. - Redirect the input/output [from/to a file](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#693f). - [Advanced piping](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#ec17) between multiple subprocesses. - Improved [verbose mode](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#2913), for debugging. - More [detailed errors](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#40d7), including when [terminating subprocesses](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#668c). - Enhanced [template string syntax](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#725b). - [Global/shared options](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#bcbf). - [Web streams](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#5731) and Transform streams support. - [Convert the subprocess](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f#47b9) to a stream. - [New documentation](https://togithub.com/sindresorhus/execa#documentation) with many examples. Please check the [release post](https://medium.com/@&#8203;ehmicky/execa-9-release-d0d5daaa097f) for a high-level overview! For the full list of breaking changes, features and bug fixes, please read below. Thanks [@&#8203;younggglcy](https://togithub.com/younggglcy), [@&#8203;koshic](https://togithub.com/koshic), [@&#8203;am0o0](https://togithub.com/am0o0) and [@&#8203;codesmith-emmy](https://togithub.com/codesmith-emmy) for your help! *** One of the maintainers [@&#8203;ehmicky](https://togithub.com/ehmicky) is looking for a remote full-time position. Specialized in Node.js back-ends and CLIs, he led Netlify [Build](https://www.netlify.com/platform/core/build/), [Plugins](https://www.netlify.com/integrations/) and Configuration for 2.5 years. Feel free to contact him on [his website](https://www.mickael-hebert.com) or on [LinkedIn](https://www.linkedin.com/in/mickaelhebert/)! *** #### Breaking changes - Minimal supported Node.js version is now `18.19.0`. ([`834e372`](https://togithub.com/sindresorhus/execa/commit/834e3726)) - When the [`encoding` option](docs/api.md#optionsencoding) is `'buffer'`, the output ([`result.stdout`](docs/api.md#resultstdout), [`result.stderr`](docs/api.md#resultstderr), [`result.all`](docs/api.md#resultall)) is now an [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instead of a [`Buffer`](https://nodejs.org/api/buffer.html#class-buffer). For more information, see [this blog post](https://sindresorhus.com/blog/goodbye-nodejs-buffer). (by [@&#8203;younggglcy](https://togithub.com/younggglcy)) ([#&#8203;586](https://togithub.com/sindresorhus/execa/issues/586)) ```js const {stdout} = await execa('node', ['file.js'], {encoding: 'buffer'}); console.log(stdout); // This is now an Uint8Array ``` - Renamed some of the allowed values for the [`encoding`](docs/api.md#optionsencoding) option. ([#&#8203;586](https://togithub.com/sindresorhus/execa/issues/586), [#&#8203;928](https://togithub.com/sindresorhus/execa/issues/928)) ```diff - await execa('node', ['file.js'], {encoding: null}); + await execa('node', ['file.js'], {encoding: 'buffer'}); - await execa('node', ['file.js'], {encoding: 'utf-8'}); + await execa('node', ['file.js'], {encoding: 'utf8'}); - await execa('node', ['file.js'], {encoding: 'UTF8'}); + await execa('node', ['file.js'], {encoding: 'utf8'}); - await execa('node', ['file.js'], {encoding: 'utf-16le'}); + await execa('node', ['file.js'], {encoding: 'utf16le'}); - await execa('node', ['file.js'], {encoding: 'ucs2'}); + await execa('node', ['file.js'], {encoding: 'utf16le'}); - await execa('node', ['file.js'], {encoding: 'ucs-2'}); + await execa('node', ['file.js'], {encoding: 'utf16le'}); - await execa('node', ['file.js'], {encoding: 'binary'}); + await execa('node', ['file.js'], {encoding: 'latin1'}); ``` - Passing a file path to `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` has been removed. Instead, a [`{file: './path'}` object](docs/output.md#file-output) should be passed to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#&#8203;752](https://togithub.com/sindresorhus/execa/issues/752)) ```diff - await execa('node', ['file.js']).pipeStdout('output.txt'); + await execa('node', ['file.js'], {stdout: {file: 'output.txt'}}); - await execa('node', ['file.js']).pipeStderr('output.txt'); + await execa('node', ['file.js'], {stderr: {file: 'output.txt'}}); - await execa('node', ['file.js']).pipeAll('output.txt'); + await execa('node', ['file.js'], { + stdout: {file: 'output.txt'}, + stderr: {file: 'output.txt'}, +}); ``` - Passing a [writable stream](https://nodejs.org/api/stream.html#class-streamwritable) to `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` has been removed. Instead, the stream should be passed to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. If the stream [does not have a file descriptor](docs/streams.md#file-descriptors), [`['pipe', stream]`](docs/output.md#multiple-targets) should be passed instead. ([#&#8203;752](https://togithub.com/sindresorhus/execa/issues/752)) ```diff - await execa('node', ['file.js']).pipeStdout(stream); + await execa('node', ['file.js'], {stdout: ['pipe', stream]}); - await execa('node', ['file.js']).pipeStderr(stream); + await execa('node', ['file.js'], {stderr: ['pipe', stream]}); - await execa('node', ['file.js']).pipeAll(stream); + await execa('node', ['file.js'], { + stdout: ['pipe', stream], + stderr: ['pipe', stream], +}); ``` - The `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` methods have been renamed to [`subprocess.pipe()`](docs/api.md#subprocesspipefile-arguments-options). The command and its arguments can be passed to `subprocess.pipe()` directly, without calling `execa()` a second time. The [`from`](docs/api.md#pipeoptionsfrom) piping option can specify `'stdout'` (the default value), `'stderr'` or `'all'`. ([#&#8203;757](https://togithub.com/sindresorhus/execa/issues/757)) ```diff - await execa('node', ['file.js']).pipeStdout(execa('node', ['other.js'])); + await execa('node', ['file.js']).pipe('node', ['other.js']); - await execa('node', ['file.js']).pipeStderr(execa('node', ['other.js'])); + await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'stderr'}); - await execa('node', ['file.js']).pipeAll(execa('node', ['other.js'])); + await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'all'}); ``` - Renamed the `signal` option to [`cancelSignal`](docs/api.md#optionscancelsignal). ([#&#8203;880](https://togithub.com/sindresorhus/execa/issues/880)) ```diff - await execa('node', ['file.js'], {signal: abortController.signal}); + await execa('node', ['file.js'], {cancelSignal: abortController.signal}); ``` - Renamed `error.killed` to [`error.isTerminated`](docs/api.md#erroristerminated). ([#&#8203;625](https://togithub.com/sindresorhus/execa/issues/625)) ```diff try { await execa('node', ['file.js']); } catch (error) { - if (error.killed) { + if (error.isTerminated) { // ... } } ``` - `subprocess.cancel()` has been removed. Please use either [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) or the [`cancelSignal`](docs/api.md#optionscancelsignal) option instead. ([#&#8203;711](https://togithub.com/sindresorhus/execa/issues/711)) ```diff - subprocess.cancel(); + subprocess.kill(); ``` - Renamed the `forceKillAfterTimeout` option to [`forceKillAfterDelay`](docs/api.md#optionsforcekillafterdelay). Also, it is now passed to [`execa()`](docs/api.md#execafile-arguments-options) instead of [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error). ([#&#8203;714](https://togithub.com/sindresorhus/execa/issues/714), [#&#8203;723](https://togithub.com/sindresorhus/execa/issues/723)) ```diff - const subprocess = execa('node', ['file.js']); - subprocess.kill('SIGTERM', {forceKillAfterTimeout: 1000}); + const subprocess = execa('node', ['file.js'], {forceKillAfterDelay: 1000}); + subprocess.kill('SIGTERM'); ``` - The [`verbose`](docs/api.md#optionsverbose) option is now a string enum instead of a boolean. `false` has been renamed to `'none'` and `true` has been renamed to [`'short'`](docs/debugging.md#short-mode). ([#&#8203;884](https://togithub.com/sindresorhus/execa/issues/884)) ```diff - await execa('node', ['file.js'], {verbose: false}); + await execa('node', ['file.js'], {verbose: 'none'}); - await execa('node', ['file.js'], {verbose: true}); + await execa('node', ['file.js'], {verbose: 'short'}); ``` - The `execPath` option has been renamed to [`nodePath`](docs/api.md#optionsnodepath). It is now a noop unless the [`node`](docs/api.md#optionsnode) option is `true`. Also, it now works even if the [`preferLocal`](docs/api.md#optionspreferlocal) option is `false`. ([#&#8203;812](https://togithub.com/sindresorhus/execa/issues/812), [#&#8203;815](https://togithub.com/sindresorhus/execa/issues/815)) ```diff - await execa('node', ['file.js'], {execPath: './path/to/node'}); + await execa('node', ['file.js'], {nodePath: './path/to/node'}); ``` - The [default value](docs/ipc.md#message-type) for the [`serialization`](docs/api.md#optionsserialization) option is now [`'advanced'`](https://nodejs.org/api/child_process.html#advanced-serialization) instead of `'json'`. In particular, when calling [`subprocess.send(object)`](docs/api.md#subprocesssendmessage) with an object that contains functions or symbols, those were previously silently removed. Now this will throw an exception. ([#&#8203;905](https://togithub.com/sindresorhus/execa/issues/905)) ```diff - subprocess.send({example: true, getExample() {}}); + subprocess.send({example: true}); ``` - If [`subprocess.stdout`](docs/api.md#subprocessstdout), [`subprocess.stderr`](docs/api.md#subprocessstderr) or [`subprocess.all`](docs/api.md#subprocessall) is manually piped, the [`.pipe()`](https://nodejs.org/api/stream.html#readablepipedestination-options) call must now happen as soon as `subprocess` is created. Otherwise, the output at the beginning of the subprocess might be missing. ([#&#8203;658](https://togithub.com/sindresorhus/execa/issues/658), [#&#8203;747](https://togithub.com/sindresorhus/execa/issues/747)) ```diff const subprocess = execa('node', ['file.js']); - setTimeout(() => { subprocess.stdout.pipe(process.stdout); - }, 0); ``` - Signals passed to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) and to the [`killSignal`](docs/api.md#optionskillsignal) option cannot be lowercase anymore. ([#&#8203;1025](https://togithub.com/sindresorhus/execa/issues/1025)) ```diff - const subprocess = execa('node', ['file.js'], {killSignal: 'sigterm'}); + const subprocess = execa('node', ['file.js'], {killSignal: 'SIGTERM'}); - subprocess.kill('sigterm'); + subprocess.kill('SIGTERM'); ``` #### Features ##### Execution - Use the [template string syntax](docs/execution.md#template-string-syntax) with any method (including [`execa()`](docs/api.md#execacommand)), as opposed to only [`$`](docs/api.md#file-arguments-options). Conversely, `$` can now use the [regular array syntax](docs/scripts.md#template-string-syntax). ([#&#8203;933](https://togithub.com/sindresorhus/execa/issues/933)) - A command's template string can span [multiple lines](docs/execution.md#multiple-lines). ([#&#8203;843](https://togithub.com/sindresorhus/execa/issues/843)) - [Share options](docs/execution.md#globalshared-options) between multiple calls, or set global options, by using [`execa(options)`](docs/api#execaoptions). ([#&#8203;933](https://togithub.com/sindresorhus/execa/issues/933), [#&#8203;965](https://togithub.com/sindresorhus/execa/issues/965)) - Pass a file URL (as opposed to a file path string) to [`execa()`](docs/api.md#execafile-arguments-options), [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options), the [`inputFile`](docs/api.md#optionsinputfile) option, the [`nodePath`](docs/api.md#optionsnodepath) option or the [`shell`](docs/api.md#optionsshell) option. ([#&#8203;630](https://togithub.com/sindresorhus/execa/issues/630), [#&#8203;631](https://togithub.com/sindresorhus/execa/issues/631), [#&#8203;632](https://togithub.com/sindresorhus/execa/issues/632), [#&#8203;635](https://togithub.com/sindresorhus/execa/issues/635)) ##### Text lines - [Split the output](docs/lines.md#simple-splitting) into text lines by using the [`lines`](docs/api.md#optionslines) option. ([#&#8203;741](https://togithub.com/sindresorhus/execa/issues/741), [#&#8203;929](https://togithub.com/sindresorhus/execa/issues/929), [#&#8203;931](https://togithub.com/sindresorhus/execa/issues/931), [#&#8203;948](https://togithub.com/sindresorhus/execa/issues/948), [#&#8203;951](https://togithub.com/sindresorhus/execa/issues/951), [#&#8203;957](https://togithub.com/sindresorhus/execa/issues/957)) - Subprocess is now an [async iterable](docs/api.md#subprocesssymbolasynciterator), [iterating over the output](docs/lines.md#progressive-splitting) lines while the subprocess is running. ([#&#8203;923](https://togithub.com/sindresorhus/execa/issues/923)) ##### Piping multiple subprocesses - Simpler syntax: pass the [command directly](docs/pipe.md#array-syntax) to [`subprocess.pipe()`](docs/api.md#subprocesspipefile-arguments-options) without calling [`execa()`](docs/api.md#execafile-arguments-options). A [template string](docs/pipe.md#template-string-syntax) can also be used. ([#&#8203;840](https://togithub.com/sindresorhus/execa/issues/840), [#&#8203;859](https://togithub.com/sindresorhus/execa/issues/859), [#&#8203;864](https://togithub.com/sindresorhus/execa/issues/864)) - [Wait for both subprocesses](docs/pipe.md#result) to complete. [Error handling](docs/pipe.md#errors) has been improved too. ([#&#8203;757](https://togithub.com/sindresorhus/execa/issues/757), [#&#8203;778](https://togithub.com/sindresorhus/execa/issues/778), [#&#8203;834](https://togithub.com/sindresorhus/execa/issues/834), [#&#8203;854](https://togithub.com/sindresorhus/execa/issues/854)) - Retrieve the [result](docs/pipe.md#result) of each subprocess (not only the last one) by using [`result.pipedFrom`](docs/api.md#resultpipedfrom) and [`error.pipedFrom`](docs/api.md#resultpipedfrom). ([#&#8203;834](https://togithub.com/sindresorhus/execa/issues/834)) - Pipe 1 or [many subprocesses](docs/pipe.md#multiple-sources-1-destination) to 1 or [many subprocesses](docs/pipe.md#1-source-multiple-destinations). ([#&#8203;834](https://togithub.com/sindresorhus/execa/issues/834)) - Pipe subprocesses using [other file descriptors](docs/pipe.md#source-file-descriptor) than `stdin`/`stdout`/`stderr` by using the [`from`](docs/api.md#pipeoptionsfrom) and [`to`](docs/api.md#pipeoptionsto) piping options. ([#&#8203;757](https://togithub.com/sindresorhus/execa/issues/757), [#&#8203;834](https://togithub.com/sindresorhus/execa/issues/834), [#&#8203;903](https://togithub.com/sindresorhus/execa/issues/903), [#&#8203;920](https://togithub.com/sindresorhus/execa/issues/920)) - [Cancel piping](docs/pipe.md#unpipe) subprocesses by using the [`unpipeSignal`](docs/api.md#pipeoptionsunpipesignal) piping option. ([#&#8203;834](https://togithub.com/sindresorhus/execa/issues/834), [#&#8203;852](https://togithub.com/sindresorhus/execa/issues/852)) ##### Input/output - Pass an array with [multiple values](docs/output.md#multiple-targets) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) options. For example, [`stdout: ['inherit', 'pipe']`](docs/output.md#multiple-targets) prints the output [to the terminal](docs/output.md#terminal-output) while still [returning it](docs/output.md#stdout-and-stderr) as [`result.stdout`](docs/api.md#resultstdout). ([#&#8203;643](https://togithub.com/sindresorhus/execa/issues/643), [#&#8203;765](https://togithub.com/sindresorhus/execa/issues/765), [#&#8203;941](https://togithub.com/sindresorhus/execa/issues/941), [#&#8203;954](https://togithub.com/sindresorhus/execa/issues/954)) - Redirect the [input](docs/input.md#file-input)/[output](docs/output.md#file-output) from/to a file by passing a `{file: './path'}` object or a file URL to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#&#8203;610](https://togithub.com/sindresorhus/execa/issues/610), [#&#8203;614](https://togithub.com/sindresorhus/execa/issues/614), [#&#8203;621](https://togithub.com/sindresorhus/execa/issues/621), [#&#8203;671](https://togithub.com/sindresorhus/execa/issues/671), [#&#8203;1004](https://togithub.com/sindresorhus/execa/issues/1004)) - [Transform](docs/transform.md) or [filter](docs/transform.md#filtering) the input/output by passing a generator function to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#&#8203;693](https://togithub.com/sindresorhus/execa/issues/693), [#&#8203;697](https://togithub.com/sindresorhus/execa/issues/697), [#&#8203;698](https://togithub.com/sindresorhus/execa/issues/698), [#&#8203;699](https://togithub.com/sindresorhus/execa/issues/699), [#&#8203;709](https://togithub.com/sindresorhus/execa/issues/709), [#&#8203;736](https://togithub.com/sindresorhus/execa/issues/736), [#&#8203;737](https://togithub.com/sindresorhus/execa/issues/737), [#&#8203;739](https://togithub.com/sindresorhus/execa/issues/739), [#&#8203;740](https://togithub.com/sindresorhus/execa/issues/740), [#&#8203;746](https://togithub.com/sindresorhus/execa/issues/746), [#&#8203;748](https://togithub.com/sindresorhus/execa/issues/748), [#&#8203;755](https://togithub.com/sindresorhus/execa/issues/755), [#&#8203;756](https://togithub.com/sindresorhus/execa/issues/756), [#&#8203;780](https://togithub.com/sindresorhus/execa/issues/780), [#&#8203;783](https://togithub.com/sindresorhus/execa/issues/783), [#&#8203;867](https://togithub.com/sindresorhus/execa/issues/867), [#&#8203;915](https://togithub.com/sindresorhus/execa/issues/915), [#&#8203;916](https://togithub.com/sindresorhus/execa/issues/916), [#&#8203;917](https://togithub.com/sindresorhus/execa/issues/917), [#&#8203;919](https://togithub.com/sindresorhus/execa/issues/919), [#&#8203;924](https://togithub.com/sindresorhus/execa/issues/924), [#&#8203;926](https://togithub.com/sindresorhus/execa/issues/926), [#&#8203;945](https://togithub.com/sindresorhus/execa/issues/945), [#&#8203;969](https://togithub.com/sindresorhus/execa/issues/969)) - Provide some [binary input](docs/binary.md#binary-input) by passing an [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) to the [`input`](docs/api.md#optionsinput) or [`stdin`](docs/api.md#optionsstdin) option. ([`834e372`](https://togithub.com/sindresorhus/execa/commit/834e3726), [#&#8203;670](https://togithub.com/sindresorhus/execa/issues/670), [#&#8203;1029](https://togithub.com/sindresorhus/execa/issues/1029)) - Provide some [progressive input](docs/streams.md#iterables-as-input) by passing a sync/async [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols) to the [`stdin`](docs/api.md#optionsstdin) option. ([#&#8203;604](https://togithub.com/sindresorhus/execa/issues/604), [#&#8203;944](https://togithub.com/sindresorhus/execa/issues/944)) - Provide [multiple inputs](docs/output.md#multiple-targets) by combining the [`stdin`](docs/api.md#optionsstdin), [`input`](docs/api.md#optionsinput) and [`inputFile`](docs/api.md#optionsinputfile) options. ([#&#8203;666](https://togithub.com/sindresorhus/execa/issues/666)) - Return [other file descriptors](docs/output.md#additional-file-descriptors) than [`result.stdout`](docs/api.md#resultstdout) and [`result.stderr`](docs/api.md#resultstderr) by using [`result.stdio`](docs/api.md#resultstdio). ([#&#8203;676](https://togithub.com/sindresorhus/execa/issues/676)) - [Specify different values](docs/output.md#stdoutstderr-specific-options) for [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) with the following options: [`verbose`](docs/api.md#optionsverbose), [`lines`](docs/api.md#optionslines), [`stripFinalNewline`](docs/api.md#optionsstripfinalnewline), [`maxBuffer`](docs/api.md#optionsmaxbuffer), [`buffer`](docs/api.md#optionsbuffer). ([#&#8203;966](https://togithub.com/sindresorhus/execa/issues/966), [#&#8203;970](https://togithub.com/sindresorhus/execa/issues/970), [#&#8203;971](https://togithub.com/sindresorhus/execa/issues/971), [#&#8203;972](https://togithub.com/sindresorhus/execa/issues/972), [#&#8203;973](https://togithub.com/sindresorhus/execa/issues/973), [#&#8203;974](https://togithub.com/sindresorhus/execa/issues/974)) ##### Streams - Redirect the input/output from/to a [web stream](docs/streams.md#web-streams) by passing a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) or [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#&#8203;615](https://togithub.com/sindresorhus/execa/issues/615), [#&#8203;619](https://togithub.com/sindresorhus/execa/issues/619), [#&#8203;645](https://togithub.com/sindresorhus/execa/issues/645)) - [Transform or filter](docs/transform.md#duplextransform-streams) the input/output by passing a [`Duplex`](https://nodejs.org/api/stream.html#class-streamduplex), Node.js [`Transform`](https://nodejs.org/api/stream.html#class-streamtransform) or web [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#&#8203;937](https://togithub.com/sindresorhus/execa/issues/937), [#&#8203;938](https://togithub.com/sindresorhus/execa/issues/938)) - [Convert the subprocess](docs/streams.md#converting-a-subprocess-to-a-stream) to a stream by using [`subprocess.readable()`](docs/api.md#subprocessreadablereadableoptions), [`subprocess.writable()`](docs/api.md#subprocesswritablewritableoptions) or [`subprocess.duplex()`](docs/api.md#subprocessduplexduplexoptions). ([#&#8203;912](https://togithub.com/sindresorhus/execa/issues/912), [#&#8203;922](https://togithub.com/sindresorhus/execa/issues/922), [#&#8203;958](https://togithub.com/sindresorhus/execa/issues/958)) ##### Verbose mode - Print the subprocess' [completion, duration and errors](docs/debugging.md#short-mode) with the [`verbose: 'short'`](docs/api.md#optionsverbose) or `verbose: 'full'` option. ([#&#8203;887](https://togithub.com/sindresorhus/execa/issues/887), [#&#8203;890](https://togithub.com/sindresorhus/execa/issues/890)) - Print the subprocess' [output](docs/debugging.md#full-mode) with the [`verbose: 'full'`](docs/api.md#optionsverbose) option. ([#&#8203;884](https://togithub.com/sindresorhus/execa/issues/884), [#&#8203;950](https://togithub.com/sindresorhus/execa/issues/950), [#&#8203;962](https://togithub.com/sindresorhus/execa/issues/962), [#&#8203;990](https://togithub.com/sindresorhus/execa/issues/990)) - Prettier formatting and [colors](docs/debugging.md#colors) with the [`verbose`](docs/api.md#optionsverbose) option. ([#&#8203;883](https://togithub.com/sindresorhus/execa/issues/883), [#&#8203;893](https://togithub.com/sindresorhus/execa/issues/893), [#&#8203;894](https://togithub.com/sindresorhus/execa/issues/894)) ##### Debugging - Retrieve the subprocess' [duration](docs/debugging.md#duration) by using [`result.durationMs`](docs/api.md#resultdurationms) and [`error.durationMs`](docs/api.md#resultdurationms). ([#&#8203;896](https://togithub.com/sindresorhus/execa/issues/896)) - Retrieve the subprocess' [current directory](docs/environment.md#current-directory) by using [`result.cwd`](docs/api.md#resultcwd). Previously only [`error.cwd`](docs/api.md#execaerror) was available. Also, `result.cwd` and `error.cwd` are now normalized to absolute file paths. ([#&#8203;803](https://togithub.com/sindresorhus/execa/issues/803)) - Printing [`result.escapedCommand`](docs/api.md#resultescapedcommand) in a terminal [is now safe](docs/debugging.md#command). ([#&#8203;875](https://togithub.com/sindresorhus/execa/issues/875)) ##### Errors - The [`ExecaError`](docs/api.md#execaerror) and [`ExecaSyncError`](docs/api.md#execasyncerror) classes [are now exported](docs/errors.md#subprocess-failure). ([#&#8203;911](https://togithub.com/sindresorhus/execa/issues/911)) - Find the subprocess failure's [root cause](docs/termination.md#error-message-and-stack-trace) by using [`error.cause`](docs/api.md#errorcause). ([#&#8203;911](https://togithub.com/sindresorhus/execa/issues/911)) - Know whether [the subprocess failed](docs/errors.md#failure-reason) due to the [`maxBuffer`](docs/api.md#optionsmaxbuffer) option by using [`error.isMaxBuffer`](docs/api.md#errorismaxbuffer). ([#&#8203;963](https://togithub.com/sindresorhus/execa/issues/963)) - Improved [`error.message`](docs/api.md#errormessage): [`error.stdout`](docs/api.md#resultstdout) and [`error.stderr`](docs/api.md#resultstderr) are now [interleaved](docs/output.md#interleaved-output) if the [`all`](docs/api.md#optionsall) option is `true`. [Additional file descriptors](docs/output.md#additional-file-descriptors) are now printed too. Also, the [formatting](docs/errors.md#error-message) has been improved. ([#&#8203;676](https://togithub.com/sindresorhus/execa/issues/676), [#&#8203;705](https://togithub.com/sindresorhus/execa/issues/705), [#&#8203;991](https://togithub.com/sindresorhus/execa/issues/991), [#&#8203;992](https://togithub.com/sindresorhus/execa/issues/992)) - [Control characters](https://en.wikipedia.org/wiki/Control_character) in [`error.message`](docs/api.md#errormessage) are now escaped, so they don't result in visual bugs when printed in a terminal. ([#&#8203;879](https://togithub.com/sindresorhus/execa/issues/879)) - Improved stack trace when an [`error`](https://nodejs.org/api/stream.html#event-error\_1) event is emitted on [`subprocess.stdout`](docs/api.md#subprocessstdout) or [`subprocess.stderr`](docs/api.md#subprocessstderr). ([#&#8203;814](https://togithub.com/sindresorhus/execa/issues/814)) ##### Termination - Specify an [error message or stack trace](docs/termination.md#error-message-and-stack-trace) when terminating a subprocess by passing an error instance to [`subprocess.kill()`](docs/api.md#subprocesskillerror). ([#&#8203;811](https://togithub.com/sindresorhus/execa/issues/811), [#&#8203;836](https://togithub.com/sindresorhus/execa/issues/836), [#&#8203;1023](https://togithub.com/sindresorhus/execa/issues/1023)) - The [`forceKillAfterDelay`](docs/api.md#optionsforcekillafterdelay) and [`killSignal`](docs/api.md#optionskillsignal) options [now apply to terminations](docs/termination.md#default-signal) due not only to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) but [also to](docs/termination.md#forceful-termination) the [`cancelSignal`](docs/api.md#optionscancelsignal), [`timeout`](docs/api.md#optionstimeout), [`maxBuffer`](docs/api.md#optionsmaxbuffer) and [`cleanup`](docs/api.md#optionscleanup) options. ([#&#8203;714](https://togithub.com/sindresorhus/execa/issues/714), [#&#8203;728](https://togithub.com/sindresorhus/execa/issues/728)) ##### Node.js files - Use the [`nodePath`](docs/api.md#optionsnodepath) and [`nodeOptions`](docs/api.md#optionsnodeoptions) options with [any method](docs/api.md#methods), as opposed to only [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options), by passing the [`node: true`](docs/api.md#optionsnode) option. ([#&#8203;804](https://togithub.com/sindresorhus/execa/issues/804), [#&#8203;812](https://togithub.com/sindresorhus/execa/issues/812), [#&#8203;815](https://togithub.com/sindresorhus/execa/issues/815)) - When using [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options) or the [`node: true`](docs/api.md#optionsnode) option, the [current Node.js version](docs/node.md#nodejs-version) is now inherited deeply. If the subprocess spawns other subprocesses, they will all use the [same Node.js version](docs/api.md#optionsnodepath). ([#&#8203;812](https://togithub.com/sindresorhus/execa/issues/812), [#&#8203;815](https://togithub.com/sindresorhus/execa/issues/815), [#&#8203;1011](https://togithub.com/sindresorhus/execa/issues/1011)) ##### Synchronous execution - Use the [`all`](docs/api.md#optionsall) and [`buffer: false`](docs/api.md#optionsbuffer) options with [`execaSync()`](docs/api.md#execasyncfile-arguments-options), as opposed to only [`execa()`](docs/api.md#execafile-arguments-options). ([#&#8203;953](https://togithub.com/sindresorhus/execa/issues/953), [#&#8203;956](https://togithub.com/sindresorhus/execa/issues/956)) - Added the [`$.s`](docs/api.md#file-arguments-options) alias for [`$.sync`](docs/api.md#file-arguments-options). ([#&#8203;594](https://togithub.com/sindresorhus/execa/issues/594)) ##### Inter-process communication - Use the [`ipc: true`](docs/api.md#optionsipc) option, as [opposed to the more verbose](docs/ipc.md#exchanging-messages) [`stdio: ['pipe', 'pipe', 'pipe', 'ipc']`](docs/api.md#optionsstdio) option. ([#&#8203;794](https://togithub.com/sindresorhus/execa/issues/794)) ##### Input validation - Improved the validation of the [`input`](docs/api.md#optionsinput), [`timeout`](docs/api.md#optionstimeout), [`cwd`](docs/api.md#optionscwd), [`detached`](docs/api.md#optionsdetached), [`cancelSignal`](docs/api.md#optionscancelsignal) and [`encoding`](docs/api.md#optionsencoding) options. ([#&#8203;668](https://togithub.com/sindresorhus/execa/issues/668), [#&#8203;715](https://togithub.com/sindresorhus/execa/issues/715), [#&#8203;803](https://togithub.com/sindresorhus/execa/issues/803), [#&#8203;928](https://togithub.com/sindresorhus/execa/issues/928), [#&#8203;940](https://togithub.com/sindresorhus/execa/issues/940)) - Improved the validation of the arguments passed to [`execa()`](docs/api.md#execafile-arguments-options) and the [other exported methods](docs/api.md#methods). ([#&#8203;838](https://togithub.com/sindresorhus/execa/issues/838), [#&#8203;873](https://togithub.com/sindresorhus/execa/issues/873), [#&#8203;899](https://togithub.com/sindresorhus/execa/issues/899)) - Improved the validation of signals passed to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) and to the [`killSignal`](docs/api.md#optionskillsignal) option. ([#&#8203;1025](https://togithub.com/sindresorhus/execa/issues/1025)) #### Bug fixes - Fixed passing `undefined` values as [options](docs/api.md#options). This now uses the option's default value. ([#&#8203;712](https://togithub.com/sindresorhus/execa/issues/712)) - Fixed the process crashing when the [`inputFile`](docs/api.md#optionsinputfile) option points to a missing file. ([#&#8203;609](https://togithub.com/sindresorhus/execa/issues/609)) - Fixed the process crashing when the [`buffer`](docs/api.md#optionsbuffer) option is `false` and [`subprocess.stdout`](docs/api.md#subprocessstdout) [errors](https://nodejs.org/api/stream.html#event-error\_1). ([#&#8203;729](https://togithub.com/sindresorhus/execa/issues/729)) - Fixed the process crashing when passing [`'overlapped'`](docs/windows.md#asynchronous-io) to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option with [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#&#8203;949](https://togithub.com/sindresorhus/execa/issues/949)) - Fixed the process crashing when multiple [`'error'`](https://nodejs.org/api/child_process.html#event-error) events are emitted on the subprocess. ([#&#8203;790](https://togithub.com/sindresorhus/execa/issues/790)) - Fixed the [`reject: false`](docs/api.md#optionsreject) option not being used when the subprocess [fails to spawn](docs/errors.md#failure-reason). ([#&#8203;734](https://togithub.com/sindresorhus/execa/issues/734)) - Fixed [some inaccuracies](docs/errors.md#failure-reason) with [`error.isTerminated`](docs/api.md#erroristerminated). ([#&#8203;625](https://togithub.com/sindresorhus/execa/issues/625), [#&#8203;719](https://togithub.com/sindresorhus/execa/issues/719)) - It is now `true` when the subprocess fails due to the [`timeout`](docs/api.md#optionstimeout) option. - It is now `true` when calling [`process.kill(subprocess.pid)`](https://nodejs.org/api/process.html#processkillpid-signal), except on Windows. - It is now `false` when using [non-terminating signals](https://nodejs.org/api/child_process.html#subprocesskillsignal) such as `subprocess.kill(0)`. - Fixed missing [`error.signal`](docs/api.md#errorsignal) and [`error.signalDescription`](docs/api.md#errorsignaldescription) when the subprocess [is terminated](docs/termination.md#canceling) by the [`cancelSignal`](docs/api.md#optionscancelsignal) option. ([#&#8203;724](https://togithub.com/sindresorhus/execa/issues/724)) - Fixed a situation where the [error](docs/api.md#execaerror) returned by an [`execa()`](docs/api.md#execafile-arguments-options) call might be modified by another `execa()` call. ([#&#8203;796](https://togithub.com/sindresorhus/execa/issues/796), [#&#8203;806](https://togithub.com/sindresorhus/execa/issues/806), [#&#8203;911](https://togithub.com/sindresorhus/execa/issues/911)) - Fixed the [`verbose`](docs/api.md#optionsverbose) option [printing the command](docs/debugging.md#short-mode) in the wrong order. ([#&#8203;600](https://togithub.com/sindresorhus/execa/issues/600)) - Fixed using both the [`maxBuffer`](docs/api.md#optionsmaxbuffer) and [`encoding`](docs/api.md#optionsencoding) options. For example, when using [`encoding: 'hex'`](docs/binary.md#encoding), `maxBuffer` will now be measured in hexadecimal characters. Also, [`error.stdout`](docs/api.md#resultstdout), [`error.stderr`](docs/api.md#resultstderr) and [`error.all`](docs/api.md#resultall) were previously not applying the `maxBuffer` option. ([#&#8203;652](https://togithub.com/sindresorhus/execa/issues/652), [#&#8203;696](https://togithub.com/sindresorhus/execa/issues/696)) - Fixed the [`maxBuffer`](docs/api.md#optionsmaxbuffer) option [not truncating](docs/output.md#big-output) [`result.stdout`](docs/api.md#resultstdout) and [`result.stderr`](docs/api.md#resultstderr) when using [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#&#8203;960](https://togithub.com/sindresorhus/execa/issues/960)) - Fixed empty output when using the [`buffer: true`](docs/api.md#optionsbuffer) option (its default value) and [iterating](https://nodejs.org/api/stream.html#readablesymbolasynciterator) over [`subprocess.stdout`](docs/api.md#subprocessstdout) or [`subprocess.stderr`](docs/api.md#subprocessstderr). ([#&#8203;908](https://togithub.com/sindresorhus/execa/issues/908)) - Fixed [`subprocess.all`](docs/api.md#subprocessall) stream incorrectly being in [object mode](https://nodejs.org/api/stream.html#object-mode). ([#&#8203;717](https://togithub.com/sindresorhus/execa/issues/717)) - Ensured [`subprocess.stdout`](docs/api.md#subprocessstdout) and [`subprocess.stderr`](docs/api.md#subprocessstderr) are properly [flushed](https://nodejs.org/api/stream.html#buffering) when the subprocess fails. ([#&#8203;647](https://togithub.com/sindresorhus/execa/issues/647)) - Fixed a race condition leading to random behavior with the [`timeout`](docs/api.md#optionstimeout) option. ([#&#8203;727](https://togithub.com/sindresorhus/execa/issues/727)) #### Types (breaking changes) - Renamed `CommonOptions` type to [`Options`](types/arguments/options.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncOptions`](types/arguments/options.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#&#8203;678](https://togithub.com/sindresorhus/execa/issues/678), [#&#8203;682](https://togithub.com/sindresorhus/execa/issues/682)) ```diff import type {Options} from 'execa'; - const options: CommonOptions = {timeout: 1000}; + const options: Options = {timeout: 1000}; ``` - Renamed `NodeOptions` type to [`Options`](types/arguments/options.d.ts). ([#&#8203;804](https://togithub.com/sindresorhus/execa/issues/804)) ```diff import type {Options} from 'execa'; - const options: NodeOptions = {nodeOptions: ['--no-warnings']}; + const options: Options = {nodeOptions: ['--no-warnings']}; ``` - Renamed `KillOptions` type to [`Options`](types/arguments/options.d.ts). ([#&#8203;714](https://togithub.com/sindresorhus/execa/issues/714)) ```diff import type {Options} from 'execa'; - const options: KillOptions = {forceKillAfterTimeout: 1000}; + const options: Options = {forceKillAfterDelay: 1000}; ``` - Removed generic parameters from the [`Options`](types/arguments/options.d.ts) and [`SyncOptions`](types/arguments/options.d.ts) types. ([#&#8203;681](https://togithub.com/sindresorhus/execa/issues/681)) ```diff import type {Options} from 'execa'; - const options: Options<'utf8'> = {encoding: 'utf8'}; + const options: Options = {encoding: 'utf8'}; ``` - Renamed `ExecaChildProcess` type to [`ResultPromise`](types/subprocess/subprocess.d.ts). This is the type of [`execa()`](docs/api.md#execafile-arguments-options)'s [return value](docs/api.md#return-value), which is both a [`Promise<Result>`](docs/api.md#result) and a [`Subprocess`](docs/api.md#subprocess). ([#&#8203;897](https://togithub.com/sindresorhus/execa/issues/897), [#&#8203;1007](https://togithub.com/sindresorhus/execa/issues/1007), [#&#8203;1009](https://togithub.com/sindresorhus/execa/issues/1009)) ```diff import type {ResultPromise, Result} from 'execa'; - const promiseOrSubprocess: ExecaChildProcess = execa('node', ['file.js']); + const promiseOrSubprocess: ResultPromise = execa('node', ['file.js']); const result: Result = await promiseOrSubprocess; promiseOrSubprocess.kill(); ``` - Renamed `ExecaChildPromise` type to [`Subprocess`](types/subprocess/subprocess.d.ts). This is the type of the [subprocess instance](docs/api.md#subprocess). ([#&#8203;897](https://togithub.com/sindresorhus/execa/issues/897), [#&#8203;1007](https://togithub.com/sindresorhus/execa/issues/1007), [#&#8203;1009](https://togithub.com/sindresorhus/execa/issues/1009)) ```diff import type {Subprocess} from 'execa'; - const subprocess: ExecaChildPromise = execa('node', ['file.js']); + const subprocess: Subprocess = execa('node', ['file.js']); subprocess.kill(); ``` - Renamed `ExecaReturnBase`, `ExecaReturnValue` and `ExecaSyncReturnValue` type to [`Result`](types/return/result.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncResult`](types/return/result.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#&#8203;897](https://togithub.com/sindresorhus/execa/issues/897), [#&#8203;1009](https://togithub.com/sindresorhus/execa/issues/1009)) ```diff import type {Result, SyncResult} from 'execa'; - const result: ExecaReturnBase = await execa('node', ['file.js']); + const result: Result = await execa('node', ['file.js']); - const result: ExecaReturnValue = await execa('node', ['file.js']); + const result: Result = await execa('node', ['file.js']); - const result: ExecaSyncReturnValue = execaSync('node', ['file.js']); + const result: SyncResult = execaSync('node', ['file.js']); ``` - Renamed the type of the [`stdin`](docs/api.md#optionsstdin) option from `StdioOption` to [`StdinOption`](types/stdio/type.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`StdinSyncOption`](types/stdio/type.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#&#8203;942](https://togithub.com/sindresorhus/execa/issues/942), [#&#8203;1008](https://togithub.com/sindresorhus/execa/issues/1008), [#&#8203;1012](https://togithub.com/sindresorhus/execa/issues/1012)) ```diff import {execa, type StdinOption} from 'execa'; - const stdin: StdioOption = 'inherit'; + const stdin: StdinOption = 'inherit'; await execa('node', ['file.js'], {stdin}); ``` - Renamed the type of the [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) options from `StdioOption` to [`StdoutStderrOption`](types/stdio/type.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`StdoutStderrSyncOption`](types/stdio/type.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#&#8203;942](https://togithub.com/sindresorhus/execa/issues/942), [#&#8203;1008](https://togithub.com/sindresorhus/execa/issues/1008), [#&#8203;1012](https://togithub.com/sindresorhus/execa/issues/1012)) ```diff import {execa, type StdoutStderrOption} from 'execa'; - const stdout: StdioOption = 'inherit'; + const stdout: StdoutStderrOption = 'inherit'; - const stderr: StdioOption = 'inherit'; + const stderr: StdoutStderrOption = 'inherit'; await execa('node', ['file.js'], {stdout, stderr}); ``` - Renamed the type of the [`stdio`](docs/api.md#optionsstdio) option from `StdioOption[]` to [`Options['stdio']`](types/arguments/options.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncOptions['stdio']`](types/arguments/options.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#&#8203;942](https://togithub.com/sindresorhus/execa/issues/942), [#&#8203;1008](https://togithub.com/sindresorhus/execa/issues/1008)) ```diff import {execa, type Options} from 'execa'; - const stdio: readonly StdioOption[] = ['inherit', 'pipe', 'pipe'] as const; + const stdio: Options['stdio'] = ['inherit', 'pipe', 'pipe'] as const; await execa('node', ['file.js'], {stdio}); ``` - The optional generic parameter passed to the [`Result`](types/return/result.d.ts), [`SyncResult`](types/return/result.d.ts), [`ExecaError`](types/return/final-error.d.ts), [`ExecaSyncError`](types/return/final-error.d.ts), [`ResultPromise`](types/subprocess/subprocess.d.ts) and [`Subprocess`](types/subprocess/subprocess.d.ts) types is now an [`Options`](types/arguments/options.d.ts) type. ([#&#8203;681](https://togithub.com/sindresorhus/execa/issues/681)) ```diff import type {Result} from 'execa'; - const result: ExecaReturnValue<Buffer> = await execa('node', ['file.js'], {encoding: 'buffer'}); + const result: Result<{encoding: 'buffer'}> = await execa('node', ['file.js'], {encoding: 'buffer'}); // Or even better, since it is inferred: + const result: Result = await execa('node', ['file.js'], {encoding: 'buffer'}); ``` #### Types (improvements) - Stricter types for the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout), [`stderr`](docs/api.md#optionsstderr) and [`stdio`](docs/api.md#optionsstdio) options. ([#&#8203;634](https://togithub.com/sindresorhus/execa/issues/634), [#&#8203;943](https://togithub.com/sindresorhus/execa/issues/943), [#&#8203;952](https://togithub.com/sindresorhus/execa/issues/952)) - Stricter types for [`result.stdout`](docs/api.md#resultstdout), [`result.stderr`](docs/api.md#resultstderr), [`result.all`](docs/api.md#resultall), [`subprocess.stdout`](docs/api.md#subprocessstdout), [`subprocess.stderr`](docs/api.md#subprocessstderr) and [`subprocess.all`](docs/api.md#subprocessall). ([#&#8203;681](https://togithub.com/sindresorhus/execa/issues/681), [#&#8203;684](https://togithub.com/sindresorhus/execa/issues/684), [#&#8203;687](https://togithub.com/sindresorhus/execa/issues/687), [#&#8203;689](https://togithub.com/sindresorhus/execa/issues/689), [#&#8203;833](https://togithub.com/sindresorhus/execa/issues/833)) - Stricter types for the [synchronous methods](docs/execution.md#synchronous-execution) like [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#&#8203;678](https://togithub.com/sindresorhus/execa/issues/678), [#&#8203;939](https://togithub.com/sindresorhus/execa/issues/939)) - Stricter types for the [`reject`](docs/api.md#optionsreject) option. ([#&#8203;688](https://togithub.com/sindresorhus/execa/issues/688)) - Stricter types for [`error.signal`](docs/api.md#errorsignal) and the [`killSignal`](docs/api.md#optionskillsignal) option. ([#&#8203;1025](https://togithub.com/sindresorhus/execa/issues/1025)) - Fixed the type of [`error.exitCode`](docs/api.md#errorexitcode), since that field is sometimes `undefined`. ([#&#8203;680](https://togithub.com/sindresorhus/execa/issues/680)) - Refactored and improved the types. (by [@&#8203;koshic](https://togithub.com/koshic)) ([#&#8203;583](https://togithub.com/sindresorhus/execa/issues/583)) #### Documentation - Added [user guides](readme.md#documentation) to let you explore each feature with many examples. ([#&#8203;989](https://togithub.com/sindresorhus/execa/issues/989), [#&#8203;996](https://togithub.com/sindresorhus/execa/issues/996), [#&#8203;1015](https://togithub.com/sindresorhus/execa/issues/1015), [#&#8203;1022](https://togithub.com/sindresorhus/execa/issues/1022), [#&#8203;1026](https://togithub.com/sindresorhus/execa/issues/1026)) - Improved the [documentation](readme.md#documentation) and fixed inaccuracies. ([#&#8203;626](https://togithub.com/sindresorhus/execa/issues/626), [#&#8203;637](https://togithub.com/sindresorhus/execa/issues/637), [#&#8203;640](https://togithub.com/sindresorhus/execa/issues/640), [#&#8203;641](https://togithub.com/sindresorhus/execa/issues/641), [#&#8203;644](https://togithub.com/sindresorhus/execa/issues/644), [#&#8203;669](https://togithub.com/sindresorhus/execa/issues/669), [#&#8203;680](https://togithub.com/sindresorhus/execa/issues/680), [#&#8203;710](https://togithub.com/sindresorhus/execa/issues/710), [#&#8203;759](https://togithub.com/sindresorhus/execa/issues/759), [#&#8203;800](https://togithub.com/sindresorhus/execa/issues/800), [#&#8203;801](https://togithub.com/sindresorhus/execa/issues/801), [#&#8203;802](https://togithub.com/sindresorhus/execa/issues/802), [#&#8203;860](https://togithub.com/sindresorhus/execa/issues/860), [#&#8203;870](https://togithub.com/sindresorhus/execa/issues/870), [#&#8203;876](https://togithub.com/sindresorhus/execa/issues/876), [#&#8203;888](https://togithub.com/sindresorhus/execa/issues/888), [#&#8203;907](https://togithub.com/sindresorhus/execa/issues/907), [#&#8203;921](https://togithub.com/sindresorhus/execa/issues/921), [#&#8203;935](https://togithub.com/sindresorhus/execa/issues/935), [#&#8203;967](https://togithub.com/sindresorhus/execa/issues/967), [#&#8203;968](https://togithub.com/sindresorhus/execa/issues/968), [#&#8203;994](https://togithub.com/sindresorhus/execa/issues/994), [#&#8203;998](https://togithub.com/sindresorhus/execa/issues/998), [#&#8203;999](https://togithub.com/sindresorhus/execa/issues/999), [#&#8203;1000](https://togithub.com/sindresorhus/execa/issues/1000), [#&#8203;1003](https://togithub.com/sindresorhus/execa/issues/1003), [#&#8203;1005](https://togithub.com/sindresorhus/execa/issues/1005), [#&#8203;1006](https://togithub.com/sindresorhus/execa/issues/1006), [#&#8203;1010](https://togithub.com/sindresorhus/execa/issues/1010)) - Fixed the examples for the [Script interface](docs/bash.md). (by [@&#8203;am0o0](https://togithub.com/am0o0)) ([#&#8203;575](https://togithub.com/sindresorhus/execa/issues/575)) - Corrected some English grammar mistakes. (by [@&#8203;codesmith-emmy](https://togithub.com/codesmith-emmy)) ([#&#8203;731](https://togithub.com/sindresorhus/execa/issues/731)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/JoshuaKGoldberg/create-typescript-app). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent c3f09bc commit 4092266

File tree

2 files changed

+74
-3
lines changed

2 files changed

+74
-3
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"@clack/prompts": "^0.7.0",
4545
"all-contributors-for-repository": "^0.2.1",
4646
"chalk": "^5.3.0",
47-
"execa": "^8.0.1",
47+
"execa": "^9.0.0",
4848
"git-remote-origin-url": "^4.0.0",
4949
"git-url-parse": "^14.0.0",
5050
"js-yaml": "^4.1.0",

pnpm-lock.yaml

+73-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)