Skip to content

Conversation

@JounQin
Copy link
Member

@JounQin JounQin commented Jul 2, 2025

Maybe the last one in favor of #167


Important

This PR adds support for Node.js builtin modules, Yarn Plug'n'Play, and enhances TypeScript configuration handling, while fixing tsconfig extension loops and refactoring resolver internals.

  • Behavior:
    • Added support for Node.js builtin modules in resolution results.
    • Introduced Yarn Plug'n'Play support and directory resolution using the exports field.
    • Added cycle detection for circular references in TypeScript configuration files.
    • Enhanced TypeScript resolver configuration options.
  • Bug Fixes:
    • Fixed infinite loops caused by circular tsconfig extensions.
  • Documentation:
    • Improved README formatting and added new configuration sections.
  • Refactor:
    • Simplified file system trait and resolver internals.
    • Updated and renamed configuration options for clarity.
  • Tests:
    • Added tests for builtin module resolution, exports field in directory resolution, and tsconfig circular references.
  • Chores:
    • Updated dependencies and toolchain versions.
    • Improved .gitignore and release configuration.
    • Adjusted build and test scripts for consistency.

This description was created by Ellipsis for eb50ecd. You can customize this summary. It will automatically update as commits are pushed.


Summary by CodeRabbit

  • New Features

    • Added explicit support for Node.js builtin modules in resolution results.
    • Introduced new options for Yarn Plug'n'Play support and directory resolution using the exports field.
    • Added cycle detection for circular TypeScript configuration file extensions.
    • Enhanced TypeScript-related resolver configuration options.
  • Bug Fixes

    • Prevented infinite loops by detecting circular references in TypeScript configuration files.
  • Documentation

    • Improved README formatting and added documentation for new options and TypeScript configuration.
  • Refactor

    • Simplified file system trait and implementation, removed redundant methods, and updated internal caching mechanisms.
  • Tests

    • Added tests for builtin module resolution, directory exports, and circular tsconfig references.
  • Chores

    • Updated Rust toolchain and dependencies, improved .gitignore, and renamed a script in package.json.
    • Enhanced release configuration with new grouping and labeling.

