mirror of
https://github.com/hanzoai/unrs-resolver.git
synced 2026-09-24 17:03:52 +00:00
42 KiB
42 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]
11.19.1 - 2026-02-28
๐ Bug Fixes
- resolve normalized path on Windows even for
symlinks: false(#1036) (by @sapphi-red) - skip unreadable tsconfig files during auto-discovery (#1033) (by @longlho)
๐ Refactor
- clean up commented-out code in parse_package_specifier (#1035) (by @Boshen)
โก Performance
- remove unnecessary String clone in PnP resolution (#1039) (by @Boshen)
- use byte operations instead of char iteration in specifier parser (#1038) (by @Boshen)
Contributors
- @Boshen
- @sapphi-red
- @longlho
11.19.0 - 2026-02-25
๐ Features
- add
node_pathoption to disableNODE_PATHenv var behavior (#1031) (by @Boshen) - add DTS resolver matching TypeScript's bundler mode (#997) (by @Boshen)
๐ Bug Fixes
- remove invalid debug_assert for symlink + package.json (#1032) (by @Boshen)
๐ Documentation
- map npm package links to npmx.dev (#1028) (by @Boshen)
Contributors
- @Boshen
11.18.0 - 2026-02-20
๐ Features
- support NODE_PATH module lookup (#1020) (by @Boshen)
Contributors
- @Boshen
- @renovate[bot]
11.17.1 - 2026-02-08
โก Performance
- (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)
๐ผ Other
- add tsconfig paths alias scalability benchmark (#1002) (by @Boshen)
Contributors
- @Boshen
11.17.0 - 2026-01-29
๐ Features
- allow access to inner data in error related types (#990) (by @sapphi-red)
Contributors
- @sapphi-red
11.16.4 - 2026-01-23
๐ Bug Fixes
- resolve clippy unnecessary_unwrap warning (#980) (by @Boshen)
Contributors
- @leegeunhyeok
- @Boshen
11.16.3 - 2026-01-14
๐ Bug Fixes
- prevent tsconfig cache pollution with separate raw and built caches (#970) (by @Boshen)
- use
/fixturespath for WASI target (by @Boshen)
๐ Documentation
- (README.md) update logo (#968) (by @sapphi-red)
๐งช Testing
- use CARGO_MANIFEST_DIR instead
env::current_dir(by @Boshen) - fix skipped tests in options.test.mjs (by @Boshen)
Contributors
- @Boshen
- @renovate[bot]
- @sapphi-red
11.16.1 - 2025-12-24
๐ Bug Fixes
- only recreate the cache when
yarn_pnpis toggled (#943) (by @Boshen) - resolve absolute path to package with trailing slash (#942) (by @Boshen)
- show yarn pnp errors as-is instead of NotFound error (#939) (by @sapphi-red)
๐ Refactor
- replace builtins.rs with nodejs-built-in-modules crate (#940) (by @Boshen)
Contributors
- @Boshen
- @renovate[bot]
- @sapphi-red
11.16.0 - 2025-12-18
๐ Features
- allow subpath imports that start with #/ (#907) (by @Boshen)
๐ Bug Fixes
- resolve solution tsconfig for auto discovered tsconfig (#927) (by @Boshen)
- fix
clone_with_options+yarn_pnp: truenot working (#916) (by @sapphi-red)
๐ Refactor
- s/self.cache.as_ref()/&self.cache (#910) (by @Boshen)
๐งช Testing
- Add a test to ensure NODEJS_BUILTINS is alphabetized. (#926) (by @connorshea)
- add test cases for package imports starting with
#or#/(#905) (by @Boshen)
Contributors
- @Boshen
- @connorshea
- @renovate[bot]
- @sapphi-red
11.15.0 - 2025-12-04
๐ Features
- [breaking] disallow manually passing a list of references to
TsconfigOptions::references(#902) (by @Boshen) - support tsconfig
rootDirs(#885) (by @Boshen) - (napi) expose resolve_file API as resolveFileSync and resolveFileAsync (#900) (by @Boshen)
๐ Bug Fixes
- fix resolution when resolving non-relative specifier on tsconfig baseUrl (#903) (by @Boshen)
- add fallback for statx NOSYS error on old kernels (#901) (by @Boshen)
- correct grammatical errors in documentation and comments (#897) (by @Boshen)
Contributors
- @Boshen
- @renovate[bot]
11.14.2 - 2025-12-02
๐ Bug Fixes
- resolve
node_modules/package/dir/foo.jsifnode_modules/package/dir/foo/exists (#896) (by @Boshen)
๐ Refactor
- remove redundant PathBuf storage in CachedPath (#891) (by @Boshen)
Contributors
- @Boshen
11.14.1 - 2025-11-28
๐ Bug Fixes
- incorrect resolution when project reference extends a tsconfig without baseUrl (#882) (by @Boshen) - #882
- store PathBuf with weak pointers to handle cache clearing (#879) (by @Boshen) - #879
โก Performance
- remove an allocation from
CachedPath::module_directory(#880) (by @Boshen) - #880 - skip searching for node_modules/@scope/package.json (#876) (by @Boshen) - #876
- remove the redundant
node_modules/package/indexcache value (#875) (by @Boshen) - #875
๐งช Testing
- change all fixture directory names to dashed case (#884) (by @Boshen) - #884
Contributors
- @Boshen
- @sapphi-red
11.14.0 - 2025-11-24
๐ Features
- add
resolve_fileAPI for tsconfig auto discovery to work (#860) (by @Boshen) - #860 - port tsconfck (find tsconfig files) (#854) (by @Boshen) - #854
- add many.rs example for profiling resolver with many packages (#836) (by @Boshen) - #836
๐ Bug Fixes
- apply
conditionNames: ['node', 'import']when resolving tsconfig extends (#869) (by @Boshen) - #869 - do not resolve to
node_modules/pacakge/index(#849) (by @Boshen) - #849 - use std::fs::canonicalize as a fallback when canonicalize fails (#835) (by @Boshen) - #835
๐ Refactor
- remove the redundant
inner_resolverfromload_pnp(#862) (by @Boshen) - #862 - improve
DebugandDisplayforCachedPath(#861) (by @Boshen) - #861 - too_many_arguments = "allow" (#863) (by @Boshen) - #863
- change Tsconfig::parse to accept owned string; add replace_bom_with_whitespace (#859) (by @Boshen) - #859
- remove the useless getters and setters from
CompilerOptions(#858) (by @Boshen) - #858 - add
Tsconfig:references_resolved(#856) (by @Boshen) - #856 - move tsconfig resolution related code to its own file (#855) (by @Boshen) - #855
- use RwLock<Vec<Arc> for package.json storage (#838) (by @Boshen) - #838
- do not store is_symlink in CachedPathImpl (#850) (by @Boshen) - #850
- remove CachedPathImpl::canonicaling (#834) (by @Boshen) - #834
โก Performance
- cache all package.json resolutions for faster package.json lookup (#853) (by @Boshen) - #853
- do not canonicalize the entry path (#848) (by @Boshen) - #848
- remove Result from
CachedPathImpl::canonicalized(#847) (by @Boshen) - #847 - fast path for node_modules/package (#839) (by @Boshen) - #839
- cache canonicalization results at every recursion level (#843) (by @Boshen) - #843
- use IdentityHasher for visited set to avoid double hashing (#837) (by @Boshen) - #837
Contributors
- @Boshen
- @renovate[bot]
11.13.2 - 2025-11-12
๐ Bug Fixes
- remove AT_STATX_DONT_SYNC from statx calls (#828) (by @Boshen) - #828
๐ Refactor
- (file_system) deduplicate read methods and use Vec (#816) (by @Boshen)
Contributors
- @renovate[bot]
- @Boshen
11.13.1 - 2025-11-04
๐ Bug Fixes
- (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) - #810
- skip loading tsconfig.json from virtual module paths (#809) (by @sapphi-red) - #809
๐ Refactor
- use cfg_if and rustix in read_to_string_bypass_system_cache (#802) (by @Boshen) - #802
โก Performance
- optimize FileSystem metadata operations with rustix (#800) (by @Boshen) - #800
Contributors
- @Boshen
- @Brooooooklyn
- @sapphi-red
- @renovate[bot]
11.13.0 - 2025-11-02
๐ Features
- improve error message for empty package.json files (#793) (by @Boshen) - #793
๐ Bug Fixes
- don't drop canonicalized path by cache clear (#791) (by @sapphi-red) - #791
Contributors
- @sapphi-red
- @Boshen
11.12.0 - 2025-10-27
๐ Features
- improve PackagePathNotExported error message with condition names (by @Boshen)
Contributors
- @Boshen
11.11.1 - 2025-10-21
๐ Bug Fixes
- derive Error for JSONError (#779) (by @Boshen) - #779
Contributors
- @Boshen
11.11.0 - 2025-10-20
๐ Features
- add big-endian support for package.json parsing (#768) (by @Boshen) - #768
- add tsconfig discovery (#758) (by @Boshen) - #758
๐ Bug Fixes
- tsconfig paths should not be applied to paths inside node_modules (#760) (by @Boshen) - #760
๐งช Testing
- add a tsconfig extend not found case (#763) (by @Boshen) - #763
Contributors
- @renovate[bot]
- @Boshen
11.10.0 - 2025-10-17
๐ Features
- add ESM file:// protocol support with comprehensive tests (#746) (by @Boshen) - #746
๐ Refactor
- remove normalize-path dependency, use internal PathUtil (#742) (by @Boshen) - #742
โก Performance
- use simd-json for package.json parsing (#761) (by @Boshen) - #761
- make url crate optional for wasm32 targets (by @Boshen)
Contributors
- @Boshen
- @renovate[bot]
11.9.0 - 2025-10-01
๐ Features
- only resolve file:// protocol on windows (#737) (by @Boshen) - #737
๐งช Testing
- improve test coverage for edge cases (#740) (by @Boshen) - #740
- improve coverage for check_restrictions (#739) (by @Boshen) - #739
Contributors
- @Boshen
11.8.4 - 2025-09-28
๐ Bug Fixes
- ensure canonicalized paths remain accessible via strong references (#733) (by @Boshen) - #733
โก Performance
- mark error path functions as #[cold] for better optimization (#729) (by @Boshen) - #729
Contributors
- @Boshen
11.8.3 - 2025-09-23
๐ Bug Fixes
- use
Weakreferences forCachedPathto enable proper drop (#727) (by @Boshen) - #727
๐ Refactor
- remove a redundant path clone from PackageJson::parse (#725) (by @Boshen) - #725
- split src/cache.rs into logical modules (#714) (by @Boshen) - #714
๐งช Testing
- add memory leak test (#726) (by @Boshen) - #726
Contributors
- @Boshen
- @renovate[bot]
11.8.2 - 2025-09-18
โก Performance
- bypass file system read cache if memory cache is available (#707) (by @Brooooooklyn) - #707
๐งช Testing
- enable Windows global pnp case (#703) (by @JounQin) - #703
Contributors
- @Brooooooklyn
- @JounQin
11.8.1 - 2025-09-16
๐ผ Other
- Revert "perf: use
memmapto speed up file reading" (#701) (by @Boshen) - #701
Contributors
- @Boshen
11.8.0 - 2025-09-15
๐ Features
- add benchmark for package.json deserialization (#698) (by @Boshen) - #698
โก Performance
- use
memmapto speed up file reading (#696) (by @Boshen) - #696
Contributors
- @Boshen
- @renovate[bot]
11.7.2 - 2025-09-12
โก Performance
- use
GetFileAttributesExWfor symlink metadata lookup on Windows (#691) (by @sapphi-red) - #691
Contributors
- @sapphi-red
- @renovate[bot]
11.7.0 - 2025-08-25
๐ Features
- (tsconfig) support
files/include/exclude(#659) (by @shulaoda) - feat(tsconfig) support
allowJsincompilerOptions(#658) (by @shulaoda) - #658 - (tsconfig) complete inheritance of
compilerOptionsfields (#657) (by @shulaoda)
๐ Bug Fixes
- (tsconfig) respect Yarn PnP when resolving
extendspaths (#656) (by @shulaoda)
๐งช Testing
- (tsconfig) tweak jsx
extendstests (#666) (by @shulaoda)
๐ผ Other
- Add comprehensive tests for tsconfig extends functionality (#660) (by @Copilot) - #660
Contributors
- @shulaoda
- @renovate[bot]
- @Copilot
11.6.2 - 2025-08-20
๐ Bug Fixes
- allow resolving
package?query#fragmentfor packages with exports field (#655) (by @sapphi-red) - #655
โก Performance
- improve
pattern_key_compare(#639) (by @Boshen) - #639 - most specifiers don't have escaped characters (#636) (by @Boshen) - #636
๐งช Testing
- make tests pass on Windows (#654) (by @sapphi-red) - #654
Contributors
- @sapphi-red
- @renovate[bot]
- @Boshen
11.6.0 - 2025-07-18
๐ Features
- support pass closure to restriction (#604) (by @JounQin) - #604
๐ Bug Fixes
- support for resolving empty tsconfig file (#602) (by @JounQin) - #602
๐ผ Other
- Expose the
ExtendsFieldenum of TsConfig (#607) (by @ostenbom) - #607
Contributors
- @Boshen
- @JounQin
- @renovate[bot]
- @ostenbom
11.5.0 - 2025-07-06
๐ Features
- return proper errors when failed to find or read yarn pnp manifest (#590) (by @Boshen) - #590
- add
yarn_pnplogic toFileSystem(#589) (by @Boshen) - #589 - (resolver) rework yarn manifest file look up (#586) (by @Boshen)
๐ Refactor
- remove
fs_cachefeature flag (#588) (by @Boshen) - #588
Contributors
- @Boshen
11.4.0 - 2025-07-01
๐ Features
- bump
pnpto 0.11.0 (#577) (by @Boshen) - #577
Contributors
- @Boshen
11.3.0 - 2025-06-26
๐ Features
- align yarn pnp implementation (#576) (by @Boshen) - #576
- (resolver) allow
exportsfield inrequire('../directory')(#572) (by @Boshen) - (napi) add
ResolveResult::builtininformation (#575) (by @Boshen)
๐ Documentation
- document
allowPackageExportsInDirectoryResolve(by @Boshen)
Contributors
- @Boshen
11.2.1 - 2025-06-23
๐ Bug Fixes
- avoid crash when encountering tsconfig circular extends (#570)
- (napi) ensure
pnp_manifestis included withyarn_pnpfeature (#555)
๐ผ Other
- (rust)
debug = falsein[profile.dev]and[profile.test](#554)
๐ Documentation
- add ts config
- update
aliasandfallbackoptions type and description (#557)
11.2.0 - 2025-06-05
Features
- (napi) add
tracing-subscriberfeature; turned on by default (#546)
11.1.0 - 2025-06-01
Features
- support module type for TS files (#538)
11.0.0 - 2025-05-28
Features
- implement module type resolution algorithm
ESM_FILE_FORMATfrom the spec (#535)
Documentation
- (README) clarify algorithm specification
Chore
- (deps) lock file maintenance rust crates (#530)
10.0.0 - 2025-05-20
Features
- (napi) upgrade NAPI-RS to 3.0.0-beta.1 (#525)
Refactor
- [breaking] set clippy
avoid-breaking-exported-api = false(#519)
Chore
- (deps) lock file maintenance (#523)
- (deps) update dependency rust to v1.87.0 (#520)
- sync napi cfg on global_allocator
- (napi) adjust mimalloc features (#515)
9.0.1 - 2025-05-09
Bug Fixes
- oxc_resolver_napi dependency version
9.0.0 - 2025-05-09
Bug Fixes
- hash import does not need to load from node_modules (#501)
Chore
8.0.0 - 2025-05-01
Bug Fixes
- fix incorrect return of package.json when a workspace module has
node_modules(#482)
Performance
- cache whether a path is
node_modulesor insidenode_modules(#490) - remove a useless
load_as_directorycall (#487)
Refactor
7.0.0 - 2025-04-29
Bug Fixes
- return the enclosing
package.jsonif it is insidenode_modules(#476)
Refactor
- add
DebugtoFsCachedPath(#478)
6.0.1 - 2025-04-25
Bug Fixes
- handle package.json and tsconfig.json with BOM (#463)
Performance
- avoid double call to
parse_package_specifier(#465)
6.0.0 - 2025-04-22
Bug Fixes
- properly handle DOS device paths in strip_windows_prefix (#455)
5.3.0 - 2025-04-19
Features
- deserialize
preserve_value_importsandimports_not_used_as_valuesfromcompilerOptions(#457) - deserialize
targetfromcompilerOptions(#456)
5.2.0 - 2025-04-08
Bug Fixes
- resolve
${configDir}in tsconfigcompilerOptions.baseUrl(#450)
5.1.1 - 2025-04-04
Bug Fixes
- handle query and fragment in pacakge.json
exportsandimportsfield (#443)
5.1.0 - 2025-04-02
Features
- resolve emitDecoratorMetadata in tsconfig (#439)
Documentation
- fix an incorrect comment on
Context::missing_dependencies
5.0.0 - 2025-03-07
Features
Refactor
- remove papaya
.collector(seize::Collector::new())call (#393)
4.2.0 - 2025-02-19
Features
- support wildcard
*in alias plugin (#388)
4.1.0 - 2025-02-14
Features
- merge options from extends tsconfig.json (#375)
- add more fields in tsconfig#CompilerOptionsSerde (#374)
Bug Fixes
- fix bench
4.0.0 - 2025-01-20
Features
- [breaking] generic fs cache
type Resolver = ResolverGeneric<FsCache<FileSystemOs>>(#358) - [breaking]
PackageJsonandTsConfigtraits (#360)
Performance
- use papaya instead of dashmap (#356)
3.0.3 - 2024-12-14
Bug Fixes
- try browsers field and alias before resolving directory in node_modules (#349)
3.0.2 - 2024-12-13
Bug Fixes
- special case for aliasing
@/(#348) - normalize resolved result on Windows for root (#345)
Refactor
- replace UnsafeCell with RefCell (#346)
3.0.1 - 2024-12-12
Performance
- try directory first in
node_modules(#340)
3.0.0 - 2024-12-11
Added
- [breaking] replace
FileSystem::canonicalizewithFileSystem::read_link(#331)
Other
- guard
load_aliason hot path (#339)
2.1.1 - 2024-11-22
Performance
- 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)
Other
- remove the deprecated simdutf8 aarch64_neon feature
- mention extension must start with a
.inwith_extension(#313)
2.1.0 - 2024-11-20
Added
- add
Resolver::resolve_tsconfigAPI (#312)
Fixed
- don't panic when resolving
/withroots(#310) - use same UNC path normalization logic with libuv (#306)
Other
- (deps) update rust crates to v1.0.215
- fix symlink test init on windows (#307)
2.0.1 - 2024-11-08
Other
cargo upgrade&&pnpm upgrade- bring back the symlink optimization (#298)
- (deps) update rust crate criterion2 to v2
2.0.0 - 2024-10-22
Added
- [breaking] add
add ResolveError::Builtin::is_runtime_module(#272)
Fixed
1.12.0 - 2024-09-25
Added
- [breaking] mark
ResolveError#[non_exhaustive] (#252) - show tried extension aliases in
ResolveError::ExtensionAlias(#251) - give a specific error for matched alias not found (#238)
1.11.0 - 2024-08-26
Added
1.10.2 - 2024-07-16
Chore
- Release FreeBSD
1.10.1 - 2024-07-15
Fixed
- resolve module
ipaddr.jscorrectly whenextensionAliasis provided (#228)
1.10.0 - 2024-07-11
Added
- (napi) expose module type info in ResolveResult (#223)
Fixed
- remove
#[cfg(target_os = "windows")]logic incanonicalize(#221)
Other
- update
cargo deny(#222) - pin crate-ci/typos version
1.9.4 - 2024-07-10
Other
1.9.3 - 2024-07-03
Fixed
- tsconfig project reference it self should throw error (#211)
Other
- (napi) make napi binary smaller with minimal tracing features (#213)
- (napi) remove tokio (#212)
- (deps) update rust crate dashmap to v6 (#209)
1.9.2 - 2024-06-30
Added
- (napi) add tracing via
OXC_LOG:DEBUG(#202)
Other
- document directory is an absolute path for
resolve(directory, specifier)(#206) - add a broken tsconfig test (#205)
- improve code coverage for src/error.rs (#204)
- skip resolving extension alias when
options.extension_aliasis empty (#203) - add npm badge to crates.io
1.9.1 - 2024-06-29
Added
- strip symbols and enable LTO (#197)
Other
1.9.0 - 2024-06-28
Added
- export package.json
typeandsideEffectsfield by default for bundlers (#196)
1.8.4 - 2024-06-27
Other
- skip searching for package.json when
alias_fieldsis not provided (#194)
1.8.3 - 2024-06-26
- (napi) release wasi build
1.8.2 - 2024-06-24
Added
- (napi) add async API (#191)
1.8.1 - 2024-05-31
Fixed
- alias value should try fragment as path (#172)
1.8.0 - 2024-05-27
Added
- [breaking] remove the constraint on packages exports
defaultmust be the last one (#171) - [breaking] return
ResolveError:Builtin("node:{specifier}")from package imports and exports (#165)
Fixed
- alias not found should return error (#168)
Other
- add panic test for extensions without a leading dot (#150)
- add test case for empty alias fields (#149)
1.7.0 - 2024-04-24
Added
- add
imports_fieldsoption (#138) - substitute path that starts with
${configDir}/in tsconfig.compilerOptions.paths (#136)
Fixed
- RootsPlugin debug_assert on windows (#145)
- RootsPlugin should fall through if it fails to resolve the roots (#144)
- lazily read package.json.exports for shared resolvers (#137)
Other
- remove
PartialEqandEqfromSpecifier(#148) - add test case for tsconfig paths alias fall through (#147)
- use
cargo shear - fix test not failing the jobs property (#146)
- lazily read package.json.browser_fields for shared resolvers (#142)
- avoid an extra allocation in
load_extensions - ignore code coverage for
DisplayonResolveOptions(#140) - remove the browser field lookup in
resolve_esm_match(#141) - remove the extra
condition_namesfrompackage_exports_resolve
1.6.7 - 2024-04-22
Fixed
- incorrect resolution when using shared resolvers with different
main_fields(#134)
1.6.6 - 2024-04-22
Other
- print resolve options while debug tracing (#133)
1.6.5 - 2024-04-10
Fixed
- canonicalize is not supported on wasi target (#124)
Other
- document feature flags
1.6.4 - 2024-03-29
Docs
- improve terminology and clarify contexts