mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 00:29:09 -05:00
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
This commit is contained in:
parent
e76330c49d
commit
b8c16eda9b
21 changed files with 123 additions and 101 deletions
23
Cargo.lock
generated
23
Cargo.lock
generated
|
@ -1131,6 +1131,7 @@ dependencies = [
|
||||||
"deno_lint",
|
"deno_lint",
|
||||||
"deno_lockfile",
|
"deno_lockfile",
|
||||||
"deno_npm",
|
"deno_npm",
|
||||||
|
"deno_package_json",
|
||||||
"deno_runtime",
|
"deno_runtime",
|
||||||
"deno_semver",
|
"deno_semver",
|
||||||
"deno_task_shell",
|
"deno_task_shell",
|
||||||
|
@ -1312,11 +1313,12 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deno_config"
|
name = "deno_config"
|
||||||
version = "0.25.0"
|
version = "0.26.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "64e7a65603a3aa52216021a0abd401770ac6ed284e5b885dadf40ce35b2a0d9e"
|
checksum = "8188c39699541affc0c0f89bbba07d31212385fa0c4e1a5a9e530b0f3cbc776f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"deno_package_json",
|
||||||
"deno_semver",
|
"deno_semver",
|
||||||
"glob",
|
"glob",
|
||||||
"ignore",
|
"ignore",
|
||||||
|
@ -1513,7 +1515,6 @@ version = "0.72.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base32",
|
"base32",
|
||||||
"deno_config",
|
|
||||||
"deno_core",
|
"deno_core",
|
||||||
"deno_io",
|
"deno_io",
|
||||||
"deno_permissions",
|
"deno_permissions",
|
||||||
|
@ -1733,13 +1734,13 @@ dependencies = [
|
||||||
"cbc",
|
"cbc",
|
||||||
"const-oid",
|
"const-oid",
|
||||||
"data-encoding",
|
"data-encoding",
|
||||||
"deno_config",
|
|
||||||
"deno_core",
|
"deno_core",
|
||||||
"deno_fetch",
|
"deno_fetch",
|
||||||
"deno_fs",
|
"deno_fs",
|
||||||
"deno_io",
|
"deno_io",
|
||||||
"deno_media_type",
|
"deno_media_type",
|
||||||
"deno_net",
|
"deno_net",
|
||||||
|
"deno_package_json",
|
||||||
"deno_permissions",
|
"deno_permissions",
|
||||||
"deno_whoami",
|
"deno_whoami",
|
||||||
"digest",
|
"digest",
|
||||||
|
@ -1831,6 +1832,20 @@ dependencies = [
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "deno_package_json"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "38cf6ea5cc98ea7ad58b0e84593773bea03fc0431071a296017bed4151e3dc1d"
|
||||||
|
dependencies = [
|
||||||
|
"deno_semver",
|
||||||
|
"indexmap",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"thiserror",
|
||||||
|
"url",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deno_permissions"
|
name = "deno_permissions"
|
||||||
version = "0.22.0"
|
version = "0.22.0"
|
||||||
|
|
|
@ -101,7 +101,7 @@ console_static_text = "=0.8.1"
|
||||||
data-encoding = "2.3.3"
|
data-encoding = "2.3.3"
|
||||||
data-url = "=0.3.0"
|
data-url = "=0.3.0"
|
||||||
deno_cache_dir = "=0.10.2"
|
deno_cache_dir = "=0.10.2"
|
||||||
deno_config = { version = "=0.25.0", default-features = false }
|
deno_package_json = { version = "=0.1.1", default-features = false }
|
||||||
dlopen2 = "0.6.1"
|
dlopen2 = "0.6.1"
|
||||||
ecb = "=0.1.2"
|
ecb = "=0.1.2"
|
||||||
elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem"] }
|
elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem"] }
|
||||||
|
|
|
@ -65,7 +65,7 @@ winres.workspace = true
|
||||||
[dependencies]
|
[dependencies]
|
||||||
deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
|
deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
|
||||||
deno_cache_dir = { workspace = true }
|
deno_cache_dir = { workspace = true }
|
||||||
deno_config = { workspace = true, features = ["workspace"] }
|
deno_config = { version = "=0.26.1", features = ["workspace", "sync"] }
|
||||||
deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
|
deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
|
||||||
deno_doc = { version = "=0.142.0", features = ["html", "syntect"] }
|
deno_doc = { version = "=0.142.0", features = ["html", "syntect"] }
|
||||||
deno_emit = "=0.43.1"
|
deno_emit = "=0.43.1"
|
||||||
|
@ -73,6 +73,7 @@ deno_graph = { version = "=0.80.1", features = ["tokio_executor"] }
|
||||||
deno_lint = { version = "=0.60.1", features = ["docs"] }
|
deno_lint = { version = "=0.60.1", features = ["docs"] }
|
||||||
deno_lockfile.workspace = true
|
deno_lockfile.workspace = true
|
||||||
deno_npm = "=0.21.4"
|
deno_npm = "=0.21.4"
|
||||||
|
deno_package_json.workspace = true
|
||||||
deno_runtime = { workspace = true, features = ["include_js_files_for_snapshotting"] }
|
deno_runtime = { workspace = true, features = ["include_js_files_for_snapshotting"] }
|
||||||
deno_semver = "=0.5.7"
|
deno_semver = "=0.5.7"
|
||||||
deno_task_shell = "=0.17.0"
|
deno_task_shell = "=0.17.0"
|
||||||
|
|
|
@ -7,6 +7,62 @@ use deno_semver::jsr::JsrDepPackageReq;
|
||||||
use deno_semver::jsr::JsrPackageReqReference;
|
use deno_semver::jsr::JsrPackageReqReference;
|
||||||
use deno_semver::npm::NpmPackageReqReference;
|
use deno_semver::npm::NpmPackageReqReference;
|
||||||
|
|
||||||
|
#[cfg(test)] // happens to only be used by the tests at the moment
|
||||||
|
pub struct DenoConfigFsAdapter<'a>(
|
||||||
|
pub &'a dyn deno_runtime::deno_fs::FileSystem,
|
||||||
|
);
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
impl<'a> deno_config::fs::DenoConfigFs for DenoConfigFsAdapter<'a> {
|
||||||
|
fn read_to_string_lossy(
|
||||||
|
&self,
|
||||||
|
path: &std::path::Path,
|
||||||
|
) -> Result<String, std::io::Error> {
|
||||||
|
self
|
||||||
|
.0
|
||||||
|
.read_text_file_lossy_sync(path, None)
|
||||||
|
.map_err(|err| err.into_io_error())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn stat_sync(
|
||||||
|
&self,
|
||||||
|
path: &std::path::Path,
|
||||||
|
) -> Result<deno_config::fs::FsMetadata, std::io::Error> {
|
||||||
|
self
|
||||||
|
.0
|
||||||
|
.stat_sync(path)
|
||||||
|
.map(|stat| deno_config::fs::FsMetadata {
|
||||||
|
is_file: stat.is_file,
|
||||||
|
is_directory: stat.is_directory,
|
||||||
|
is_symlink: stat.is_symlink,
|
||||||
|
})
|
||||||
|
.map_err(|err| err.into_io_error())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_dir(
|
||||||
|
&self,
|
||||||
|
path: &std::path::Path,
|
||||||
|
) -> Result<Vec<deno_config::fs::FsDirEntry>, std::io::Error> {
|
||||||
|
self
|
||||||
|
.0
|
||||||
|
.read_dir_sync(path)
|
||||||
|
.map_err(|err| err.into_io_error())
|
||||||
|
.map(|entries| {
|
||||||
|
entries
|
||||||
|
.into_iter()
|
||||||
|
.map(|e| deno_config::fs::FsDirEntry {
|
||||||
|
path: path.join(e.name),
|
||||||
|
metadata: deno_config::fs::FsMetadata {
|
||||||
|
is_file: e.is_file,
|
||||||
|
is_directory: e.is_directory,
|
||||||
|
is_symlink: e.is_symlink,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deno_json_deps(
|
pub fn deno_json_deps(
|
||||||
config: &deno_config::deno_json::ConfigFile,
|
config: &deno_config::deno_json::ConfigFile,
|
||||||
) -> HashSet<JsrDepPackageReq> {
|
) -> HashSet<JsrDepPackageReq> {
|
||||||
|
|
|
@ -25,8 +25,6 @@ use deno_npm::npm_rc::NpmRc;
|
||||||
use deno_npm::npm_rc::ResolvedNpmRc;
|
use deno_npm::npm_rc::ResolvedNpmRc;
|
||||||
use deno_npm::resolution::ValidSerializedNpmResolutionSnapshot;
|
use deno_npm::resolution::ValidSerializedNpmResolutionSnapshot;
|
||||||
use deno_npm::NpmSystemInfo;
|
use deno_npm::NpmSystemInfo;
|
||||||
use deno_runtime::deno_fs::DenoConfigFsAdapter;
|
|
||||||
use deno_runtime::deno_fs::RealFs;
|
|
||||||
use deno_runtime::deno_permissions::PermissionsContainer;
|
use deno_runtime::deno_permissions::PermissionsContainer;
|
||||||
use deno_runtime::deno_tls::RootCertStoreProvider;
|
use deno_runtime::deno_tls::RootCertStoreProvider;
|
||||||
use deno_semver::npm::NpmPackageReqReference;
|
use deno_semver::npm::NpmPackageReqReference;
|
||||||
|
@ -835,7 +833,6 @@ impl CliOptions {
|
||||||
pub fn from_flags(flags: Flags) -> Result<Self, AnyError> {
|
pub fn from_flags(flags: Flags) -> Result<Self, AnyError> {
|
||||||
let initial_cwd =
|
let initial_cwd =
|
||||||
std::env::current_dir().with_context(|| "Failed getting cwd.")?;
|
std::env::current_dir().with_context(|| "Failed getting cwd.")?;
|
||||||
let config_fs_adapter = DenoConfigFsAdapter::new(&RealFs);
|
|
||||||
let maybe_vendor_override = flags.vendor.map(|v| match v {
|
let maybe_vendor_override = flags.vendor.map(|v| match v {
|
||||||
true => VendorEnablement::Enable { cwd: &initial_cwd },
|
true => VendorEnablement::Enable { cwd: &initial_cwd },
|
||||||
false => VendorEnablement::Disable,
|
false => VendorEnablement::Disable,
|
||||||
|
@ -860,7 +857,7 @@ impl CliOptions {
|
||||||
log::debug!("package.json auto-discovery is disabled");
|
log::debug!("package.json auto-discovery is disabled");
|
||||||
}
|
}
|
||||||
WorkspaceDiscoverOptions {
|
WorkspaceDiscoverOptions {
|
||||||
fs: &config_fs_adapter,
|
fs: Default::default(), // use real fs
|
||||||
deno_json_cache: None,
|
deno_json_cache: None,
|
||||||
pkg_json_cache: Some(
|
pkg_json_cache: Some(
|
||||||
&deno_runtime::deno_node::PackageJsonThreadLocalCache,
|
&deno_runtime::deno_node::PackageJsonThreadLocalCache,
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_config::workspace::Workspace;
|
use deno_config::workspace::Workspace;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
use deno_semver::package::PackageReq;
|
use deno_semver::package::PackageReq;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
|
@ -55,12 +55,12 @@ use std::collections::BTreeSet;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use deno_config::deno_json::ConfigFile;
|
use deno_config::deno_json::ConfigFile;
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_config::workspace::PackageJsonDepResolution;
|
use deno_config::workspace::PackageJsonDepResolution;
|
||||||
use deno_config::workspace::WorkspaceResolver;
|
use deno_config::workspace::WorkspaceResolver;
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
use deno_core::futures::FutureExt;
|
use deno_core::futures::FutureExt;
|
||||||
use deno_core::FeatureChecker;
|
use deno_core::FeatureChecker;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
|
|
||||||
use deno_lockfile::WorkspaceMemberConfig;
|
use deno_lockfile::WorkspaceMemberConfig;
|
||||||
use deno_runtime::deno_fs;
|
use deno_runtime::deno_fs;
|
||||||
|
|
|
@ -11,7 +11,6 @@ use deno_config::fs::DenoConfigFs;
|
||||||
use deno_config::fs::RealDenoConfigFs;
|
use deno_config::fs::RealDenoConfigFs;
|
||||||
use deno_config::glob::FilePatterns;
|
use deno_config::glob::FilePatterns;
|
||||||
use deno_config::glob::PathOrPatternSet;
|
use deno_config::glob::PathOrPatternSet;
|
||||||
use deno_config::package_json::PackageJsonCache;
|
|
||||||
use deno_config::workspace::CreateResolverOptions;
|
use deno_config::workspace::CreateResolverOptions;
|
||||||
use deno_config::workspace::PackageJsonDepResolution;
|
use deno_config::workspace::PackageJsonDepResolution;
|
||||||
use deno_config::workspace::SpecifiedImportMap;
|
use deno_config::workspace::SpecifiedImportMap;
|
||||||
|
@ -34,6 +33,7 @@ use deno_core::serde_json::Value;
|
||||||
use deno_core::ModuleSpecifier;
|
use deno_core::ModuleSpecifier;
|
||||||
use deno_lint::linter::LintConfig as DenoLintConfig;
|
use deno_lint::linter::LintConfig as DenoLintConfig;
|
||||||
use deno_npm::npm_rc::ResolvedNpmRc;
|
use deno_npm::npm_rc::ResolvedNpmRc;
|
||||||
|
use deno_package_json::PackageJsonCache;
|
||||||
use deno_runtime::deno_node::PackageJson;
|
use deno_runtime::deno_node::PackageJson;
|
||||||
use deno_runtime::deno_permissions::PermissionsContainer;
|
use deno_runtime::deno_permissions::PermissionsContainer;
|
||||||
use deno_runtime::fs_util::specifier_to_file_path;
|
use deno_runtime::fs_util::specifier_to_file_path;
|
||||||
|
@ -1560,9 +1560,7 @@ impl ConfigData {
|
||||||
self.member_dir.maybe_deno_json()
|
self.member_dir.maybe_deno_json()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn maybe_pkg_json(
|
pub fn maybe_pkg_json(&self) -> Option<&Arc<deno_package_json::PackageJson>> {
|
||||||
&self,
|
|
||||||
) -> Option<&Arc<deno_config::package_json::PackageJson>> {
|
|
||||||
self.member_dir.maybe_pkg_json()
|
self.member_dir.maybe_pkg_json()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1793,7 +1791,7 @@ impl ConfigTree {
|
||||||
&config_path,
|
&config_path,
|
||||||
),
|
),
|
||||||
&deno_config::workspace::WorkspaceDiscoverOptions {
|
&deno_config::workspace::WorkspaceDiscoverOptions {
|
||||||
fs: &deno_runtime::deno_fs::DenoConfigFsAdapter::new(&test_fs),
|
fs: &crate::args::deno_json::DenoConfigFsAdapter(&test_fs),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -1888,7 +1886,7 @@ impl deno_config::deno_json::DenoJsonCache for DenoJsonMemCache {
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct PackageJsonMemCache(Mutex<HashMap<PathBuf, Arc<PackageJson>>>);
|
struct PackageJsonMemCache(Mutex<HashMap<PathBuf, Arc<PackageJson>>>);
|
||||||
|
|
||||||
impl deno_config::package_json::PackageJsonCache for PackageJsonMemCache {
|
impl deno_package_json::PackageJsonCache for PackageJsonMemCache {
|
||||||
fn get(&self, path: &Path) -> Option<Arc<PackageJson>> {
|
fn get(&self, path: &Path) -> Option<Arc<PackageJson>> {
|
||||||
self.0.lock().get(path).cloned()
|
self.0.lock().get(path).cloned()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ use deno_core::url;
|
||||||
use deno_core::ModuleSpecifier;
|
use deno_core::ModuleSpecifier;
|
||||||
use deno_graph::GraphKind;
|
use deno_graph::GraphKind;
|
||||||
use deno_graph::Resolution;
|
use deno_graph::Resolution;
|
||||||
use deno_runtime::deno_fs::DenoConfigFsAdapter;
|
|
||||||
use deno_runtime::deno_tls::rustls::RootCertStore;
|
use deno_runtime::deno_tls::rustls::RootCertStore;
|
||||||
use deno_runtime::deno_tls::RootCertStoreProvider;
|
use deno_runtime::deno_tls::RootCertStoreProvider;
|
||||||
use deno_semver::jsr::JsrPackageReqReference;
|
use deno_semver::jsr::JsrPackageReqReference;
|
||||||
|
@ -3539,7 +3538,7 @@ impl Inner {
|
||||||
initial_cwd.clone()
|
initial_cwd.clone()
|
||||||
]),
|
]),
|
||||||
&WorkspaceDiscoverOptions {
|
&WorkspaceDiscoverOptions {
|
||||||
fs: &DenoConfigFsAdapter::new(&deno_runtime::deno_fs::RealFs),
|
fs: Default::default(), // use real fs,
|
||||||
deno_json_cache: None,
|
deno_json_cache: None,
|
||||||
pkg_json_cache: None,
|
pkg_json_cache: None,
|
||||||
workspace_cache: None,
|
workspace_cache: None,
|
||||||
|
|
|
@ -6,10 +6,10 @@ use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use deno_ast::ModuleSpecifier;
|
use deno_ast::ModuleSpecifier;
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_core::anyhow::bail;
|
use deno_core::anyhow::bail;
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
use deno_core::serde_json;
|
use deno_core::serde_json;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
use deno_runtime::deno_fs::FileSystem;
|
use deno_runtime::deno_fs::FileSystem;
|
||||||
use deno_runtime::deno_node::errors::PackageFolderResolveError;
|
use deno_runtime::deno_node::errors::PackageFolderResolveError;
|
||||||
use deno_runtime::deno_node::errors::PackageFolderResolveErrorKind;
|
use deno_runtime::deno_node::errors::PackageFolderResolveErrorKind;
|
||||||
|
|
|
@ -4,7 +4,6 @@ use async_trait::async_trait;
|
||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
use dashmap::DashSet;
|
use dashmap::DashSet;
|
||||||
use deno_ast::MediaType;
|
use deno_ast::MediaType;
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_config::workspace::MappedResolution;
|
use deno_config::workspace::MappedResolution;
|
||||||
use deno_config::workspace::MappedResolutionError;
|
use deno_config::workspace::MappedResolutionError;
|
||||||
use deno_config::workspace::WorkspaceResolver;
|
use deno_config::workspace::WorkspaceResolver;
|
||||||
|
@ -21,6 +20,7 @@ use deno_graph::source::DEFAULT_JSX_IMPORT_SOURCE_MODULE;
|
||||||
use deno_graph::NpmLoadError;
|
use deno_graph::NpmLoadError;
|
||||||
use deno_graph::NpmResolvePkgReqsResult;
|
use deno_graph::NpmResolvePkgReqsResult;
|
||||||
use deno_npm::resolution::NpmResolutionError;
|
use deno_npm::resolution::NpmResolutionError;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
use deno_runtime::deno_fs;
|
use deno_runtime::deno_fs;
|
||||||
use deno_runtime::deno_fs::FileSystem;
|
use deno_runtime::deno_fs::FileSystem;
|
||||||
use deno_runtime::deno_node::errors::ClosestPkgJsonError;
|
use deno_runtime::deno_node::errors::ClosestPkgJsonError;
|
||||||
|
|
|
@ -34,7 +34,6 @@ use crate::worker::CliMainWorkerOptions;
|
||||||
use crate::worker::ModuleLoaderAndSourceMapGetter;
|
use crate::worker::ModuleLoaderAndSourceMapGetter;
|
||||||
use crate::worker::ModuleLoaderFactory;
|
use crate::worker::ModuleLoaderFactory;
|
||||||
use deno_ast::MediaType;
|
use deno_ast::MediaType;
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_config::workspace::MappedResolution;
|
use deno_config::workspace::MappedResolution;
|
||||||
use deno_config::workspace::MappedResolutionError;
|
use deno_config::workspace::MappedResolutionError;
|
||||||
use deno_config::workspace::WorkspaceResolver;
|
use deno_config::workspace::WorkspaceResolver;
|
||||||
|
@ -52,6 +51,7 @@ use deno_core::ModuleType;
|
||||||
use deno_core::RequestedModuleType;
|
use deno_core::RequestedModuleType;
|
||||||
use deno_core::ResolutionKind;
|
use deno_core::ResolutionKind;
|
||||||
use deno_npm::npm_rc::ResolvedNpmRc;
|
use deno_npm::npm_rc::ResolvedNpmRc;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
use deno_runtime::deno_fs;
|
use deno_runtime::deno_fs;
|
||||||
use deno_runtime::deno_node::analyze::NodeCodeTranslator;
|
use deno_runtime::deno_node::analyze::NodeCodeTranslator;
|
||||||
use deno_runtime::deno_node::NodeResolutionMode;
|
use deno_runtime::deno_node::NodeResolutionMode;
|
||||||
|
@ -591,7 +591,7 @@ pub async fn run(
|
||||||
.to_file_path()
|
.to_file_path()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let pkg_json =
|
let pkg_json =
|
||||||
deno_config::package_json::PackageJson::load_from_value(path, json);
|
deno_package_json::PackageJson::load_from_value(path, json);
|
||||||
Arc::new(pkg_json)
|
Arc::new(pkg_json)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
use deno_ast::ParsedSource;
|
use deno_ast::ParsedSource;
|
||||||
use deno_ast::SourceRange;
|
use deno_ast::SourceRange;
|
||||||
use deno_ast::SourceTextInfo;
|
use deno_ast::SourceTextInfo;
|
||||||
use deno_config::package_json::PackageJsonDepValue;
|
|
||||||
use deno_config::workspace::MappedResolution;
|
use deno_config::workspace::MappedResolution;
|
||||||
use deno_config::workspace::PackageJsonDepResolution;
|
use deno_config::workspace::PackageJsonDepResolution;
|
||||||
use deno_config::workspace::WorkspaceResolver;
|
use deno_config::workspace::WorkspaceResolver;
|
||||||
|
@ -12,6 +11,7 @@ use deno_graph::DependencyDescriptor;
|
||||||
use deno_graph::DynamicTemplatePart;
|
use deno_graph::DynamicTemplatePart;
|
||||||
use deno_graph::ParserModuleAnalyzer;
|
use deno_graph::ParserModuleAnalyzer;
|
||||||
use deno_graph::TypeScriptReference;
|
use deno_graph::TypeScriptReference;
|
||||||
|
use deno_package_json::PackageJsonDepValue;
|
||||||
use deno_runtime::deno_node::is_builtin_node_module;
|
use deno_runtime::deno_node::is_builtin_node_module;
|
||||||
|
|
||||||
use crate::resolver::SloppyImportsResolver;
|
use crate::resolver::SloppyImportsResolver;
|
||||||
|
|
|
@ -14,12 +14,11 @@ description = "Ops for interacting with the file system"
|
||||||
path = "lib.rs"
|
path = "lib.rs"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
sync_fs = ["deno_config/sync"]
|
sync_fs = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
async-trait.workspace = true
|
async-trait.workspace = true
|
||||||
base32.workspace = true
|
base32.workspace = true
|
||||||
deno_config = { workspace = true, default-features = false }
|
|
||||||
deno_core.workspace = true
|
deno_core.workspace = true
|
||||||
deno_io.workspace = true
|
deno_io.workspace = true
|
||||||
deno_permissions.workspace = true
|
deno_permissions.workspace = true
|
||||||
|
|
|
@ -337,64 +337,6 @@ pub trait FileSystem: std::fmt::Debug + MaybeSend + MaybeSync {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DenoConfigFsAdapter<'a>(&'a dyn FileSystem);
|
|
||||||
|
|
||||||
impl<'a> DenoConfigFsAdapter<'a> {
|
|
||||||
pub fn new(fs: &'a dyn FileSystem) -> Self {
|
|
||||||
Self(fs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> deno_config::fs::DenoConfigFs for DenoConfigFsAdapter<'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())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stat_sync(
|
|
||||||
&self,
|
|
||||||
path: &Path,
|
|
||||||
) -> Result<deno_config::fs::FsMetadata, std::io::Error> {
|
|
||||||
self
|
|
||||||
.0
|
|
||||||
.stat_sync(path)
|
|
||||||
.map(|stat| deno_config::fs::FsMetadata {
|
|
||||||
is_file: stat.is_file,
|
|
||||||
is_directory: stat.is_directory,
|
|
||||||
is_symlink: stat.is_symlink,
|
|
||||||
})
|
|
||||||
.map_err(|err| err.into_io_error())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn read_dir(
|
|
||||||
&self,
|
|
||||||
path: &Path,
|
|
||||||
) -> Result<Vec<deno_config::fs::FsDirEntry>, std::io::Error> {
|
|
||||||
self
|
|
||||||
.0
|
|
||||||
.read_dir_sync(path)
|
|
||||||
.map_err(|err| err.into_io_error())
|
|
||||||
.map(|entries| {
|
|
||||||
entries
|
|
||||||
.into_iter()
|
|
||||||
.map(|e| deno_config::fs::FsDirEntry {
|
|
||||||
path: path.join(e.name),
|
|
||||||
metadata: deno_config::fs::FsMetadata {
|
|
||||||
is_file: e.is_file,
|
|
||||||
is_directory: e.is_directory,
|
|
||||||
is_symlink: e.is_symlink,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Like String::from_utf8_lossy but operates on owned values
|
// Like String::from_utf8_lossy but operates on owned values
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn string_from_utf8_lossy(buf: Vec<u8>) -> String {
|
fn string_from_utf8_lossy(buf: Vec<u8>) -> String {
|
||||||
|
|
|
@ -9,7 +9,6 @@ pub mod sync;
|
||||||
pub use crate::in_memory_fs::InMemoryFs;
|
pub use crate::in_memory_fs::InMemoryFs;
|
||||||
pub use crate::interface::AccessCheckCb;
|
pub use crate::interface::AccessCheckCb;
|
||||||
pub use crate::interface::AccessCheckFn;
|
pub use crate::interface::AccessCheckFn;
|
||||||
pub use crate::interface::DenoConfigFsAdapter;
|
|
||||||
pub use crate::interface::FileSystem;
|
pub use crate::interface::FileSystem;
|
||||||
pub use crate::interface::FileSystemRc;
|
pub use crate::interface::FileSystemRc;
|
||||||
pub use crate::interface::FsDirEntry;
|
pub use crate::interface::FsDirEntry;
|
||||||
|
|
|
@ -13,6 +13,9 @@ description = "Node compatibility for Deno"
|
||||||
[lib]
|
[lib]
|
||||||
path = "lib.rs"
|
path = "lib.rs"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
sync_fs = ["deno_package_json/sync"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aead-gcm-stream = "0.1"
|
aead-gcm-stream = "0.1"
|
||||||
aes.workspace = true
|
aes.workspace = true
|
||||||
|
@ -23,13 +26,13 @@ bytes.workspace = true
|
||||||
cbc.workspace = true
|
cbc.workspace = true
|
||||||
const-oid = "0.9.5"
|
const-oid = "0.9.5"
|
||||||
data-encoding.workspace = true
|
data-encoding.workspace = true
|
||||||
deno_config = { workspace = true, default-features = false, features = ["package_json"] }
|
|
||||||
deno_core.workspace = true
|
deno_core.workspace = true
|
||||||
deno_fetch.workspace = true
|
deno_fetch.workspace = true
|
||||||
deno_fs.workspace = true
|
deno_fs.workspace = true
|
||||||
deno_io.workspace = true
|
deno_io.workspace = true
|
||||||
deno_media_type.workspace = true
|
deno_media_type.workspace = true
|
||||||
deno_net.workspace = true
|
deno_net.workspace = true
|
||||||
|
deno_package_json.workspace = true
|
||||||
deno_permissions.workspace = true
|
deno_permissions.workspace = true
|
||||||
deno_whoami = "0.1.0"
|
deno_whoami = "0.1.0"
|
||||||
digest = { version = "0.10.5", features = ["core-api", "std"] }
|
digest = { version = "0.10.5", features = ["core-api", "std"] }
|
||||||
|
|
|
@ -315,7 +315,7 @@ impl NodeJsErrorCoded for PathToDeclarationUrlError {
|
||||||
pub struct PackageJsonLoadError(
|
pub struct PackageJsonLoadError(
|
||||||
#[source]
|
#[source]
|
||||||
#[from]
|
#[from]
|
||||||
pub deno_config::package_json::PackageJsonLoadError,
|
pub deno_package_json::PackageJsonLoadError,
|
||||||
);
|
);
|
||||||
|
|
||||||
impl NodeJsErrorCoded for PackageJsonLoadError {
|
impl NodeJsErrorCoded for PackageJsonLoadError {
|
||||||
|
|
|
@ -32,7 +32,7 @@ mod path;
|
||||||
mod polyfill;
|
mod polyfill;
|
||||||
mod resolution;
|
mod resolution;
|
||||||
|
|
||||||
pub use deno_config::package_json::PackageJson;
|
pub use deno_package_json::PackageJson;
|
||||||
pub use ops::ipc::ChildPipeFd;
|
pub use ops::ipc::ChildPipeFd;
|
||||||
pub use ops::ipc::IpcJsonStreamResource;
|
pub use ops::ipc::IpcJsonStreamResource;
|
||||||
use ops::vm;
|
use ops::vm;
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||||
|
|
||||||
use deno_config::package_json::PackageJson;
|
use deno_package_json::PackageJson;
|
||||||
use deno_config::package_json::PackageJsonRc;
|
use deno_package_json::PackageJsonRc;
|
||||||
use deno_fs::DenoConfigFsAdapter;
|
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io::ErrorKind;
|
use std::io::ErrorKind;
|
||||||
|
@ -24,9 +23,7 @@ impl PackageJsonThreadLocalCache {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl deno_config::package_json::PackageJsonCache
|
impl deno_package_json::PackageJsonCache for PackageJsonThreadLocalCache {
|
||||||
for PackageJsonThreadLocalCache
|
|
||||||
{
|
|
||||||
fn get(&self, path: &Path) -> Option<PackageJsonRc> {
|
fn get(&self, path: &Path) -> Option<PackageJsonRc> {
|
||||||
CACHE.with(|cache| cache.borrow().get(path).cloned())
|
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
|
/// Helper to load a package.json file using the thread local cache
|
||||||
/// in deno_node.
|
/// in deno_node.
|
||||||
pub fn load_pkg_json(
|
pub fn load_pkg_json(
|
||||||
|
@ -44,14 +55,16 @@ pub fn load_pkg_json(
|
||||||
) -> Result<Option<PackageJsonRc>, PackageJsonLoadError> {
|
) -> Result<Option<PackageJsonRc>, PackageJsonLoadError> {
|
||||||
let result = PackageJson::load_from_path(
|
let result = PackageJson::load_from_path(
|
||||||
path,
|
path,
|
||||||
&DenoConfigFsAdapter::new(fs),
|
&DenoPkgJsonFsAdapter(fs),
|
||||||
Some(&PackageJsonThreadLocalCache),
|
Some(&PackageJsonThreadLocalCache),
|
||||||
);
|
);
|
||||||
match result {
|
match result {
|
||||||
Ok(pkg_json) => Ok(Some(pkg_json)),
|
Ok(pkg_json) => Ok(Some(pkg_json)),
|
||||||
Err(deno_config::package_json::PackageJsonLoadError::Io {
|
Err(deno_package_json::PackageJsonLoadError::Io { source, .. })
|
||||||
source, ..
|
if source.kind() == ErrorKind::NotFound =>
|
||||||
}) if source.kind() == ErrorKind::NotFound => Ok(None),
|
{
|
||||||
|
Ok(None)
|
||||||
|
}
|
||||||
Err(err) => Err(PackageJsonLoadError(err)),
|
Err(err) => Err(PackageJsonLoadError(err)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ use std::collections::HashMap;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use deno_config::package_json::PackageJsonRc;
|
|
||||||
use deno_core::anyhow::bail;
|
use deno_core::anyhow::bail;
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
use deno_core::serde_json::Map;
|
use deno_core::serde_json::Map;
|
||||||
|
@ -14,6 +13,7 @@ use deno_core::url::Url;
|
||||||
use deno_core::ModuleSpecifier;
|
use deno_core::ModuleSpecifier;
|
||||||
use deno_fs::FileSystemRc;
|
use deno_fs::FileSystemRc;
|
||||||
use deno_media_type::MediaType;
|
use deno_media_type::MediaType;
|
||||||
|
use deno_package_json::PackageJsonRc;
|
||||||
|
|
||||||
use crate::errors;
|
use crate::errors;
|
||||||
use crate::errors::CanonicalizingPkgJsonDirError;
|
use crate::errors::CanonicalizingPkgJsonDirError;
|
||||||
|
@ -56,7 +56,7 @@ use crate::PathClean;
|
||||||
pub static DEFAULT_CONDITIONS: &[&str] = &["deno", "node", "import"];
|
pub static DEFAULT_CONDITIONS: &[&str] = &["deno", "node", "import"];
|
||||||
pub static REQUIRE_CONDITIONS: &[&str] = &["require", "node"];
|
pub static REQUIRE_CONDITIONS: &[&str] = &["require", "node"];
|
||||||
|
|
||||||
pub type NodeModuleKind = deno_config::package_json::NodeModuleKind;
|
pub type NodeModuleKind = deno_package_json::NodeModuleKind;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum NodeResolutionMode {
|
pub enum NodeResolutionMode {
|
||||||
|
|
Loading…
Reference in a new issue