From 9de30883232082e425ae0c837c69adf07e8570e6 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 27 Oct 2025 19:52:19 +0000
Subject: [PATCH 01/45] chore(deps): update rust crate pnp to v0.12.4 (#789)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [pnp](https://yarnpkg.com)
([source](https://redirect.github.com/yarnpkg/pnp-rs)) | dependencies |
patch | `0.12.3` -> `0.12.4` |
---
### Release Notes
yarnpkg/pnp-rs (pnp)
###
[`v0.12.4`](https://redirect.github.com/yarnpkg/pnp-rs/blob/HEAD/CHANGELOG.md#0124---2025-10-27)
[Compare
Source](https://redirect.github.com/yarnpkg/pnp-rs/compare/v0.12.3...v0.12.4)
##### Other
- use dirs-next
([#63](https://redirect.github.com/yarnpkg/pnp-rs/pull/63))
- *(deps)* lock file maintenance
([#62](https://redirect.github.com/yarnpkg/pnp-rs/pull/62))
- *(deps)* lock file maintenance
([#61](https://redirect.github.com/yarnpkg/pnp-rs/pull/61))
- *(deps)* lock file maintenance
([#60](https://redirect.github.com/yarnpkg/pnp-rs/pull/60))
- *(deps)* lock file maintenance rust crates
([#59](https://redirect.github.com/yarnpkg/pnp-rs/pull/59))
- *(deps)* lock file maintenance rust crates
([#58](https://redirect.github.com/yarnpkg/pnp-rs/pull/58))
- *(deps)* lock file maintenance npm packages
([#57](https://redirect.github.com/yarnpkg/pnp-rs/pull/57))
- *(deps)* lock file maintenance rust crates
([#56](https://redirect.github.com/yarnpkg/pnp-rs/pull/56))
- *(deps)* lock file maintenance npm packages
([#55](https://redirect.github.com/yarnpkg/pnp-rs/pull/55))
- *(deps)* update dependency rust to v1.90.0
([#54](https://redirect.github.com/yarnpkg/pnp-rs/pull/54))
- *(deps)* lock file maintenance rust crates
([#52](https://redirect.github.com/yarnpkg/pnp-rs/pull/52))
- *(deps)* lock file maintenance npm packages
([#51](https://redirect.github.com/yarnpkg/pnp-rs/pull/51))
---
### 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.
---
- [ ] 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).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
Cargo.lock | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index f7bc10d7..667c5e2c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -301,7 +301,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -347,9 +347,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "endian-type"
-version = "0.1.2"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+checksum = "869b0adbda23651a9c5c0c3d270aac9fcb52e8622a8f2b17e57802d7791962f2"
[[package]]
name = "equivalent"
@@ -893,13 +893,12 @@ checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pnp"
-version = "0.12.3"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a10a726fb86dab6571b148c0f52cf619a4aabf0ac4fcf578bd4cd2178fb0e6d0"
+checksum = "7adbc1ab7344e1e77be663e91cb129e989e398c319df7a9b8dbda9dd6758df38"
dependencies = [
"byteorder",
"concurrent_lru",
- "dirs",
"fancy-regex",
"miniz_oxide",
"pathdiff",
@@ -945,9 +944,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "radix_trie"
-version = "0.2.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
+checksum = "3b4431027dcd37fc2a73ef740b5f233aa805897935b8bce0195e41bbf9a3289a"
dependencies = [
"endian-type",
"nibble_vec",
@@ -1064,7 +1063,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521"
dependencies = [
"libc",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1433,7 +1432,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
From 1a8a76659bc561d5e85aae4c8026ff5c7bd79e17 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 30 Oct 2025 22:45:49 +0000
Subject: [PATCH 02/45] chore(deps): update dependency rust to v1.91.0 (#792)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust) | minor | `1.90.0`
-> `1.91.0` |
---
### Release Notes
rust-lang/rust (rust)
###
[`v1.91.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1910-2025-10-30)
[Compare
Source](https://redirect.github.com/rust-lang/rust/compare/1.90.0...1.91.0)
\==========================
## Language
- [Lower pattern bindings in the order they're written and base drop
order on primary bindings'
order](https://redirect.github.com/rust-lang/rust/pull/143764)
- [Stabilize declaration of C-style variadic functions for `sysv64`,
`win64`, `efiapi`, and `aapcs`
ABIs](https://redirect.github.com/rust-lang/rust/pull/144066).
This brings these ABIs in line with the C ABI: variadic functions can be
declared in extern blocks but not defined.
- [Add `dangling_pointers_from_locals` lint to warn against dangling
pointers from local
variables](https://redirect.github.com/rust-lang/rust/pull/144322)
- [Upgrade `semicolon_in_expressions_from_macros` from warn to
deny](https://redirect.github.com/rust-lang/rust/pull/144369)
- [Stabilize LoongArch32 inline
assembly](https://redirect.github.com/rust-lang/rust/pull/144402)
- [Add warn-by-default `integer_to_ptr_transmutes` lint against
integer-to-pointer
transmutes](https://redirect.github.com/rust-lang/rust/pull/144531)
- [Stabilize `sse4a` and `tbm` target
features](https://redirect.github.com/rust-lang/rust/pull/144542)
- [Add `target_env = "macabi"` and `target_env = "sim"`
cfgs](https://redirect.github.com/rust-lang/rust/pull/139451) as
replacements for the `target_abi` cfgs with the same values.
## Compiler
- [Don't warn on never-to-any `as` casts as
unreachable](https://redirect.github.com/rust-lang/rust/pull/144804)
## Platform Support
- [Promote `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm`
to Tier 2 with host
tools.](https://redirect.github.com/rust-lang/rust/pull/143031)
Note: llvm-tools and MSI installers are missing but will be added in
future releases.
- [Promote `aarch64-pc-windows-msvc` to Tier
1](https://redirect.github.com/rust-lang/rust/pull/145682)
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
## Libraries
- [Print thread ID in panic
message](https://redirect.github.com/rust-lang/rust/pull/115746)
- [Fix overly restrictive lifetime in `core::panic::Location::file`
return type](https://redirect.github.com/rust-lang/rust/pull/132087)
- [Guarantee parameter order for `_by()` variants of `min` / `max`/
`minmax` in
`std::cmp`](https://redirect.github.com/rust-lang/rust/pull/139357)
- [Document assumptions about `Clone` and `Eq`
traits](https://redirect.github.com/rust-lang/rust/pull/144330/)
- [`std::thread`: Return error if setting thread stack size
fails](https://redirect.github.com/rust-lang/rust/pull/144210)
This used to panic within the standard library.
## Stabilized APIs
-
[`Path::file_prefix`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.file_prefix)
-
[`AtomicPtr::fetch_ptr_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_add)
-
[`AtomicPtr::fetch_ptr_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_sub)
-
[`AtomicPtr::fetch_byte_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_add)
-
[`AtomicPtr::fetch_byte_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_sub)
-
[`AtomicPtr::fetch_or`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_or)
-
[`AtomicPtr::fetch_and`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_and)
-
[`AtomicPtr::fetch_xor`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_xor)
-
[`{integer}::strict_add`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add)
-
[`{integer}::strict_sub`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub)
-
[`{integer}::strict_mul`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_mul)
-
[`{integer}::strict_div`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div)
-
[`{integer}::strict_div_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div_euclid)
-
[`{integer}::strict_rem`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem)
-
[`{integer}::strict_rem_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem_euclid)
-
[`{integer}::strict_neg`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_neg)
-
[`{integer}::strict_shl`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shl)
-
[`{integer}::strict_shr`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shr)
-
[`{integer}::strict_pow`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_pow)
-
[`i{N}::strict_add_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_add_unsigned)
-
[`i{N}::strict_sub_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_sub_unsigned)
-
[`i{N}::strict_abs`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_abs)
-
[`u{N}::strict_add_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add_signed)
-
[`u{N}::strict_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub_signed)
-
[`PanicHookInfo::payload_as_str`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html#method.payload_as_str)
-
[`core::iter::chain`](https://doc.rust-lang.org/stable/core/iter/fn.chain.html)
-
[`u{N}::checked_signed_diff`](https://doc.rust-lang.org/stable/std/primitive.u16.html#method.checked_signed_diff)
-
[`core::array::repeat`](https://doc.rust-lang.org/stable/core/array/fn.repeat.html)
-
[`PathBuf::add_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.add_extension)
-
[`PathBuf::with_added_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.with_added_extension)
-
[`Duration::from_mins`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_mins)
-
[`Duration::from_hours`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_hours)
- [`impl PartialEq for
PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3Cstr%3E-for-PathBuf)
- [`impl PartialEq for
PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3CString%3E-for-PathBuf)
- [`impl PartialEq for
Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3Cstr%3E-for-Path)
- [`impl PartialEq for
Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3CString%3E-for-Path)
- [`impl PartialEq for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPathBuf%3E-for-String)
- [`impl PartialEq for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPath%3E-for-String)
- [`impl PartialEq for
str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPathBuf%3E-for-str)
- [`impl PartialEq for
str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPath%3E-for-str)
-
[`Ipv4Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.from_octets)
-
[`Ipv6Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_octets)
-
[`Ipv6Addr::from_segments`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_segments)
- [`impl Default for Pin> where Box: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CBox%3CT%3E%3E)
- [`impl Default for Pin> where Rc: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CRc%3CT%3E%3E)
- [`impl Default for Pin> where Arc: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CArc%3CT%3E%3E)
-
[`Cell::as_array_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_array_of_cells)
-
[`u{N}::carrying_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_add)
-
[`u{N}::borrowing_sub`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.borrowing_sub)
-
[`u{N}::carrying_mul`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul)
-
[`u{N}::carrying_mul_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul_add)
-
[`BTreeMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.extract_if)
-
[`BTreeSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.extract_if)
- [`impl Debug for
windows::ffi::EncodeWide<'_>`](https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-Debug-for-EncodeWide%3C'_%3E)
-
[`str::ceil_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.ceil_char_boundary)
-
[`str::floor_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.floor_char_boundary)
- [`impl Sum for
Saturating`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum-for-Saturating%3Cu32%3E)
- [`impl Sum<&Self> for
Saturating`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E)
- [`impl Product for
Saturating`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product-for-Saturating%3Cu32%3E)
- [`impl Product<&Self> for
Saturating`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T;
N]>::each_ref`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_ref)
- [`<[T;
N]>::each_mut`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut)
-
[`OsString::new`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.new)
-
[`PathBuf::new`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.new)
-
[`TypeId::of`](https://doc.rust-lang.org/stable/std/any/struct.TypeId.html#method.of)
-
[`ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance.html)
-
[`ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance_mut.html)
## Cargo
- 🎉 Stabilize `build.build-dir`.
This config sets the directory where intermediate build artifacts are
stored.
These artifacts are produced by Cargo and rustc during the build
process.
End users usually won't need to interact with them, and the layout
inside
`build-dir` is an implementation detail that may change without notice.
([config
doc](https://doc.rust-lang.org/stable/cargo/reference/config.html#buildbuild-dir))
([build cache
doc](https://doc.rust-lang.org/stable/cargo/reference/build-cache.html))
[#15833](https://redirect.github.com/rust-lang/cargo/pull/15833)
[#15840](https://redirect.github.com/rust-lang/cargo/pull/15840)
- The `--target` flag and the `build.target` configuration can now take
literal
`"host-tuple"` string, which will internally be substituted by the host
machine's target triple.
[#15838](https://redirect.github.com/rust-lang/cargo/pull/15838)
[#16003](https://redirect.github.com/rust-lang/cargo/pull/16003)
[#16032](https://redirect.github.com/rust-lang/cargo/pull/16032)
## Rustdoc
- [In search results, rank doc aliases lower than non-alias items with
the same name](https://redirect.github.com/rust-lang/rust/pull/145100)
- [Raw pointers now work in type-based search like
references](https://redirect.github.com/rust-lang/rust/pull/145731).
This means you can now search for things like `*const u8 ->`, and
additionally functions that take or return raw pointers will now display
their signature properly in search results.
## Compatibility Notes
- [Always require coroutine captures to be
drop-live](https://redirect.github.com/rust-lang/rust/pull/144156)
- [Apple: Always pass SDK root when linking with `cc`, and pass it via
`SDKROOT` env
var](https://redirect.github.com/rust-lang/rust/pull/131477). This
should fix linking issues with `rustc` running inside Xcode. Libraries
in `/usr/local/lib` may no longer be linked automatically, if you
develop or use a crate that relies on this, you should explicitly set
`cargo::rustc-link-search=/usr/local/lib` in a `build.rs` script.
- [Relaxed bounds in associated type bound position like in
`TraitRef` are now correctly
forbidden](https://redirect.github.com/rust-lang/rust/pull/135331)
- [Add unstable `#[sanitize(xyz = "on|off")]` built-in attribute that
shadows procedural macros with the same
name](https://redirect.github.com/rust-lang/rust/pull/142681)
- [Fix the drop checker being more permissive for bindings declared with
let-else](https://redirect.github.com/rust-lang/rust/pull/143028)
- [Be more strict when parsing attributes, erroring on many invalid
attributes](https://redirect.github.com/rust-lang/rust/pull/144689)
- [Error on invalid `#[should_panic]`
attributes](https://redirect.github.com/rust-lang/rust/pull/143808)
- [Error on invalid `#[link]`
attributes](https://redirect.github.com/rust-lang/rust/pull/143193)
- [Mark all deprecation lints in name resolution as deny-by-default and
also report in
dependencies](https://redirect.github.com/rust-lang/rust/pull/143929)
- The lint `semicolon_in_expressions_from_macros`, for `macro_rules!`
macros in expression position that expand to end in a semicolon (`;`),
is now deny-by-default. It was already warn-by-default, and a future
compatibility warning (FCW) that warned even in dependencies. This lint
will become a hard error in the future.
- [Trait impl modifiers (e.g., `unsafe`, `!`, `default`) in inherent
impls are no longer syntactically
valid](https://redirect.github.com/rust-lang/rust/pull/144386)
- [Start reporting future breakage for `ill_formed_attribute_input` in
dependencies](https://redirect.github.com/rust-lang/rust/pull/144544)
- [Restrict the scope of temporaries created by the macros `pin!`,
`format_args!`, `write!`, and `writeln!` in `if let` scrutinees in Rust
Edition 2024.](https://redirect.github.com/rust-lang/rust/pull/145342)
This applies [Rust Edition 2024's `if let` temporary scope
rules](https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html)
to these temporaries, which previously could live past the `if`
expression regardless of Edition.
- [Invalid numeric literal suffixes in tuple indexing, tuple struct
indexing, and struct field name positions are now correctly
rejected](https://redirect.github.com/rust-lang/rust/pull/145463)
- [Closures marked with the keyword `static` are now syntactically
invalid](https://redirect.github.com/rust-lang/rust/pull/145604)
- [Shebangs inside `--cfg` and `--check-cfg` arguments are no longer
allowed](https://redirect.github.com/rust-lang/rust/pull/146211)
- [Add future incompatibility lint for temporary lifetime shortening in
Rust 1.92](https://redirect.github.com/rust-lang/rust/pull/147056)
Cargo compatibility notes:
- `cargo publish` no longer keeps `.crate` tarballs as final build
artifacts
when `build.build-dir` is set. These tarballs were previously included
due to
an oversight and are now treated as intermediate artifacts.
To get `.crate` tarballs as final artifacts, use `cargo package`.
In a future version, this change will apply regardless of
`build.build-dir`.
[#15910](https://redirect.github.com/rust-lang/cargo/pull/15910)
- Adjust Cargo messages to match rustc diagnostic style.
This changes some of the terminal colors used by Cargo messages.
[#15928](https://redirect.github.com/rust-lang/cargo/pull/15928)
- Tools and projects relying on the
[internal details of Cargo's
`build-dir`](https://doc.rust-lang.org/cargo/reference/build-cache.html)
may not work for users changing their `build-dir` layout.
For those doing so, we'd recommend proactively testing these cases
particularly as we are considering changing the default location of the
`build-dir` in the future
([cargo#16147](https://redirect.github.com/rust-lang/cargo/issues/16147)).
If you can't migrate off of Cargo's internal details,
we'd like to learn more about your use case as we prepare to change the
layout of the `build-dir`
([cargo#15010](https://redirect.github.com/rust-lang/cargo/issues/15010)).
## Internal Changes
These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.
- [Update to LLVM
21](https://redirect.github.com/rust-lang/rust/pull/143684)
---
### 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.
---
- [ ] 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).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
rust-toolchain.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 2ce412d5..1612370a 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
[toolchain]
-channel = "1.90.0"
+channel = "1.91.0"
profile = "default"
From f74efe24b5fa718c4741cef721db591f5bf72ab1 Mon Sep 17 00:00:00 2001
From: Boshen <1430279+Boshen@users.noreply.github.com>
Date: Fri, 31 Oct 2025 06:57:51 +0000
Subject: [PATCH 03/45] feat: improve error message for empty package.json
files (#793)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
Improves error messages for empty package.json files by returning a clear "File is empty" message instead of the cryptic "EOF while parsing a value at line 1 column 0".
## Changes
- Add empty file check in `PackageJson::parse()` for both simd and serde implementations
- Return `JSONError` with "File is empty" message before attempting JSON parsing
- Update tests to expect new error message
- Add comprehensive test suite for various corrupted package.json scenarios
## Error Message Improvement
**Before:**
```
EOF while parsing a value at line 1 column 0
```
**After:**
```
File is empty
```
## Test Plan
- ✅ All existing tests pass (150/150)
- ✅ Added new test `test_corrupted_package_json` covering multiple scenarios:
- Empty file
- Null bytes
- Trailing commas
- Unclosed braces
- Invalid escapes
- ✅ Updated `incorrect_description_file_2` test for new error message
- ✅ Clippy passes with no warnings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
src/package_json/mod.rs | 13 ++++-
src/package_json/serde.rs | 3 ++
src/package_json/simd.rs | 3 ++
src/tests/incorrect_description_file.rs | 4 +-
src/tests/package_json.rs | 63 ++++++++++++++++++++++++-
5 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/src/package_json/mod.rs b/src/package_json/mod.rs
index ab824465..9377b84d 100644
--- a/src/package_json/mod.rs
+++ b/src/package_json/mod.rs
@@ -14,7 +14,18 @@ pub use serde::*;
#[cfg(target_endian = "little")]
pub use simd::*;
-use std::fmt;
+use std::{fmt, path::PathBuf};
+
+use crate::JSONError;
+
+/// Check if JSON content is empty or contains only whitespace
+fn check_if_empty(json_bytes: &[u8], path: PathBuf) -> Result<(), JSONError> {
+ // Check if content is empty or whitespace-only
+ if json_bytes.iter().all(|&b| b.is_ascii_whitespace()) {
+ return Err(JSONError { path, message: "File is empty".to_string(), line: 0, column: 0 });
+ }
+ Ok(())
+}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PackageType {
diff --git a/src/package_json/serde.rs b/src/package_json/serde.rs
index 0534432e..adb99b38 100644
--- a/src/package_json/serde.rs
+++ b/src/package_json/serde.rs
@@ -228,6 +228,9 @@ impl PackageJson {
json.as_str()
};
+ // Check if empty after BOM stripping
+ super::check_if_empty(json_string.as_bytes(), path.clone())?;
+
// Parse JSON
let value = serde_json::from_str::(json_string).map_err(|error| JSONError {
path: path.clone(),
diff --git a/src/package_json/simd.rs b/src/package_json/simd.rs
index 59f1bb6e..f777394f 100644
--- a/src/package_json/simd.rs
+++ b/src/package_json/simd.rs
@@ -262,6 +262,9 @@ impl PackageJson {
json_bytes[2] = b' ';
}
+ // Check if empty after BOM stripping
+ super::check_if_empty(&json_bytes, path.clone())?;
+
// Create the self-cell with the JSON bytes and parsed BorrowedValue
let cell = PackageJsonCell::try_new(json_bytes.clone(), |bytes| {
// We need a mutable slice from our owned data
diff --git a/src/tests/incorrect_description_file.rs b/src/tests/incorrect_description_file.rs
index db110ed4..d12f6bbb 100644
--- a/src/tests/incorrect_description_file.rs
+++ b/src/tests/incorrect_description_file.rs
@@ -31,8 +31,8 @@ fn incorrect_description_file_2() {
let resolution = Resolver::default().resolve(f.join("pack2"), ".");
let error = ResolveError::Json(JSONError {
path: f.join("pack2/package.json"),
- message: String::from("EOF while parsing a value at line 1 column 0"),
- line: 1,
+ message: String::from("File is empty"),
+ line: 0,
column: 0,
});
assert_eq!(resolution, Err(error));
diff --git a/src/tests/package_json.rs b/src/tests/package_json.rs
index 23e04093..45643475 100644
--- a/src/tests/package_json.rs
+++ b/src/tests/package_json.rs
@@ -1,6 +1,6 @@
//! Tests for `Resolution::package_json`.
-use crate::Resolver;
+use crate::{ResolveError, Resolver};
#[test]
fn test() {
@@ -62,3 +62,64 @@ fn package_json_with_symlinks_true() {
let package_json_path = package_json.as_ref().map(|p| &p.path);
assert_eq!(package_json_path, Some(&resolved_package_json_path));
}
+
+#[test]
+#[cfg(not(target_os = "windows"))] // MemoryFS's path separator is always `/` so the test will not pass in windows.
+fn test_corrupted_package_json() {
+ use std::path::Path;
+
+ use super::memory_fs::MemoryFS;
+ use crate::{ResolveOptions, ResolverGeneric};
+
+ // Test scenarios for various corrupted package.json files
+ let scenarios = [
+ ("empty_file", "", "File is empty"),
+ ("null_byte_at_start", "\0", "expected value"),
+ ("json_with_embedded_null", "{\"name\":\0\"test\"}", "expected value"),
+ ("trailing_comma", "{\"name\":\"test\",}", "trailing comma"),
+ ("unclosed_brace", "{\"name\":\"test\"", "EOF while parsing"),
+ ("invalid_escape", "{\"name\":\"test\\x\"}", "escape"),
+ ];
+
+ for (name, content, expected_message_contains) in scenarios {
+ let mut fs = MemoryFS::default();
+
+ // Write corrupted package.json
+ fs.add_file(Path::new("/test/package.json"), content);
+
+ // Create a simple index.js so resolution can proceed
+ fs.add_file(Path::new("/test/index.js"), "export default 42;");
+
+ // Create resolver with VFS
+ let resolver = ResolverGeneric::new_with_file_system(fs, ResolveOptions::default());
+
+ // Attempt to resolve - should fail with JSONError
+ let result = resolver.resolve(Path::new("/test"), "./index.js");
+
+ match result {
+ Err(ResolveError::Json(json_error)) => {
+ assert!(
+ json_error
+ .message
+ .to_lowercase()
+ .contains(&expected_message_contains.to_lowercase()),
+ "Test case '{name}': Expected error message to contain '{expected_message_contains}', but got: {}",
+ json_error.message
+ );
+ assert!(
+ json_error.path.ends_with("package.json"),
+ "Test case '{name}': Expected path to end with 'package.json', but got: {:?}",
+ json_error.path
+ );
+ }
+ Err(other_error) => {
+ panic!("Test case '{name}': Expected JSONError but got: {other_error:?}");
+ }
+ Ok(resolution) => {
+ panic!(
+ "Test case '{name}': Expected error but resolution succeeded: {resolution:?}"
+ );
+ }
+ }
+ }
+}
From cbed2794a70a372900171a4e5ce36a01d770903a Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 31 Oct 2025 16:32:50 +0000
Subject: [PATCH 04/45] chore(deps): update crate-ci/typos action to v1.39.0
(#798)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [crate-ci/typos](https://redirect.github.com/crate-ci/typos) | action
| minor | `v1.38.1` -> `v1.39.0` |
---
### Release Notes
crate-ci/typos (crate-ci/typos)
###
[`v1.39.0`](https://redirect.github.com/crate-ci/typos/blob/HEAD/CHANGELOG.md#014---2019-11-03)
[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.38.1...v1.39.0)
##### Bug Fixes
- Ignore numbers as identifiers
([a00831c8](https://redirect.github.com/crate-ci/typos/commit/a00831c847b7efd81be520ea9b5d02f70555351f))
- Improve the organization of --help
([a48a457c](https://redirect.github.com/crate-ci/typos/commit/a48a457cc3ca817850118e2a2fb8b20fecdd40b8))
##### Features
- Dump files, identifiers, and words
([ce365ae1](https://redirect.github.com/crate-ci/typos/commit/ce365ae12e12fddfb6fc42a7f1e5ea71834d6051),
closes
[#41](https://redirect.github.com/crate-ci/typos/issues/41))
- Give control over allowed identifier characters for leading vs rest
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd))
##### Performance
- Use standard identifier rules to avoid doing umber checks
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd))
- Only do hex check if digits are in identifiers
([68cd36d0](https://redirect.github.com/crate-ci/typos/commit/68cd36d0de90226dbc9d31c2ce6d8bf6b69adb5c))
[Unreleased]:
https://redirect.github.com/crate-ci/typos/compare/v1.39.0...HEAD
[1.39.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.38.1...v1.39.0
[1.38.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.38.0...v1.38.1
[1.38.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.3...v1.38.0
[1.37.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.2...v1.37.3
[1.37.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.1...v1.37.2
[1.37.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.37.0...v1.37.1
[1.37.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.3...v1.37.0
[1.36.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.2...v1.36.3
[1.36.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.1...v1.36.2
[1.36.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.36.0...v1.36.1
[1.36.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.8...v1.36.0
[1.35.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.7...v1.35.8
[1.35.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.6...v1.35.7
[1.35.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.5...v1.35.6
[1.35.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.4...v1.35.5
[1.35.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.3...v1.35.4
[1.35.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.2...v1.35.3
[1.35.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.1...v1.35.2
[1.35.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.0...v1.35.1
[1.35.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0
[1.34.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.1...v1.34.0
[1.33.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.0...v1.33.1
[1.33.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.32.0...v1.33.0
[1.32.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0
[1.31.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2
[1.31.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.0...v1.31.1
[1.31.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.3...v1.31.0
[1.30.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.2...v1.30.3
[1.30.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.1...v1.30.2
[1.30.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.0...v1.30.1
[1.30.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.10...v1.30.0
[1.29.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.9...v1.29.10
[1.29.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.8...v1.29.9
[1.29.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.7...v1.29.8
[1.29.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.6...v1.29.7
[1.29.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.5...v1.29.6
[1.29.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.4...v1.29.5
[1.29.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.3...v1.29.4
[1.29.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.2...v1.29.3
[1.29.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.1...v1.29.2
[1.29.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.0...v1.29.1
[1.29.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.4...v1.29.0
[1.28.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.3...v1.28.4
[1.28.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.2...v1.28.3
[1.28.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.1...v1.28.2
[1.28.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.0...v1.28.1
[1.28.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.3...v1.28.0
[1.27.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.2...v1.27.3
[1.27.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.1...v1.27.2
[1.27.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.0...v1.27.1
[1.27.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.8...v1.27.0
[1.26.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.7...v1.26.8
[1.26.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.6...v1.26.7
[1.26.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.5...v1.26.6
[1.26.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.4...v1.26.5
[1.26.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.3...v1.26.4
[1.26.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.2...v1.26.3
[1.26.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.1...v1.26.2
[1.26.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.0...v1.26.1
[1.26.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.25.0...v1.26.0
[1.25.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.6...v1.25.0
[1.24.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.5...v1.24.6
[1.24.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.4...v1.24.5
[1.24.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.3...v1.24.4
[1.24.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.2...v1.24.3
[1.24.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.1...v1.24.2
[1.24.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.0...v1.24.1
[1.24.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.7...v1.24.0
[1.23.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.6...v1.23.7
[1.23.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.5...v1.23.6
[1.23.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.4...v1.23.5
[1.23.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.3...v1.23.4
[1.23.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.2...v1.23.3
[1.23.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.1...v1.23.2
[1.23.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.0...v1.23.1
[1.23.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.9...v1.23.0
[1.22.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.8...v1.22.9
[1.22.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.7...v1.22.8
[1.22.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.6...v1.22.7
[1.22.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.5...v1.22.6
[1.22.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.4...v1.22.5
[1.22.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.3...v1.22.4
[1.22.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.2...v1.22.3
[1.22.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.1...v1.22.2
[1.22.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.0...v1.22.1
[1.22.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.21.0...v1.22.0
[1.21.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.10...v1.21.0
[1.20.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.9...v1.20.10
[1.20.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.8...v1.20.9
[1.20.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.7...v1.20.8
[1.20.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.6...v1.20.7
[1.20.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.5...v1.20.6
[1.20.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.4...v1.20.5
[1.20.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.3...v1.20.4
[1.20.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.2...v1.20.3
[1.20.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.1...v1.20.2
[1.20.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.0...v1.20.1
[1.20.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.19.0...v1.20.0
[1.19.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.2...v1.19.0
[1.18.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.1...v1.18.2
[1.18.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.0...v1.18.1
[1.18.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.2...v1.18.0
[1.17.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.1...v1.17.2
[1.17.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.0...v1.17.1
[1.17.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.26...v1.17.0
[1.16.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.25...v1.16.26
[1.16.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.24...v1.16.25
[1.16.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.23...v1.16.24
[1.16.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.22...v1.16.23
[1.16.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.21...v1.16.22
[1.16.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.20...v1.16.21
[1.16.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.19...v1.16.20
[1.16.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.18...v1.16.19
[1.16.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.17...v1.16.18
[1.16.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.16...v1.16.17
[1.16.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.15...v1.16.16
[1.16.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.14...v1.16.15
[1.16.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.13...v1.16.14
[1.16.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.12...v1.16.13
[1.16.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.11...v1.16.12
[1.16.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.10...v1.16.11
[1.16.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.9...v1.16.10
[1.16.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.8...v1.16.9
[1.16.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.7...v1.16.8
[1.16.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.6...v1.16.7
[1.16.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.5...v1.16.6
[1.16.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.4...v1.16.5
[1.16.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.3...v1.16.4
[1.16.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.2...v1.16.3
[1.16.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.1...v1.16.2
[1.16.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.0...v1.16.1
[1.16.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.10...v1.16.0
[1.15.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.9...v1.15.10
[1.15.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.8...v1.15.9
[1.15.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.7...v1.15.8
[1.15.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.6...v1.15.7
[1.15.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.5...v1.15.6
[1.15.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.4...v1.15.5
[1.15.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.3...v1.15.4
[1.15.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.2...v1.15.3
[1.15.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.1...v1.15.2
[1.15.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.0...v1.15.1
[1.15.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.12...v1.15.0
[1.14.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.11...v1.14.12
[1.14.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.10...v1.14.11
[1.14.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.9...v1.14.10
[1.14.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.8...v1.14.9
[1.14.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.7...v1.14.8
[1.14.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.6...v1.14.7
[1.14.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.5...v1.14.6
[1.14.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.4...v1.14.5
[1.14.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.3...v1.14.4
[1.14.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.2...v1.14.3
[1.14.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.1...v1.14.2
[1.14.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.0...v1.14.1
[1.14.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.26...v1.14.0
[1.13.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.25...v1.13.26
[1.13.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.24...v1.13.25
[1.13.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.23...v1.13.24
[1.13.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.22...v1.13.23
[1.13.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.21...v1.13.22
[1.13.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.20...v1.13.21
[1.13.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.19...v1.13.20
[1.13.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.18...v1.13.19
[1.13.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.17...v1.13.18
[1.13.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.16...v1.13.17
[1.13.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.15...v1.13.16
[1.13.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.14...v1.13.15
[1.13.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.13...v1.13.14
[1.13.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.12...v1.13.13
[1.13.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.11...v1.13.12
[1.13.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.10...v1.13.11
[1.13.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.9...v1.13.10
[1.13.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.8...v1.13.9
[1.13.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.7...v1.13.8
[1.13.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.6...v1.13.7
[1.13.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.5...v1.13.6
[1.13.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.4...v1.13.5
[1.13.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.3...v1.13.4
[1.13.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.2...v1.13.3
[1.13.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.1...v1.13.2
[1.13.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.0...v1.13.1
[1.13.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.14...v1.13.0
[1.12.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.13...v1.12.14
[1.12.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.12...v1.12.13
[1.12.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.11...v1.12.12
[1.12.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.10...v1.12.11
[1.12.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.9...v1.12.10
[1.12.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.8...v1.12.9
[1.12.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.7...v1.12.8
[1.12.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.6...v1.12.7
[1.12.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.5...v1.12.6
[1.12.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.4...v1.12.5
[1.12.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.3...v1.12.4
[1.12.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.2...v1.12.3
[1.12.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.1...v1.12.2
[1.12.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.0...v1.12.1
[1.12.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.5...v1.12.0
[1.11.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.4...v1.11.5
[1.11.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.3...v1.11.4
[1.11.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.2...v1.11.3
[1.11.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.1...v1.11.2
[1.11.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.0...v1.11.1
[1.11.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.3...v1.11.0
[1.10.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.2...v1.10.3
[1.10.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.1...v1.10.2
[1.10.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.0...v1.10.1
[1.10.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.9.0...v1.10.0
[1.9.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.1...v1.9.0
[1.8.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.0...v1.8.1
[1.8.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.3...v1.8.0
[1.7.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.2...v1.7.3
[1.7.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.1...v1.7.2
[1.7.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.0...v1.7.1
[1.7.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.6.0...v1.7.0
[1.6.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.5.0...v1.6.0
[1.5.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.1...v1.5.0
[1.4.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.0...v1.4.1
[1.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.9...v1.4.0
[1.3.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.8...v1.3.9
[1.3.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.7...v1.3.8
[1.3.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.6...v1.3.7
[1.3.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.5...v1.3.6
[1.3.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.4...v1.3.5
[1.3.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.3...v1.3.4
[1.3.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.2...v1.3.3
[1.3.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.1...v1.3.2
[1.3.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.0...v1.3.1
[1.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.1...v1.3.0
[1.2.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.0...v1.2.1
[1.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.9...v1.2.0
[1.1.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.8...v1.1.9
[1.1.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.7...v1.1.8
[1.1.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.6...v1.1.7
[1.1.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.5...v1.1.6
[1.1.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.4...v1.1.5
[1.1.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.3...v1.1.4
[1.1.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.2...v1.1.3
[1.1.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.1...v1.1.2
[1.1.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.0...v1.1.1
[1.1.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.11...v1.1.0
[1.0.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.10...v1.0.11
[1.0.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.9...v1.0.10
[1.0.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.8...v1.0.9
[1.0.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.7...v1.0.8
[1.0.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.6...v1.0.7
[1.0.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.5...v1.0.6
[1.0.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.4...v1.0.5
[1.0.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.3...v1.0.4
[1.0.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.2...v1.0.3
[1.0.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.1...v1.0.2
[1.0.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.0...v1.0.1
[1.0.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.4.0...v1.0.0
[0.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.3.0...v0.4.0
[0.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.2.0...v0.3.0
[0.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.1.4...v0.2.0
---
### 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.
---
- [ ] 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).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
.github/workflows/ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f78bb68f..37bad95a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -76,7 +76,7 @@ jobs:
components: clippy rust-docs
- run: cargo clippy --all-features --all-targets -- -D warnings
- run: RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --all-features
- - uses: crate-ci/typos@80c8a4945eec0f6d464eaf9e65ed98ef085283d1 # v1.38.1
+ - uses: crate-ci/typos@07d900b8fa1097806b8adb6391b0d3e0ac2fdea7 # v1.39.0
with:
files: .
From cc28e957dbaa9eb6ff1a015f6ce6de0ec0a70496 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BF=A0?=
Date: Sun, 2 Nov 2025 13:36:03 +0900
Subject: [PATCH 05/45] fix: don't drop canonicalized path by cache clear
(#791)
`Canonicalized path was dropped` error started to happen when I started
to call `resolver.cache_clear()` frequently (so that I can clear the
cache for each resolution to support
https://github.com/vitest-dev/vitest/issues/8754#issuecomment-3441115032).
My guess of the cause is:
- `resolver.cache_clear()` is called while a resolution is happening
- `self.paths` is cleared because of that call
- this `Arc::downgrade` removes the last strong reference:
https://github.com/oxc-project/oxc-resolver/blob/9de30883232082e425ae0c837c69adf07e8570e6/src/cache/cache_impl.rs#L283
- this `weak.upgrade()` errors:
https://github.com/oxc-project/oxc-resolver/blob/9de30883232082e425ae0c837c69adf07e8570e6/src/cache/cache_impl.rs#L288
This PR solves that by using `Mutex>>` instead of
`OnceLock>`. Since `weak.upgrade()` may return None, I changed
the code to resolve when `weak` returned None. The previous code assumed
that `weak.upgrade()` always returns a value and that allowed us to use
`OnceLock`.
I guess this will have a negative impact on perf...
---
src/cache/cache_impl.rs | 86 +++++++++++++++++-----------------------
src/cache/cached_path.rs | 6 +--
2 files changed, 39 insertions(+), 53 deletions(-)
diff --git a/src/cache/cache_impl.rs b/src/cache/cache_impl.rs
index e9e38eaf..c38f6061 100644
--- a/src/cache/cache_impl.rs
+++ b/src/cache/cache_impl.rs
@@ -234,60 +234,46 @@ impl Cache {
return Err(io::Error::new(io::ErrorKind::NotFound, "Circular symlink").into());
}
- path.canonicalized
- .get_or_init(|| {
- path.canonicalizing.store(tid, Ordering::Release);
-
- let res = path.parent().map_or_else(
- || Ok(path.normalize_root(self)),
- |parent| {
- self.canonicalize_impl(&parent).and_then(|parent_canonical| {
- let normalized = parent_canonical.normalize_with(
- path.path().strip_prefix(parent.path()).unwrap(),
- self,
- );
+ let mut canonicalized_guard = path.canonicalized.lock().unwrap();
+ let canonicalized = canonicalized_guard.clone()?;
+ if let Some(cached_path) = canonicalized.upgrade() {
+ return Ok(CachedPath(cached_path));
+ }
- if self.fs.symlink_metadata(path.path()).is_ok_and(|m| m.is_symlink) {
- let link = self.fs.read_link(normalized.path())?;
- if link.is_absolute() {
- return self.canonicalize_impl(&self.value(&link.normalize()));
- } else if let Some(dir) = normalized.parent() {
- // Symlink is relative `../../foo.js`, use the path directory
- // to resolve this symlink.
- return self
- .canonicalize_impl(&dir.normalize_with(&link, self));
- }
- debug_assert!(
- false,
- "Failed to get path parent for {}.",
- normalized.path().display()
- );
- }
+ path.canonicalizing.store(tid, Ordering::Release);
- Ok(normalized)
- })
- },
- );
+ let res = path.parent().map_or_else(
+ || Ok(path.normalize_root(self)),
+ |parent| {
+ self.canonicalize_impl(&parent).and_then(|parent_canonical| {
+ let normalized = parent_canonical
+ .normalize_with(path.path().strip_prefix(parent.path()).unwrap(), self);
- path.canonicalizing.store(0, Ordering::Release);
- // Store the canonicalized path in the cache before downgrading to weak reference
- // This ensures there's always at least one strong reference to prevent dropping
- if let Ok(ref cp) = res {
- // Only insert if not already present to avoid unnecessary operations
- let paths = self.paths.pin();
- if !paths.contains(cp) {
- paths.insert(cp.clone());
+ if self.fs.symlink_metadata(path.path()).is_ok_and(|m| m.is_symlink) {
+ let link = self.fs.read_link(normalized.path())?;
+ if link.is_absolute() {
+ return self.canonicalize_impl(&self.value(&link.normalize()));
+ } else if let Some(dir) = normalized.parent() {
+ // Symlink is relative `../../foo.js`, use the path directory
+ // to resolve this symlink.
+ return self.canonicalize_impl(&dir.normalize_with(&link, self));
+ }
+ debug_assert!(
+ false,
+ "Failed to get path parent for {}.",
+ normalized.path().display()
+ );
}
- }
- // Convert to Weak reference for storage
- res.map(|cp| Arc::downgrade(&cp.0))
- })
- .as_ref()
- .map_err(Clone::clone)
- .and_then(|weak| {
- weak.upgrade().map(CachedPath).ok_or_else(|| {
- ResolveError::from(io::Error::other("Canonicalized path was dropped"))
+
+ Ok(normalized)
})
- })
+ },
+ );
+
+ path.canonicalizing.store(0, Ordering::Release);
+ // Convert to Weak reference for storage
+ *canonicalized_guard = res.as_ref().map_err(Clone::clone).map(|cp| Arc::downgrade(&cp.0));
+
+ res
}
}
diff --git a/src/cache/cached_path.rs b/src/cache/cached_path.rs
index 1ff11f5e..af676545 100644
--- a/src/cache/cached_path.rs
+++ b/src/cache/cached_path.rs
@@ -4,7 +4,7 @@ use std::{
hash::{Hash, Hasher},
ops::Deref,
path::{Component, Path, PathBuf},
- sync::{Arc, Weak, atomic::AtomicU64},
+ sync::{Arc, Mutex, Weak, atomic::AtomicU64},
};
use cfg_if::cfg_if;
@@ -27,7 +27,7 @@ pub struct CachedPathImpl {
pub is_node_modules: bool,
pub inside_node_modules: bool,
pub meta: OnceLock