diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-23 17:34:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-23 17:34:46 -0400 |
commit | 6055629ee7f48a4e887392ccac13788aa4008249 (patch) | |
tree | 453a06a5926a19814902ade6259ddc3631a1b181 /ext/node/package_json.rs | |
parent | f0df54fc70ec1781a3ffec232fefc38cabf39c37 (diff) |
refactor: update to use deno_package_json (#24688)
This is in preparation for extracting out node resolution code from
ext/node (which is something I'm going to do gradually over time).
Uses https://github.com/denoland/deno_package_json
Diffstat (limited to 'ext/node/package_json.rs')
-rw-r--r-- | ext/node/package_json.rs | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/ext/node/package_json.rs b/ext/node/package_json.rs index b28207db8..877acfc7a 100644 --- a/ext/node/package_json.rs +++ b/ext/node/package_json.rs @@ -1,8 +1,7 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -use deno_config::package_json::PackageJson; -use deno_config::package_json::PackageJsonRc; -use deno_fs::DenoConfigFsAdapter; +use deno_package_json::PackageJson; +use deno_package_json::PackageJsonRc; use std::cell::RefCell; use std::collections::HashMap; use std::io::ErrorKind; @@ -24,9 +23,7 @@ impl PackageJsonThreadLocalCache { } } -impl deno_config::package_json::PackageJsonCache - for PackageJsonThreadLocalCache -{ +impl deno_package_json::PackageJsonCache for PackageJsonThreadLocalCache { fn get(&self, path: &Path) -> Option<PackageJsonRc> { CACHE.with(|cache| cache.borrow().get(path).cloned()) } @@ -36,6 +33,20 @@ impl deno_config::package_json::PackageJsonCache } } +pub struct DenoPkgJsonFsAdapter<'a>(pub &'a dyn deno_fs::FileSystem); + +impl<'a> deno_package_json::fs::DenoPkgJsonFs for DenoPkgJsonFsAdapter<'a> { + fn read_to_string_lossy( + &self, + path: &Path, + ) -> Result<String, std::io::Error> { + self + .0 + .read_text_file_lossy_sync(path, None) + .map_err(|err| err.into_io_error()) + } +} + /// Helper to load a package.json file using the thread local cache /// in deno_node. pub fn load_pkg_json( @@ -44,14 +55,16 @@ pub fn load_pkg_json( ) -> Result<Option<PackageJsonRc>, PackageJsonLoadError> { let result = PackageJson::load_from_path( path, - &DenoConfigFsAdapter::new(fs), + &DenoPkgJsonFsAdapter(fs), Some(&PackageJsonThreadLocalCache), ); match result { Ok(pkg_json) => Ok(Some(pkg_json)), - Err(deno_config::package_json::PackageJsonLoadError::Io { - source, .. - }) if source.kind() == ErrorKind::NotFound => Ok(None), + Err(deno_package_json::PackageJsonLoadError::Io { source, .. }) + if source.kind() == ErrorKind::NotFound => + { + Ok(None) + } Err(err) => Err(PackageJsonLoadError(err)), } } |