mirror of
https://github.com/hanzoai/unrs-resolver.git
synced 2026-09-24 17:03:52 +00:00
35 KiB
35 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
1.12.2 - 2026-05-19
๐ Features
- feat: add loongarch64 builds (by @wjh-la) - #198
๐ Bug Fixes
- gate statx dont-sync flag for loongarch64 musl (by @JounQin) - #209
Contributors
- @JounQin
- @wjh-la
1.12.1 - 2026-05-19
๐ผ Other
Contributors
- @JounQin
1.12.0 - 2026-05-18
๐ Features
- add
node_pathoption to disableNODE_PATHenv var behavior (#1031) (by @Boshen) - #202 - add DTS resolver matching TypeScript's bundler mode (#997) (by @Boshen) - #202
- support NODE_PATH module lookup (#1020) (by @Boshen) - #202
- allow access to inner data in error related types (#990) (by @sapphi-red) - #202
- allow subpath imports that start with #/ (#907) (by @Boshen) - #202
- [breaking] disallow manually passing a list of references to
TsconfigOptions::references(#902) (by @Boshen) - #202 - support tsconfig
rootDirs(#885) (by @Boshen) - #202 - (napi) expose resolve_file API as resolveFileSync and resolveFileAsync (#900) (by @Boshen)
- add
resolve_fileAPI for tsconfig auto discovery to work (#860) (by @Boshen) - #202 - port tsconfck (find tsconfig files) (#854) (by @Boshen) - #202
- add many.rs example for profiling resolver with many packages (#836) (by @Boshen) - #202
- improve error message for empty package.json files (#793) (by @Boshen) - #202
- improve PackagePathNotExported error message with condition names (by @Boshen) - #202
- add big-endian support for package.json parsing (#768) (by @Boshen) - #202
- add tsconfig discovery (#758) (by @Boshen) - #202
- add ESM file:// protocol support with comprehensive tests (#746) (by @Boshen) - #202
- only resolve file:// protocol on windows (#737) (by @Boshen) - #202
- add benchmark for package.json deserialization (#698) (by @Boshen) - #202
- (tsconfig) support
files/include/exclude(#659) (by @shulaoda) - feat(tsconfig) support
allowJsincompilerOptions(#658) (by @shulaoda) - #202 - (tsconfig) complete inheritance of
compilerOptionsfields (#657) (by @shulaoda) - support pass closure to restriction (#604) (by @JounQin) - #202
๐ Bug Fixes
- avoid panic in resolve_file for parentless paths (#1053) (by @Boshen) - #202
- (dts) strip ./ prefix from package entry when matching typesVersions (#1051) (by @Boshen)
- (dts) expand Declaration to TypeScript|Declaration for package entry resolution (#1050) (by @Boshen)
- (dts) prefer declaration extensions over JS in exports-resolved paths (#1047) (by @Boshen)
- avoid wasm/wasi dead-code lint in NodePath (#1043) (by @Boshen) - #202
- resolve normalized path on Windows even for
symlinks: false(#1036) (by @sapphi-red) - #202 - skip unreadable tsconfig files during auto-discovery (#1033) (by @longlho) - #202
- remove invalid debug_assert for symlink + package.json (#1032) (by @Boshen) - #202
- resolve clippy unnecessary_unwrap warning (#980) (by @Boshen) - #202
- prevent tsconfig cache pollution with separate raw and built caches (#970) (by @Boshen) - #202
- use
/fixturespath for WASI target (by @Boshen) - #202 - only recreate the cache when
yarn_pnpis toggled (#943) (by @Boshen) - #202 - resolve absolute path to package with trailing slash (#942) (by @Boshen) - #202
- show yarn pnp errors as-is instead of NotFound error (#939) (by @sapphi-red) - #202
- resolve solution tsconfig for auto discovered tsconfig (#927) (by @Boshen) - #202
- fix
clone_with_options+yarn_pnp: truenot working (#916) (by @sapphi-red) - #202 - fix resolution when resolving non-relative specifier on tsconfig baseUrl (#903) (by @Boshen) - #202
- add fallback for statx NOSYS error on old kernels (#901) (by @Boshen) - #202
- correct grammatical errors in documentation and comments (#897) (by @Boshen) - #202
- resolve
node_modules/package/dir/foo.jsifnode_modules/package/dir/foo/exists (#896) (by @Boshen) - #202 - incorrect resolution when project reference extends a tsconfig without baseUrl (#882) (by @Boshen) - #202
- store PathBuf with weak pointers to handle cache clearing (#879) (by @Boshen) - #202
- apply
conditionNames: ['node', 'import']when resolving tsconfig extends (#869) (by @Boshen) - #202 - do not resolve to
node_modules/pacakge/index(#849) (by @Boshen) - #202 - use std::fs::canonicalize as a fallback when canonicalize fails (#835) (by @Boshen) - #202
- remove AT_STATX_DONT_SYNC from statx calls (#828) (by @Boshen) - #202
- (package_json) re-read file for serde_json fallback in simd implementation (#808) (by @Boshen)
- revert system file cache optimization on Linux (#810) (by @Brooooooklyn) - #202
- skip loading tsconfig.json from virtual module paths (#809) (by @sapphi-red) - #202
- don't drop canonicalized path by cache clear (#791) (by @sapphi-red) - #202
- derive Error for JSONError (#779) (by @Boshen) - #202
- tsconfig paths should not be applied to paths inside node_modules (#760) (by @Boshen) - #202
- ensure canonicalized paths remain accessible via strong references (#733) (by @Boshen) - #202
- use
Weakreferences forCachedPathto enable proper drop (#727) (by @Boshen) - #202 - (tsconfig) respect Yarn PnP when resolving
extendspaths (#656) (by @shulaoda) - allow resolving
package?query#fragmentfor packages with exports field (#655) (by @sapphi-red) - #202 - support for resolving empty tsconfig file (#602) (by @JounQin) - #202
๐ Refactor
- remove clear_cache test that dynamically creates fixtures (by @Boshen) - #202
- move resolve and misc fixtures into fixtures/integration (by @Boshen) - #202
- replace ignored doctest with link to example (by @Boshen) - #202
- consolidate fixture directories for better test file mapping (by @Boshen) - #202
- replace
urlcrate withpercent-encoding(#1065) (by @Boshen) - #202 - clean up commented-out code in parse_package_specifier (#1035) (by @Boshen) - #202
- replace builtins.rs with nodejs-built-in-modules crate (#940) (by @Boshen) - #202
- s/self.cache.as_ref()/&self.cache (#910) (by @Boshen) - #202
- remove redundant PathBuf storage in CachedPath (#891) (by @Boshen) - #202
- remove the redundant
inner_resolverfromload_pnp(#862) (by @Boshen) - #202 - improve
DebugandDisplayforCachedPath(#861) (by @Boshen) - #202 - too_many_arguments = "allow" (#863) (by @Boshen) - #202
- change Tsconfig::parse to accept owned string; add replace_bom_with_whitespace (#859) (by @Boshen) - #202
- remove the useless getters and setters from
CompilerOptions(#858) (by @Boshen) - #202 - add
Tsconfig:references_resolved(#856) (by @Boshen) - #202 - move tsconfig resolution related code to its own file (#855) (by @Boshen) - #202
- use RwLock<Vec<Arc> for package.json storage (#838) (by @Boshen) - #202
- do not store is_symlink in CachedPathImpl (#850) (by @Boshen) - #202
- remove CachedPathImpl::canonicaling (#834) (by @Boshen) - #202
- (file_system) deduplicate read methods and use Vec (#816) (by @Boshen)
- use cfg_if and rustix in read_to_string_bypass_system_cache (#802) (by @Boshen) - #202
- remove normalize-path dependency, use internal PathUtil (#742) (by @Boshen) - #202
- remove a redundant path clone from PackageJson::parse (#725) (by @Boshen) - #202
- split src/cache.rs into logical modules (#714) (by @Boshen) - #202
๐ Documentation
- map npm package links to npmx.dev (#1028) (by @Boshen) - #202
- (README.md) update logo (#968) (by @sapphi-red)
โก Performance
- remove unnecessary String clone in PnP resolution (#1039) (by @Boshen) - #202
- use byte operations instead of char iteration in specifier parser (#1038) (by @Boshen) - #202
- (resolve) reuse dot-prefixed subpath in exports/imports (#1004) (by @Boshen)
- (cache) remove package.json index arena indirection (#1003) (by @Boshen)
- (tsconfig) precompile wildcard path alias matcher (#1001) (by @Boshen)
- precompile alias match metadata in resolver hot path (#999) (by @Boshen) - #202
- remove an allocation from
CachedPath::module_directory(#880) (by @Boshen) - #202 - skip searching for node_modules/@scope/package.json (#876) (by @Boshen) - #202
- remove the redundant
node_modules/package/indexcache value (#875) (by @Boshen) - #202 - cache all package.json resolutions for faster package.json lookup (#853) (by @Boshen) - #202
- do not canonicalize the entry path (#848) (by @Boshen) - #202
- remove Result from
CachedPathImpl::canonicalized(#847) (by @Boshen) - #202 - fast path for node_modules/package (#839) (by @Boshen) - #202
- cache canonicalization results at every recursion level (#843) (by @Boshen) - #202
- use IdentityHasher for visited set to avoid double hashing (#837) (by @Boshen) - #202
- optimize FileSystem metadata operations with rustix (#800) (by @Boshen) - #202
- use simd-json for package.json parsing (#761) (by @Boshen) - #202
- make url crate optional for wasm32 targets (by @Boshen) - #202
- mark error path functions as #[cold] for better optimization (#729) (by @Boshen) - #202
- bypass file system read cache if memory cache is available (#707) (by @Brooooooklyn) - #202
- use
memmapto speed up file reading (#696) (by @Boshen) - #202 - use
GetFileAttributesExWfor symlink metadata lookup on Windows (#691) (by @sapphi-red) - #202 - improve
pattern_key_compare(#639) (by @Boshen) - #202 - most specifiers don't have escaped characters (#636) (by @Boshen) - #202
๐งช Testing
- add 28 tests to improve coverage (92% โ 93%) (#1082) (by @Boshen) - #202
- use CARGO_MANIFEST_DIR instead
env::current_dir(by @Boshen) - #202 - Add a test to ensure NODEJS_BUILTINS is alphabetized. (#926) (by @connorshea) - #202
- add test cases for package imports starting with
#or#/(#905) (by @Boshen) - #202 - change all fixture directory names to dashed case (#884) (by @Boshen) - #202
- add a tsconfig extend not found case (#763) (by @Boshen) - #202
- improve test coverage for edge cases (#740) (by @Boshen) - #202
- improve coverage for check_restrictions (#739) (by @Boshen) - #202
- add memory leak test (#726) (by @Boshen) - #202
- enable Windows global pnp case (#703) (by @JounQin) - #202
- (tsconfig) tweak jsx
extendstests (#666) (by @shulaoda) - make tests pass on Windows (#654) (by @sapphi-red) - #202
๐ผ Other
- Merge remote-tracking branch 'upstream/main' into chore/merge_upstream (by @JounQin) - #202
- add tsconfig paths alias scalability benchmark (#1002) (by @Boshen) - #202
- Revert "perf: use
memmapto speed up file reading" (#701) (by @Boshen) - #202 - Add comprehensive tests for tsconfig extends functionality (#660) (by @Copilot) - #202
- Expose the
ExtendsFieldenum of TsConfig (#607) (by @ostenbom) - #202
Contributors
- @JounQin
- @renovate[bot]
- @Boshen
- @sapphi-red
- @longlho
- @leegeunhyeok
- @connorshea
- @Brooooooklyn
- @oxc-bot
- @shulaoda
- @Copilot
- @ostenbom
1.11.1 - 2025-07-09
๐ Documentation
- add missing
descriptionFilesoption introduction (by @JounQin)
Contributors
- @JounQin
1.11.0 - 2025-07-06
๐ Features
- return proper errors when failed to find or read yarn pnp manifest (#590) (by @Boshen) - #178
- add
yarn_pnplogic toFileSystem(#589) (by @Boshen) - #178 - (resolver) rework yarn manifest file look up (#586) (by @Boshen)
๐ Refactor
- remove
fs_cachefeature flag (#588) (by @Boshen) - #178
๐ผ Other
- Merge remote-tracking branch 'upstream/main' into chore/merge_upstream (by @JounQin) - #178
Contributors
- @JounQin
- @oxc-bot
- @Boshen
1.10.1 - 2025-07-02
๐ Bug Fixes
- fix: incorrect package.json relative path (#176) (by @JounQin) - #176
Contributors
- @JounQin
1.10.0 - 2025-07-02
๐ Bug Fixes
- support resolving abnormal relative paths with
node_modules(#171) (by @JounQin) - #171 - (deps) update all dependencies (#168) (by @renovate[bot])
๐ผ Other
- Merge remote-tracking branch 'upstream/main' into chore/merge_upstream (by @JounQin) - #174
Contributors
- @JounQin
- @renovate[bot]
1.9.2 - 2025-06-24
Bug Fixes
- requiring
.or./should respectmainFilesoption (#163) (by @JounQin) - #163
Documentation
- update
aliasandfallbackoptions type and description (#161) (by @JounQin) - #161
Chore
- (deps) update all dependencies (#164) (by @renovate[bot])
Contributors
- @renovate[bot]
- @JounQin
1.9.1 - 2025-06-20
Bug Fixes
- (deps) update all dependencies (#157) (by @renovate[bot])
Contributors
- @renovate[bot]
1.9.0 - 2025-06-11
Features
- add
file:protocol path support (#151) (by @JounQin) - #151 - add two last android targets (#154) (by @JounQin) - #154
Bug Fixes
- try different approach to support web container out of box (#150) (by @JounQin) - #150
Contributors
- @JounQin
1.8.1 - 2025-06-11
Bug Fixes
- keep
napiproperty inpackage.jsonfornapi-postinstall(#148) (by @JounQin)
Contributors
- @JounQin
1.8.0 - 2025-06-11
Features
- support runtime fallback for webcontainer (#144) (by @JounQin) - #144
- merge from upstream
oxc-project/oxc-resolver- 6th (#146) (by @JounQin) - #146
Chore
- (deps) update all dependencies (#141) (by @renovate[bot])
Contributors
- @JounQin
- @renovate[bot]
1.7.13 - 2025-06-10
Bug Fixes
- support extends in referenced project (#142)
1.7.12 - 2025-06-09
Bug Fixes
- npm protocol alias with pnp should be supported (#139)
1.7.11 - 2025-06-05
Bug Fixes
- remove invalid file cache due to extension alias (#136)
1.7.10 - 2025-06-05
Bug Fixes
- Revert "fix: custom
condition_namesshould take higher priority than target in package.json (#115)" (#131)
Other
- chore: bump napi v3.0.0-beta.7 (#133)
1.7.9 - 2025-06-03
Bug Fixes
-
pnp global cache should be supported (#129)
Windows global cache is still unsupported due to upstream
1.7.8 - 2025-05-29
Bug Fixes
- resolve symlink with nested
node_modules(#125)
1.7.7 - 2025-05-29
Bug Fixes
- resolve dir index with dot specifier correctly (#123)
1.7.6 - 2025-05-28
Bug Fixes
- prefer index over current file for
.and./(#121)
1.7.5 - 2025-05-28
Bug Fixes
- should try package exports first per spec (#118)
1.7.4 - 2025-05-28
Bug Fixes
- prefer file over package dir in
node_modules(#116)
1.7.3 - 2025-05-28
Bug Fixes
- custom
condition_namesshould take higher priority than target in package.json (#115)
1.7.2 - 2025-04-27
Bug Fixes
- bump
napi-postinstallto fixyarnpnp compatibility issue (#106)
1.7.1 - 2025-04-26
Chore
- bump
napi-postinstallto supportyarn/pnpmonwebcontainer(#103)
Testing
- add case for #65 (#100)
1.7.0 - 2025-04-24
Features
- enable
no_opt_archflag formimalloc-safeonlinux-aarch64(#98)
1.6.6 - 2025-04-23
Features
- add new target
riscv64gc-unknown-linux-musl(#96)
1.6.5 - 2025-04-23
Bug Fixes
- rework on handling DOS device paths on Windows (#84)
- handle package.json and tsconfig.json with BOM (#463)
Performance
- avoid double call to
parse_package_specifier(#465)
Documentation
- add more details about the changes in this fork (#92)
1.6.4 - 2025-04-22
Bug Fixes
- properly handle DOS device paths in strip_windows_prefix (#455)
1.6.3 - 2025-04-21
Bug Fixes
- support
load_as_directoryfor pnp mode (#75)
Testing
- add case for import-js/eslint-import-resolver-typescript#429 (#76)
1.6.2 - 2025-04-21
Bug Fixes
- resolve parent base url correctly by normalizing as absolute path (#72)
1.6.1 - 2025-04-20
Bug Fixes
- disable
mimallocon linux with aarch64 (#69)
1.6.0 - 2025-04-20
Features
- deserialize
preserve_value_importsandimports_not_used_as_valuesfromcompilerOptions(#457) - deserialize
targetfromcompilerOptions(#456)
Bug Fixes
- add
napi-postinstalldep for workaroundnpm's bug (#66)
1.5.0 - 2025-04-11
Bug Fixes
- resolve
${configDir}in tsconfigcompilerOptions.baseUrl(#450)
1.4.1 - 2025-04-07
Refactor
- remove unnecessary checks for query (#53)
1.4.0 - 2025-04-06
Features
- handle query and fragment in pacakge.json
exportsandimportsfield (#443) - resolve emitDecoratorMetadata in tsconfig (#439)
- (napi) add mimalloc (#423)
- [breaking] Rust Edition 2024 (#402)
- deserialize
verbatim_module_syntaxfrom compilerOptions (#411) - support wildcard
*in alias plugin (#388) - merge options from extends tsconfig.json (#375)
- add more fields in tsconfig#CompilerOptionsSerde (#374)
- [breaking] generic fs cache
type Resolver = ResolverGeneric<FsCache<FileSystemOs>>(#358) - [breaking] replace
FileSystem::canonicalizewithFileSystem::read_link(#331) - faster and stable path hash for the cache (#328)
- add
Resolver::resolve_tsconfigAPI (#312) - [breaking] add
ResolveError::Builtin::prefixed_with_node_colon(#272) - [breaking] mark
ResolveError#[non_exhaustive] (#252) - show tried extension aliases in
ResolveError::ExtensionAlias(#251) - give a specific error for matched alias not found (#238)
- Yarn PnP (#217)
Bug Fixes
- handle query and fragment in package.json
exportsandimportsfield (#443) - fix bench
- try browsers field and alias before resolving directory in node_modules (#349)
- special case for aliasing
@/(#348) - normalize resolved result on Windows for root (#345)
- don't panic when resolving
/withroots(#310) - use same UNC path normalization logic with libuv (#306)
- use
fs::canonicalizeto cover symlink edge cases (#284) - extensionAlias cannot resolve mathjs (#273)
- resolve module
ipaddr.jscorrectly whenextensionAliasis provided (#228) - (napi) update buggy NAPI-RS versions (#225)
- remove
#[cfg(target_os = "windows")]logic incanonicalize(#221)
Performance
- use papaya instead of dashmap (#356)
- try directory first in
node_modules(#340) - guard
load_aliason hot path (#339) - use
as_os_strforHashandPartialEqoperations (#338) - reduce hash while resolving package.json (#319)
- reduce memory allocation while normalizing package path (#318)
- reduce memory allocation while resolving package.json (#317)
- use
path.as_os_str().hash()instead ofpath.hash()(#316) - reduce memory allocation by using a thread_local path for path methods (#315)
- bring back the symlink optimization (#298)
- use simdutf8 to validate UTF-8 when reading files (#237)
- use custom canonicalize impl to avoid useless syscall (#220)
Documentation
- fix an incorrect comment on
Context::missing_dependencies - mention extension must start with a
.inwith_extension(#313) - (README) should be
new ResolverFactory
Refactor
- remove papaya
.collector(seize::Collector::new())call (#393) - replace UnsafeCell with RefCell (#346)
- run clippy with
--all-targets(#333) - apply latest
cargo +nightly fmt(#281) - add more clippy fixes (#279)
- clean up elided lifetimes (#277)
Testing
- fix warning on Windows
- fix symlink test init on Windows (#307)
1.3.3 - 2025-03-29
Build
- build: remove
--stripflag (#44)
Testing
- add nested package json case (#40)
1.3.2 - 2025-03-26
Bug Fixes
- absolute path aliasing should not be skipped (#37)
1.3.1 - 2025-03-26
Other
- bump all (dev) deps (#34)
1.3.0 - 2025-03-26
Features
1.2.2 - 2025-03-19
Bug Fixes
- (pnp) support
pnpapicore module and package deep link (#24)
1.2.0 - 2025-03-18
Features
1.1.2 - 2025-03-16
Fixed
- references should take higher priority (#13)
- takes paths and references into account at the same time
- should always try resolve_path_alias
1.1.1 - 2025-03-16
Other
- bump all (dev) deps
- bump to edition 2024
1.1.0 - 2025-03-15
Added
- support resolving path with extra query (#7)