JounQin and others added 30 commits June 14, 2025 20:08
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[github/codeql-action](https://github.com/github/codeql-action)
| action | minor | `v3.28.19` -> `v3.29.0` |
|
[taiki-e/install-action](https://github.com/taiki-e/install-action)
| action | patch | `v2.52.7` -> `v2.52.8` |

---

### Release Notes

<details>
<summary>github/codeql-action (github/codeql-action)</summary>

###
[`v3.29.0`](https://github.com/github/codeql-action/releases/tag/v3.29.0)

[Compare
Source](https://github.com/github/codeql-action/compare/v3.28.19...v3.29.0)

### CodeQL Action Changelog

See the [releases
page](https://github.com/github/codeql-action/releases) for the
relevant changes to the CodeQL CLI and language packs.

#### 3.29.0 - 11 Jun 2025

- Update default CodeQL bundle version to 2.22.0.
[#&#8203;2925](https://github.com/github/codeql-action/pull/2925)
- Bump minimum CodeQL bundle version to 2.16.6.
[#&#8203;2912](https://github.com/github/codeql-action/pull/2912)

See the full
[CHANGELOG.md](https://github.com/github/codeql-action/blob/v3.29.0/CHANGELOG.md)
for more information.

</details>

<details>
<summary>taiki-e/install-action (taiki-e/install-action)</summary>

###
[`v2.52.8`](https://github.com/taiki-e/install-action/releases/tag/v2.52.8):
2.52.8

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.52.7...v2.52.8)

-   Update `cargo-careful@latest` to 0.4.7.

-   Update `syft@latest` to 1.27.1.

-   Update `cargo-deny@latest` to 0.18.3.

-   Update `cargo-binstall@latest` to 1.13.0.

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change | Age | Adoption | Passing |
Confidence |
|---|---|---|---|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |  |  |  |  |
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| devDependencies | patch | [`22.15.30` ->
`22.15.31`](https://renovatebot.com/diffs/npm/@types%2fnode/22.15.30/22.15.31)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/22.15.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/22.15.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.15.30/22.15.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.15.30/22.15.31?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://github.com/vitest-dev/vitest)
([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| devDependencies | patch | [`3.2.2` ->
`3.2.3`](https://renovatebot.com/diffs/npm/vitest/3.2.2/3.2.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.2.2/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.2.2/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v3.2.3`](https://github.com/vitest-dev/vitest/releases/tag/v3.2.3)

[Compare
Source](https://github.com/vitest-dev/vitest/compare/v3.2.2...v3.2.3)

#####    🚀 Features

- **browser**: Use base url instead of **vitest**  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8126](https://github.com/vitest-dev/vitest/issues/8126)
[<samp>(1d8eb)</samp>](https://github.com/vitest-dev/vitest/commit/1d8ebf9ae)
- **ui**: Show test annotations and metadata in the test report tab  - 
by [@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8093](https://github.com/vitest-dev/vitest/issues/8093)
[<samp>(c69be)</samp>](https://github.com/vitest-dev/vitest/commit/c69be1fc1)

#####    🐞 Bug Fixes

- Rerun tests when project's setup file is changed  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8097](https://github.com/vitest-dev/vitest/issues/8097)
[<samp>(0f335)</samp>](https://github.com/vitest-dev/vitest/commit/0f3350667)
- Revert `expect.any` return type  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8129](https://github.com/vitest-dev/vitest/issues/8129)
[<samp>(47514)</samp>](https://github.com/vitest-dev/vitest/commit/4751436d5)
- Run only the name plugin last, not all config plugins  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8130](https://github.com/vitest-dev/vitest/issues/8130)
[<samp>(83862)</samp>](https://github.com/vitest-dev/vitest/commit/83862d46e)
-   **pool**:
- Throw if user's tests use `process.send()`  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8125](https://github.com/vitest-dev/vitest/issues/8125)
[<samp>(dfe81)</samp>](https://github.com/vitest-dev/vitest/commit/dfe81a67a)
-   **runner**:
- Fast sequential task updates missing  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8121](https://github.com/vitest-dev/vitest/issues/8121)
[<samp>(7bd11)</samp>](https://github.com/vitest-dev/vitest/commit/7bd11a9b3)
- Comments between fixture destructures  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8127](https://github.com/vitest-dev/vitest/issues/8127)
[<samp>(dc469)</samp>](https://github.com/vitest-dev/vitest/commit/dc469f260)
-   **vite-node**:
- Unable to handle errors where sourcemap mapping empty  -  by
[@&#8203;blake-newman](https://github.com/blake-newman) and
[@&#8203;hi-ogawa](https://github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/8071](https://github.com/vitest-dev/vitest/issues/8071)
[<samp>(8aa25)</samp>](https://github.com/vitest-dev/vitest/commit/8aa252121)

#####     [View changes on
GitHub](https://github.com/vitest-dev/vitest/compare/v3.2.2...v3.2.3)

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`^22.13.9` ->
`^24.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/22.15.31/24.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/24.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.15.31/24.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.15.31/24.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### 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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |
| [cfg-if](https://github.com/rust-lang/cfg-if) | dependencies
| patch | `1.0.0` -> `1.0.1` |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>rust-lang/cfg-if (cfg-if)</summary>

###
[`v1.0.1`](https://github.com/rust-lang/cfg-if/blob/HEAD/CHANGELOG.md#101---2025-06-09)

[Compare
Source](https://github.com/rust-lang/cfg-if/compare/1.0.0...v1.0.1)

##### Other

-   Remove `compiler-builtins` from `rustc-dep-of-std` dependencies
-   Remove redundant configuration from Cargo.toml
- More readable formatting and identifier names.
([#&#8203;39](https://github.com/rust-lang/cfg-if/pull/39))
- Add expanded example to readme
([#&#8203;38](https://github.com/rust-lang/cfg-if/pull/38))

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[MarcoIeni/release-plz-action](https://github.com/MarcoIeni/release-plz-action)
| action | patch | `v0.5.107` -> `v0.5.108` |
|
[taiki-e/install-action](https://github.com/taiki-e/install-action)
| action | minor | `v2.52.8` -> `v2.54.0` |

---

### Release Notes

<details>
<summary>MarcoIeni/release-plz-action
(MarcoIeni/release-plz-action)</summary>

###
[`v0.5.108`](https://github.com/release-plz/action/releases/tag/v0.5.108)

[Compare
Source](https://github.com/MarcoIeni/release-plz-action/compare/v0.5.107...v0.5.108)

#### What's Changed

- Update to 0.3.136 by
[@&#8203;marcoieni](https://github.com/marcoieni) in
[https://github.com/release-plz/action/pull/209](https://github.com/release-plz/action/pull/209)

**Full Changelog**:
release-plz/action@v0.5...v0.5.108

</details>

<details>
<summary>taiki-e/install-action (taiki-e/install-action)</summary>

###
[`v2.54.0`](https://github.com/taiki-e/install-action/compare/v2.53.2...v2.54.0)

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.53.2...v2.54.0)

###
[`v2.53.2`](https://github.com/taiki-e/install-action/releases/tag/v2.53.2):
2.53.2

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.53.1...v2.53.2)

- Fix `cargo-nextest` installation failure on Ubuntu 24.04 due to HTTP
403 error on requests to crates.io.
([#&#8203;1007](https://github.com/taiki-e/install-action/pull/1007))

- Update `rclone@latest` to 1.70.0.

###
[`v2.53.1`](https://github.com/taiki-e/install-action/releases/tag/v2.53.1):
2.53.1

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.53.0...v2.53.1)

- Support `typos` on AArch64 Linux.
([#&#8203;1004](https://github.com/taiki-e/install-action/pull/1004),
thanks [@&#8203;vivienm](https://github.com/vivienm))

- Update `cargo-nextest@latest` to 0.9.99.

###
[`v2.53.0`](https://github.com/taiki-e/install-action/releases/tag/v2.53.0):
2.53.0

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.52.8...v2.53.0)

- Support `zizmor`.
([#&#8203;1002](https://github.com/taiki-e/install-action/pull/1002),
thanks [@&#8203;jayvdb](https://github.com/jayvdb))

- Update `osv-scanner@latest` to 2.0.3.

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change | Age | Adoption | Passing |
Confidence |
|---|---|---|---|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |  |  |  |  |
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| devDependencies | patch | [`24.0.1` ->
`24.0.3`](https://renovatebot.com/diffs/npm/@types%2fnode/24.0.1/24.0.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/24.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/24.0.1/24.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/24.0.1/24.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://github.com/vitest-dev/vitest)
([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| devDependencies | patch | [`3.2.3` ->
`3.2.4`](https://renovatebot.com/diffs/npm/vitest/3.2.3/3.2.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.2.3/3.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.2.3/3.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v3.2.4`](https://github.com/vitest-dev/vitest/releases/tag/v3.2.4)

[Compare
Source](https://github.com/vitest-dev/vitest/compare/v3.2.3...v3.2.4)

#####    🐞 Bug Fixes

- Use correct path for optimisation of strip-literal  -  by
[@&#8203;mrginglymus](https://github.com/mrginglymus) in
[https://github.com/vitest-dev/vitest/issues/8139](https://github.com/vitest-dev/vitest/issues/8139)
[<samp>(44940)</samp>](https://github.com/vitest-dev/vitest/commit/44940d9dd)
- Print uint and buffer as a simple string  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8141](https://github.com/vitest-dev/vitest/issues/8141)
[<samp>(b86bf)</samp>](https://github.com/vitest-dev/vitest/commit/b86bf0d99)
-   **browser**:
- Show a helpful error when spying on an export  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8178](https://github.com/vitest-dev/vitest/issues/8178)
[<samp>(56007)</samp>](https://github.com/vitest-dev/vitest/commit/5600772c2)
-   **cli**:
- `vitest run --watch` should be watch-mode  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8128](https://github.com/vitest-dev/vitest/issues/8128)
[<samp>(657e8)</samp>](https://github.com/vitest-dev/vitest/commit/657e83f9f)
- Use absolute path environment on Windows  -  by
[@&#8203;colinaaa](https://github.com/colinaaa) in
[https://github.com/vitest-dev/vitest/issues/8105](https://github.com/vitest-dev/vitest/issues/8105)
[<samp>(85dc0)</samp>](https://github.com/vitest-dev/vitest/commit/85dc0195f)
- Throw error when `--shard x/<count>` exceeds count of test files  - 
by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8112](https://github.com/vitest-dev/vitest/issues/8112)
[<samp>(8a18c)</samp>](https://github.com/vitest-dev/vitest/commit/8a18c8e20)
-   **coverage**:
- Ignore SCSS in browser mode  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/8161](https://github.com/vitest-dev/vitest/issues/8161)
[<samp>(0c3be)</samp>](https://github.com/vitest-dev/vitest/commit/0c3be6f63)
-   **deps**:
- Update all non-major dependencies  -  in
[https://github.com/vitest-dev/vitest/issues/8123](https://github.com/vitest-dev/vitest/issues/8123)
[<samp>(93f32)</samp>](https://github.com/vitest-dev/vitest/commit/93f3200e4)
-   **expect**:
- Handle async errors in expect.soft  -  by
[@&#8203;lzl0304](https://github.com/lzl0304) in
[https://github.com/vitest-dev/vitest/issues/8145](https://github.com/vitest-dev/vitest/issues/8145)
[<samp>(68699)</samp>](https://github.com/vitest-dev/vitest/commit/686996912)
-   **pool**:
- Auto-adjust `minWorkers` when only `maxWorkers` specified  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8110](https://github.com/vitest-dev/vitest/issues/8110)
[<samp>(14dc0)</samp>](https://github.com/vitest-dev/vitest/commit/14dc0724f)
-   **reporter**:
- `task.meta` should be available in custom reporter's errors  -  by
[@&#8203;AriPerkkio](https://github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/8115](https://github.com/vitest-dev/vitest/issues/8115)
[<samp>(27df6)</samp>](https://github.com/vitest-dev/vitest/commit/27df68a0e)
-   **runner**:
- Preserve handler wrapping on extend  -  by
[@&#8203;pengooseDev](https://github.com/pengooseDev) in
[https://github.com/vitest-dev/vitest/issues/8153](https://github.com/vitest-dev/vitest/issues/8153)
[<samp>(a9281)</samp>](https://github.com/vitest-dev/vitest/commit/a92812b70)
-   **ui**:
- Ensure ui config option works correctly  -  by
[@&#8203;lzl0304](https://github.com/lzl0304) in
[https://github.com/vitest-dev/vitest/issues/8147](https://github.com/vitest-dev/vitest/issues/8147)
[<samp>(42eeb)</samp>](https://github.com/vitest-dev/vitest/commit/42eeb2ee6)

#####     [View changes on
GitHub](https://github.com/vitest-dev/vitest/compare/v3.2.3...v3.2.4)

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |
| [mimalloc-safe](https://github.com/napi-rs/mimalloc-safe) |
dependencies | patch | `0.1.52` -> `0.1.53` |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary>

###
[`v0.1.53`](https://github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0153---2025-06-16)

[Compare
Source](https://github.com/napi-rs/mimalloc-safe/compare/v0.1.52...mimalloc-safe-v0.1.53)

##### <!-- 1 -->Bug Fixes

- add MI\_NO\_OPT\_ARCH OFF when no\_opt\_arch is on
([#&#8203;22](https://github.com/napi-rs/mimalloc-safe/pull/22))

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
When there's a circular `tsconfig` extends, oxc-resolver crashed with
`Segmentation fault (core dumped)`.

This PR fixes that.

In this case, TypeScript outputs errors like:
```
$ pnpm tsc --noEmit -p tsconfig_self_reference.json
error TS18000: Circularity detected while resolving configuration: /home/green/workspace/oxc-resolver/tests/tsconfig_self_reference.json -> /home/green/workspace/oxc-resolver/tests/tsconfig_self_reference.json
$ pnpm tsc --noEmit -p tsconfig_circular_reference_a.json 
error TS18000: Circularity detected while resolving configuration: /home/green/workspace/oxc-resolver/tests/tsconfig_circular_reference_a.json -> /home/green/workspace/oxc-resolver/tests/tsconfig_circular_reference_b.json -> /home/green/workspace/oxc-resolver/tests/tsconfig_circular_reference_a.json
```
…572)

closes #571

This is not part of the spec but some vite projects rely on this
behavior.

Opt-in by `allowPackageExportsInDirectoryResolve: true`.

See
* vitejs/vite#20252
* nodejs/node#58827
We want to see whether it's a system specific problem.
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.87.0`
-> `1.88.0` |

---

### Release Notes

<details>
<summary>rust-lang/rust (rust)</summary>

###
[`v1.88.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1880-2025-06-26)

[Compare
Source](https://github.com/rust-lang/rust/compare/1.87.0...1.88.0)

\==========================

<a id="1.88.0-Language"></a>

## Language

- [Stabilize `#![feature(let_chains)]` in the 2024
edition.](https://github.com/rust-lang/rust/pull/132833)
This feature allows `&&`-chaining `let` statements inside `if` and
`while`, allowing intermixture with boolean expressions. The patterns
inside the `let` sub-expressions can be irrefutable or refutable.
- [Stabilize
`#![feature(naked_functions)]`.](https://github.com/rust-lang/rust/pull/134213)
Naked functions allow writing functions with no compiler-generated
epilogue and prologue, allowing full control over the generated assembly
for a particular function.
- [Stabilize
`#![feature(cfg_boolean_literals)]`.](https://github.com/rust-lang/rust/pull/138632)
This allows using boolean literals as `cfg` predicates, e.g.
`#[cfg(true)]` and `#[cfg(false)]`.
- [Fully de-stabilize the `#[bench]`
attribute](https://github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Add warn-by-default `dangerous_implicit_autorefs` lint against
implicit autoref of raw pointer
dereference.](https://github.com/rust-lang/rust/pull/123239)
The lint [will be bumped to
deny-by-default](https://github.com/rust-lang/rust/pull/141661)
in the next version of Rust.
- [Add `invalid_null_arguments` lint to prevent invalid usage of null
pointers.](https://github.com/rust-lang/rust/pull/119220)
  This lint is uplifted from `clippy::invalid_null_ptr_usage`.
- [Change trait impl candidate preference for builtin impls and trivial
where-clauses.](https://github.com/rust-lang/rust/pull/138176)
- [Check types of generic const parameter
defaults](https://github.com/rust-lang/rust/pull/139646)

<a id="1.88.0-Compiler"></a>

## Compiler

- [Stabilize `-Cdwarf-version` for selecting the version of DWARF debug
information to
generate.](https://github.com/rust-lang/rust/pull/136926)

<a id="1.88.0-Platform-Support"></a>

## Platform Support

- [Demote `i686-pc-windows-gnu` to Tier
2.](https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html

<a id="1.88.0-Libraries"></a>

## Libraries

- [Remove backticks from `#[should_panic]` test failure
message.](https://github.com/rust-lang/rust/pull/136160)
- [Guarantee that `[T; N]::from_fn` is generated in order of increasing
indices.](https://github.com/rust-lang/rust/pull/139099), for
those passing it a stateful closure.
- [The libtest flag `--nocapture` is deprecated in favor of the more
consistent `--no-capture`
flag.](https://github.com/rust-lang/rust/pull/139224)
- [Guarantee that `{float}::NAN` is a quiet
NaN.](https://github.com/rust-lang/rust/pull/139483)

<a id="1.88.0-Stabilized-APIs"></a>

## Stabilized APIs

-
[`Cell::update`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update)
- [`impl Default for *const
T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*const+T)
- [`impl Default for *mut
T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*mut+T)
-
[`HashMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if)
-
[`HashSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if)
-
[`proc_macro::Span::line`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line)
-
[`proc_macro::Span::column`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column)
-
[`proc_macro::Span::start`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start)
-
[`proc_macro::Span::end`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end)
-
[`proc_macro::Span::file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file)
-
[`proc_macro::Span::local_file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file)

These previously stable APIs are now stable in const contexts:

-
[`NonNull<T>::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace)
- [`<*mut
T>::replace`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace)
-
[`std::ptr::swap_nonoverlapping`](https://github.com/rust-lang/rust/pull/137280)
- [`Cell::{replace, get, get_mut, from_mut,
as_slice_of_cells}`](https://github.com/rust-lang/rust/pull/137928)

<a id="1.88.0-Cargo"></a>

## Cargo

- [Stabilize automatic garbage
collection.](https://github.com/rust-lang/cargo/pull/14287/)
- [use `zlib-rs` for gzip compression in rust
code](https://github.com/rust-lang/cargo/pull/15417/)

<a id="1.88.0-Rustdoc"></a>

## Rustdoc

- [Doctests can be ignored based on target names using `ignore-*`
attributes.](https://github.com/rust-lang/rust/pull/137096)
- [Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options
to specify a program (like qemu) and its arguments to run a
doctest.](https://github.com/rust-lang/rust/pull/137096)

<a id="1.88.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Finish changing the internal representation of pasted
tokens](https://github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Fully de-stabilize the `#[bench]`
attribute](https://github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Fix borrow checking some always-true
patterns.](https://github.com/rust-lang/rust/pull/139042)
The borrow checker was overly permissive in some cases, allowing
programs that shouldn't have compiled.
- [Update the minimum external LLVM to
19.](https://github.com/rust-lang/rust/pull/139275)
- [Make it a hard error to use a vector type with a non-Rust ABI without
enabling the required target
feature.](https://github.com/rust-lang/rust/pull/139309)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[github/codeql-action](https://github.com/github/codeql-action)
| action | patch | `v3.29.0` -> `v3.29.1` |
|
[taiki-e/install-action](https://github.com/taiki-e/install-action)
| action | patch | `v2.54.0` -> `v2.54.3` |

---

### Release Notes

<details>
<summary>github/codeql-action (github/codeql-action)</summary>

###
[`v3.29.1`](https://github.com/github/codeql-action/compare/v3.29.0...v3.29.1)

[Compare
Source](https://github.com/github/codeql-action/compare/v3.29.0...v3.29.1)

</details>

<details>
<summary>taiki-e/install-action (taiki-e/install-action)</summary>

###
[`v2.54.3`](https://github.com/taiki-e/install-action/releases/tag/v2.54.3):
2.54.3

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.54.2...v2.54.3)

- Update `cargo-careful@latest` to 0.4.8.

###
[`v2.54.2`](https://github.com/taiki-e/install-action/releases/tag/v2.54.2):
2.54.2

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.54.1...v2.54.2)

- Update `rclone@latest` to 1.70.2.

- Update `zizmor@latest` to 1.10.0.

###
[`v2.54.1`](https://github.com/taiki-e/install-action/releases/tag/v2.54.1):
2.54.1

[Compare
Source](https://github.com/taiki-e/install-action/compare/v2.54.0...v2.54.1)

- Update `wasmtime@latest` to 34.0.1.

- Update `cargo-tarpaulin@latest` to 0.32.8.

- Update `knope@latest` to 0.21.0.

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change | Age | Adoption | Passing |
Confidence |
|---|---|---|---|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |  |  |  |  |
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| devDependencies | patch | [`24.0.3` ->
`24.0.7`](https://renovatebot.com/diffs/npm/@types%2fnode/24.0.3/24.0.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/24.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/24.0.3/24.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/24.0.3/24.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pnpm](https://pnpm.io)
([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm)) |
packageManager | patch | [`10.12.1` ->
`10.12.4`](https://renovatebot.com/diffs/npm/pnpm/10.12.1/10.12.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.12.1/10.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.12.1/10.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>pnpm/pnpm (pnpm)</summary>

###
[`v10.12.4`](https://github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10124)

[Compare
Source](https://github.com/pnpm/pnpm/compare/v10.12.3...v10.12.4)

##### Patch Changes

- Fix `pnpm licenses` command for local dependencies
[#&#8203;9583](https://github.com/pnpm/pnpm/pull/9583).
- Fix a bug in which `pnpm ls --filter=not-exist --json` prints nothing
instead of an empty array
[#&#8203;9672](https://github.com/pnpm/pnpm/issues/9672).
- Fix a deadlock that sometimes happens during peer dependency
resolution
[#&#8203;9673](https://github.com/pnpm/pnpm/issues/9673).
- Running `pnpm install` after `pnpm fetch` should hoist all
dependencies that need to be hoisted.
Fixes a regression introduced in \[v10.12.2] by
\[[#&#8203;9648](https://github.com/pnpm/pnpm/issues/9648)];
resolves
\[[#&#8203;9689](https://github.com/pnpm/pnpm/issues/9689)].

\[v10.12.2]:
https://github.com/pnpm/pnpm/releases/tag/v10.12.2Add
commentMore actions
\[[#&#8203;9648](https://github.com/pnpm/pnpm/issues/9648)]:
[https://github.com/pnpm/pnpm/pull/9648](https://github.com/pnpm/pnpm/pull/9648)
\[[#&#8203;9689](https://github.com/pnpm/pnpm/issues/9689)]:
[https://github.com/pnpm/pnpm/issues/9689](https://github.com/pnpm/pnpm/issues/9689)

###
[`v10.12.3`](https://github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10123)

[Compare
Source](https://github.com/pnpm/pnpm/compare/v10.12.2...v10.12.3)

##### Patch Changes

- Restore hoisting of optional peer dependencies when installing with an
outdated lockfile.
Regression introduced in [v10.12.2] by [#&#8203;9648]; resolves
[#&#8203;9685].

[v10.12.2]: https://github.com/pnpm/pnpm/releases/tag/v10.12.2

  [#&#8203;9648]: https://github.com/pnpm/pnpm/pull/9648

  [#&#8203;9685]: https://github.com/pnpm/pnpm/issues/9685

###
[`v10.12.2`](https://github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10122)

[Compare
Source](https://github.com/pnpm/pnpm/compare/v10.12.1...v10.12.2)

##### Patch Changes

- Fixed hoisting with `enableGlobalVirtualStore` set to `true`
[#&#8203;9648](https://github.com/pnpm/pnpm/pull/9648).
- Fix the `--help` and `-h` flags not working as expected for the `pnpm
create` command.
- The dependency package path output by the `pnpm licenses list --json`
command is incorrect.
- Fix a bug in which `pnpm deploy` fails due to overridden dependencies
having peer dependencies causing `ERR_PNPM_OUTDATED_LOCKFILE`
[#&#8203;9595](https://github.com/pnpm/pnpm/issues/9595).

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### 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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |
| [criterion2](https://bheisler.github.io/criterion.rs/book/index.html)
([source](https://github.com/Boshen/criterion2.rs)) |
dev-dependencies | patch | `3.0.0` -> `3.0.1` |
| [indexmap](https://github.com/indexmap-rs/indexmap) |
dependencies | minor | `2.9.0` -> `2.10.0` |
| [papaya](https://github.com/ibraheemdev/papaya) |
dependencies | patch | `0.2.1` -> `0.2.3` |
| [pnp](https://yarnpkg.com)
([source](https://github.com/yarnpkg/pnp-rs)) | dependencies |
minor | `0.9.4` -> `0.10.0` |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>Boshen/criterion2.rs (criterion2)</summary>

###
[`v3.0.1`](https://github.com/Boshen/criterion2.rs/blob/HEAD/CHANGELOG.md#301---2025-03-23)

[Compare
Source](https://github.com/Boshen/criterion2.rs/compare/v3.0.0...v3.0.1)

##### Other

- *(deps)* lock file maintenance rust crates
([#&#8203;94](https://github.com/Boshen/criterion2.rs/pull/94))
- *(deps)* update dependency rust to v1.85.1
([#&#8203;92](https://github.com/Boshen/criterion2.rs/pull/92))

</details>

<details>
<summary>indexmap-rs/indexmap (indexmap)</summary>

###
[`v2.10.0`](https://github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#2100-2025-06-26)

[Compare
Source](https://github.com/indexmap-rs/indexmap/compare/2.9.0...2.10.0)

- Added `extract_if` methods to `IndexMap` and `IndexSet`, similar to
the
methods for `HashMap` and `HashSet` with ranges like `Vec::extract_if`.
- Added more `#[track_caller]` annotations to functions that may panic.

</details>

<details>
<summary>ibraheemdev/papaya (papaya)</summary>

###
[`v0.2.3`](https://github.com/ibraheemdev/papaya/releases/tag/v0.2.3):
0.2.3

[Compare
Source](https://github.com/ibraheemdev/papaya/compare/v0.2.2...v0.2.3)

- Remove use of 64-bit atomics
([https://github.com/ibraheemdev/papaya/pull/75](https://github.com/ibraheemdev/papaya/pull/75)).

###
[`v0.2.2`](https://github.com/ibraheemdev/papaya/releases/tag/v0.2.2):
0.2.2

[Compare
Source](https://github.com/ibraheemdev/papaya/compare/v0.2.1...v0.2.2)

- Fix a soundness issue when using `HashMap` with key/value types that
are aligned to less than 8 bytes. This is likely only relevant on 32-bit
platforms
([https://github.com/ibraheemdev/papaya/pull/74](https://github.com/ibraheemdev/papaya/pull/74)).
- Improve performance when creating a large number of maps
([https://github.com/ibraheemdev/papaya/pull/69](https://github.com/ibraheemdev/papaya/pull/69)).

</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://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/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Boshen <[email protected]>
renovate bot and others added 3 commits June 30, 2025 14:57
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [crate-ci/typos](https://github.com/crate-ci/typos) | action
| minor | `v1.33.1` -> `v1.34.0` |

---

### Release Notes

<details>
<summary>crate-ci/typos (crate-ci/typos)</summary>

###
[`v1.34.0`](https://github.com/crate-ci/typos/compare/v1.33.1...v1.34.0)

[Compare
Source](https://github.com/crate-ci/typos/compare/v1.33.1...v1.34.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc-resolver).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@JounQin JounQin requested a review from Copilot July 2, 2025 18:32
@JounQin JounQin self-assigned this Jul 2, 2025
@JounQin JounQin added the upstream Blocked by upstream label Jul 2, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jul 2, 2025

Warning

Rate limit exceeded

@JounQin has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 18 minutes and 17 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 77adf67 and eb50ecd.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (25)
  • .gitignore (1 hunks)
  • Cargo.toml (1 hunks)
  • README.md (1 hunks)
  • fixtures/pnp/shared/lib.js (1 hunks)
  • justfile (2 hunks)
  • napi/index.d.ts (3 hunks)
  • napi/src/lib.rs (4 hunks)
  • napi/src/options.rs (2 hunks)
  • napi/tests/simple.test.mjs (1 hunks)
  • package.json (1 hunks)
  • release-plz.toml (1 hunks)
  • rust-toolchain.toml (1 hunks)
  • src/cache.rs (1 hunks)
  • src/error.rs (3 hunks)
  • src/file_system.rs (4 hunks)
  • src/lib.rs (14 hunks)
  • src/options.rs (8 hunks)
  • src/tests/exports_field.rs (1 hunks)
  • src/tests/memory_fs.rs (0 hunks)
  • src/tests/pnp.rs (1 hunks)
  • src/tsconfig_context.rs (1 hunks)
  • tests/integration_test.rs (2 hunks)
  • tests/tsconfig_circular_reference_a.json (1 hunks)
  • tests/tsconfig_circular_reference_b.json (1 hunks)
  • tests/tsconfig_self_reference.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Copilot AI left a 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 merges upstream changes from oxc-project/oxc-resolver, primarily adding circular-extend detection for tsconfig files, renaming and reworking the Yarn PnP support, and introducing a new option to allow package exports when resolving directories.

  • Detect and error on self-referencing or circular tsconfig extends, with new context tracking and tests.
  • Rename enable_pnp to yarn_pnp, replace DashMap with papaya::HashMap for PnP caching, and update related tests.
  • Add allow_package_exports_in_directory_resolve option to support certain Vite behaviors, with API, implementation, and documentation updates.

Reviewed Changes

Copilot reviewed 22 out of 26 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/tsconfig_*.json Add self-reference and circular-reference tsconfig test fixtures
src/tsconfig_context.rs Introduce TsconfigResolveContext for tracking extended configs
src/lib.rs Integrate context in load_tsconfig, implement circular error
src/options.rs Rename enable_pnpyarn_pnp, add allow_package_exports_in_directory_resolve
README.md Document new options and update tables
Comments suppressed due to low confidence (2)

src/tests/pnp.rs:91

  • The test name still mentions disable_pnp_mode but the option has been renamed to yarn_pnp. Consider renaming the test to reflect the new yarn_pnp flag for clarity.
fn resolve_pnp_pkg_should_failed_while_disable_pnp_mode() {

README.md:213

  • The table row for allowPackageExportsInDirectoryResolve places the description under the Default column and leaves the Description column empty. Swap or split these entries so that the Default column shows false and the Description column contains the explanatory text.
| allowPackageExportsInDirectoryResolve | Allow `exports` field in `require('../directory')`. Not part of `enhanced-resolve`. |                                                                                                                                                           |

@codecov
Copy link

codecov bot commented Jul 2, 2025

Codecov Report

Attention: Patch coverage is 88.88889% with 11 lines in your changes missing coverage. Please review.

Project coverage is 92.54%. Comparing base (824844d) to head (eb50ecd).
Report is 36 commits behind head on main.

Files with missing lines Patch % Lines
src/error.rs 27.27% 8 Missing ⚠️
src/file_system.rs 85.71% 1 Missing ⚠️
src/lib.rs 98.07% 1 Missing ⚠️
src/options.rs 92.85% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #174      +/-   ##
==========================================
+ Coverage   92.30%   92.54%   +0.24%     
==========================================
  Files          13       14       +1     
  Lines        3106     2953     -153     
==========================================
- Hits         2867     2733     -134     
+ Misses        239      220      -19     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Changes requested ❌

Reviewed everything up to f9a40b5 in 2 minutes and 24 seconds. Click for details.
  • Reviewed 1245 lines of code in 25 files
  • Skipped 1 files when reviewing.
  • Skipped posting 7 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. tests/integration_test.rs:50
  • Draft comment:
    Comparing relative paths (e.g. using PathBuf::from("./tests/tsconfig.json")) might lead to cross‐platform inconsistencies. Consider canonicalizing paths or using absolute paths for robust, deterministic comparisons.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
2. src/options.rs:400
  • Draft comment:
    The sanitize() method automatically sets enforce_extension based on the presence of an empty extension. Adding an inline comment explaining that an empty string in the extensions array triggers EnforceExtension::Enabled would improve clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
3. tests/memory_fs.rs:52
  • Draft comment:
    The test uses file.read_to_string(...).unwrap(). Although acceptable in tests, consider using the '?' operator for consistency with standard error handling practices.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
4. tests/pnp.rs:94
  • Draft comment:
    This test disables PnP mode (yarn_pnp: false) and checks for a NotFound error when resolving a module. Adding a brief comment summarizing the purpose of this test would clarify its intent.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. tests/exports_field.rs:28
  • Draft comment:
    This test file contains extensive test cases for various exports field scenarios. Consider organizing or splitting these tests into separate files or modules to improve maintainability and readability.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. tests/integration_test.rs:56
  • Draft comment:
    The tests for tsconfig circular references compare expected vectors of paths. Ensure that the ordering of paths in TsconfigCircularExtend errors is deterministic to avoid flaky tests.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment is asking the author to ensure that the ordering of paths is deterministic to avoid flaky tests. It is not a specific suggestion or a request for a test to be written, but rather a general request to ensure something, which violates the rules.
7. src/tests/pnp.rs:91
  • Draft comment:
    Typo: The function name 'resolve_pnp_pkg_should_failed_while_disable_pnp_mode' contains a grammatical error. Consider renaming it to 'resolve_pnp_pkg_should_fail_while_disable_pnp_mode' to correct the phrasing.
  • Reason this comment was not posted:
    Comment was on unchanged code.

Workflow ID: wflow_yoHBw4ooovNboke8

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@codspeed-hq
Copy link

codspeed-hq bot commented Jul 2, 2025

CodSpeed Performance Report

Merging #174 will not alter performance

Comparing chore/merge_upstream (eb50ecd) with main (824844d)

Summary

✅ 3 untouched benchmarks

@JounQin JounQin force-pushed the chore/merge_upstream branch from f9a40b5 to 39e7145 Compare July 2, 2025 18:39
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Looks good to me! 👍

Reviewed 39e7145 in 56 seconds. Click for details.
  • Reviewed 1362 lines of code in 26 files
  • Skipped 1 files when reviewing.
  • Skipped posting 7 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. tests/tsconfig_circular_reference_a.json:1
  • Draft comment:
    Consider adding a trailing newline at the end of the file for POSIX compliance and consistency with other JSON config files.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. tests/tsconfig_circular_reference_b.json:1
  • Draft comment:
    Consider adding a trailing newline at the end of the file for consistency with similar config files.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. tests/tsconfig_self_reference.json:1
  • Draft comment:
    Consider adding a trailing newline at the end of the file to follow common formatting conventions.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
4. tests/exports_field.rs:29
  • Draft comment:
    This test file contains many detailed test cases for exports field resolution. Consider refactoring common patterns into helper functions to improve readability and maintainability.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
5. tests/memory_fs.rs:39
  • Draft comment:
    Test setup code uses unwrap() for file creation and writing. While acceptable in test code, consider using expect() with descriptive messages to improve debugging in case of failure.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
6. tests/pnp.rs:163
  • Draft comment:
    PnP tests are comprehensive. Since these tests use conditional compilation to exclude Windows (as indicated later), consider adding an explicit annotation or comment to document that Windows is not supported.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
7. tests/integration_test.rs:55
  • Draft comment:
    Integration tests effectively cover public API usages. As error comparisons (e.g. for tsconfig circular references) are sensitive to exact error formatting, consider ensuring these remain stable, or use pattern matching in assertions to reduce brittleness over future changes.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None

Workflow ID: wflow_EBYJ6KjEYvthqodq

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
src/tsconfig_context.rs (1)

9-14: Consider using a scope guard for panic safety.

The with_extended_file method pushes to the stack and then pops after the callback, but if the callback panics, the path won't be popped, potentially leaving the context in an inconsistent state.

This issue was previously identified and the concern about using RAII/scope guards remains valid to ensure the stack is always properly cleaned up.

🧹 Nitpick comments (3)
src/file_system.rs (1)

176-190: Consider adding test coverage for yarn_pnp code path.

The implementation correctly handles different VPath variants when yarn_pnp is enabled. However, static analysis indicates line 183 lacks test coverage.

Would you like me to help generate tests for the yarn_pnp-specific code paths to improve coverage?

README.md (1)

192-213: Improve table formatting and fix grammar issue.

The table reformatting improves readability, and the new allowPackageExportsInDirectoryResolve option is well-documented. However, there's a grammar error on line 198:

-| enforceExtension                      | false                                                                               | Enforce that a extension from extensions must be used                                                                                                     |
+| enforceExtension                      | false                                                                               | Enforce that an extension from extensions must be used                                                                                                    |
src/options.rs (1)

589-595: Add test coverage for the new display formatting.

The static analysis correctly identifies that the display formatting for allow_package_exports_in_directory_resolve is not covered by tests.

Consider adding a test case that sets allow_package_exports_in_directory_resolve: true to ensure the display output includes this field in the formatting.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 77adf67 and 39e7145.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (26)
  • .github/actions/pnpm/action.yml (1 hunks)
  • .gitignore (1 hunks)
  • Cargo.toml (1 hunks)
  • README.md (1 hunks)
  • fixtures/pnp/shared/lib.js (1 hunks)
  • justfile (2 hunks)
  • napi/index.d.ts (3 hunks)
  • napi/index.js (0 hunks)
  • napi/src/lib.rs (4 hunks)
  • napi/src/options.rs (2 hunks)
  • napi/tests/simple.test.mjs (1 hunks)
  • release-plz.toml (1 hunks)
  • rust-toolchain.toml (1 hunks)
  • src/cache.rs (1 hunks)
  • src/error.rs (3 hunks)
  • src/file_system.rs (4 hunks)
  • src/lib.rs (14 hunks)
  • src/options.rs (8 hunks)
  • src/tests/exports_field.rs (1 hunks)
  • src/tests/memory_fs.rs (0 hunks)
  • src/tests/pnp.rs (1 hunks)
  • src/tsconfig_context.rs (1 hunks)
  • tests/integration_test.rs (2 hunks)
  • tests/tsconfig_circular_reference_a.json (1 hunks)
  • tests/tsconfig_circular_reference_b.json (1 hunks)
  • tests/tsconfig_self_reference.json (1 hunks)
💤 Files with no reviewable changes (2)
  • napi/index.js
  • src/tests/memory_fs.rs
🧰 Additional context used
🧠 Learnings (19)
📓 Common learnings
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
napi/tests/simple.test.mjs (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#129
File: src/tests/pnp.rs:6-6
Timestamp: 2025-06-02T15:57:50.888Z
Learning: In the unrs-resolver project, std::env is acceptable for test cases even when deprecated, as the user prefers simpler approaches in test code compared to production code standards.
.gitignore (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
src/tests/exports_field.rs (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#129
File: src/tests/pnp.rs:6-6
Timestamp: 2025-06-02T15:57:50.888Z
Learning: In the unrs-resolver project, std::env is acceptable for test cases even when deprecated, as the user prefers simpler approaches in test code compared to production code standards.
tests/tsconfig_circular_reference_a.json (4)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
src/tests/pnp.rs (9)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
Learnt from: JounQin
PR: unrs/unrs-resolver#129
File: src/tests/pnp.rs:6-6
Timestamp: 2025-06-02T15:57:50.888Z
Learning: In the unrs-resolver project, std::env is acceptable for test cases even when deprecated, as the user prefers simpler approaches in test code compared to production code standards.
tests/tsconfig_circular_reference_b.json (4)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
tests/tsconfig_self_reference.json (4)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
justfile (5)
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
.github/actions/pnpm/action.yml (6)
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
napi/src/options.rs (6)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
napi/index.d.ts (6)
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
README.md (4)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
tests/integration_test.rs (9)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#129
File: src/tests/pnp.rs:6-6
Timestamp: 2025-06-02T15:57:50.888Z
Learning: In the unrs-resolver project, std::env is acceptable for test cases even when deprecated, as the user prefers simpler approaches in test code compared to production code standards.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
napi/src/lib.rs (5)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
src/error.rs (5)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
src/tsconfig_context.rs (6)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
src/options.rs (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
src/lib.rs (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
🧬 Code Graph Analysis (2)
src/tests/exports_field.rs (4)
src/tests/mod.rs (1)
  • fixture (38-40)
src/lib.rs (2)
  • new (156-163)
  • default (149-151)
src/options.rs (1)
  • default (491-520)
src/resolution.rs (1)
  • path (75-77)
napi/src/lib.rs (4)
napi/index.d.ts (2)
  • Builtin (17-30)
  • ResolveResult (232-248)
src/tests/resolve.rs (1)
  • resolve (8-77)
src/lib.rs (2)
  • resolve (209-216)
  • default (149-151)
src/options.rs (2)
  • from (453-455)
  • default (491-520)
🪛 LanguageTool
README.md

[misspelling] ~198-~198: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ... | Enforce that a extension from extensions must be used ...

(EN_A_VS_AN)

🪛 GitHub Check: codecov/patch
src/error.rs

[warning] 179-184: src/error.rs#L179-L184
Added lines #L179 - L184 were not covered by tests


[warning] 186-187: src/error.rs#L186-L187
Added lines #L186 - L187 were not covered by tests

src/file_system.rs

[warning] 183-183: src/file_system.rs#L183
Added line #L183 was not covered by tests

src/options.rs

[warning] 594-594: src/options.rs#L594
Added line #L594 was not covered by tests

src/lib.rs

[warning] 728-728: src/lib.rs#L728
Added line #L728 was not covered by tests

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Benchmark
🔇 Additional comments (48)
rust-toolchain.toml (1)

2-2: LGTM! Standard toolchain update.

The Rust toolchain update from 1.87.0 to 1.88.0 aligns well with the broader dependency and feature updates in this PR.

fixtures/pnp/shared/lib.js (1)

3-4: LGTM! Formatting improvement.

Adding the trailing newline improves file formatting consistency without affecting functionality.

.gitignore (1)

4-4: LGTM! Proper dependency exclusion.

Adding /napi/node_modules to gitignore is appropriate given the napi directory enhancements and follows the existing pattern of excluding node_modules directories.

Cargo.toml (1)

94-94: LGTM — Windows-sys Patch Update Only

  • The windows-sys bump from 0.60 to 0.60.2 is a safe, backward-compatible patch.
  • No remaining code references to dashmap or dunce were found (only commented mentions of dunce in tests/resolve_test.rs).

You can optionally clean up those outdated test comments, but there are no functional dependencies on them.

.github/actions/pnpm/action.yml (1)

42-46: Installation order swap is safe

I checked both fixtures and found no cross-dependencies or references between them. Each directory has independent dependencies, so swapping their install order won’t affect the PnP setup.

  • fixtures/yarn/package.json – devDependencies on TypeScript only
  • fixtures/global-pnp/package.json – dependencies on source-map-support only
src/cache.rs (1)

11-11: LGTM! Necessary trait bounds for hash map usage.

The addition of Eq and std::hash::Hash trait bounds to Cp is appropriate and necessary for using it as a key in hash-based collections.

justfile (2)

24-24: Good addition to ensure dependencies are installed.

Adding just install to the ready recipe ensures all fixture dependencies are properly installed before running tests, which is essential based on the project's test requirements.


57-59: Node.js command changes validated

Both build and test scripts are present in package.json:

  • scripts.build: pnpm build:debug --features allocator --release
  • scripts.test: vitest run -r ./napi

Using node --run build and node --run test in the Justfile will work as intended.

release-plz.toml (1)

45-56: Nice improvements to changelog organization!

The addition of emoji icons improves visual distinction, and the new groups for security and revert commits provide better categorization. The consolidation of skip rules is also cleaner.

src/file_system.rs (3)

105-123: Clean implementation of conditional compilation for yarn_pnp support.

The conditional inclusion of pnp_lru field and the corresponding Default implementation using cfg_if! is well structured.


126-141: Good performance optimization with simdutf8.

Using simdutf8 for UTF-8 validation is a good performance optimization compared to the standard library's implementation. The error handling correctly mimics fs::read_to_string behavior.


214-226: Simplified read_link implementation looks good.

The removal of the canonicalize fallback simplifies the code while maintaining the necessary functionality.

tests/tsconfig_circular_reference_b.json (1)

1-3: Test fixture for circular reference detection.

This file correctly sets up part of a circular reference test scenario by extending tsconfig_circular_reference_a.json.

src/tests/pnp.rs (1)

94-94: LGTM! Option rename correctly updated.

The change from enable_pnp to yarn_pnp aligns with the refactoring mentioned in the summary where the PnP control option was renamed throughout the codebase.

tests/tsconfig_circular_reference_a.json (1)

1-3: LGTM! Well-formed test fixture for circular reference detection.

This test fixture correctly creates a circular reference scenario to verify the resolver's ability to detect and handle circular TypeScript configuration extensions.

tests/tsconfig_self_reference.json (1)

1-3: LGTM! Appropriate test fixture for self-reference detection.

This test fixture correctly demonstrates a self-referential tsconfig scenario, helping verify the resolver can detect when a configuration file extends itself.

src/tests/exports_field.rs (1)

290-300: LGTM! Well-structured test for new directory resolution functionality.

The test correctly verifies the allow_package_exports_in_directory_resolve option by testing relative path resolution using the exports field. The test structure is clear and follows established patterns in the file.

napi/tests/simple.test.mjs (1)

52-64: LGTM! Well-structured test for builtin module resolution.

The test correctly validates the new builtin module resolution feature by:

  • Testing both bare ('fs') and prefixed ('node:fs') specifiers
  • Verifying the correct resolved value in both cases
  • Properly distinguishing isRuntimeModule based on whether the original specifier was prefixed
napi/src/options.rs (2)

19-20: LGTM! Clear field name improvement.

The yarn_pnp field provides a more descriptive name than the previous enable_pnp, improving API clarity.


162-170: LGTM! Well-documented non-standard feature.

The documentation clearly explains:

  • The purpose of the feature
  • That it's not part of the official spec
  • The specific use case (Vite projects)
  • Relevant issue references

This transparency helps users understand when and why to use this option.

tests/integration_test.rs (2)

55-69: LGTM! Comprehensive test for self-referencing tsconfig.

The test correctly validates that when a tsconfig extends itself, the resolver detects the circular reference and returns the appropriate error with the expected file chain.


71-86: LGTM! Thorough test for circular tsconfig references.

The test properly validates circular references between multiple tsconfig files, ensuring the error includes the complete chain of files involved in the cycle.

README.md (1)

215-221: LGTM! Comprehensive TypeScript configuration documentation.

The new section clearly documents the TypeScript configuration options with:

  • Clear field descriptions
  • Default values
  • Explanation of the references field options
src/error.rs (1)

46-48: LGTM! Appropriate error variant for circular references.

The new TsconfigCircularExtend variant correctly represents circular tsconfig extension errors and integrates well with the existing error handling pattern.

napi/index.d.ts (4)

16-30: Well-designed interface for Node.js builtin module support.

The Builtin interface is clearly documented with appropriate ESM compliance notes and examples. The separation of resolved (always node: prefixed) and isRuntimeModule (original request format) provides good flexibility for different use cases.


60-61: Clean option naming for Yarn PnP support.

The yarnPnp naming is more descriptive than the previous enablePnp and aligns well with the feature being enabled.


219-229: Well-documented non-standard behavior option.

The documentation clearly explains that this behavior is outside the official spec and provides relevant GitHub issue links for context. This helps users understand when and why they might need this option.


235-235: Consistent integration of builtin support.

The optional builtin property integrates well with the existing ResolveResult interface structure.

src/tsconfig_context.rs (2)

16-18: Efficient circular reference detection.

The is_already_extended method provides a clean way to detect cycles in the tsconfig extension chain.


20-25: Well-optimized vector construction for error reporting.

Using Vec::with_capacity and extend_from_slice is efficient for building the extended configs list with the additional path.

napi/src/lib.rs (3)

41-53: Consistent Rust implementation of the Builtin interface.

The Builtin struct matches the TypeScript interface exactly, with clear documentation explaining the ESM compliance and runtime module detection.


67-81: Proper error handling for builtin modules.

The match on ResolveError::Builtin correctly populates the builtin field while maintaining the error state. This allows callers to receive both the error information and the builtin module details.


279-282: Complete option normalization for new fields.

Both new options (allow_package_exports_in_directory_resolve and yarn_pnp) are properly handled in the normalization function with appropriate default fallbacks.

src/options.rs (4)

121-125: Improved naming consistency for Yarn PnP support.

Renaming enable_pnp to yarn_pnp provides clearer indication of the specific package manager feature being enabled.


186-194: Well-documented non-standard resolver option.

The documentation clearly explains this is a spec deviation used by some Vite projects, with appropriate GitHub issue references for context.


508-509: Consistent default value for yarn_pnp.

Setting yarn_pnp to true by default when the feature is enabled maintains backward compatibility while providing the expected behavior.


646-646: Test updates properly reflect the option changes.

The test cases are correctly updated to include the new allow_package_exports_in_directory_resolve field and the renamed yarn_pnp field.

Also applies to: 679-679

src/lib.rs (11)

66-66: LGTM!

The addition of the tsconfig_context module is appropriate for implementing circular reference detection.


113-116: LGTM!

The import of TsconfigResolveContext is correctly added for tracking circular references during tsconfig resolution.


139-140: LGTM!

The migration from DashMap to papaya::HashMap is a good performance optimization for the PnP cache. The papaya::HashMap provides better concurrent access patterns while maintaining thread safety through the Arc wrapper.


161-161: LGTM!

The initialization of pnp_cache with papaya::HashMap::default() is consistent with the field type change.

Also applies to: 172-172


230-237: LGTM!

Properly initializes the TsconfigResolveContext for tracking circular references during tsconfig resolution.


880-880: LGTM!

The rename from enable_pnp to yarn_pnp is a good improvement that makes the feature flag's purpose clearer.


973-979: LGTM!

The refactoring to use get_or_insert_with directly on the pinned cache is cleaner and more idiomatic. The logic correctly handles finding PnP manifests from either the current path or configured roots.


1424-1448: LGTM!

Excellent implementation of circular reference detection for tsconfig extensions. The code properly:

  • Checks for cycles before processing extensions
  • Returns a descriptive error with the full extension chain
  • Uses the context pattern to maintain state across recursive calls

1479-1499: LGTM!

The extend_tsconfig method signature correctly includes the TsconfigResolveContext parameter and properly threads it through recursive calls.


1514-1514: LGTM!

Correctly passes a fresh TsconfigResolveContext::default() for tsconfig path resolution, which is appropriate as this is a separate resolution context.


716-730: Ignore missing test coverage suggestion

The directory test in src/tests/exports_field.rs already exercises the new allow_package_exports_in_directory_resolve branch:

  • src/tests/exports_field.rs (fn directory) covers the call to package_exports_resolve

Likely an incorrect or invalid review comment.

@JounQin JounQin force-pushed the chore/merge_upstream branch from 39e7145 to eb48755 Compare July 2, 2025 18:46
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Changes requested ❌

Reviewed eb48755 in 1 minute and 47 seconds. Click for details.
  • Reviewed 1356 lines of code in 26 files
  • Skipped 1 files when reviewing.
  • Skipped posting 6 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/tests/memory_fs.rs:31
  • Draft comment:
    In MemoryFS::add_file, you iterate over all ancestors to create parent directories. Although this works for test code, consider using a more efficient method (or a helper that creates missing parent directories) to avoid multiple filesystem checks.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
2. src/tests/pnp.rs:91
  • Draft comment:
    Tests in this file rely on exact yarn cache paths (e.g. assertions comparing fixed .yarn/cache paths). This approach may be brittle if Yarn changes its cache structure. Consider using pattern matching or constants to make these tests more robust.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
3. src/tests/exports_field.rs:28
  • Draft comment:
    This exports_field test module contains a large number of detailed test cases. For long‐term maintainability, consider splitting these tests into smaller sub-modules or grouping related cases. Also, ensure that error expectations (e.g. PackagePathNotExported) remain stable if internal error message details change.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
4. tests/integration_test.rs:48
  • Draft comment:
    The tsconfig test in integration_test.rs compares the resolved tsconfig path using a relative path (./tests/tsconfig.json). Ensure that path normalization is consistent across operating systems, or consider using canonicalized absolute paths in tests.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. src/options.rs:392
  • Draft comment:
    In the sanitize() method, the logic to set enforce_extension based on whether any extension is an empty string is subtle. Consider adding inline comments explaining why an empty string among extensions triggers switching enforce_extension from Auto to Enabled.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. src/error.rs:53
  • Draft comment:
    Typo in comment: "won't be able consumable by NodeJS import or require." Consider rephrasing to "won't be consumable by NodeJS import or require."
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.

Workflow ID: wflow_8e3tYekyFuLlwtuT

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
README.md (1)

201-201: Fix the incomplete description for the fallback option.

The description still appears incomplete as noted in the previous review. It should end with "fails" to be grammatically correct and clear.

-| fallback                              | {}                                                                                  | Same as `alias`, but only used if default resolving                                                                                                       |
+| fallback                              | {}                                                                                  | Same as `alias`, but only used if default resolving fails                                                                                                 |
🧹 Nitpick comments (1)
src/lib.rs (1)

139-139: Verify thread safety and performance of papaya::HashMap

The cache type was switched from DashMap to papaya::HashMap. Before merging, please:

  • Confirm that papaya::HashMap implements Send + Sync (or otherwise guarantees safe concurrent access) by reviewing its documentation or source.
  • Validate its concurrency strategy (e.g., sharding, lock-free) to ensure it matches our PnP workload.
  • Benchmark typical operations (get, insert, remove) under expected concurrent loads and compare them to the previous DashMap performance.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 39e7145 and eb48755.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (26)
  • .github/actions/pnpm/action.yml (1 hunks)
  • .gitignore (1 hunks)
  • Cargo.toml (1 hunks)
  • README.md (1 hunks)
  • fixtures/pnp/shared/lib.js (1 hunks)
  • justfile (2 hunks)
  • napi/index.d.ts (3 hunks)
  • napi/src/lib.rs (4 hunks)
  • napi/src/options.rs (2 hunks)
  • napi/tests/simple.test.mjs (1 hunks)
  • package.json (1 hunks)
  • release-plz.toml (1 hunks)
  • rust-toolchain.toml (1 hunks)
  • src/cache.rs (1 hunks)
  • src/error.rs (3 hunks)
  • src/file_system.rs (4 hunks)
  • src/lib.rs (14 hunks)
  • src/options.rs (8 hunks)
  • src/tests/exports_field.rs (1 hunks)
  • src/tests/memory_fs.rs (0 hunks)
  • src/tests/pnp.rs (1 hunks)
  • src/tsconfig_context.rs (1 hunks)
  • tests/integration_test.rs (2 hunks)
  • tests/tsconfig_circular_reference_a.json (1 hunks)
  • tests/tsconfig_circular_reference_b.json (1 hunks)
  • tests/tsconfig_self_reference.json (1 hunks)
💤 Files with no reviewable changes (1)
  • src/tests/memory_fs.rs
🚧 Files skipped from review as they are similar to previous changes (21)
  • tests/tsconfig_circular_reference_a.json
  • fixtures/pnp/shared/lib.js
  • rust-toolchain.toml
  • .gitignore
  • tests/tsconfig_circular_reference_b.json
  • tests/tsconfig_self_reference.json
  • .github/actions/pnpm/action.yml
  • napi/tests/simple.test.mjs
  • src/tests/pnp.rs
  • Cargo.toml
  • release-plz.toml
  • napi/index.d.ts
  • src/error.rs
  • src/tests/exports_field.rs
  • src/cache.rs
  • napi/src/options.rs
  • tests/integration_test.rs
  • src/tsconfig_context.rs
  • justfile
  • napi/src/lib.rs
  • src/options.rs
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
package.json (6)
Learnt from: JounQin
PR: unrs/unrs-resolver#144
File: napi/patch.mjs:5-5
Timestamp: 2025-06-10T13:53:02.983Z
Learning: Build-time scripts in napi/patch.mjs and similar build pipeline contexts don't require error handling for reading expected files like index.js, as these files are guaranteed to be present during the build process.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: fixtures/pnp/package.json:11-14
Timestamp: 2025-04-21T08:11:41.469Z
Learning: The project uses a justfile with an `install` task that includes running yarn in the fixtures/pnp directory to install dependencies with the command: `cd fixtures/pnp && yarn`.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#115
File: tests/resolve_test.rs:251-263
Timestamp: 2025-05-28T02:21:41.547Z
Learning: In pnpm workspaces, `pnpm install` must be run first to initialize dependencies and create the proper node_modules/.pnpm structure before tests can pass. Tests that rely on resolving packages will fail if dependencies haven't been installed yet.
src/lib.rs (8)
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#40
File: src/tests/resolve.rs:121-136
Timestamp: 2025-03-29T04:14:03.715Z
Learning: For tests involving npm/yarn package resolution in the unrs-resolver project, dependencies must be installed first using the appropriate package manager commands (pnpm i, yarn) in both the root directory and fixture directories like fixtures/pnp and fixtures/misc/nested-package-json.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:13:59.358Z
Learning: In the unrs-resolver project, tests that intentionally document failing behavior (regression tests) should either use #[should_panic], assert on the expected error, or include clear documentation indicating they are intentional failing test cases.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T08:17:34.175Z
Learning: Test cases in unrs-resolver that intentionally document failing behavior should make the intent clear by either: 1) asserting on the expected error condition rather than the desired behavior, 2) using #[should_panic] for tests expected to panic, or 3) using #[ignore] with a reason to skip known failing tests in CI.
README.md (4)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
🪛 LanguageTool
README.md

[misspelling] ~198-~198: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ... | Enforce that a extension from extensions must be used ...

(EN_A_VS_AN)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Benchmark
  • GitHub Check: Test (windows-latest)
🔇 Additional comments (11)
package.json (1)

22-22: LGTM! Script rename clarifies purpose.

The renaming from postbuild to postbuild:debug better indicates this script is specifically for debug builds, improving clarity without changing functionality.

src/lib.rs (7)

66-66: LGTM! New module supports circular reference detection.

The addition of tsconfig_context module aligns with the PR's objective to detect and prevent circular references in TypeScript configuration extensions.


113-116: LGTM! Import additions support TSConfig circular reference detection.

The new TsconfigResolveContext import is properly added to support the circular reference detection feature.


716-730: LGTM! New directory exports resolution feature properly implemented.

The new feature allowing package exports in directory resolution is:

  • Properly gated behind the allow_package_exports_in_directory_resolve option
  • Maintains backwards compatibility
  • Follows the same pattern as other exports field resolution
  • Addresses the specific use case mentioned in the PR objectives for Vite projects

880-880: LGTM! Option rename improves clarity.

The rename from enable_pnp to yarn_pnp better reflects the specific PnP implementation being used and aligns with the broader refactoring mentioned in the PR.


973-979: LGTM! PnP cache refactoring properly implemented.

The migration to papaya::HashMap with pin() and get_or_insert_with() pattern is correctly implemented. The logic maintains the same behavior while using the new cache implementation.


418-448: LGTM! Circular reference detection properly implemented.

The TSConfig circular reference detection correctly:

  • Checks for cycles before extending configurations
  • Uses TsconfigResolveContext to track the extension chain
  • Returns appropriate TsconfigCircularExtend error when cycles are detected
  • Properly manages the context with scoped tracking

This implementation aligns with the PR objective to prevent infinite loops in TSConfig extensions.


479-498: LGTM! Extended TSConfig loading maintains circular detection.

The extend_tsconfig method properly maintains the circular reference detection pattern, ensuring consistency across all TSConfig extension points.

README.md (1)

215-221: Well-structured TypeScript configuration documentation.

The new TypeScript Configuration section is well-formatted and provides clear descriptions of the new configuration options. The documentation effectively explains the purpose and usage of each field.

src/file_system.rs (2)

105-123: Clean conditional compilation implementation.

The conditional compilation for FileSystemOs struct and its Default implementation correctly handles the presence/absence of the yarn_pnp feature flag. The use of cfg_if! makes the code readable and maintainable.


223-223: Consistent method call pattern.

The read_link method call pattern is consistent with the overall refactoring approach, maintaining the same static method call structure used throughout the implementation.

@JounQin JounQin force-pushed the chore/merge_upstream branch from eb48755 to 913c1b7 Compare July 2, 2025 18:52
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Looks good to me! 👍

Reviewed 913c1b7 in 2 minutes and 50 seconds. Click for details.
  • Reviewed 1356 lines of code in 26 files
  • Skipped 1 files when reviewing.
  • Skipped posting 10 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. tests/tsconfig_circular_reference_a.json:1
  • Draft comment:
    This file intentionally creates a circular tsconfig dependency with its partner. The structure is clear and appears correct for testing circular extension detection.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. tests/tsconfig_circular_reference_b.json:1
  • Draft comment:
    This file forms the other half of the circular reference test. Its simplicity and naming make its purpose clear.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. tests/tsconfig_self_reference.json:1
  • Draft comment:
    This self-referencing tsconfig file is useful to test self-extension detection. Its content is succinct and fits the test case.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
4. tests/integration_test.rs:14
  • Draft comment:
    The integration tests cover many public APIs (clone, debug, equality and tsconfig handling). The tests for detecting circular references (both self-reference and mutual circularity) are strong and clearly validate the error behavior.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
5. tests/integration_test.rs:56
  • Draft comment:
    The tsconfig tests correctly assert that a self–reference errors out via a TsconfigCircularExtend. Consider including comments to clarify the expected cyclic chain for readability.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
6. tests/integration_test.rs:71
  • Draft comment:
    Test for the raw JSON API is guarded by a feature flag and uses is_some_and to validate the expected content. This is concise and effective.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
7. tests/integration_test.rs:108
  • Draft comment:
    The API options tests that chain various helper methods on ResolveOptions are well‐organized. No issues found.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
8. tests/integration_test.rs:125
  • Draft comment:
    The dependencies test properly initializes a ResolveContext and verifies that file dependencies are recorded. This ensures that the caching and dependency collection works as intended.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
9. napi/index.d.ts:16
  • Draft comment:
    Typographical suggestion: consider changing "builtin" to "built-in" in the comment to adhere to common spelling conventions (e.g., "Node.js built-in module").
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The word "builtin" appears consistently throughout the codebase in identifiers like builtinModules and the Builtin interface name. While "built-in" may be more grammatically correct in prose, changing just this one instance would actually reduce consistency. The comment is purely stylistic and doesn't impact functionality. The comment is technically correct about English grammar conventions. Inconsistency in documentation style could potentially confuse readers. Code consistency is more important than perfect grammar in this case. Changing just one instance would make things worse, not better. Delete this comment. While technically correct, implementing it would reduce consistency with the rest of the codebase where "builtin" is used throughout.
10. src/tests/pnp.rs:91
  • Draft comment:
    Typo: In the function name resolve_pnp_pkg_should_failed_while_disable_pnp_mode, consider changing 'should failed' to 'should fail' for correct grammar.
  • Reason this comment was not posted:
    Comment was on unchanged code.

Workflow ID: wflow_Rq19UKcCalN6hJyO

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@JounQin JounQin force-pushed the chore/merge_upstream branch from 913c1b7 to eb50ecd Compare July 2, 2025 19:04
@sonarqubecloud
Copy link

sonarqubecloud bot commented Jul 2, 2025

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
README.md (2)

198-198: Use “an extension” instead of “a extension”.

Minor grammar nit – “extension” starts with a vowel sound.

-| enforceExtension                      | false                     | Enforce that a extension from extensions must be used                                                                                                     |
+| enforceExtension                      | false                     | Enforce that an extension from `extensions` must be used                                                                                                   |

220-220: Fill in the default column to keep the TS config table consistent.

Every other row supplies an explicit default; leaving this one blank makes the table feel unfinished.

-| tsconfig.configFile |         | A relative path to the tsconfig file based on `cwd`, or an absolute path of tsconfig file.                                                                                           |
+| tsconfig.configFile | None    | A relative path to the tsconfig file based on `cwd`, or an absolute path of the tsconfig file.                                                                                         |
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eb48755 and eb50ecd.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (25)
  • .gitignore (1 hunks)
  • Cargo.toml (1 hunks)
  • README.md (1 hunks)
  • fixtures/pnp/shared/lib.js (1 hunks)
  • justfile (2 hunks)
  • napi/index.d.ts (3 hunks)
  • napi/src/lib.rs (4 hunks)
  • napi/src/options.rs (2 hunks)
  • napi/tests/simple.test.mjs (1 hunks)
  • package.json (1 hunks)
  • release-plz.toml (1 hunks)
  • rust-toolchain.toml (1 hunks)
  • src/cache.rs (1 hunks)
  • src/error.rs (3 hunks)
  • src/file_system.rs (4 hunks)
  • src/lib.rs (14 hunks)
  • src/options.rs (8 hunks)
  • src/tests/exports_field.rs (1 hunks)
  • src/tests/memory_fs.rs (0 hunks)
  • src/tests/pnp.rs (1 hunks)
  • src/tsconfig_context.rs (1 hunks)
  • tests/integration_test.rs (2 hunks)
  • tests/tsconfig_circular_reference_a.json (1 hunks)
  • tests/tsconfig_circular_reference_b.json (1 hunks)
  • tests/tsconfig_self_reference.json (1 hunks)
💤 Files with no reviewable changes (1)
  • src/tests/memory_fs.rs
🚧 Files skipped from review as they are similar to previous changes (23)
  • fixtures/pnp/shared/lib.js
  • tests/tsconfig_circular_reference_b.json
  • rust-toolchain.toml
  • package.json
  • tests/tsconfig_circular_reference_a.json
  • .gitignore
  • tests/tsconfig_self_reference.json
  • src/tests/exports_field.rs
  • justfile
  • Cargo.toml
  • napi/tests/simple.test.mjs
  • src/cache.rs
  • napi/index.d.ts
  • release-plz.toml
  • src/tests/pnp.rs
  • src/tsconfig_context.rs
  • tests/integration_test.rs
  • napi/src/lib.rs
  • src/options.rs
  • napi/src/options.rs
  • src/error.rs
  • src/file_system.rs
  • src/lib.rs
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
README.md (5)
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:4-6
Timestamp: 2025-04-20T16:00:16.106Z
Learning: The configuration with `".": ["."]` in the paths setting in fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json is an intentional test case for testing the TypeScript dot alias resolution behavior, specifically related to issue #437 in the eslint-import-resolver-typescript repository.
Learnt from: JounQin
PR: unrs/unrs-resolver#72
File: fixtures/tsconfig/cases/dot-alias/tsconfigs/tsconfig.base.json:0-0
Timestamp: 2025-04-21T06:11:46.964Z
Learning: JounQin's fix for the dot alias issue in PR #72 addresses the problem by correctly normalizing paths in the `extend_tsconfig` method, ensuring that base URLs are properly resolved as absolute paths when extending tsconfigs, rather than adding special case handling for dot aliases in the resolver.
Learnt from: JounQin
PR: unrs/unrs-resolver#75
File: src/tests/pnp.rs:116-133
Timestamp: 2025-04-21T09:52:45.840Z
Learning: In Yarn PnP environments, some packages use nested package.json files for subpaths instead of the exports field. The resolver should check for these nested package.json files when resolving subpaths like `@atlaskit/pragmatic-drag-and-drop/combine` to correctly handle packages with this structure.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
Learnt from: JounQin
PR: unrs/unrs-resolver#136
File: src/tests/extension_alias.rs:36-46
Timestamp: 2025-06-05T18:52:30.363Z
Learning: The fixtures/yarn directory in the unrs-resolver project requires running `yarn install` to install TypeScript dependencies before tests can run, similar to other fixture directories like fixtures/pnp. The test in src/tests/extension_alias.rs depends on the installed TypeScript package providing lib/typescript.d.ts and related files.
🪛 LanguageTool
README.md

[misspelling] ~198-~198: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...alse | Enforce that a extension from extensions must be used ...

(EN_A_VS_AN)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Benchmark
  • GitHub Check: Test (windows-latest)
🔇 Additional comments (1)
README.md (1)

213-213: New option row looks good.

allowPackageExportsInDirectoryResolve is documented with the correct default and a clear explanation, and the table alignment is correct. Nice catch compared with the previous mis-alignment issue.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Looks good to me! 👍

Reviewed eb50ecd in 3 minutes and 25 seconds. Click for details.
  • Reviewed 1341 lines of code in 25 files
  • Skipped 1 files when reviewing.
  • Skipped posting 7 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. tests/tsconfig_self_reference.json:1
  • Draft comment:
    This tsconfig file intentionally extends itself to trigger a self‐circular reference error. It looks correct. Consider ensuring there is a trailing newline for consistency.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 30% <= threshold 50% The comment starts by stating that the tsconfig file intentionally extends itself, which is informative and not actionable. The second part of the comment suggests ensuring a trailing newline for consistency, which is a valid suggestion for code style consistency. However, the first part of the comment is purely informative and does not align with the rules.
2. tests/tsconfig_circular_reference_a.json:1
  • Draft comment:
    This file and its counterpart (tsconfig_circular_reference_b.json) correctly simulate a circular dependency between two tsconfig files. Their minimal structure makes the tests clear.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment is purely informative, explaining the purpose of the file and its counterpart. It does not provide any actionable feedback or suggestions for improvement.
3. tests/tsconfig_circular_reference_b.json:1
  • Draft comment:
    Circular reference is set up by extending tsconfig_circular_reference_a.json. The structure is minimal and effective for testing circular reference detection.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment seems to be purely informative, describing the setup of a circular reference for testing purposes. It doesn't provide a suggestion, ask for confirmation, or point out a potential issue.
4. src/tsconfig_context.rs:3
  • Draft comment:
    The TsconfigResolveContext struct is simple and clearly tracks extended configuration paths. Consider adding a comment explaining the intended use of the extended_configs field for future maintainers.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is suggesting adding a comment for future maintainers, which is a purely informative suggestion. It doesn't provide a specific code improvement or point out a potential issue.
5. tests/integration_test.rs:55
  • Draft comment:
    The integration tests for tsconfig circular references (both self-reference and mutual circular references) are well written and properly assert that a TsconfigCircularExtend error is returned with the expected sequence of paths.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment is purely informative, as it only praises the quality of the integration tests without providing any actionable feedback or suggestions for improvement. It does not align with the rules for useful comments.
6. README.md:221
  • Draft comment:
    Typographical suggestion: In the tsconfig.references description, consider removing the space in string [] so that it reads string[] for consistency.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the suggestion would improve consistency, this is an extremely minor documentation formatting issue. The current format is still perfectly readable and understandable. PR comments should focus on more substantial issues that require code changes. Documentation formatting suggestions like this could be seen as noise. The change would improve consistency in TypeScript type formatting. Some might argue consistency in documentation is important for professionalism. While consistency is good, this is too minor to warrant a PR comment. Such small documentation formatting issues can be handled in bulk during documentation cleanup passes rather than as individual PR comments. Delete this comment as it's too minor of a documentation formatting issue to warrant a PR comment.
7. src/tests/pnp.rs:91
  • Draft comment:
    Typo: In the function name 'resolve_pnp_pkg_should_failed_while_disable_pnp_mode', the term 'failed' should likely be 'fail' (i.e., it should be 'resolve_pnp_pkg_should_fail_while_disable_pnp_mode').
  • Reason this comment was not posted:
    Comment was on unchanged code.

Workflow ID: wflow_nToxff5xpEJMLmQ4

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@JounQin
Copy link
Member Author

JounQin commented Jul 2, 2025

@coderabbitai full review

@coderabbitai
Copy link

coderabbitai bot commented Jul 2, 2025

✅ Actions performed

Full review triggered.

@JounQin JounQin merged commit eb50ecd into main Jul 2, 2025
23 checks passed
@JounQin JounQin deleted the chore/merge_upstream branch July 2, 2025 19:19
@JounQin JounQin mentioned this pull request Jul 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

upstream Blocked by upstream

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants