-
Notifications
You must be signed in to change notification settings - Fork 2
fix: handle perm errors on bin resolver #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR enhances error resilience in binary resolution and updates related test assertions.
- Wraps filesystem checks in
isBin
with atry/catch
to suppress permission errors. - Refines path-separator logic and command/argument splitting in
ps.ts
. - Updates legacy tests to use
includes
and array destructuring for argument checks.
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
File | Description |
---|---|
src/test/legacy/test.cjs | Updated tests to use includes and destructuring for command and argument verification |
src/main/ts/ps.ts | Added error handling in isBin , combined separator checks, and refined command/argument parsing in formatOutput |
Comments suppressed due to low confidence (4)
src/main/ts/ps.ts:16
- The new
try/catch
aroundfs.existsSync
andlstatSync
guards against permission errors but isn’t covered by existing tests. Consider adding unit tests that simulate and verify this error path.
try {
src/main/ts/ps.ts:294
- [nitpick] The variable name
c
is ambiguous. Renaming it to something more descriptive likebinIndex
orboundaryIndex
would improve readability.
const c = (cmd.findIndex((_v, i) => isBin(cmd.slice(0, i).join(' '))))
src/main/ts/ps.ts:11
- The combined slash check here changes the original logic (which returned true if either separator was missing). If the intent is to detect bare filenames, use a logical OR or revert to separate checks to preserve the original behavior.
if (!f.includes('/') && !f.includes('\\')) return true
src/main/ts/ps.ts:296
- Previously, slicing with
-1
returned the last element. Nowc === -1
produces an empty array—verify this matches the intended fallback behavior for commands that aren’t found.
const args = c === -1 ? [] : cmd.slice(c)
|
||
done(); | ||
}); | ||
}); | ||
|
||
it('by command & arguments', function (done) { | ||
ps.lookup({command: '.*(node|iojs).*', arguments: 'node_process_for_test'}, function (err, list) { | ||
const [found] = list |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] A semicolon is missing at the end of this declaration; adding it would improve consistency with the surrounding code style.
const [found] = list | |
const [found] = list; |
Copilot uses AI. Check for mistakes.
This PR contains the following updates: | Package | Type | Update | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---|---|---| | | | lockFileMaintenance | All locks refreshed | | | | | | [web-tree-sitter](https://redirect.github.com/tree-sitter/tree-sitter/tree/master/lib/binding_web) ([source](https://redirect.github.com/tree-sitter/tree-sitter)) | devDependencies | patch | [`0.25.6` -> `0.25.8`](https://renovatebot.com/diffs/npm/web-tree-sitter/0.25.6/0.25.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [zx](https://google.github.io/zx/) ([source](https://redirect.github.com/google/zx)) | dependencies | minor | [`8.6.1` -> `8.7.1`](https://renovatebot.com/diffs/npm/zx/8.6.1/8.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.0.10` -> `24.0.13`](https://renovatebot.com/diffs/npm/@types%2fnode/24.0.10/24.0.13) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [esbuild](https://redirect.github.com/evanw/esbuild) | devDependencies | patch | [`0.25.5` -> `0.25.6`](https://renovatebot.com/diffs/npm/esbuild/0.25.5/0.25.6) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | packageManager | minor | [`10.12.4` -> `10.13.1`](https://renovatebot.com/diffs/npm/pnpm/10.12.4/10.13.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | dependencies | patch | [`7.0.2` -> `7.0.4`](https://renovatebot.com/diffs/npm/vite/7.0.2/7.0.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [emnapi](https://redirect.github.com/toyobayashi/emnapi) | devDependencies | patch | [`1.4.3` -> `1.4.4`](https://renovatebot.com/diffs/npm/emnapi/1.4.3/1.4.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [remeda](https://remedajs.com/) ([source](https://redirect.github.com/remeda/remeda)) | devDependencies | minor | [`2.24.0` -> `2.25.0`](https://renovatebot.com/diffs/npm/remeda/2.24.0/2.25.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [rollup](https://rollupjs.org/) ([source](https://redirect.github.com/rollup/rollup)) | devDependencies | minor | [`4.44.2` -> `4.45.0`](https://renovatebot.com/diffs/npm/rollup/4.44.2/4.45.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [zx](https://google.github.io/zx/) ([source](https://redirect.github.com/google/zx)) | devDependencies | minor | [`8.6.1` -> `8.7.1`](https://renovatebot.com/diffs/npm/zx/8.6.1/8.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | 🔧 This Pull Request updates lock files to use the latest dependency versions. --- ### Release Notes <details> <summary>tree-sitter/tree-sitter (web-tree-sitter)</summary> ### [`v0.25.8`](https://redirect.github.com/tree-sitter/tree-sitter/compare/v0.25.7...v0.25.8) [Compare Source](https://redirect.github.com/tree-sitter/tree-sitter/compare/v0.25.7...v0.25.8) ### [`v0.25.7`](https://redirect.github.com/tree-sitter/tree-sitter/compare/v0.25.6...v0.25.7) [Compare Source](https://redirect.github.com/tree-sitter/tree-sitter/compare/v0.25.6...v0.25.7) </details> <details> <summary>google/zx (zx)</summary> ### [`v8.7.1`](https://redirect.github.com/google/zx/releases/tag/8.7.1): — Pipe Whisperer [Compare Source](https://redirect.github.com/google/zx/compare/8.7.0...8.7.1) Continues [v8.7.0](https://redirect.github.com/google/zx/releases/tag/8.7.0): handles new `ps()` corner case and improves `$.kill` mechanics on Windows [#​1266](https://redirect.github.com/google/zx/issues/1266) [#​1267](https://redirect.github.com/google/zx/pull/1267) [#​1269](https://redirect.github.com/google/zx/pull/1269) [webpod/ps#14](https://redirect.github.com/webpod/ps/pull/14) ### [`v8.7.0`](https://redirect.github.com/google/zx/releases/tag/8.7.0): — Solder Savior [Compare Source](https://redirect.github.com/google/zx/compare/8.6.2...8.7.0) Important fixes for annoying flaky bugs #### kill() 🐞 We've found an interesting case [#​1262](https://redirect.github.com/google/zx/pull/1262) ```js const p = $`sleep 1000` const {pid} = p // 12345 await p.kill() ``` If we kill the process again, the result might be unexpected: ```js await ps({pid}) // {pid: 12345, ppid: 67890, command: 'another command', ...} p.kill() ``` This happens because the `pid` may be reused by the system for another process, so we've added extra assertions to prevent indeterminacy: ```js p.kill() // Error: Too late to kill the process. p.abort() // Error: Too late to abort the process. ``` #### ps() 🐛 - `ps()` uses **[wmic](https://en.wikipedia.org/wiki/Windows_Management_Instrumentation)** internally on Windows, it relies on *fragile* heuristics to parse the output. We have improved this logic to handle more format variants, but over time (in v9 maybe) we're planning to change the approach. [#​1256](https://redirect.github.com/google/zx/pull/1256) [#​1263](https://redirect.github.com/google/zx/issues/1263) [webpod/ps#12](https://redirect.github.com/webpod/ps/pull/12) [webpod/ingrid#6](https://redirect.github.com/webpod/ingrid/pull/6) ```js const [root] = await ps.lookup({ pid: process.pid }) assert.equal(root.pid, process.pid) ``` ### [`v8.6.2`](https://redirect.github.com/google/zx/releases/tag/8.6.2): — Flow Unstoppable [Compare Source](https://redirect.github.com/google/zx/compare/8.6.1...8.6.2) Fixes `$.prefix` & `$.postfix` values settings via env variables [#​1261](https://redirect.github.com/google/zx/pull/1261) [#​1260](https://redirect.github.com/google/zx/issues/1260) </details> <details> <summary>evanw/esbuild (esbuild)</summary> ### [`v0.25.6`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0256) [Compare Source](https://redirect.github.com/evanw/esbuild/compare/v0.25.5...v0.25.6) - Fix a memory leak when `cancel()` is used on a build context ([#​4231](https://redirect.github.com/evanw/esbuild/issues/4231)) Calling `rebuild()` followed by `cancel()` in rapid succession could previously leak memory. The bundler uses a producer/consumer model internally, and the resource leak was caused by the consumer being termianted while there were still remaining unreceived results from a producer. To avoid the leak, the consumer now waits for all producers to finish before terminating. - Support empty `:is()` and `:where()` syntax in CSS ([#​4232](https://redirect.github.com/evanw/esbuild/issues/4232)) Previously using these selectors with esbuild would generate a warning. That warning has been removed in this release for these cases. - Improve tree-shaking of `try` statements in dead code ([#​4224](https://redirect.github.com/evanw/esbuild/issues/4224)) With this release, esbuild will now remove certain `try` statements if esbuild considers them to be within dead code (i.e. code that is known to not ever be evaluated). For example: ```js // Original code return 'foo' try { return 'bar' } catch {} // Old output (with --minify) return"foo";try{return"bar"}catch{} // New output (with --minify) return"foo"; ``` - Consider negated bigints to have no side effects While esbuild currently considers `1`, `-1`, and `1n` to all have no side effects, it didn't previously consider `-1n` to have no side effects. This is because esbuild does constant folding with numbers but not bigints. However, it meant that unused negative bigint constants were not tree-shaken. With this release, esbuild will now consider these expressions to also be side-effect free: ```js // Original code let a = 1, b = -1, c = 1n, d = -1n // Old output (with --bundle --minify) (()=>{var n=-1n;})(); // New output (with --bundle --minify) (()=>{})(); ``` - Support a configurable delay in watch mode before rebuilding ([#​3476](https://redirect.github.com/evanw/esbuild/issues/3476), [#​4178](https://redirect.github.com/evanw/esbuild/issues/4178)) The `watch()` API now takes a `delay` option that lets you add a delay (in milliseconds) before rebuilding when a change is detected in watch mode. If you use a tool that regenerates multiple source files very slowly, this should make it more likely that esbuild's watch mode won't generate a broken intermediate build before the successful final build. This option is also available via the CLI using the `--watch-delay=` flag. This should also help avoid confusion about the `watch()` API's options argument. It was previously empty to allow for future API expansion, which caused some people to think that the documentation was missing. It's no longer empty now that the `watch()` API has an option. - Allow mixed array for `entryPoints` API option ([#​4223](https://redirect.github.com/evanw/esbuild/issues/4223)) The TypeScript type definitions now allow you to pass a mixed array of both string literals and object literals to the `entryPoints` API option, such as `['foo.js', { out: 'lib', in: 'bar.js' }]`. This was always possible to do in JavaScript but the TypeScript type definitions were previously too restrictive. - Update Go from 1.23.8 to 1.23.10 ([#​4204](https://redirect.github.com/evanw/esbuild/issues/4204), [#​4207](https://redirect.github.com/evanw/esbuild/pull/4207)) This should have no effect on existing code as this version change does not change Go's operating system support. It may remove certain false positive reports (specifically CVE-2025-4673 and CVE-2025-22874) from vulnerability scanners that only detect which version of the Go compiler esbuild uses. - Experimental support for esbuild on OpenHarmony ([#​4212](https://redirect.github.com/evanw/esbuild/pull/4212)) With this release, esbuild now publishes the [`@esbuild/openharmony-arm64`](https://www.npmjs.com/package/@​esbuild/openharmony-arm64) npm package for [OpenHarmony](https://en.wikipedia.org/wiki/OpenHarmony). It contains a WebAssembly binary instead of a native binary because Go doesn't currently support OpenHarmony. Node does support it, however, so in theory esbuild should now work on OpenHarmony through WebAssembly. This change was contributed by [@​hqzing](https://redirect.github.com/hqzing). </details> <details> <summary>pnpm/pnpm (pnpm)</summary> ### [`v10.13.1`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10131) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.13.0...v10.13.1) ##### Patch Changes - Run user defined pnpmfiles after pnpmfiles of plugins. ### [`v10.13.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10130) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.12.4...v10.13.0) ##### Minor Changes - Added the possibility to load multiple pnpmfiles. The `pnpmfile` setting can now accept a list of pnpmfile locations [#​9702](https://redirect.github.com/pnpm/pnpm/pull/9702). - pnpm will now automatically load the `pnpmfile.cjs` file from any [config dependency](https://pnpm.io/config-dependencies) named `@pnpm/plugin-*` or `pnpm-plugin-*` [#​9729](https://redirect.github.com/pnpm/pnpm/pull/9729). The order in which config dependencies are initialized should not matter — they are initialized in alphabetical order. If a specific order is needed, the paths to the `pnpmfile.cjs` files in the config dependencies can be explicitly listed using the `pnpmfile` setting in `pnpm-workspace.yaml`. ##### Patch Changes - When patching dependencies installed via `pkg.pr.new`, treat them as Git tarball URLs [#​9694](https://redirect.github.com/pnpm/pnpm/pull/9694). - Prevent conflicts between local projects' config and the global config in `dangerouslyAllowAllBuilds`, `onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, and `neverBuiltDependencies` [#​9628](https://redirect.github.com/pnpm/pnpm/issues/9628). - Sort keys in `pnpm-workspace.yaml` with deep [#​9701](https://redirect.github.com/pnpm/pnpm/pull/9701). - The `pnpm rebuild` command should not add pkgs included in `ignoredBuiltDependencies` to `ignoredBuilds` in `node_modules/.modules.yaml` [#​9338](https://redirect.github.com/pnpm/pnpm/issues/9338). - Replaced `shell-quote` with `shlex` for quoting command arguments [#​9381](https://redirect.github.com/pnpm/pnpm/issues/9381). </details> <details> <summary>vitejs/vite (vite)</summary> ### [`v7.0.4`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-704-2025-07-10-small) [Compare Source](https://redirect.github.com/vitejs/vite/compare/v7.0.3...v7.0.4) ##### Bug Fixes - allow resolving bare specifiers to relative paths for entries ([#​20379](https://redirect.github.com/vitejs/vite/issues/20379)) ([324669c](https://redirect.github.com/vitejs/vite/commit/324669c2d84966a822b1b2c134c9830a90bed271)) ##### Build System - remove `@oxc-project/runtime` devDep ([#​20389](https://redirect.github.com/vitejs/vite/issues/20389)) ([5e29602](https://redirect.github.com/vitejs/vite/commit/5e29602f6fe4bf28f6e7c869a214dee6957f855c)) ### [`v7.0.3`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-703-2025-07-08-small) [Compare Source](https://redirect.github.com/vitejs/vite/compare/v7.0.2...v7.0.3) ##### Bug Fixes - **client:** protect against window being defined but addEv undefined ([#​20359](https://redirect.github.com/vitejs/vite/issues/20359)) ([31d1467](https://redirect.github.com/vitejs/vite/commit/31d1467cf0da1e1dca623e6df0d345b30fae0c3d)) - **define:** replace optional values ([#​20338](https://redirect.github.com/vitejs/vite/issues/20338)) ([9465ae1](https://redirect.github.com/vitejs/vite/commit/9465ae1378b456e08659a22286bee6bce8edeedc)) - **deps:** update all non-major dependencies ([#​20366](https://redirect.github.com/vitejs/vite/issues/20366)) ([43ac73d](https://redirect.github.com/vitejs/vite/commit/43ac73da27b3907c701e95e6a7d28fde659729ec)) ##### Miscellaneous Chores - **deps:** update dependency dotenv to v17 ([#​20325](https://redirect.github.com/vitejs/vite/issues/20325)) ([45040d4](https://redirect.github.com/vitejs/vite/commit/45040d48076302eeb101f8d07bbcd04758fde8a4)) - **deps:** update dependency rolldown to ^1.0.0-beta.24 ([#​20365](https://redirect.github.com/vitejs/vite/issues/20365)) ([5ab25e7](https://redirect.github.com/vitejs/vite/commit/5ab25e73a2ea2a2e2c0469350288a183dfb57030)) - use `n/prefer-node-protocol` rule ([#​20368](https://redirect.github.com/vitejs/vite/issues/20368)) ([38bb268](https://redirect.github.com/vitejs/vite/commit/38bb268cde15541321f36016e77d61eecb707298)) ##### Code Refactoring - minor changes to reduce diff between normal Vite and rolldown-vite ([#​20354](https://redirect.github.com/vitejs/vite/issues/20354)) ([2e8050e](https://redirect.github.com/vitejs/vite/commit/2e8050e4cd8835673baf07375b7db35128144222)) </details> <details> <summary>toyobayashi/emnapi (emnapi)</summary> ### [`v1.4.4`](https://redirect.github.com/toyobayashi/emnapi/compare/v1.4.3...v1.4.4) [Compare Source](https://redirect.github.com/toyobayashi/emnapi/compare/v1.4.3...v1.4.4) </details> <details> <summary>remeda/remeda (remeda)</summary> ### [`v2.25.0`](https://redirect.github.com/remeda/remeda/releases/tag/v2.25.0) [Compare Source](https://redirect.github.com/remeda/remeda/compare/v2.24.1...v2.25.0) ##### Features - **truncate:** add the string truncate function ([#​1143](https://redirect.github.com/remeda/remeda/issues/1143)) ([737b2bc](https://redirect.github.com/remeda/remeda/commit/737b2bcf597d04ffb8da0d2d1e3ca4d2b6648d57)) ### [`v2.24.1`](https://redirect.github.com/remeda/remeda/releases/tag/v2.24.1) [Compare Source](https://redirect.github.com/remeda/remeda/compare/v2.24.0...v2.24.1) ##### Bug Fixes - **setPath:** support interfaces ([#​1145](https://redirect.github.com/remeda/remeda/issues/1145)) ([0ea58e0](https://redirect.github.com/remeda/remeda/commit/0ea58e06453a846995c3ab57b1dc086f61837ea5)), closes [#​990](https://redirect.github.com/remeda/remeda/issues/990) </details> <details> <summary>rollup/rollup (rollup)</summary> ### [`v4.45.0`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4450) [Compare Source](https://redirect.github.com/rollup/rollup/compare/v4.44.2...v4.45.0) *2025-07-12* ##### Features - Improve tree-shaking when both branches of a conditional expression return the same boolean value ([#​6000](https://redirect.github.com/rollup/rollup/issues/6000)) - In environments that support both CJS and ESM, prefer the ESM build of Rollup ([#​6005](https://redirect.github.com/rollup/rollup/issues/6005)) ##### Bug Fixes - Ensure static blocks do not prevent tree-shaking if they access `this` ([#​6001](https://redirect.github.com/rollup/rollup/issues/6001)) ##### Pull Requests - [#​6000](https://redirect.github.com/rollup/rollup/pull/6000): feat: improve get literal value for conditional expression ([@​ahabhgk](https://redirect.github.com/ahabhgk), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​6001](https://redirect.github.com/rollup/rollup/pull/6001): Correct the parent scope for static blocks ([@​TrickyPi](https://redirect.github.com/TrickyPi), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​6005](https://redirect.github.com/rollup/rollup/pull/6005): fix: export field order prefer esm ([@​DylanPiercey](https://redirect.github.com/DylanPiercey)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 9am on monday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/rolldown/rolldown). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuMjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@eslint/js](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js)) | [`9.30.1` -> `9.31.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.30.1/9.31.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/) ([source](https://redirect.github.com/rollup/rollup)) | [`4.44.2` -> `4.45.1`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.44.2/4.45.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/addon-docs](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/docs) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/docs)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/@storybook%2faddon-docs/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/builder-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/builders/builder-vite)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/@storybook%2fbuilder-vite/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/vue3-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/vue3-vite)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/@storybook%2fvue3-vite/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@swc/core](https://swc.rs) ([source](https://redirect.github.com/swc-project/swc)) | [`1.12.11` -> `1.12.14`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.12.11/1.12.14) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.16.3` -> `22.16.4`](https://renovatebot.com/diffs/npm/@types%2fnode/22.16.3/22.16.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.36.0` -> `8.37.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.36.0/8.37.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [cron](https://redirect.github.com/kelektiv/node-cron) | [`4.3.1` -> `4.3.2`](https://renovatebot.com/diffs/npm/cron/4.3.1/4.3.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint)) | [`9.30.1` -> `9.31.0`](https://renovatebot.com/diffs/npm/eslint/9.30.1/9.31.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint-plugin-storybook](https://redirect.github.com/storybookjs/storybook/code/lib/eslint-plugin#readme) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/eslint-plugin-storybook/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [graphql-ws](https://the-guild.dev/graphql/ws) ([source](https://redirect.github.com/enisdenjo/graphql-ws)) | [`6.0.5` -> `6.0.6`](https://renovatebot.com/diffs/npm/graphql-ws/6.0.5/6.0.6) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [nuxt](https://nuxt.com) ([source](https://redirect.github.com/nuxt/nuxt/tree/HEAD/packages/nuxt)) | [`3.17.6` -> `3.17.7`](https://renovatebot.com/diffs/npm/nuxt/3.17.6/3.17.7) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [storybook](https://storybook.js.org) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/core)) | [`9.0.16` -> `9.0.17`](https://renovatebot.com/diffs/npm/storybook/9.0.16/9.0.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | [`8.36.0` -> `8.37.0`](https://renovatebot.com/diffs/npm/typescript-eslint/8.36.0/8.37.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [zx](https://google.github.io/zx/) ([source](https://redirect.github.com/google/zx)) | [`8.6.2` -> `8.7.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [zx](https://google.github.io/zx/) ([source](https://redirect.github.com/google/zx)) | [`8.6.2` -> `8.7.1`](https://renovatebot.com/diffs/npm/zx/8.6.2/8.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>eslint/eslint (@​eslint/js)</summary> ### [`v9.31.0`](https://redirect.github.com/eslint/eslint/compare/v9.30.1...d5054e5454a537e9ade238c768c262c6c592cbc1) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.30.1...v9.31.0) </details> <details> <summary>rollup/rollup (@​rollup/rollup-linux-x64-gnu)</summary> ### [`v4.45.1`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4451) [Compare Source](https://redirect.github.com/rollup/rollup/compare/v4.45.0...v4.45.1) *2025-07-15* ##### Bug Fixes - Resolve crash when using certain conditional expressions ([#​6009](https://redirect.github.com/rollup/rollup/issues/6009)) ##### Pull Requests - [#​6009](https://redirect.github.com/rollup/rollup/pull/6009): Add hasDeoptimizedCache flag for ConditionalExpression ([@​TrickyPi](https://redirect.github.com/TrickyPi)) ### [`v4.45.0`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4450) [Compare Source](https://redirect.github.com/rollup/rollup/compare/v4.44.2...v4.45.0) *2025-07-12* ##### Features - Improve tree-shaking when both branches of a conditional expression return the same boolean value ([#​6000](https://redirect.github.com/rollup/rollup/issues/6000)) - In environments that support both CJS and ESM, prefer the ESM build of Rollup ([#​6005](https://redirect.github.com/rollup/rollup/issues/6005)) ##### Bug Fixes - Ensure static blocks do not prevent tree-shaking if they access `this` ([#​6001](https://redirect.github.com/rollup/rollup/issues/6001)) ##### Pull Requests - [#​6000](https://redirect.github.com/rollup/rollup/pull/6000): feat: improve get literal value for conditional expression ([@​ahabhgk](https://redirect.github.com/ahabhgk), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​6001](https://redirect.github.com/rollup/rollup/pull/6001): Correct the parent scope for static blocks ([@​TrickyPi](https://redirect.github.com/TrickyPi), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​6005](https://redirect.github.com/rollup/rollup/pull/6005): fix: export field order prefer esm ([@​DylanPiercey](https://redirect.github.com/DylanPiercey)) </details> <details> <summary>storybookjs/storybook (@​storybook/addon-docs)</summary> ### [`v9.0.17`](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...06a11ce246b2e7a52d41e43420e37162c55133aa) [Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...v9.0.17) </details> <details> <summary>storybookjs/storybook (@​storybook/addon-links)</summary> ### [`v9.0.17`](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...06a11ce246b2e7a52d41e43420e37162c55133aa) [Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...v9.0.17) </details> <details> <summary>storybookjs/storybook (@​storybook/builder-vite)</summary> ### [`v9.0.17`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#9017) [Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...v9.0.17) - Addon Vitest: Fix support for plain `stories.tsx` files - [#​32041](https://redirect.github.com/storybookjs/storybook/pull/32041), thanks [@​ghengeveld](https://redirect.github.com/ghengeveld)! - Onboarding: Intent survey - [#​31944](https://redirect.github.com/storybookjs/storybook/pull/31944), thanks [@​ghengeveld](https://redirect.github.com/ghengeveld)! - UI: Fix text color for failing stories in sidebar - [#​32042](https://redirect.github.com/storybookjs/storybook/pull/32042), thanks [@​ghengeveld](https://redirect.github.com/ghengeveld)! </details> <details> <summary>swc-project/swc (@​swc/core)</summary> ### [`v1.12.14`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#11214---2025-07-14) [Compare Source](https://redirect.github.com/swc-project/swc/compare/v1.12.11...v1.12.14) ##### Bug Fixes - **(es/minifier)** Don't inline arrow when it contain `this` ([#​10825](https://redirect.github.com/swc-project/swc/issues/10825)) ([8b43bb3](https://redirect.github.com/swc-project/swc/commit/8b43bb35bce93c66ee9783c8ea132dab7939fcb5)) - **(es/parser)** Make `export` in NS to not affect file type ([#​10799](https://redirect.github.com/swc-project/swc/issues/10799)) ([ae22033](https://redirect.github.com/swc-project/swc/commit/ae22033dc4d03ba8444d87fd74f4e4a8aa86d653)) - **(es/parser)** Correctly check ambient context ([#​10802](https://redirect.github.com/swc-project/swc/issues/10802)) ([f97ea03](https://redirect.github.com/swc-project/swc/commit/f97ea03523198447f176ee956991aefb16312e7c)) ##### Features - **(es/parser)** Enable support for dynamic import with `defer` phase ([#​10845](https://redirect.github.com/swc-project/swc/issues/10845)) ([097d29d](https://redirect.github.com/swc-project/swc/commit/097d29d21cbf378c0a3ff7a3c9364ff02242306d)) - **(plugin)** Remove `bytecheck` to make Wasm plugins backward compatible ([#​10842](https://redirect.github.com/swc-project/swc/issues/10842)) ([30ad808](https://redirect.github.com/swc-project/swc/commit/30ad80809c833522f3631424e0b4efdb94455fc8)) ##### Miscellaneous Tasks - **(bindings)** Fix dependency issues ([7c57fbb](https://redirect.github.com/swc-project/swc/commit/7c57fbb103baaa236d3c040e72d5cf65bc2b7ec4)) - **(deps)** Update `class-validator` to avoid comments ([#​10819](https://redirect.github.com/swc-project/swc/issues/10819)) ([bacfa4b](https://redirect.github.com/swc-project/swc/commit/bacfa4b56d455a5c8e1392a66dd8d3c3add4f488)) - **(ide)** Enable `--workspace` for rust-analyzer check ([#​10809](https://redirect.github.com/swc-project/swc/issues/10809)) ([92647ff](https://redirect.github.com/swc-project/swc/commit/92647ff9d9f95cecfab93b6faa2f1063e3f1239b)) ##### Performance - **(es/minifier)** Use `u8` for `remaining_depth` ([#​10833](https://redirect.github.com/swc-project/swc/issues/10833)) ([ed6956a](https://redirect.github.com/swc-project/swc/commit/ed6956a46e1f0abbcfc447773c5429659fe91289)) - **(hstr)** Inline one more byte ([#​10817](https://redirect.github.com/swc-project/swc/issues/10817)) ([3886c97](https://redirect.github.com/swc-project/swc/commit/3886c9720dbf992bf2dbc6a09e416ed63833d6d7)) - **(hstr)** Remove static tag ([#​10832](https://redirect.github.com/swc-project/swc/issues/10832)) ([66ae1e8](https://redirect.github.com/swc-project/swc/commit/66ae1e8d5aa047e2ea7c2a1c46a618bfa7d6a500)) ##### Refactor - **(es/helpers)** Make inline helpers optional at compile time ([#​10808](https://redirect.github.com/swc-project/swc/issues/10808)) ([53f3881](https://redirect.github.com/swc-project/swc/commit/53f38811cc994f394d47624cf27b49e5b3163b8a)) - **(es/lexer)** Don't store buffer in lexer ([#​10830](https://redirect.github.com/swc-project/swc/issues/10830)) ([cac40f1](https://redirect.github.com/swc-project/swc/commit/cac40f135d517e9c3e1dbbe9250c8b1dbe39320b)) - **(es/lints)** Remove warnings without features ([#​10794](https://redirect.github.com/swc-project/swc/issues/10794)) ([41d507f](https://redirect.github.com/swc-project/swc/commit/41d507fe1e9c4ef7fa0bb7a266b75f1376c90fff)) - **(es/parser)** Reduce token query ([#​10834](https://redirect.github.com/swc-project/swc/issues/10834)) ([5cd5185](https://redirect.github.com/swc-project/swc/commit/5cd5185a7a51ec838a12005c44dc982642af9508)) - **(es/parser)** Reduce call to `parse_decorators` ([#​10846](https://redirect.github.com/swc-project/swc/issues/10846)) ([356d3a0](https://redirect.github.com/swc-project/swc/commit/356d3a0850d32e79ff9615f3b696207902732895)) - **(es/parser)** Remove duplicate check ([#​10847](https://redirect.github.com/swc-project/swc/issues/10847)) ([2b04efd](https://redirect.github.com/swc-project/swc/commit/2b04efd5403adec38251bf9059a5dec600049288)) - **(es/preset-env)** Use strpool,phf for corejs2 data ([#​10803](https://redirect.github.com/swc-project/swc/issues/10803)) ([1652fd8](https://redirect.github.com/swc-project/swc/commit/1652fd8038ed8ea306fce914948ea6e121d5845f)) - **(es/react)** Remove redundant `replace` calls ([#​10795](https://redirect.github.com/swc-project/swc/issues/10795)) ([a670b37](https://redirect.github.com/swc-project/swc/commit/a670b37c334b69a57f31f8940916d3f66c9ab504)) - **(es/react)** Remove `count_children` ([#​10818](https://redirect.github.com/swc-project/swc/issues/10818)) ([2116ab2](https://redirect.github.com/swc-project/swc/commit/2116ab2fa25b0d4121d0dc69afd42e41ea24e299)) - **(hstr)** Cleanup duplicate header ([#​10812](https://redirect.github.com/swc-project/swc/issues/10812)) ([630dde9](https://redirect.github.com/swc-project/swc/commit/630dde93c9deb35c38d4d27c9e8083349ebad5bc)) - **(hstr)** Make the deallocation of `Atom`s explicit ([#​10813](https://redirect.github.com/swc-project/swc/issues/10813)) ([406433d](https://redirect.github.com/swc-project/swc/commit/406433d55d00c2e14cd72e438ca36666936c62cd)) - **(hstr)** Remove `is_global` ([#​10820](https://redirect.github.com/swc-project/swc/issues/10820)) ([afda0f9](https://redirect.github.com/swc-project/swc/commit/afda0f9d0d65e231615f955e365f77a18dc716d1)) ##### Testing - **(es/plugin)** Test memory layout of archived types ([#​10841](https://redirect.github.com/swc-project/swc/issues/10841)) ([502e991](https://redirect.github.com/swc-project/swc/commit/502e991a8bccaefef03f6379bbda8522bde4f62e)) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.37.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.36.0...v8.37.0) ##### 🩹 Fixes - **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#​11381](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11381)) ##### ❤️ Thank You - Yukihiro Hasegawa [@​y-hsgw](https://redirect.github.com/y-hsgw) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>kelektiv/node-cron (cron)</summary> ### [`v4.3.2`](https://redirect.github.com/kelektiv/node-cron/blob/HEAD/CHANGELOG.md#432-2025-07-13) [Compare Source](https://redirect.github.com/kelektiv/node-cron/compare/v4.3.1...v4.3.2) ##### 🛠 Builds - **deps:** update dependency luxon to ~3.7.0 ([db69c74](https://redirect.github.com/kelektiv/node-cron/commit/db69c745016fb1b968aa42376c88da41678dc467)) ##### ♻️ Chores - **action:** update github/codeql-action action to v3.29.0 ([#​990](https://redirect.github.com/kelektiv/node-cron/issues/990)) ([a3fbb3c](https://redirect.github.com/kelektiv/node-cron/commit/a3fbb3cc4d98d3ddc485691092ea9a4bec208740)) - **action:** update github/codeql-action action to v3.29.2 ([0403c53](https://redirect.github.com/kelektiv/node-cron/commit/0403c53320e1b403b11ae5f8da031e93c52ba766)) - **action:** update marocchino/sticky-pull-request-comment action to v2.9.3 ([eda0c4d](https://redirect.github.com/kelektiv/node-cron/commit/eda0c4df35e15f3e2d2fff111ea4326b64d6e462)) - **action:** update ossf/scorecard-action action to v2.4.2 ([#​991](https://redirect.github.com/kelektiv/node-cron/issues/991)) ([29a3a60](https://redirect.github.com/kelektiv/node-cron/commit/29a3a604ef78772f08cbf7f04dd7da001a58e8ba)) - **action:** update step-security/harden-runner action to v2.12.1 ([ba49a56](https://redirect.github.com/kelektiv/node-cron/commit/ba49a5656c163bce2ad70b09be8f7247ec3f9414)) - **action:** update step-security/harden-runner action to v2.12.2 ([845202e](https://redirect.github.com/kelektiv/node-cron/commit/845202ee974b43d366ab1183a7993b8ba6ead7fc)) - **deps:** lock file maintenance ([#​989](https://redirect.github.com/kelektiv/node-cron/issues/989)) ([bc1bf72](https://redirect.github.com/kelektiv/node-cron/commit/bc1bf72ff7a7595504d936f028a3267d9d823384)) - **deps:** lock file maintenance ([#​999](https://redirect.github.com/kelektiv/node-cron/issues/999)) ([e78d986](https://redirect.github.com/kelektiv/node-cron/commit/e78d9869d6cd59eaa808ecbb9366399b80e3ba99)) - **deps:** update dependency [@​swc](https://redirect.github.com/swc)/core to v1.12.1 ([#​992](https://redirect.github.com/kelektiv/node-cron/issues/992)) ([b5d3bd3](https://redirect.github.com/kelektiv/node-cron/commit/b5d3bd332856dc46aa2742d1992b79ba44e3e48f)) - **deps:** update dependency [@​swc](https://redirect.github.com/swc)/core to v1.12.5 ([d374494](https://redirect.github.com/kelektiv/node-cron/commit/d374494609e698edcd35a4e5ece78c09851eba00)) - **deps:** update dependency [@​swc](https://redirect.github.com/swc)/core to v1.12.9 ([8060c41](https://redirect.github.com/kelektiv/node-cron/commit/8060c41685446f4b2c4ea1e0355ad388faa04ad2)) - **deps:** update dependency [@​types](https://redirect.github.com/types)/node to v22.15.32 ([#​993](https://redirect.github.com/kelektiv/node-cron/issues/993)) ([ce9743b](https://redirect.github.com/kelektiv/node-cron/commit/ce9743ba05275982215c6fa8d2ca8d82013e4705)) - **deps:** update dependency [@​types](https://redirect.github.com/types)/node to v22.16.0 ([7bae5b1](https://redirect.github.com/kelektiv/node-cron/commit/7bae5b1ef895a843f0c3df176f15b50d964c895a)) - **deps:** update linters ([24eb53f](https://redirect.github.com/kelektiv/node-cron/commit/24eb53ff67d5d8f4093278d4efa1109c61b9f7f6)) - **deps:** update linters ([#​995](https://redirect.github.com/kelektiv/node-cron/issues/995)) ([9395484](https://redirect.github.com/kelektiv/node-cron/commit/939548475833953c9d98d68bd9cc1b9ef1a0e738)) - **deps:** update node.js to v23.11.1 ([#​985](https://redirect.github.com/kelektiv/node-cron/issues/985)) ([674a344](https://redirect.github.com/kelektiv/node-cron/commit/674a3448b5c286120174bd49ad5d1d99a156fc92)) - **deps:** update semantic-release related packages ([cc2676a](https://redirect.github.com/kelektiv/node-cron/commit/cc2676aa88e6d0c68802bd5937e148ac2284f9b2)) - **deps:** update semantic-release related packages ([#​994](https://redirect.github.com/kelektiv/node-cron/issues/994)) ([4d738df](https://redirect.github.com/kelektiv/node-cron/commit/4d738df05f794f4edb13fbe0cc02ad163b694f85)) </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v9.31.0`](https://redirect.github.com/eslint/eslint/compare/v9.30.1...14053edc64bd378ab920575f2488fbfcbb5a4ea0) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.30.1...v9.31.0) </details> <details> <summary>enisdenjo/graphql-ws (graphql-ws)</summary> ### [`v6.0.6`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#606) [Compare Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v6.0.5...v6.0.6) ##### Patch Changes - [#​648](https://redirect.github.com/enisdenjo/graphql-ws/pull/648) [`1f53bb4`](https://redirect.github.com/enisdenjo/graphql-ws/commit/1f53bb48b141440518cfc4716561e1f4b936268c) Thanks [@​enisdenjo](https://redirect.github.com/enisdenjo)! - Fix building issues causing CJS type definitions referencing ESM modules </details> <details> <summary>nuxt/nuxt (nuxt)</summary> ### [`v3.17.7`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.17.7) [Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.17.6...v3.17.7) > 3.17.7 is the last patch release before v3.18. ##### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxt upgrade --dedupe ``` This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem. ##### 👉 Changelog [compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.17.6...v3.17.7) ##### 🩹 Fixes - **nuxt:** Safe-guard `extraPageMetaExtractionKeys` ([#​32510](https://redirect.github.com/nuxt/nuxt/pull/32510)) - **nuxt:** Expose `loadBuilder` error cause ([8f13ce3c2](https://redirect.github.com/nuxt/nuxt/commit/8f13ce3c2)) - **vite:** Handle resolving string vite input ([#​32527](https://redirect.github.com/nuxt/nuxt/pull/32527)) - **nuxt:** Wrap only server components with island generic ([#​32540](https://redirect.github.com/nuxt/nuxt/pull/32540)) - **vite:** Ignore when client entry cannot be resolved ([19a292f34](https://redirect.github.com/nuxt/nuxt/commit/19a292f34)) - **nuxt:** Normalize segment catchall pattern before checking for parent ([#​32413](https://redirect.github.com/nuxt/nuxt/pull/32413)) - **nuxt:** Update warning message to warn against `null` values ([c1b83eab5](https://redirect.github.com/nuxt/nuxt/commit/c1b83eab5)) - **nuxt:** Ensure `semver.satisfies` returns true for pre-release versions ([#​32574](https://redirect.github.com/nuxt/nuxt/pull/32574)) - **nuxt:** Scroll to anchor if present when changing page without saved position ([#​32376](https://redirect.github.com/nuxt/nuxt/pull/32376)) - **nuxt:** Handle `execute being passed to `watch\` ([#​32591](https://redirect.github.com/nuxt/nuxt/pull/32591)) ##### 📖 Documentation - Update fetch types ([#​32522](https://redirect.github.com/nuxt/nuxt/pull/32522)) - Clarify that runtime env variables must start with `NUXT_` ([#​32223](https://redirect.github.com/nuxt/nuxt/pull/32223)) - Fix key change behavior in `useAsyncData` and `useFetch` migration ([#​32560](https://redirect.github.com/nuxt/nuxt/pull/32560)) - Change return type of async data from `undefined` to `null` in v3 docs ([#​32562](https://redirect.github.com/nuxt/nuxt/pull/32562)) - Add section on custom hooks for Nuxt modules ([#​32586](https://redirect.github.com/nuxt/nuxt/pull/32586)) - Provide `async` keyword ([#​32587](https://redirect.github.com/nuxt/nuxt/pull/32587)) - Move augmenting hook types in hooks page ([#​32595](https://redirect.github.com/nuxt/nuxt/pull/32595)) - Add section about module loading order ([#​32597](https://redirect.github.com/nuxt/nuxt/pull/32597)) ##### ✅ Tests - Reenable skipped unit tests ([8fc9b9ee9](https://redirect.github.com/nuxt/nuxt/commit/8fc9b9ee9)) - Update test snapshot for `generateTypes` ([c0855439d](https://redirect.github.com/nuxt/nuxt/commit/c0855439d)) - Improve page scanning test stability ([84b96f3de](https://redirect.github.com/nuxt/nuxt/commit/84b96f3de)) - Pass timeZone in to `<NuxtTime>` test ([#​32558](https://redirect.github.com/nuxt/nuxt/pull/32558)) - Add more useAsyncData + useFetch tests ([#​32585](https://redirect.github.com/nuxt/nuxt/pull/32585)) - Avoid hard-coding async-data keys ([bfca95118](https://redirect.github.com/nuxt/nuxt/commit/bfca95118)) ##### ❤️ Contributors - Daniel Roe ([@​danielroe](https://redirect.github.com/danielroe)) - Julien Huang ([@​huang-julien](https://redirect.github.com/huang-julien)) - abeer0 ([@​iiio2](https://redirect.github.com/iiio2)) - Bobbie Goede ([@​BobbieGoede](https://redirect.github.com/BobbieGoede)) - Damian Głowala ([@​DamianGlowala](https://redirect.github.com/DamianGlowala)) - Nestor Vera ([@​hacknug](https://redirect.github.com/hacknug)) - Ezra Ashenafi ([@​Eazash](https://redirect.github.com/Eazash)) - Mike Laumann Bellika ([@​MikeBellika](https://redirect.github.com/MikeBellika)) - Maxime Pauvert ([@​maximepvrt](https://redirect.github.com/maximepvrt)) - Chriest Yu ([@​jcppman](https://redirect.github.com/jcppman)) - Andrei Hudalla ([@​paranoidPhantom](https://redirect.github.com/paranoidPhantom)) - Sigrid Huemer ([@​s1gr1d](https://redirect.github.com/s1gr1d)) - xjccc ([@​xjccc](https://redirect.github.com/xjccc)) </details> <details> <summary>storybookjs/storybook (storybook)</summary> ### [`v9.0.17`](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...06a11ce246b2e7a52d41e43420e37162c55133aa) [Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v9.0.16...v9.0.17) </details> <details> <summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary> ### [`v8.37.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8370-2025-07-14) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.36.0...v8.37.0) ##### 🚀 Features - **typescript-estree:** infer tsconfigRootDir from call stack ([#​11370](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11370)) ##### ❤️ Thank You - Josh Goldberg ✨ You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>google/zx (zx)</summary> ### [`v8.7.1`](https://redirect.github.com/google/zx/releases/tag/8.7.1): — Pipe Whisperer [Compare Source](https://redirect.github.com/google/zx/compare/8.7.0...8.7.1) Continues [v8.7.0](https://redirect.github.com/google/zx/releases/tag/8.7.0): handles new `ps()` corner case and improves `$.kill` mechanics on Windows [#​1266](https://redirect.github.com/google/zx/issues/1266) [#​1267](https://redirect.github.com/google/zx/pull/1267) [#​1269](https://redirect.github.com/google/zx/pull/1269) [webpod/ps#14](https://redirect.github.com/webpod/ps/pull/14) ### [`v8.7.0`](https://redirect.github.com/google/zx/releases/tag/8.7.0): — Solder Savior [Compare Source](https://redirect.github.com/google/zx/compare/8.6.2...8.7.0) Important fixes for annoying flaky bugs #### kill() 🐞 We've found an interesting case [#​1262](https://redirect.github.com/google/zx/pull/1262) ```js const p = $`sleep 1000` const {pid} = p // 12345 await p.kill() ``` If we kill the process again, the result might be unexpected: ```js await ps({pid}) // {pid: 12345, ppid: 67890, command: 'another command', ...} p.kill() ``` This happens because the `pid` may be reused by the system for another process, so we've added extra assertions to prevent indeterminacy: ```js p.kill() // Error: Too late to kill the process. p.abort() // Error: Too late to abort the process. ``` #### ps() 🐛 - `ps()` uses **[wmic](https://en.wikipedia.org/wiki/Windows_Management_Instrumentation)** internally on Windows, it relies on *fragile* heuristics to parse the output. We have improved this logic to handle more format variants, but over time (in v9 maybe) we're planning to change the approach. [#​1256](https://redirect.github.com/google/zx/pull/1256) [#​1263](https://redirect.github.com/google/zx/issues/1263) [webpod/ps#12](https://redirect.github.com/webpod/ps/pull/12) [webpod/ingrid#6](https://redirect.github.com/webpod/ingrid/pull/6) ```js const [root] = await ps.lookup({ pid: process.pid }) assert.equal(root.pid, process.pid) ``` ### [`v8.6.2`](https://redirect.github.com/google/zx/releases/tag/8.6.2): — Flow Unstoppable [Compare Source](https://redirect.github.com/google/zx/compare/8.6.1...8.6.2) Fixes `$.prefix` & `$.postfix` values settings via env variables [#​1261](https://redirect.github.com/google/zx/pull/1261) [#​1260](https://redirect.github.com/google/zx/issues/1260) ### [`v8.6.1`](https://redirect.github.com/google/zx/releases/tag/8.6.1): — Drain Hero [Compare Source](https://redirect.github.com/google/zx/compare/8.6.0...8.6.1) - Use `process.env.SHELL` as default shell if defined [#​1252](https://redirect.github.com/google/zx/pull/1252) ```bash SHELL=/bin/zsh zx script.js ``` - Accept numeric strings as `parseDuration()` arg [#​1249](https://redirect.github.com/google/zx/pull/1249) ```js await sleep(1000) // 1 second await sleep('1000') // 1 second ``` - Update docker base image to `node:24-alpine` [#​1239](https://redirect.github.com/google/zx/pull/1239) - Docs improvements [#​1242](https://redirect.github.com/google/zx/pull/1242) [#​1243](https://redirect.github.com/google/zx/pull/1243) [#​1246](https://redirect.github.com/google/zx/pull/1246) [#​1248](https://redirect.github.com/google/zx/pull/1248) [#​1251](https://redirect.github.com/google/zx/pull/1251) ### [`v8.6.0`](https://redirect.github.com/google/zx/releases/tag/8.6.0): — Valve Vanguard [Compare Source](https://redirect.github.com/google/zx/compare/8.5.5...8.6.0) - Enabled `thenable` params processing for `$` literals [#​1237](https://redirect.github.com/google/zx/pull/1237) ```js const a1 = $`echo foo` const a2 = new Promise((resolve) => setTimeout(resolve, 20, ['bar', 'baz'])) await $`echo ${a1} ${a2}` // foo bar baz ``` - A dozen of internal refactorings [#​1225](https://redirect.github.com/google/zx/pull/1225) [#​1226](https://redirect.github.com/google/zx/pull/1226) [#​1228](https://redirect.github.com/google/zx/pull/1228) [#​1229](https://redirect.github.com/google/zx/pull/1229) [#​1230](https://redirect.github.com/google/zx/pull/1230) [#​1231](https://redirect.github.com/google/zx/pull/1231) [#​1232](https://redirect.github.com/google/zx/pull/1232) [#​1233](https://redirect.github.com/google/zx/pull/1233) [#​1234](https://redirect.github.com/google/zx/pull/1234) [#​1235](https://redirect.github.com/google/zx/pull/1235) [#​1236](https://redirect.github.com/google/zx/pull/1236) [#​1238](https://redirect.github.com/google/zx/pull/1238) [#​1239](https://redirect.github.com/google/zx/pull/1239) - Deps bumping - Bytes shrinking - Docs improvements ### [`v8.5.5`](https://redirect.github.com/google/zx/releases/tag/8.5.5): — PVC Wizard [Compare Source](https://redirect.github.com/google/zx/compare/8.5.4...8.5.5) Minor feature polish. - `ProcessPromise` and `ProcessOutput` `lines()` getters now accept a custom delimiter [#​1220](https://redirect.github.com/google/zx/issues/1220) [#​1218](https://redirect.github.com/google/zx/issues/1218) ```ts const cwd = tempdir() const delimiter = '\0' const p1 = $({ cwd })`touch foo bar baz; find ./ -type f -print0 -maxdepth 1` (await p1.lines(delimiter)).sort() // ['./bar', './baz', './foo'] // or via options const lines = [] const p2 = $({ delimiter, cwd, })`find ./ -type f -print0 -maxdepth 1` for await (const line of p2) { lines.push(line) } lines.sort() // ['./bar', './baz', './foo'] ``` - Handle `.nothrow()` option in `ProcessProcess[AsyncIterator]` [#​1216](https://redirect.github.com/google/zx/pull/1216) [#​1217](https://redirect.github.com/google/zx/pull/1217) - Updates yaml to [v2.8.0](https://redirect.github.com/eemeli/yaml/releases/tag/v2.8.0) [#​1221](https://redirect.github.com/google/zx/pull/1221) ### [`v8.5.4`](https://redirect.github.com/google/zx/releases/tag/8.5.4): — Pipe Dreamer [Compare Source](https://redirect.github.com/google/zx/compare/8.5.3...8.5.4) - Fixed the `pipe(file: string)` signature type declaration [#​1208](https://redirect.github.com/google/zx/issues/1208) [#​1209](https://redirect.github.com/google/zx/issues/1209) ### [`v8.5.3`](https://redirect.github.com/google/zx/releases/tag/8.5.3): — Trap Master [Compare Source](https://redirect.github.com/google/zx/compare/8.5.2...8.5.3) - Another portion of JSR related improvements [#​1193](https://redirect.github.com/google/zx/pull/1193) [#​1192](https://redirect.github.com/google/zx/pull/1192) - Goods refactoring [#​1195](https://redirect.github.com/google/zx/pull/1195) - Fixes `expBackoff` implementation - Sets `$.log.output` as default `spinner()` output - Makes configurable `question()` I/O - Added [Graaljs](https://www.graalvm.org/latest/reference-manual/js/NodeJS/) compatability test [#​1194](https://redirect.github.com/google/zx/pull/1194) - Docs improvements, usage examples updates [#​1198](https://redirect.github.com/google/zx/pull/1198) ### [`v8.5.2`](https://redirect.github.com/google/zx/releases/tag/8.5.2): — Threaded Perfection [Compare Source](https://redirect.github.com/google/zx/compare/8.5.0...8.5.2) - Various JSR fixes [#​1189](https://redirect.github.com/google/zx/pull/1189) [#​1186](https://redirect.github.com/google/zx/pull/1186) [#​1179](https://redirect.github.com/google/zx/pull/1179) [#​1187](https://redirect.github.com/google/zx/pull/1187) - Docs improvements [#​1185](https://redirect.github.com/google/zx/pull/1185) [#​1181](https://redirect.github.com/google/zx/pull/1181) ### [`v8.5.0`](https://redirect.github.com/google/zx/releases/tag/8.5.0): — Flow Splitter [Compare Source](https://redirect.github.com/google/zx/compare/9ba1fb4b8d17a4f5f0067d438b49568606469903...8.5.0) In this release we're significantly expanding the zx setup capabilities. #### zx@lite Just core functions without extras, ~7x smaller than the full version. [#​1131](https://redirect.github.com/google/zx/pull/1131) ```shell npm i zx@lite npm i zx@8.5.0-lite ``` Detailed comparison: [zx/versions](https://google.github.io/zx/versions) ```ts import { $ } from 'zx' await $`echo foo` ``` #### Channels We have completely reforged the distribution flow. Now zx is available in multiple formats: - [npmjs](https://www.npmjs.com/package/zx) - [GH npm](https://redirect.github.com/google/zx/pkgs/npm/zx) - [GH repo](https://redirect.github.com/google/zx) - [GH docker](https://redirect.github.com/google/zx/pkgs/container/zx) - [JSR](https://jsr.io/@​webpod/zx) - [Homebrew](https://redirect.github.com/Homebrew/homebrew-core/blob/master/Formula/z/zx.rb) ```shell ### npm pkg from registry.npmjs.org npm i zx ### install directly from the GH npm i google/zx ### from GH the npm registry npm i --registry=https://npm.pkg.github.com @​google/zx ### fetch from the JSR ### https://jsr.io/docs/using-packages ### @​webpod is temporary JSR scope until @​google/zx becomes ready, we'll migrate later npx jsr add @​webpod/zx deno add jsr:@​webpod/zx ### homebrew formula ### https://github.com/Homebrew/homebrew-core/blob/master/Formula/z/zx.rb brew install zx ``` [#​1141](https://redirect.github.com/google/zx/pull/1141)... [#​1157](https://redirect.github.com/google/zx/pull/1157) #### Docker If you'd prefer to run zx in a container, you can pull the image from the GH docker registry. [node:22-alpine](https://hub.docker.com/_/node) is used as a base. [#​1142](https://redirect.github.com/google/zx/pull/1142) [#​1145](https://redirect.github.com/google/zx/pull/1145) ```shell docker pull ghcr.io/google/zx:8.5.0 docker run -t ghcr.io/google/zx:8.5.0 -e="await \$({verbose: true})\`echo foo\`" docker run -t -i -v ./:/script ghcr.io/google/zx:8.5.0 script/t.js ``` #### Chores - Introduced fetch pipe helper to bypass string size limits [#​1130](https://redirect.github.com/google/zx/pull/1130) [#​977](https://redirect.github.com/google/zx/issues/977) ```ts const p1 = fetch('https://example.com').pipe($`cat`) const p2 = fetch('https://example.com').pipe`cat` ``` - Added `glob.sync` shortcut [#​1135](https://redirect.github.com/google/zx/pull/1135) ```ts import { glob } from 'zx' const packages = glob.sync(['package.json', 'packages/*/package.json']) ``` - Restored CLI flags and envars symmetry [#​1137](https://redirect.github.com/google/zx/pull/1137) [#​1138](https://redirect.github.com/google/zx/pull/1138) ```shell ZX_REGISTRY='https://custom-registry.example.com' zx script.js ``` - Enhanced errors stacktrace formatting [#​1166](https://redirect.github.com/google/zx/pull/1166) - Improved 3rd party licenses digest [#​1140](https://redirect.github.com/google/zx/pull/1140) - Enabled zizmor checks [#​1126](https://redirect.github.com/google/zx/pull/1126) - Docs improvements [#​1128](https://redirect.github.com/google/zx/pull/1128) [#​1134](https://redirect.github.com/google/zx/pull/1134) [#​1136](https://redirect.github.com/google/zx/pull/1136) [#​1164](https://redirect.github.com/google/zx/pull/1164) ### [`v8.4.2`](https://redirect.github.com/google/zx/compare/8.4.1...9ba1fb4b8d17a4f5f0067d438b49568606469903) [Compare Source](https://redirect.github.com/google/zx/compare/8.4.1...9ba1fb4b8d17a4f5f0067d438b49568606469903) ### [`v8.4.1`](https://redirect.github.com/google/zx/releases/tag/8.4.1): – Rusty Elbow [Compare Source](https://redirect.github.com/google/zx/compare/8.4.0...8.4.1) Logger enhancements are arriving in this release. [#​1119](https://redirect.github.com/google/zx/issues/1119) [#​1122](https://redirect.github.com/google/zx/pull/1122) [#​1123](https://redirect.github.com/google/zx/pull/1123) [#​1125](https://redirect.github.com/google/zx/pull/1125) - You can customize the output by defining your own formatters for each log entry kind. ```ts $.log.formatters = { cmd: (entry: LogEntry) => `CMD: ${entry.cmd}`, fetch: (entry: LogEntry) => `FETCH: ${entry.url}` //... } ``` - Cmd highlighter now *should* properly detect bins and arguments. If still not, please report it in [#​1122](https://redirect.github.com/google/zx/pull/1122) - Switched to TS 5.8 [#​1120](https://redirect.github.com/google/zx/pull/1120) - Applied [zizmor](https://woodruffw.github.io/zizmor/) to check GHA workflows [#​1126](https://redirect.github.com/google/zx/pull/1126) - Prettier is now enabled as a pre-commit hook [#​1118](https://redirect.github.com/google/zx/pull/1118) ### [`v8.4.0`](https://redirect.github.com/google/zx/releases/tag/8.4.0): – Drip Detective [Compare Source](https://redirect.github.com/google/zx/compare/8.3.2...8.4.0) Try the new batch of enhancements: `npm i zx@8.4.0` https://www.npmjs.com/package/zx/v/8.4.0 #### Changes - The CLI option `--prefer-local` now allows linking both external binaries and packages [#​1116](https://redirect.github.com/google/zx/pull/1116) [#​1117](https://redirect.github.com/google/zx/pull/1117) ```js const cwd = tmpdir() const external = tmpdir() await fs.outputJson(path.join(external, 'node_modules/a/package.json'), { name: 'a', version: '1.0.0', type: 'module', exports: './index.js', }) await fs.outputFile( path.join(external, 'node_modules/a/index.js'), ` export const a = 'AAA' ` ) const script = ` import {a} from 'a' console.log(a); ` const out = await $`zx --cwd=${cwd} --prefer-local=${external} --test <<< ${script}` assert.equal(out.stdout, 'AAA\n') ``` - The `quote` has been slightly changed for a conner case, when zx literal gets an array. [#​999](https://redirect.github.com/google/zx/issues/999) [#​1113](https://redirect.github.com/google/zx/issues/1113) ```js const p = $({prefix: '', postfix: ''})`echo ${[1, '', '*', '2']}` // before p.cmd // `echo 1 $'*' 2`) // after p.cmd // `echo 1 $'' $'*' 2`) ``` - Provided support for custom script extensions via CLI [#​1104](https://redirect.github.com/google/zx/pull/1104) [#​1105](https://redirect.github.com/google/zx/pull/1105) ```bash zx script.zx # Unknown file extension "\.zx" zx --ext=mjs script.zx # OK ``` - Enhanced `nothrow` option to suppress any errors [#​1108](https://redirect.github.com/google/zx/pull/1108) [#​1109](https://redirect.github.com/google/zx/pull/1109) ```js const err = new Error('BrokenSpawn') const o = await $({ nothrow: true, spawn() { throw err }, })`echo foo` o.ok // false o.exitCode // null o.message // BrokenSpawn... o.cause // err ``` - `@types/node` and `@types/fs-extra` deps replaced with triple-slash typing refs [#​1102](https://redirect.github.com/google/zx/pull/1102) - Made `ProcessOutput` iterable [#​1101](https://redirect.github.com/google/zx/pull/1101) - Handle inappropriate `ProcessPromise` instantiation [#​1097](https://redirect.github.com/google/zx/pull/1097) [#​1098](https://redirect.github.com/google/zx/pull/1098) - Pass origin error as `ProcessOuput` cause [#​1110](https://redirect.github.com/google/zx/pull/1110) - Separated build and release steps [#​1106](https://redirect.github.com/google/zx/pull/1106) - Internal improvements - Introduced API bus [#​1083](https://redirect.github.com/google/zx/pull/1083) - Optimized `ProcessOutput` inners [#​1096](https://redirect.github.com/google/zx/pull/1096) [#​1095](https://redirect.github.com/google/zx/pull/1095) - Pinned deps [#​1099](https://redirect.github.com/google/zx/pull/1099) [#​1100](https://redirect.github.com/google/zx/pull/1100) - Switched to explicit `.ts` extensions for relative imports [#​1111](https://redirect.github.com/google/zx/pull/1111) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/unraid/api). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuMjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
relates google/zx#1266