Repository navigation
fix: support TSFunctionType in getFunctionHeadLoc - #21335
Conversation
✅ Deploy Preview for docs-eslint canceled.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthrough
ChangesTypeScript function type support
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~15 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to The updated function-type diagnostic locations are covered by utility and rule tests; no merge-blocking issue was identified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thank you for spotting this and raising a PR. |
max-params report location for TS function typesTSFunctionType in getFunctionHeadLoc
mdjermanovic
left a comment
There was a problem hiding this comment.
LGTM, thanks! Leaving it open for a couple more days to give others a chance to review before merging.
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.9.2` → `24.19.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.9.2/24.19.1) |  |  | devDependencies | minor | | [axllent/mailpit](https://mailpit.axllent.org) ([source](https://github.com/axllent/mailpit)) | `v1.31.3` → `v1.31.4` |  |  | | patch | | [bits-ui](https://github.com/huntabyte/bits-ui) | [`2.19.3` → `2.19.5`](https://renovatebot.com/diffs/npm/bits-ui/2.19.3/2.19.5) |  |  | dependencies | patch | | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.11.0` → `10.12.0`](https://renovatebot.com/diffs/npm/eslint/10.11.0/10.12.0) |  |  | dependencies | minor | | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.11.0` → `10.12.0`](https://renovatebot.com/diffs/npm/eslint/10.11.0/10.12.0) |  |  | devDependencies | minor | | [pnpm](https://github.com/pnpm/pnpm/tree/main/pnpm) ([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm)) | [`12.8.2` → `12.9.1`](https://renovatebot.com/diffs/npm/pnpm/12.8.2/12.9.1) |  |  | packageManager | minor | | [pnpm](https://github.com/pnpm/pnpm/tree/main/pnpm) ([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm)) | [`12.8.2` → `12.9.1`](https://renovatebot.com/diffs/npm/pnpm/12.8.2/12.9.1) |  |  | engines | minor | | [renovate/renovate](https://renovatebot.com) ([source](https://github.com/renovatebot/renovate)) | [`44.132.2` → `44.133.0`](https://octochangelog.com/compare?repo=renovatebot%2Frenovate&from=44.132.2&to=44.133.0) |  |  | container | minor | --- ### Release Notes <details> <summary>axllent/mailpit (axllent/mailpit)</summary> ### [`v1.31.4`](https://github.com/axllent/mailpit/blob/HEAD/CHANGELOG.md#v1314) [Compare Source](axllent/mailpit@v1.31.3...v1.31.4) ##### Fix - Prevent duplicate messages from being added in websocket handlers ([#​737](axllent/mailpit#737)) - Set hostname for HELO/EHLO in SMTP client creation ([#​738](axllent/mailpit#738)) </details> <details> <summary>huntabyte/bits-ui (bits-ui)</summary> ### [`v2.19.5`](https://github.com/huntabyte/bits-ui/releases/tag/bits-ui%402.19.5) [Compare Source](https://github.com/huntabyte/bits-ui/compare/bits-ui@2.19.4...bits-ui@2.19.5) ##### Patch Changes - fix(Select): ensure `Select.Value` labels persist after the select is closed ([#​2066](huntabyte/bits-ui#2066)) - fix(DismissibleLayer): dismiss on a touch tap whose `click` follows its `pointerdown` within a few milliseconds. The click listener was armed only after a 10ms debounce, so on WebKit (mobile Safari) a quick tap on a sibling trigger landed before it and left the open layer open beside the new one. ([#​2182](huntabyte/bits-ui#2182)) - fix(body-scroll-lock): restore only modified body styles to preserve concurrent changes ([#​2175](huntabyte/bits-ui#2175)) - Fix `DateRangePicker` and `DateRangeField` not reformatting their segments when the `locale` prop changes after mount. ([#​2150](huntabyte/bits-ui#2150)) - fix(FocusScope): trap and restore focus inside a Shadow Root. Focus reads now follow `shadowRoot.activeElement` and the `focusin` target comes from `composedPath()`, so Tab wraps within the scope and focus returns to a trigger inside the root on close. ([#​2180](huntabyte/bits-ui#2180)) ### [`v2.19.4`](https://github.com/huntabyte/bits-ui/releases/tag/bits-ui%402.19.4) [Compare Source](https://github.com/huntabyte/bits-ui/compare/bits-ui@2.19.3...bits-ui@2.19.4) ##### Patch Changes - fix(PopperLayer): destructure the internal `forceMount` prop out of `restProps` so it stops leaking onto the rendered content element as an invalid `forcemount` attribute (Popover, Select, Combobox, DropdownMenu, ContextMenu, Menubar, Tooltip, LinkPreview) ([#​2176](huntabyte/bits-ui#2176)) - fix(DismissibleLayer): dismiss on a touch tap even when the tapped element stops click propagation. Touch outside-dismissal waits for the tap's `click` on the document, and a bubbling listener never hears a click whose target handler calls `stopPropagation()`, so the layer stayed open behind elements that own their clicks. ([#​2155](huntabyte/bits-ui#2155)) </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v10.12.0`](https://github.com/eslint/eslint/releases/tag/v10.12.0) [Compare Source](eslint/eslint@v10.11.0...v10.12.0) ##### Features - [`4618052`](eslint/eslint@4618052) feat: handle astral letters in `new-cap` ([#​21357](eslint/eslint#21357)) (sary) - [`4ec5168`](eslint/eslint@4ec5168) feat: allow `SourceCode#getText()` to accept tokens and comments ([#​21340](eslint/eslint#21340)) (electrohyun) ##### Bug Fixes - [`bc51eee`](eslint/eslint@bc51eee) fix: `prefer-arrow-callback` false positive in conditional test ([#​21373](eslint/eslint#21373)) (Daniel Pinto) - [`bbff86c`](eslint/eslint@bbff86c) fix: skip lines with multiple comments in `max-lines-per-function` ([#​21332](eslint/eslint#21332)) (xbinaryx) - [`efc4d6b`](eslint/eslint@efc4d6b) fix: astral letters in `consistent-return`, `no-eval`, `no-invalid-this` ([#​21360](eslint/eslint#21360)) (lumir) - [`93de066`](eslint/eslint@93de066) fix: prefer-exponentiation-operator autofix for async function base ([#​21322](eslint/eslint#21322)) (Vladimir Babin) - [`02e34ff`](eslint/eslint@02e34ff) fix: add missing space after `else` in `curly` autofix ([#​21355](eslint/eslint#21355)) (Pixel) - [`b14b8bc`](eslint/eslint@b14b8bc) fix: correct `id-length` message for long private names ([#​21348](eslint/eslint#21348)) (Pixel) - [`69aac01`](eslint/eslint@69aac01) fix: support `TSFunctionType` in `getFunctionHeadLoc` ([#​21335](eslint/eslint#21335)) (xbinaryx) - [`686630e`](eslint/eslint@686630e) fix: `no-loss-of-precision` false positive with `0.e5` ([#​21337](eslint/eslint#21337)) (sethamus) ##### Documentation - [`67eb586`](eslint/eslint@67eb586) docs: Update README (GitHub Actions Bot) - [`5370d7e`](eslint/eslint@5370d7e) docs: clarify `one-var` `separateRequires` matches any `require()` call ([#​21192](eslint/eslint#21192)) (sethamus) - [`8816c1d`](eslint/eslint@8816c1d) docs: Update README (GitHub Actions Bot) - [`3d2e7ce`](eslint/eslint@3d2e7ce) docs: fix typo in no-unused-expressions documentation ([#​21346](eslint/eslint#21346)) (bytedoe) ##### Chores - [`152067f`](eslint/eslint@152067f) chore: update ecosystem plugins ([#​21362](eslint/eslint#21362)) (ESLint Bot) - [`b56d58e`](eslint/eslint@b56d58e) chore: update github/codeql-action action to v4.38.2 ([#​21376](eslint/eslint#21376)) (renovate\[bot]) - [`bfaea12`](eslint/eslint@bfaea12) perf: cache normalized config globals per languageOptions ([#​21364](eslint/eslint#21364)) (James Ross) - [`322209e`](eslint/eslint@322209e) ci: avoid Nx cache in ecosystem tests and disable failing test ([#​21369](eslint/eslint#21369)) (Francesco Trotta) - [`d166567`](eslint/eslint@d166567) chore: update dependency prettier to v3.9.9 ([#​21371](eslint/eslint#21371)) (renovate\[bot]) - [`29585ce`](eslint/eslint@29585ce) chore: update dependency eslint-plugin-expect-type to ^0.7.0 ([#​21359](eslint/eslint#21359)) (renovate\[bot]) - [`39d79ba`](eslint/eslint@39d79ba) chore: update github/codeql-action action to v4.38.1 ([#​21354](eslint/eslint#21354)) (renovate\[bot]) - [`182a6e9`](eslint/eslint@182a6e9) chore: update dependency prettier to v3.9.8 ([#​21352](eslint/eslint#21352)) (renovate\[bot]) - [`f995127`](eslint/eslint@f995127) chore: remove CLAUDE.md in favor of AGENTS.md ([#​21339](eslint/eslint#21339)) (Jarren) - [`b95fb6c`](eslint/eslint@b95fb6c) chore: update dependency prettier to v3.9.7 ([#​21347](eslint/eslint#21347)) (renovate\[bot]) - [`3782dd4`](eslint/eslint@3782dd4) chore: update ecosystem plugins ([#​21342](eslint/eslint#21342)) (ESLint Bot) </details> <details> <summary>pnpm/pnpm (pnpm)</summary> ### [`v12.9.1`](https://github.com/pnpm/pnpm/releases/tag/v12.9.1): pnpm 12.9.1 [Compare Source](pnpm/pnpm@v12.9.0...v12.9.1) This release moves the WebContainer build into a separate `@pnpm/wasm` package, shrinks the `pnpm` package back to about 4 MB, and fixes `pnpm publish` with provenance from GitLab CI. ##### Patch Changes - The WebAssembly build for StackBlitz WebContainers now ships as a separate `@pnpm/wasm` package. The `pnpm` and `@pnpm/exe` packages no longer include it, which brings their unpacked size back from about 55 MB to about 4 MB. In a WebContainer, install `@pnpm/wasm` with npm to get the `pnpm` command. - `pnpm publish` with provenance from GitLab CI is no longer rejected by the npm registry with a 422 error. The provenance statement now includes the GitLab CI variables in `invocation.parameters`, as npm does [#​16551](pnpm/pnpm#16551). - `pnpm audit signatures` now uses the TLS settings of the redirect target when a registry redirects its signing-keys request, for example to registry.npmjs.org. A `cafile` scoped to a private registry no longer makes the redirected request fail [#​16541](pnpm/pnpm#16541). - Fixed `pnpm install --frozen-lockfile` rejecting an up-to-date lockfile when an injected workspace package uses a catalog entry in `peerDependencies` [#​16557](pnpm/pnpm#16557). - The `[<since>]` filter selector works again with Git 2.24 through 2.27 [#​16561](pnpm/pnpm#16561). With Git older than 2.24, the selector now fails with an error that names the required Git version. It also detects changes in projects whose directory names contain non-ASCII characters. Such a change used to be credited to the parent project. `changedFilesIgnorePattern` and `testPattern` now match changed files whose names contain non-ASCII characters. - The `pnpm` executable is about 10% smaller. On macOS arm64 it went from 45.1 MB to 40.3 MB. - Sped up trust downgrade checks for packages with long release histories. - With `optimisticRepeatInstall: false`, `pnpm install` now runs the projects' own lifecycle scripts, such as `prepare`, even when `node_modules` is already up to date [#​16545](pnpm/pnpm#16545). - `pnpm self-update` now fails for Homebrew-installed pnpm and prints the `brew upgrade` command for the installed formula, such as `brew upgrade pnpm` or `brew upgrade pnpm@11`. It used to install a second copy of pnpm that the Homebrew one kept shadowing [#​16547](pnpm/pnpm#16547). <!-- sponsors --> ##### Platinum Sponsors <table> <tbody> <tr> <td align="center" valign="middle"> <a href="https://bit.cloud/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a> </td> <td align="center" valign="middle"> <a href="https://openai.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/openai_dark.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/openai_light.svg" /> <img src="https://pnpm.io/img/users/openai_dark.svg" width="160" alt="OpenAI" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://notion.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/notion.svg" width="80" alt="Notion"></a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" /> <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" /> </picture> </a> </td> </tr> </tbody> </table> ##### Gold Sponsors <table> <tbody> <tr> <td align="center" valign="middle"> <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" /> <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" /> <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" /> <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" /> <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" /> <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" /> </picture> </a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" /> <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://latitude.so/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/latitude.svg" width="160" alt="Latitude"></a> </td> </tr> </tbody> </table> <!-- sponsors end --> ### [`v12.9.0`](https://github.com/pnpm/pnpm/releases/tag/v12.9.0): pnpm 12.9 [Compare Source](pnpm/pnpm@v12.8.2...v12.9.0) This release runs pnpm in StackBlitz WebContainers, adds a per-registry `networkConcurrency` setting, and records every installed project in the store. It also carries a security fix for `pnpm login`. ##### Minor Changes - pnpm now automatically uses WebAssembly in StackBlitz WebContainers, including when installation scripts are disabled. Native installations continue to use the native executable when installation scripts are enabled. - A `registries` entry can now set `networkConcurrency`, the most requests pnpm keeps in flight to that registry's origin. Requests to other registries keep the overall limit. The setting may live in `pnpm-workspace.yaml` or the global `config.yaml`. ```yaml registries: https://npm.corp.example.com/: scopes: ["@acme"] networkConcurrency: 4 ``` - `pnpm install` now records every project it installs in the store's `projects` directory, as a symlink to the project directory. A `--frozen-store` install without the global virtual store still records nothing. Only projects that used the global virtual store were recorded before [#​6929](pnpm/pnpm#6929). ##### Patch Changes - `pnpm login` no longer forwards credentials in its request body to another origin during redirects. ##### Installing packages - Fixed `pnpm install` failing on Android with `ERR_PNPM_STORE_DIR_ACQUIRE_OPERATION_LOCK` [#​16508](pnpm/pnpm#16508). - `pnpm install --frozen-lockfile` again succeeds when a workspace project recorded in `pnpm-lock.yaml` has no directory, such as a project left out of a Docker build context. It still fails if the project's directory exists without a `package.json` [#​16453](pnpm/pnpm#16453). - `pnpm install --frozen-lockfile` no longer requires a `pnpm-lock.yaml` in a project that has no dependencies. It also succeeds when `pnpm-lock.yaml` records only the pinned pnpm version, as other commands write it when they run before the first install [#​16477](pnpm/pnpm#16477). - Fixed `pnpm install --frozen-lockfile` rejecting a fresh lockfile when an injected workspace dependency has an optional peer supplied by another workspace project [#​16428](pnpm/pnpm#16428). - With `nodeLinker: hoisted`, a filtered install now keeps the packages of the workspace projects an earlier install put in `node_modules`. This also covers the install that `pnpm --filter <selector> run` and `pnpm --filter <selector> exec` start before the command. Before, these installs removed every package that only the unselected projects needed [#​16483](pnpm/pnpm#16483). - `pnpm install` with `nodeLinker: hoisted` now refreshes directories supplied by custom fetchers when reinstalling. pnpm also keeps the symlinks inside those directories. - With `enableGlobalVirtualStore` on, scripts can run entry points that a CommonJS require hook loads again, such as `ts-node index.ts`. They failed with `ERR_UNKNOWN_FILE_EXTENSION` on Node.js versions without built-in TypeScript support [#​16436](pnpm/pnpm#16436). - pnpm now keeps each project's current lockfile and hidden hoisted dependencies in its own `node_modules/.pnpm` when `virtualStoreDir` points at a shared global virtual store. `--virtual-store-dir` now sets the global virtual store's location too [pnpm/tasks#47](pnpm/tasks#47). - `pnpm clean` no longer deletes the project when `virtualStoreDir` or `globalVirtualStoreDir` is set to the project directory. It also leaves a directory outside the project alone when the setting reaches it through a symlink. It now removes a global virtual store that `globalVirtualStoreDir` places inside the project, as it does for `virtualStoreDir`. ##### Optional dependencies - `pnpm install` no longer fails when a dependency of an optional dependency is missing from the registry. Like npm, pnpm now leaves out the nearest optional dependency above it, together with its subtree [#​16511](pnpm/pnpm#16511). - When an optional dependency fails to build, pnpm now removes its link from `node_modules`. A repeat `pnpm install` then reports "Already up to date" and no longer reruns the failing build [#​16468](pnpm/pnpm#16468). - `pnpm install` now prints a warning with the error when an optional dependency cannot be fetched and is skipped. The skipped package is no longer counted in the `Packages: +N` summary. The `pnpm:skipped-optional-dependency` log reports the skip with the `fetch_failure` reason [#​16514](pnpm/pnpm#16514). ##### Resolving dependencies - Fixed `pnpm install` changing an unchanged project's direct dependency to a sibling workspace's pinned version when its dependency tree contains a cycle [#​16417](pnpm/pnpm#16417). - With `autoDedupe` enabled, downgrading a dependency in one workspace project now moves the other projects to that version when it satisfies their ranges. This also applies to a filtered `pnpm --filter <project> add` [#​16432](pnpm/pnpm#16432). - `pnpm install` and `pnpm dedupe` now move an optional peer to the version already in the dependency graph when no other package provides its locked version anymore. After a bump such as `vue` 3.5.40 to 3.5.43, the lockfile kept a second copy of `@vue/server-renderer` for `@vue/test-utils` [#​16443](pnpm/pnpm#16443). - `pnpm dedupe --check` no longer fails right after `pnpm install` when a project's optional peer is satisfied by a package another workspace project installs. `pnpm dedupe` now picks the same versions for that package's dependencies as `pnpm install` [#​16447](pnpm/pnpm#16447). - `pnpm install` no longer re-resolves an up-to-date lockfile on every run when a patched package is a peer in a peer cycle [#​16418](pnpm/pnpm#16418). - With `autoDedupe` enabled, `pnpm install --lockfile-only` no longer resolves the dependency graph again when nothing changed since an earlier `--lockfile-only` install deduplicated the lockfile. Such an install keeps the lockfile even if versions were published since it was written, or if only a setting such as `resolutionMode` changed. Run `pnpm dedupe` to apply such a change [#​16458](pnpm/pnpm#16458). ##### Speed and network - A repeat `pnpm install` in a large workspace reports "Already up to date" faster [#​16487](pnpm/pnpm#16487). - Sped up dependency resolution of workspaces with many peer dependencies. - `pnpm install` sends fewer registry metadata requests when the lockfile already decides which version a range resolves to. This now also covers ranges that several locked versions satisfy when one of them outranks the others, and direct dependencies kept at their locked version. Packages that `minimumReleaseAgeExclude` lists without a version now reuse cached registry metadata the same way they do when `minimumReleaseAge` is not set [#​16458](pnpm/pnpm#16458). - pnpm no longer downloads every packument again on each install from a registry whose metadata responses forbid caching, such as `Cache-Control: no-store`. pnpm revalidates the cached metadata with a conditional request, so a registry that supports conditional requests answers with a 304 when the package has not changed [#​16528](pnpm/pnpm#16528). - Cached metadata for a package published within `minimumReleaseAge` is now revalidated with its ETag, so the npm registry can answer `304 Not Modified`. Before, the next install that checked the cache downloaded the whole document again [#​16506](pnpm/pnpm#16506). - A fetch timeout while other downloads from the same host are still running now lowers concurrency for that host to one connection. Retries of that request, and later downloads from that host, use the lower concurrency. Other hosts keep the configured concurrency [#​12791](pnpm/pnpm#12791). - Sped up `pnpm install --offline` when the version a range picks is not in the store. While it looks for a version the store holds, pnpm now reads only the versions the range admits [#​16495](pnpm/pnpm#16495). - `pnpm install --offline` now reuses config dependency tarballs that are already present in the store [pnpm/tasks#46](pnpm/tasks#46). ##### Running scripts - `pnpm -s <script>` runs the script again, with `-s` meaning `--sequential` as it does for `pnpm run -s <script>`. pnpm rejected it with "unexpected argument '-s' found" [#​16446](pnpm/pnpm#16446). - `pnpm run` and `pnpm exec` now warn and run the command when the install that `verifyDepsBeforeRun` starts fails. This lets scripts run in sandboxes where pnpm cannot install, such as containers with a read-only store or no network [#​15173](pnpm/pnpm#15173). - A filtered `pnpm run` or `pnpm exec` now finds dependencies out of date when a workspace dependency of a selected project has no `node_modules` directory, as after a filtered install. With `verifyDepsBeforeRun: install`, pnpm installs that dependency before running the command [pnpm/tasks#45](pnpm/tasks#45). - Scripts run without a terminal no longer start a second `sh` each. One watchdog per pnpm command now ends every script's process group if pnpm is killed, so `pnpm -r run` across many projects starts half as many processes [#​16489](pnpm/pnpm#16489). - `Terminate batch job (Y/N)?` no longer appears after pressing Ctrl+C in a script started with `pnpm` from PowerShell or cmd on Windows [#​16502](pnpm/pnpm#16502). - `pnpm rebuild` and `pnpm approve-builds` refresh command launchers when a build changes a command's interpreter or replaces it with a native executable. Dependent packages' build scripts use the refreshed launchers. - When `pnpm run <script>` or `pnpm <script>` finds nothing to run and `--filter` follows the script name, the error now suggests putting the filter option before the script name [#​4655](pnpm/pnpm#4655). - Package-name filters now support `?` to match one character [#​2817](pnpm/pnpm#2817). ##### The pinned pnpm and `pnpm self-update` - pnpm no longer downloads the project's pinned pnpm version again on every command when `nodeVersion` in `pnpm-workspace.yaml` names a different Node.js major than the `node` on `PATH`. Before, each of those commands took about a second longer and failed without network access [#​16497](pnpm/pnpm#16497). - Several `pnpm` commands started at once in a project that pins `packageManager` no longer fail with `The process cannot access the file because it is being used by another process` on Windows while the pinned pnpm is being installed. - pnpm can now switch to a `packageManager` version below 11 on x64 musl Linux, such as Alpine [#​16467](pnpm/pnpm#16467). - A `devEngines.packageManager` range no longer makes pnpm replace the version recorded in `pnpm-lock.yaml` with the running pnpm while the recorded version still satisfies the range. When pnpm does record a version, it records the running pnpm only if it meets `minimumReleaseAge`. Otherwise it records the newest version in the range that meets it, or the running pnpm if none does [#​16431](pnpm/pnpm#16431). - On Windows, `pnpm self-update` now replaces a `pnpm.exe` left in `PNPM_HOME` or in `PNPM_HOME\bin`. Windows ran that executable in place of the updated `pnpm.cmd` shim, so `pnpm --version` kept printing the old version after a successful update. If the executable was in `PNPM_HOME`, `self-update` now asks you to run `pnpm setup` [#​9094](pnpm/pnpm#9094). - `pnpm self-update` now checks that a version installed as the JavaScript `pnpm` can start before making it the global `pnpm`. If Node.js is missing, the update fails and the current `pnpm` stays in place. ##### Other commands - `pnpm deploy` now finds patches and local dependencies when the target directory sits under a symlink, such as `/tmp` on macOS. It failed with `ERR_PNPM_PATCH_NOT_FOUND` [#​16470](pnpm/pnpm#16470). - `pnpm deploy --legacy` now resolves the deployed project's relative `file:`, `link:`, and path dependencies from the project's own directory [#​16475](pnpm/pnpm#16475). - `pnpm update --global` now removes hard-linked executables from `PNPM_HOME` when migrating packages from the old global layout [#​16420](pnpm/pnpm#16420). - `pnpm store prune` no longer fails on store index entries that pnpm 11 wrote for git-hosted packages without a `package.json`. Entries that still cannot be read are kept and counted in the prune summary. - `pnpm store prune` now aborts when an error other than a missing directory occurs while scanning project directories in the mark phase. - `pnpm config get` and `pnpm config list` now report a setting given on the command line with `--config.<name>=<value>`. Before, a value such as `--config.node-linker=hoisted` reached the install but was absent from the reported configuration [#​16276](pnpm/pnpm#16276). - `pnpm -r pkg get` now reports every selected project when several share a package name. Projects with the same name are keyed by their directory relative to the workspace root. Before, only one of them appeared in the output. - The install summary shows a `link:` dependency as `+ name <- path`, and the Node.js API's `hideLinkedPkgsDiff` reporter option leaves matching linked dependencies out of the summary. - The `--force` help text of `pnpm install` and `pnpm add` now says that `--force` keeps skipping optional dependencies built for other platforms. It points to `forceIgnoresPlatform` and the `--os`, `--cpu`, and `--libc` options for installing them [#​16435](pnpm/pnpm#16435). - The `homepage` field of the published `pnpm` package points to <https://pnpm.io> again. <!-- sponsors --> ##### Platinum Sponsors <table> <tbody> <tr> <td align="center" valign="middle"> <a href="https://bit.cloud/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a> </td> <td align="center" valign="middle"> <a href="https://openai.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/openai_dark.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/openai_light.svg" /> <img src="https://pnpm.io/img/users/openai_dark.svg" width="160" alt="OpenAI" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://notion.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/notion.svg" width="80" alt="Notion"></a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" /> <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" /> </picture> </a> </td> </tr> </tbody> </table> ##### Gold Sponsors <table> <tbody> <tr> <td align="center" valign="middle"> <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" /> <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" /> <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" /> <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" /> <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" /> <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" /> </picture> </a> </td> </tr> <tr> <td align="center" valign="middle"> <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" /> <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" /> <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" /> </picture> </a> </td> <td align="center" valign="middle"> <a href="https://latitude.so/?utm_source=pnpm&utm_medium=release_notes" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/latitude.svg" width="160" alt="Latitude"></a> </td> </tr> </tbody> </table> <!-- sponsors end --> </details> <details> <summary>renovatebot/renovate (renovate/renovate)</summary> ### [`v44.133.0`](https://github.com/renovatebot/renovate/releases/tag/44.133.0) [Compare Source](renovatebot/renovate@44.132.6...44.133.0) ##### Features - **data:** automatic update of static data ([#​46734](renovatebot/renovate#46734)) ([474cddd](renovatebot/renovate@474cddd)) ### [`v44.132.6`](https://github.com/renovatebot/renovate/releases/tag/44.132.6) [Compare Source](renovatebot/renovate@44.132.5...44.132.6) ##### Bug Fixes - **deps:** update ghcr.io/renovatebot/base-image docker tag to v13.109.4 (main) ([#​46738](renovatebot/renovate#46738)) ([eee241a](renovatebot/renovate@eee241a)) ##### Miscellaneous Chores - **deps:** update dependency [@​containerbase/istanbul-reports-html](https://github.com/containerbase/istanbul-reports-html) to v2.0.20 (main) ([#​46736](renovatebot/renovate#46736)) ([06a4f33](renovatebot/renovate@06a4f33)) ### [`v44.132.5`](https://github.com/renovatebot/renovate/releases/tag/44.132.5) [Compare Source](renovatebot/renovate@44.132.4...44.132.5) ##### Bug Fixes - **deps:** update ghcr.io/renovatebot/base-image docker tag to v13.109.3 (main) ([#​46730](renovatebot/renovate#46730)) ([d2d046b](renovatebot/renovate@d2d046b)) ##### Miscellaneous Chores - **deps:** update dependency astral-sh/uv to v0.12.23 (main) ([#​46728](renovatebot/renovate#46728)) ([dcfd322](renovatebot/renovate@dcfd322)) - **deps:** update dependency uv to v0.12.23 (main) ([#​46729](renovatebot/renovate#46729)) ([33ea57d](renovatebot/renovate@33ea57d)) ##### Build System - **deps:** update dependency re2 to v1.27.0 (main) ([#​46731](renovatebot/renovate#46731)) ([e0e072e](renovatebot/renovate@e0e072e)) ### [`v44.132.4`](https://github.com/renovatebot/renovate/releases/tag/44.132.4) [Compare Source](renovatebot/renovate@44.132.3...44.132.4) ##### Bug Fixes - **deps:** update ghcr.io/renovatebot/base-image docker tag to v13.109.2 (main) ([#​46727](renovatebot/renovate#46727)) ([fa3b4c1](renovatebot/renovate@fa3b4c1)) ### [`v44.132.3`](https://github.com/renovatebot/renovate/releases/tag/44.132.3) [Compare Source](renovatebot/renovate@44.132.2...44.132.3) ##### Bug Fixes - **workers/lookup:** only flag downgrades when the versioning orders the values ([#​46725](renovatebot/renovate#46725)) ([ebdf90a](renovatebot/renovate@ebdf90a)), closes [#​46146](renovatebot/renovate#46146) ##### Miscellaneous Chores - **deps:** update dependency [@​types/node](https://github.com/types/node) to v24.19.0 (main) ([#​46721](renovatebot/renovate#46721)) ([4b92bb8](renovatebot/renovate@4b92bb8)) - **deps:** update dependency lint-staged to v17.6.0 (main) ([#​46722](renovatebot/renovate#46722)) ([bd2458a](renovatebot/renovate@bd2458a)) - **deps:** update dependency pnpm to v11.28.0 (main) ([#​46688](renovatebot/renovate#46688)) ([ae4be16](renovatebot/renovate@ae4be16)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Madrid) - Branch creation - "before 7am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **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://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzIuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjEzMi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.hirokobu.duckdns.org/jacknoddy/web-ecommerce/pulls/23 Co-authored-by: renovate-bot <renovate@bot.com>
Prerequisites checklist
AI acknowledgment
What is the purpose of this pull request? (put an "X" next to an item)
[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
What parser are you using (place an "X" next to just one item)?
[ ]
Default (Espree)[x]
@typescript-eslint/parser[ ]
@babel/eslint-parser[ ]
vue-eslint-parser[ ]
@angular-eslint/template-parser[ ]
OtherPlease show your full configuration:
Configuration
What did you do? Please include the actual source code causing the issue.
What did you expect to happen?
The report is placed on the
=>token, the same way arrow functions are reported.What actually happened? Please include the actual, raw output from ESLint.
The report has a zero-width location:
endLine/endColumnare equal toline/column, so there is no text to highlight.What changes did you make? (Give an overview)
Added a
TSFunctionTypebranch togetFunctionHeadLoc(). It reports the=>token, the same as the existingArrowFunctionExpressionbranch.Is there anything you'd like reviewers to focus on?
Summary by CodeRabbit