Bumps the development-dependencies group with 4 updates: [ava](https://github.com/avajs/ava), [esbuild](https://github.com/evanw/esbuild), [open-cli](https://github.com/sindresorhus/open-cli) and [undici](https://github.com/nodejs/undici). Updates `ava` from 5.3.1 to 6.0.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/avajs/ava/releases">ava's releases</a>.</em></p> <blockquote> <h2>v6.0.1</h2> <h2>What's Changed</h2> <ul> <li>Ensure watch mode works outside of its integration tests by <a href="https://github.com/novemberborn"><code>@novemberborn</code></a> in <a href="https://redirect.github.com/avajs/ava/pull/3273">avajs/ava#3273</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/avajs/ava/compare/v6.0.0...v6.0.1">https://github.com/avajs/ava/compare/v6.0.0...v6.0.1</a></p> <h2>v6.0.0</h2> <h2>Breaking Changes</h2> <ul> <li> <p>AVA now requires Node.js versions 18.18, 20.8 or 21. Versions 14 and 16 are no longer supported. <a href="https://redirect.github.com/avajs/ava/issues/3251">#3251</a> <a href="https://redirect.github.com/avajs/ava/issues/3216">#3216</a></p> </li> <li> <p>When tests finish, worker threads or child processes are no longer exited through <code>proces.exit()</code>. If your test file does not exit on its own, the test run will time out. <a href="https://redirect.github.com/avajs/ava/issues/3260">#3260</a></p> </li> <li> <p>Changes to watch mode <a href="https://redirect.github.com/avajs/ava/issues/3218">#3218</a>:</p> <ul> <li>Watch mode can no longer be started via the <code>ava.config.*</code> or <code>package.json</code> configuration.</li> <li>The <code>ignoredByWatcher</code> configuration has moved to the <code>watchMode</code> object, under the <code>ignoreChanges</code> key.</li> <li>Watch mode now uses the built-in <a href="https://nodejs.org/api/fs.html#fswatchfilename-options-listener"><code>fs.watch()</code></a> in recursive mode. This is supported on Linux in Node.js 20 or newer, and MacOS and Windows in Node.js 18 as well. There are <a href="https://nodejs.org/api/fs.html#caveats">caveats</a> to keep in mind.</li> </ul> </li> <li> <p>Failed assertions now throw, meaning that any subsequent code is not executed. This also impacts the type definitions. <a href="https://redirect.github.com/avajs/ava/issues/3246">#3246</a></p> </li> <li> <p><a href="https://nodejs.org/api/util.html#utiltypesisnativeerrorvalue">Only native errors</a> are now considered errors by the <code>t.throws()</code> and <code>t.throwsAsync()</code> assertions. <a href="Object.create(https://github.com/avajs/ava/blob/HEAD/Error.prototype)"><code>Object.create(https://github.com/avajs/ava/blob/HEAD/Error.prototype)</code> is <strong>not</strong> a native error</a>. <a href="https://redirect.github.com/avajs/ava/issues/3229">#3229</a></p> </li> <li> <p>Changes to modules loaded through the <code>require</code> configuration <a href="https://redirect.github.com/avajs/ava/issues/3184">#3184</a>:</p> <ul> <li>If such modules export a default function, this function is now invoked.</li> <li>Local files are loaded through <code>@ava/typescript</code> if necessary.</li> </ul> </li> </ul> <h2>Improvements</h2> <h3>Rewritten watcher</h3> <p>The watcher has been rewritten. It’s now built on <a href="https://nodejs.org/api/fs.html#fswatchfilename-options-listener"><code>fs.watch()</code></a> in recursive mode.</p> <p><a href="https://github.com/vercel/nft"><code>@vercel/nft</code></a> is used to perform static dependency analysis, supporting ESM and CJS imports for JavaScript & TypeScript source files. This is a huge improvement over the previous runtime tracking of CJS imports, which did not support ESM.</p> <p>Integration with <a href="https://github.com/avajs/typescript"><code>@ava/typescript</code></a> has been improved. The watcher can now detect a change to a TypeScript source file, then wait for the corresponding build output to change before re-running tests.</p> <p>The ignoredByWatcher configuration has moved to the watchMode object, under the ignoreChanges key.</p> <p>See <a href="https://redirect.github.com/avajs/ava/issues/3218">#3218</a> and <a href="https://redirect.github.com/avajs/ava/issues/3257">#3257</a>.</p> <h3>Failed assertions now throw</h3> <p>Assertions now throw a <code>TestFailure</code> error when they fail. This error is not exported or documented and should not be used or thrown manually. You cannot catch this error in order to recover from a failure, use <code>t.try()</code> instead.</p> <p>All assertions except for <code>t.throws()</code> and <code>t.throwsAsync()</code> now return <code>true</code> when they pass. This is useful for some of the assertions in TypeScript where they can be used as a type guard.</p> <p>Committing a failed <code>t.try()</code> result now also throws.</p> <p>See <a href="https://redirect.github.com/avajs/ava/issues/3246">#3246</a>.</p> <h3><code>t.throws()</code> and <code>t.throwsAsync()</code> can now expect any error</h3> <p>By default, the thrown error (or rejection reason) must be a native error. You can change the assertion to expect any kind of error by setting <code>any: true</code> in the expectation object:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/avajs/ava/commit/5975b602b771e0dc02382d24b65c5561bd5fc7ee"><code>5975b60</code></a> 6.0.1</li> <li><a href="https://github.com/avajs/ava/commit/32f282fc2163f9088803995536c2b461594e0d66"><code>32f282f</code></a> Ensure watch mode works outside of its integration tests</li> <li><a href="https://github.com/avajs/ava/commit/cf7a2886bf2717cbb599d195279501be703998de"><code>cf7a288</code></a> 6.0.0</li> <li><a href="https://github.com/avajs/ava/commit/af5684dff58a79da862fa57fad0e946985f730a2"><code>af5684d</code></a> Don't force-exit after tests have completed</li> <li><a href="https://github.com/avajs/ava/commit/88e433376a03e70ab5f9f3e7ed081f35708c99de"><code>88e4333</code></a> Update dependencies & other minor tweaks</li> <li><a href="https://github.com/avajs/ava/commit/cac1d1fe643865b31e42913988ca09f3d2017913"><code>cac1d1f</code></a> Tweak README</li> <li><a href="https://github.com/avajs/ava/commit/0492d32863cda8aac032a45a3c29b56b47ba3b63"><code>0492d32</code></a> Fix external assertions tests for Node.js 21</li> <li><a href="https://github.com/avajs/ava/commit/adbfcde981df1563a9c3ba7feb28516d00821470"><code>adbfcde</code></a> Experimentally expose internal events for custom reporters</li> <li><a href="https://github.com/avajs/ava/commit/6790d50202cded442e80b1bd4316ec62ea852586"><code>6790d50</code></a> Update memoize dependency</li> <li><a href="https://github.com/avajs/ava/commit/e07179bf4a238d5dd258e94f51fe92afe9dff08b"><code>e07179b</code></a> Remove ability to select AVA 5 watcher</li> <li>Additional commits viewable in <a href="https://github.com/avajs/ava/compare/v5.3.1...v6.0.1">compare view</a></li> </ul> </details> <br /> Updates `esbuild` from 0.19.8 to 0.19.11 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/releases">esbuild's releases</a>.</em></p> <blockquote> <h2>v0.19.11</h2> <ul> <li> <p>Fix TypeScript-specific class transform edge case (<a href="https://redirect.github.com/evanw/esbuild/issues/3559">#3559</a>)</p> <p>The previous release introduced an optimization that avoided transforming <code>super()</code> in the class constructor for TypeScript code compiled with <code>useDefineForClassFields</code> set to <code>false</code> if all class instance fields have no initializers. The rationale was that in this case, all class instance fields are omitted in the output so no changes to the constructor are needed. However, if all of this is the case <em>and</em> there are <code>#private</code> instance fields with initializers, those private instance field initializers were still being moved into the constructor. This was problematic because they were being inserted before the call to <code>super()</code> (since <code>super()</code> is now no longer transformed in that case). This release introduces an additional optimization that avoids moving the private instance field initializers into the constructor in this edge case, which generates smaller code, matches the TypeScript compiler's output more closely, and avoids this bug:</p> <pre lang="ts"><code>// Original code class Foo extends Bar { #private = 1; public: any; constructor() { super(); } } <p>// Old output (with esbuild v0.19.9) class Foo extends Bar { constructor() { super(); this.#private = 1; } #private; }</p> <p>// Old output (with esbuild v0.19.10) class Foo extends Bar { constructor() { this.#private = 1; super(); } #private; }</p> <p>// New output class Foo extends Bar { #private = 1; constructor() { super(); } } </code></pre></p> </li> <li> <p>Minifier: allow reording a primitive past a side-effect (<a href="https://redirect.github.com/evanw/esbuild/issues/3568">#3568</a>)</p> <p>The minifier previously allowed reordering a side-effect past a primitive, but didn't handle the case of reordering a primitive past a side-effect. This additional case is now handled:</p> <pre lang="js"><code>// Original code function f() { let x = false; </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/evanw/esbuild/blob/main/CHANGELOG.md">esbuild's changelog</a>.</em></p> <blockquote> <h2>0.19.11</h2> <ul> <li> <p>Fix TypeScript-specific class transform edge case (<a href="https://redirect.github.com/evanw/esbuild/issues/3559">#3559</a>)</p> <p>The previous release introduced an optimization that avoided transforming <code>super()</code> in the class constructor for TypeScript code compiled with <code>useDefineForClassFields</code> set to <code>false</code> if all class instance fields have no initializers. The rationale was that in this case, all class instance fields are omitted in the output so no changes to the constructor are needed. However, if all of this is the case <em>and</em> there are <code>#private</code> instance fields with initializers, those private instance field initializers were still being moved into the constructor. This was problematic because they were being inserted before the call to <code>super()</code> (since <code>super()</code> is now no longer transformed in that case). This release introduces an additional optimization that avoids moving the private instance field initializers into the constructor in this edge case, which generates smaller code, matches the TypeScript compiler's output more closely, and avoids this bug:</p> <pre lang="ts"><code>// Original code class Foo extends Bar { #private = 1; public: any; constructor() { super(); } } <p>// Old output (with esbuild v0.19.9) class Foo extends Bar { constructor() { super(); this.#private = 1; } #private; }</p> <p>// Old output (with esbuild v0.19.10) class Foo extends Bar { constructor() { this.#private = 1; super(); } #private; }</p> <p>// New output class Foo extends Bar { #private = 1; constructor() { super(); } } </code></pre></p> </li> <li> <p>Minifier: allow reording a primitive past a side-effect (<a href="https://redirect.github.com/evanw/esbuild/issues/3568">#3568</a>)</p> <p>The minifier previously allowed reordering a side-effect past a primitive, but didn't handle the case of reordering a primitive past a side-effect. This additional case is now handled:</p> <pre lang="js"><code>// Original code function f() { </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/evanw/esbuild/commit/6ee82255bdfdffef2de60827e9d35a425a7cbff6"><code>6ee8225</code></a> publish 0.19.11 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/f8ae3af32f698e0be5c159a4ab5d77324d3f44d7"><code>f8ae3af</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3561">#3561</a>: treeshaking of known <code>Symbol</code> instances</li> <li><a href="https://github.com/evanw/esbuild/commit/0811058e16e1416547ba9abbaf182916eaf259f5"><code>0811058</code></a> switch define data to flags</li> <li><a href="https://github.com/evanw/esbuild/commit/f5f8ff895c4665b661ac6a49940e7bb7f012603b"><code>f5f8ff8</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3568">#3568</a>: can reorder primitive past side-effect</li> <li><a href="https://github.com/evanw/esbuild/commit/914f6080c77cfe32a54888caa51ca6ea13873ce9"><code>914f608</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3558">#3558</a>: put the <code>stop()</code> api call back</li> <li><a href="https://github.com/evanw/esbuild/commit/2aa166b623a0db059409e7ccf02ebc084fcb3abd"><code>2aa166b</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3559">#3559</a>: fix recent class transform regression</li> <li><a href="https://github.com/evanw/esbuild/commit/55e1127a49db0c26f1abd97f1b180bbc728aa95a"><code>55e1127</code></a> publish 0.19.10 to npm</li> <li><a href="https://github.com/evanw/esbuild/commit/d968af29c3e11b0de0776c0648548d8e298afc02"><code>d968af2</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3511">#3511</a>: <code>@__NO_SIDE_EFFECTS__</code> with templates</li> <li><a href="https://github.com/evanw/esbuild/commit/00c4ebeb91a576dcf710b36ca8927a99efff1d37"><code>00c4ebe</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3546">#3546</a>: don't transform <code>require</code> glob imports</li> <li><a href="https://github.com/evanw/esbuild/commit/e1b7050aa074da1a0a846a01b4a3c82857128944"><code>e1b7050</code></a> fix <a href="https://redirect.github.com/evanw/esbuild/issues/3319">#3319</a>: missing symbol usage in glob transform</li> <li>Additional commits viewable in <a href="https://github.com/evanw/esbuild/compare/v0.19.8...v0.19.11">compare view</a></li> </ul> </details> <br /> Updates `open-cli` from 7.2.0 to 8.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sindresorhus/open-cli/releases">open-cli's releases</a>.</em></p> <blockquote> <h2>v8.0.0</h2> <h3>Breaking</h3> <ul> <li>Require Node.js 18 bb32fe9</li> </ul> <p><a href="https://github.com/sindresorhus/open-cli/compare/v7.2.0...v8.0.0">https://github.com/sindresorhus/open-cli/compare/v7.2.0...v8.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sindresorhus/open-cli/commit/9550e180641aa42fd7ceb15b7e43a568d10f806a"><code>9550e18</code></a> 8.0.0</li> <li><a href="https://github.com/sindresorhus/open-cli/commit/bb32fe985de2de228a212405f0ea4a5b8b972b84"><code>bb32fe9</code></a> Require Node.js 18</li> <li>See full diff in <a href="https://github.com/sindresorhus/open-cli/compare/v7.2.0...v8.0.0">compare view</a></li> </ul> </details> <br /> Updates `undici` from 5.28.2 to 6.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nodejs/undici/releases">undici's releases</a>.</em></p> <blockquote> <h2>v6.2.1</h2> <h2>What's Changed</h2> <ul> <li>perf: use tree by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2528">nodejs/undici#2528</a></li> <li>chore: reduce dependencies by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2533">nodejs/undici#2533</a></li> <li>Remove timers in agent.js by <a href="https://github.com/mcollina"><code>@mcollina</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2536">nodejs/undici#2536</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nodejs/undici/compare/v6.2.0...v6.2.1">https://github.com/nodejs/undici/compare/v6.2.0...v6.2.1</a></p> <h2>v6.2.0</h2> <h2>What's Changed</h2> <ul> <li>Remove FinalizationRegistry from Agent by <a href="https://github.com/mcollina"><code>@mcollina</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2530">nodejs/undici#2530</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nodejs/undici/compare/v6.1.0...v6.2.0">https://github.com/nodejs/undici/compare/v6.1.0...v6.2.0</a></p> <h2>v6.1.0</h2> <h2>What's Changed</h2> <ul> <li>fix: more sensible stack trace from dump error by <a href="https://github.com/ronag"><code>@ronag</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2503">nodejs/undici#2503</a></li> <li>refactor: remove some node compat by <a href="https://github.com/ronag"><code>@ronag</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2502">nodejs/undici#2502</a></li> <li>refactor: version cleanup by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2507">nodejs/undici#2507</a></li> <li>perf(fetch): Improve fetch of detaurl by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2479">nodejs/undici#2479</a></li> <li>feat: expose parseHeader by <a href="https://github.com/ronag"><code>@ronag</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2511">nodejs/undici#2511</a></li> <li>perf(fetch): optimize call <code>dispatch</code> by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2493">nodejs/undici#2493</a></li> <li>perf(util/parseHeaders): If the header name is buffer by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2501">nodejs/undici#2501</a></li> <li>perf: twice faster method check by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2495">nodejs/undici#2495</a></li> <li>refactor: remove Error.captureStackTrace by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2509">nodejs/undici#2509</a></li> <li>perf: Improve processHeader by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2513">nodejs/undici#2513</a></li> <li>perf: reduce <code>String#toLowerCase</code> call by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2516">nodejs/undici#2516</a></li> <li>perf: optimize consumeEnd by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2510">nodejs/undici#2510</a></li> <li>perf: reduce tst built time by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2517">nodejs/undici#2517</a></li> <li>feat: allow customization of build environment by <a href="https://github.com/khardix"><code>@khardix</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2403">nodejs/undici#2403</a></li> <li>fix: clear cache by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2519">nodejs/undici#2519</a></li> <li>feat: Add resource timing entries for connection, request and response by <a href="https://github.com/ToshB"><code>@ToshB</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2481">nodejs/undici#2481</a></li> <li>Call fg.unregister() after a dispatcher is done, adds UNDICI_NO_FG to… by <a href="https://github.com/mcollina"><code>@mcollina</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2527">nodejs/undici#2527</a></li> <li>feat: expose headerNameToString by <a href="https://github.com/tsctx"><code>@tsctx</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2525">nodejs/undici#2525</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/khardix"><code>@khardix</code></a> made their first contribution in <a href="https://redirect.github.com/nodejs/undici/pull/2403">nodejs/undici#2403</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nodejs/undici/compare/v6.0.1...v6.1.0">https://github.com/nodejs/undici/compare/v6.0.1...v6.1.0</a></p> <h2>v6.0.1</h2> <h2>What's Changed</h2> <ul> <li>fix: stream error timings by <a href="https://github.com/ronag"><code>@ronag</code></a> in <a href="https://redirect.github.com/nodejs/undici/pull/2497">nodejs/undici#2497</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nodejs/undici/compare/v6.0.0...v6.0.1">https://github.com/nodejs/undici/compare/v6.0.0...v6.0.1</a></p> <h2>v6.0.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/nodejs/undici/commit/f51f917061aec737edfe635e52db5bccc6fc0ac6"><code>f51f917</code></a> Bumped v6.2.1</li> <li><a href="https://github.com/nodejs/undici/commit/36e81319eb8920f5bccef60e172470b6dfb2734f"><code>36e8131</code></a> Remove timers in agent.js (<a href="https://redirect.github.com/nodejs/undici/issues/2536">#2536</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/5f4d435cbc0ec23d4f1d4ab65d1ef965087436a7"><code>5f4d435</code></a> chore: reduce dependencies (<a href="https://redirect.github.com/nodejs/undici/issues/2533">#2533</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/c5c6648a7d2097f9be4d1f7d06df9f158eff049d"><code>c5c6648</code></a> perf: use tree (<a href="https://redirect.github.com/nodejs/undici/issues/2528">#2528</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/0c4c4504852c71dac1a6eb8dfae0f2411b6f2fc6"><code>0c4c450</code></a> Bumped v6.2.0</li> <li><a href="https://github.com/nodejs/undici/commit/59c2f3801c2619b808313f3d8727e8defd697123"><code>59c2f38</code></a> Remove FinalizationRegistry from Agent (<a href="https://redirect.github.com/nodejs/undici/issues/2530">#2530</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/250b89af0ae27b93aaacbb885e852636e2c78ce6"><code>250b89a</code></a> Bumped v6.1.0</li> <li><a href="https://github.com/nodejs/undici/commit/38f2226718f8736bbb0d496f8b87618bcc78ddbc"><code>38f2226</code></a> feat: expose headerNameToString (<a href="https://redirect.github.com/nodejs/undici/issues/2525">#2525</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/974a85e9d423d0d3505adb39feef15434886f809"><code>974a85e</code></a> Call fg.unregister() after a dispatcher is done, adds UNDICI_NO_FG to… (<a href="https://redirect.github.com/nodejs/undici/issues/2527">#2527</a>)</li> <li><a href="https://github.com/nodejs/undici/commit/871baa74ec326518a3de3ee4591459e25617402e"><code>871baa7</code></a> feat: Add resource timing entries for connection, request and response (<a href="https://redirect.github.com/nodejs/undici/issues/2481">#2481</a>)</li> <li>Additional commits viewable in <a href="https://github.com/nodejs/undici/compare/v5.28.2...v6.2.1">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Create GitHub App Token
GitHub Action for creating a GitHub App installation access token.
Usage
In order to use this action, you need to:
- Register new GitHub App
- Store the App's ID in your repository environment variables (example:
APP_ID) - Store the App's private key in your repository secrets (example:
PRIVATE_KEY)
Create a token for the current repository
on: [issues]
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: peter-evans/create-or-update-comment@v3
with:
token: ${{ steps.app-token.outputs.token }}
issue-number: ${{ github.event.issue.number }}
body: "Hello, World!"
Use app token with actions/checkout
on: [pull_request]
jobs:
auto-format:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
# required
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
ref: ${{ github.head_ref }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- uses: creyD/prettier_action@v4.3
with:
github_token: ${{ steps.app-token.outputs.token }}
Create a token for all repositories in the current owner's installation
on: [workflow_dispatch]
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
- uses: peter-evans/create-or-update-comment@v3
with:
token: ${{ steps.app-token.outputs.token }}
issue-number: ${{ github.event.issue.number }}
body: "Hello, World!"
Create a token for multiple repositories in the current owner's installation
on: [issues]
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
repositories: "repo1,repo2"
- uses: peter-evans/create-or-update-comment@v3
with:
token: ${{ steps.app-token.outputs.token }}
issue-number: ${{ github.event.issue.number }}
body: "Hello, World!"
Create a token for all repositories in another owner's installation
on: [issues]
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
owner: another-owner
- uses: peter-evans/create-or-update-comment@v3
with:
token: ${{ steps.app-token.outputs.token }}
issue-number: ${{ github.event.issue.number }}
body: "Hello, World!"
Create tokens for multiple user or organization accounts
You can use a matrix strategy to create tokens for multiple user or organization accounts.
Note
See this documentation for information on using multiline strings in workflows.
on: [workflow_dispatch]
jobs:
set-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{steps.set.outputs.matrix }}
steps:
- id: set
run: echo 'matrix=[{"owner":"owner1"},{"owner":"owner2","repos":["repo1"]}]' >>"$GITHUB_OUTPUT"
use-matrix:
name: '@${{ matrix.owners-and-repos.owner }} installation'
needs: [set-matrix]
runs-on: ubuntu-latest
strategy:
matrix:
owners-and-repos: ${{ fromJson(needs.set-matrix.outputs.matrix) }}
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
owner: ${{ matrix.owners-and-repos.owner }}
repositories: ${{ join(matrix.owners-and-repos.repos) }}
- uses: octokit/request-action@v2.x
id: get-installation-repositories
with:
route: GET /installation/repositories
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
- run: echo "$MULTILINE_JSON_STRING"
env:
MULTILINE_JSON_STRING: ${{ steps.get-installation-repositories.outputs.data }}
Inputs
app-id
Required: GitHub App ID.
private-key
Required: GitHub App private key.
owner
Optional: GitHub App installation owner. If empty, defaults to the current repository owner.
repositories
Optional: Comma-separated list of repositories to grant access to.
Note
If
owneris set andrepositoriesis empty, access will be scoped to all repositories in the provided repository owner's installation. Ifownerandrepositoriesare empty, access will be scoped to only the current repository.
skip-token-revoke
Optional: If truthy, the token will not be revoked when the current job is complete.
Outputs
token
GitHub App installation access token.
How it works
The action creates an installation access token using the POST /app/installations/{installation_id}/access_tokens endpoint. By default,
- The token is scoped to the current repository or
repositoriesif set. - The token inherits all the installation's permissions.
- The token is set as output
tokenwhich can be used in subsequent steps. - Unless the
skip-token-revokeinput is set to a truthy value, the token is revoked in thepoststep of the action, which means it cannot be passed to another job. - The token is masked, it cannot be logged accidentally.
Note
Installation permissions can differ from the app's permissions they belong to. Installation permissions are set when an app is installed on an account. When the app adds more permissions after the installation, an account administrator will have to approve the new permissions before they are set on the installation.