diff options
Diffstat (limited to 'cli')
33 files changed, 176 insertions, 182 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c2c4b3ede..dec23e6a5 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -48,16 +48,16 @@ winres.workspace = true deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_cache_dir = "=0.5.2" deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } -deno_doc = "=0.64.0" -deno_emit = "=0.25.0" -deno_graph = "=0.50.0" -deno_lint = { version = "=0.49.0", features = ["docs"] } +deno_doc = "=0.65.0" +deno_emit = "=0.26.0" +deno_graph = "=0.52.0" +deno_lint = { version = "=0.50.1", features = ["docs"] } deno_lockfile.workspace = true deno_npm.workspace = true deno_runtime = { workspace = true, features = ["dont_create_runtime_snapshot", "include_js_files_for_snapshotting"] } deno_semver.workspace = true -deno_task_shell = "=0.13.1" -eszip = "=0.49.0" +deno_task_shell = "=0.13.2" +eszip = "=0.50.0" napi_sym.workspace = true async-trait.workspace = true @@ -75,7 +75,7 @@ data-url.workspace = true dissimilar = "=1.0.4" dprint-plugin-json = "=0.17.4" dprint-plugin-markdown = "=0.15.3" -dprint-plugin-typescript = "=0.86.1" +dprint-plugin-typescript = "=0.86.2" encoding_rs.workspace = true env_logger = "=0.9.0" fancy-regex = "=0.10.0" @@ -92,7 +92,7 @@ lazy-regex.workspace = true libc.workspace = true log = { workspace = true, features = ["serde"] } lsp-types.workspace = true -monch = "=0.4.2" +monch = "=0.4.3" notify.workspace = true once_cell.workspace = true os_pipe.workspace = true diff --git a/cli/args/mod.rs b/cli/args/mod.rs index f7f73fd4a..65c6e7308 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1383,10 +1383,7 @@ pub fn has_flag_env_var(name: &str) -> bool { pub fn npm_pkg_req_ref_to_binary_command( req_ref: &NpmPackageReqReference, ) -> String { - let binary_name = req_ref - .sub_path - .as_deref() - .unwrap_or(req_ref.req.name.as_str()); + let binary_name = req_ref.sub_path().unwrap_or(req_ref.req().name.as_str()); binary_name.to_string() } diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs index 76a09eadd..8ee30214e 100644 --- a/cli/args/package_json.rs +++ b/cli/args/package_json.rs @@ -10,9 +10,9 @@ use deno_core::error::AnyError; use deno_npm::registry::parse_dep_entry_name_and_raw_version; use deno_npm::registry::PackageDepNpmSchemeValueParseError; use deno_runtime::deno_node::PackageJson; -use deno_semver::npm::NpmPackageReq; -use deno_semver::npm::NpmVersionReqSpecifierParseError; +use deno_semver::package::PackageReq; use deno_semver::VersionReq; +use deno_semver::VersionReqSpecifierParseError; use thiserror::Error; #[derive(Debug, Error, Clone)] @@ -20,13 +20,13 @@ pub enum PackageJsonDepValueParseError { #[error(transparent)] SchemeValue(#[from] PackageDepNpmSchemeValueParseError), #[error(transparent)] - Specifier(#[from] NpmVersionReqSpecifierParseError), + Specifier(#[from] VersionReqSpecifierParseError), #[error("Not implemented scheme '{scheme}'")] Unsupported { scheme: String }, } pub type PackageJsonDeps = - BTreeMap<String, Result<NpmPackageReq, PackageJsonDepValueParseError>>; + BTreeMap<String, Result<PackageReq, PackageJsonDepValueParseError>>; #[derive(Debug, Default)] pub struct PackageJsonDepsProvider(Option<PackageJsonDeps>); @@ -40,7 +40,7 @@ impl PackageJsonDepsProvider { self.0.as_ref() } - pub fn reqs(&self) -> Vec<&NpmPackageReq> { + pub fn reqs(&self) -> Vec<&PackageReq> { match &self.0 { Some(deps) => { let mut package_reqs = deps @@ -67,7 +67,7 @@ pub fn get_local_package_json_version_reqs( fn parse_entry( key: &str, value: &str, - ) -> Result<NpmPackageReq, PackageJsonDepValueParseError> { + ) -> Result<PackageReq, PackageJsonDepValueParseError> { if value.starts_with("workspace:") || value.starts_with("file:") || value.starts_with("git:") @@ -83,7 +83,7 @@ pub fn get_local_package_json_version_reqs( let result = VersionReq::parse_from_specifier(version_req); match result { - Ok(version_req) => Ok(NpmPackageReq { + Ok(version_req) => Ok(PackageReq { name: name.to_string(), version_req, }), @@ -182,7 +182,7 @@ mod test { fn get_local_package_json_version_reqs_for_tests( package_json: &PackageJson, - ) -> BTreeMap<String, Result<NpmPackageReq, String>> { + ) -> BTreeMap<String, Result<PackageReq, String>> { get_local_package_json_version_reqs(package_json) .into_iter() .map(|(k, v)| { @@ -215,15 +215,15 @@ mod test { BTreeMap::from([ ( "test".to_string(), - Ok(NpmPackageReq::from_str("test@^1.2").unwrap()) + Ok(PackageReq::from_str("test@^1.2").unwrap()) ), ( "other".to_string(), - Ok(NpmPackageReq::from_str("package@~1.3").unwrap()) + Ok(PackageReq::from_str("package@~1.3").unwrap()) ), ( "package_b".to_string(), - Ok(NpmPackageReq::from_str("package_b@~2.2").unwrap()) + Ok(PackageReq::from_str("package_b@~2.2").unwrap()) ) ]) ); @@ -243,7 +243,7 @@ mod test { "test".to_string(), Err( concat!( - "Invalid npm specifier version requirement. Unexpected character.\n", + "Invalid specifier version requirement. Unexpected character.\n", " - 1.3\n", " ~" ) @@ -286,7 +286,7 @@ mod test { ), ( "test".to_string(), - Ok(NpmPackageReq::from_str("test@1").unwrap()) + Ok(PackageReq::from_str("test@1").unwrap()) ), ( "work-test".to_string(), diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs index 63e0549fd..ec279022d 100644 --- a/cli/lsp/analysis.rs +++ b/cli/lsp/analysis.rs @@ -23,7 +23,7 @@ use deno_core::ModuleSpecifier; use deno_lint::rules::LintRule; use deno_runtime::deno_node::PackageJson; use deno_runtime::deno_node::PathClean; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageReq; use import_map::ImportMap; use once_cell::sync::Lazy; use regex::Regex; @@ -187,7 +187,7 @@ impl<'a> TsResponseImportMapper<'a> { ) -> Option<String> { fn concat_npm_specifier( prefix: &str, - pkg_req: &NpmPackageReq, + pkg_req: &PackageReq, sub_path: Option<&str>, ) -> String { let result = format!("{}{}", prefix, pkg_req); diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs index 4e24673f3..817d2fbc4 100644 --- a/cli/lsp/diagnostics.rs +++ b/cli/lsp/diagnostics.rs @@ -39,6 +39,7 @@ use deno_lint::rules::LintRule; use deno_runtime::deno_node; use deno_runtime::tokio_util::create_basic_runtime; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageReq; use log::error; use std::collections::HashMap; use std::collections::HashSet; @@ -876,7 +877,7 @@ pub enum DenoDiagnostic { /// A remote module was not found in the cache. NoCache(ModuleSpecifier), /// A remote npm package reference was not found in the cache. - NoCacheNpm(NpmPackageReqReference, ModuleSpecifier), + NoCacheNpm(PackageReq, ModuleSpecifier), /// A local module was not found on the local file system. NoLocal(ModuleSpecifier), /// The specifier resolved to a remote specifier that was redirected to @@ -1086,7 +1087,7 @@ impl DenoDiagnostic { Self::InvalidAssertType(assert_type) => (lsp::DiagnosticSeverity::ERROR, format!("The module is a JSON module and expected an assertion type of \"json\". Instead got \"{assert_type}\"."), None), Self::NoAssertType => (lsp::DiagnosticSeverity::ERROR, "The module is a JSON module and not being imported with an import assertion. Consider adding `assert { type: \"json\" }` to the import statement.".to_string(), None), Self::NoCache(specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing remote URL: {specifier}"), Some(json!({ "specifier": specifier }))), - Self::NoCacheNpm(pkg_ref, specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing npm package: {}", pkg_ref.req), Some(json!({ "specifier": specifier }))), + Self::NoCacheNpm(pkg_req, specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing npm package: {}", pkg_req), Some(json!({ "specifier": specifier }))), Self::NoLocal(specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Unable to load a local module: {specifier}\n Please check the file path."), None), Self::Redirect { from, to} => (lsp::DiagnosticSeverity::INFORMATION, format!("The import of \"{from}\" was redirected to \"{to}\"."), Some(json!({ "specifier": from, "redirect": to }))), Self::ResolutionError(err) => ( @@ -1159,9 +1160,10 @@ fn diagnose_resolution( { if let Some(npm_resolver) = &snapshot.maybe_npm_resolver { // show diagnostics for npm package references that aren't cached - if !npm_resolver.is_pkg_req_folder_cached(&pkg_ref.req) { + let req = pkg_ref.into_inner().req; + if !npm_resolver.is_pkg_req_folder_cached(&req) { diagnostics - .push(DenoDiagnostic::NoCacheNpm(pkg_ref, specifier.clone())); + .push(DenoDiagnostic::NoCacheNpm(req, specifier.clone())); } } } else if let Some(module_name) = specifier.as_str().strip_prefix("node:") @@ -1171,11 +1173,10 @@ fn diagnose_resolution( .push(DenoDiagnostic::InvalidNodeSpecifier(specifier.clone())); } else if let Some(npm_resolver) = &snapshot.maybe_npm_resolver { // check that a @types/node package exists in the resolver - let types_node_ref = - NpmPackageReqReference::from_str("npm:@types/node").unwrap(); - if !npm_resolver.is_pkg_req_folder_cached(&types_node_ref.req) { + let types_node_req = PackageReq::from_str("@types/node").unwrap(); + if !npm_resolver.is_pkg_req_folder_cached(&types_node_req) { diagnostics.push(DenoDiagnostic::NoCacheNpm( - types_node_ref, + types_node_req, ModuleSpecifier::parse("npm:@types/node").unwrap(), )); } diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index 8227d2e4c..11fba693f 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -43,8 +43,8 @@ use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_node::PackageJson; use deno_runtime::permissions::PermissionsContainer; -use deno_semver::npm::NpmPackageReq; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageReq; use indexmap::IndexMap; use lsp::Url; use once_cell::sync::Lazy; @@ -846,7 +846,7 @@ pub struct Documents { /// settings. resolver: Arc<CliGraphResolver>, /// The npm package requirements found in npm specifiers. - npm_specifier_reqs: Arc<Vec<NpmPackageReq>>, + npm_specifier_reqs: Arc<Vec<PackageReq>>, /// Gets if any document had a node: specifier such that a @types/node package /// should be injected. has_injected_types_node_package: bool, @@ -1017,7 +1017,7 @@ impl Documents { } /// Returns a collection of npm package requirements. - pub fn npm_package_reqs(&mut self) -> Arc<Vec<NpmPackageReq>> { + pub fn npm_package_reqs(&mut self) -> Arc<Vec<PackageReq>> { self.calculate_dependents_if_dirty(); self.npm_specifier_reqs.clone() } @@ -1398,7 +1398,7 @@ impl Documents { dependents_map: HashMap<ModuleSpecifier, HashSet<ModuleSpecifier>>, analyzed_specifiers: HashSet<ModuleSpecifier>, pending_specifiers: VecDeque<ModuleSpecifier>, - npm_reqs: HashSet<NpmPackageReq>, + npm_reqs: HashSet<PackageReq>, has_node_builtin_specifier: bool, } @@ -1410,7 +1410,7 @@ impl Documents { // been analyzed in order to not cause an extra file system lookup self.pending_specifiers.push_back(dep.clone()); if let Ok(reference) = NpmPackageReqReference::from_specifier(dep) { - self.npm_reqs.insert(reference.req); + self.npm_reqs.insert(reference.into_inner().req); } } @@ -1468,7 +1468,7 @@ impl Documents { .has_node_builtin_specifier && !npm_reqs.iter().any(|r| r.name == "@types/node"); if self.has_injected_types_node_package { - npm_reqs.insert(NpmPackageReq::from_str("@types/node").unwrap()); + npm_reqs.insert(PackageReq::from_str("@types/node").unwrap()); } self.dependents_map = Arc::new(doc_analyzer.dependents_map); diff --git a/cli/npm/cache.rs b/cli/npm/cache.rs index c657beef3..587ce6fd0 100644 --- a/cli/npm/cache.rs +++ b/cli/npm/cache.rs @@ -16,7 +16,7 @@ use deno_core::url::Url; use deno_npm::registry::NpmPackageVersionDistInfo; use deno_npm::NpmPackageCacheFolderId; use deno_runtime::deno_fs; -use deno_semver::npm::NpmPackageNv; +use deno_semver::package::PackageNv; use deno_semver::Version; use once_cell::sync::Lazy; @@ -43,7 +43,7 @@ pub fn should_sync_download() -> bool { const NPM_PACKAGE_SYNC_LOCK_FILENAME: &str = ".deno_sync_lock"; pub fn with_folder_sync_lock( - package: &NpmPackageNv, + package: &PackageNv, output_folder: &Path, action: impl FnOnce() -> Result<(), AnyError>, ) -> Result<(), AnyError> { @@ -162,7 +162,7 @@ impl NpmCacheDir { pub fn package_folder_for_name_and_version( &self, - package: &NpmPackageNv, + package: &PackageNv, registry_url: &Url, ) -> PathBuf { self @@ -251,7 +251,7 @@ impl NpmCacheDir { (version_part, 0) }; Some(NpmPackageCacheFolderId { - nv: NpmPackageNv { + nv: PackageNv { name, version: Version::parse_from_npm(version).ok()?, }, @@ -273,7 +273,7 @@ pub struct NpmCache { http_client: Arc<HttpClient>, progress_bar: ProgressBar, /// ensures a package is only downloaded once per run - previously_reloaded_packages: Mutex<HashSet<NpmPackageNv>>, + previously_reloaded_packages: Mutex<HashSet<PackageNv>>, } impl NpmCache { @@ -311,10 +311,7 @@ impl NpmCache { /// to ensure a package is only downloaded once per run of the CLI. This /// prevents downloads from re-occurring when someone has `--reload` and /// and imports a dynamic import that imports the same package again for example. - fn should_use_global_cache_for_package( - &self, - package: &NpmPackageNv, - ) -> bool { + fn should_use_global_cache_for_package(&self, package: &PackageNv) -> bool { self.cache_setting.should_use_for_npm_package(&package.name) || !self .previously_reloaded_packages @@ -324,7 +321,7 @@ impl NpmCache { pub async fn ensure_package( &self, - package: &NpmPackageNv, + package: &PackageNv, dist: &NpmPackageVersionDistInfo, registry_url: &Url, ) -> Result<(), AnyError> { @@ -336,7 +333,7 @@ impl NpmCache { async fn ensure_package_inner( &self, - package: &NpmPackageNv, + package: &PackageNv, dist: &NpmPackageVersionDistInfo, registry_url: &Url, ) -> Result<(), AnyError> { @@ -422,7 +419,7 @@ impl NpmCache { pub fn package_folder_for_name_and_version( &self, - package: &NpmPackageNv, + package: &PackageNv, registry_url: &Url, ) -> PathBuf { self @@ -467,7 +464,7 @@ pub fn mixed_case_package_name_decode(name: &str) -> Option<String> { #[cfg(test)] mod test { use deno_core::url::Url; - use deno_semver::npm::NpmPackageNv; + use deno_semver::package::PackageNv; use deno_semver::Version; use super::NpmCacheDir; @@ -483,7 +480,7 @@ mod test { assert_eq!( cache.package_folder_for_id( &NpmPackageCacheFolderId { - nv: NpmPackageNv { + nv: PackageNv { name: "json".to_string(), version: Version::parse_from_npm("1.2.5").unwrap(), }, @@ -500,7 +497,7 @@ mod test { assert_eq!( cache.package_folder_for_id( &NpmPackageCacheFolderId { - nv: NpmPackageNv { + nv: PackageNv { name: "json".to_string(), version: Version::parse_from_npm("1.2.5").unwrap(), }, @@ -517,7 +514,7 @@ mod test { assert_eq!( cache.package_folder_for_id( &NpmPackageCacheFolderId { - nv: NpmPackageNv { + nv: PackageNv { name: "JSON".to_string(), version: Version::parse_from_npm("2.1.5").unwrap(), }, @@ -534,7 +531,7 @@ mod test { assert_eq!( cache.package_folder_for_id( &NpmPackageCacheFolderId { - nv: NpmPackageNv { + nv: PackageNv { name: "@types/JSON".to_string(), version: Version::parse_from_npm("2.1.5").unwrap(), }, diff --git a/cli/npm/installer.rs b/cli/npm/installer.rs index adb4344ee..9e7b413b4 100644 --- a/cli/npm/installer.rs +++ b/cli/npm/installer.rs @@ -8,7 +8,7 @@ use deno_core::futures::stream::FuturesOrdered; use deno_core::futures::StreamExt; use deno_npm::registry::NpmRegistryApi; use deno_npm::registry::NpmRegistryPackageInfoLoadError; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageReq; use crate::args::PackageJsonDepsProvider; use crate::util::sync::AtomicFlag; @@ -27,11 +27,11 @@ struct PackageJsonDepsInstallerInner { impl PackageJsonDepsInstallerInner { pub fn reqs_with_info_futures<'a>( &self, - reqs: &'a [&'a NpmPackageReq], + reqs: &'a [&'a PackageReq], ) -> FuturesOrdered< impl Future< Output = Result< - (&'a NpmPackageReq, Arc<deno_npm::registry::NpmPackageInfo>), + (&'a PackageReq, Arc<deno_npm::registry::NpmPackageInfo>), NpmRegistryPackageInfoLoadError, >, >, diff --git a/cli/npm/resolution.rs b/cli/npm/resolution.rs index 6beb52090..d097f8cd4 100644 --- a/cli/npm/resolution.rs +++ b/cli/npm/resolution.rs @@ -27,8 +27,8 @@ use deno_npm::NpmPackageCacheFolderId; use deno_npm::NpmPackageId; use deno_npm::NpmResolutionPackage; use deno_npm::NpmSystemInfo; -use deno_semver::npm::NpmPackageNv; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageNv; +use deno_semver::package::PackageReq; use deno_semver::VersionReq; use crate::args::Lockfile; @@ -82,7 +82,7 @@ impl NpmResolution { pub async fn add_package_reqs( &self, - package_reqs: &[NpmPackageReq], + package_reqs: &[PackageReq], ) -> Result<(), AnyError> { // only allow one thread in here at a time let _permit = self.update_queue.acquire().await; @@ -100,7 +100,7 @@ impl NpmResolution { pub async fn set_package_reqs( &self, - package_reqs: &[NpmPackageReq], + package_reqs: &[PackageReq], ) -> Result<(), AnyError> { // only allow one thread in here at a time let _permit = self.update_queue.acquire().await; @@ -185,7 +185,7 @@ impl NpmResolution { /// Resolve a node package from a deno module. pub fn resolve_pkg_id_from_pkg_req( &self, - req: &NpmPackageReq, + req: &PackageReq, ) -> Result<NpmPackageId, PackageReqNotFoundError> { self .snapshot @@ -197,7 +197,7 @@ impl NpmResolution { pub fn resolve_pkg_reqs_from_pkg_id( &self, id: &NpmPackageId, - ) -> Vec<NpmPackageReq> { + ) -> Vec<PackageReq> { let snapshot = self.snapshot.read(); let mut pkg_reqs = snapshot .package_reqs() @@ -211,7 +211,7 @@ impl NpmResolution { pub fn resolve_pkg_id_from_deno_module( &self, - id: &NpmPackageNv, + id: &PackageNv, ) -> Result<NpmPackageId, PackageNvNotFoundError> { self .snapshot @@ -225,8 +225,8 @@ impl NpmResolution { /// a package.json pub fn resolve_package_req_as_pending( &self, - pkg_req: &NpmPackageReq, - ) -> Result<NpmPackageNv, NpmPackageVersionResolutionError> { + pkg_req: &PackageReq, + ) -> Result<PackageNv, NpmPackageVersionResolutionError> { // we should always have this because it should have been cached before here let package_info = self.api.get_cached_package_info(&pkg_req.name).unwrap(); self.resolve_package_req_as_pending_with_info(pkg_req, &package_info) @@ -237,9 +237,9 @@ impl NpmResolution { /// a package.json pub fn resolve_package_req_as_pending_with_info( &self, - pkg_req: &NpmPackageReq, + pkg_req: &PackageReq, package_info: &NpmPackageInfo, - ) -> Result<NpmPackageNv, NpmPackageVersionResolutionError> { + ) -> Result<PackageNv, NpmPackageVersionResolutionError> { debug_assert_eq!(pkg_req.name, package_info.name); let mut snapshot = self.snapshot.write(); let pending_resolver = get_npm_pending_resolver(&self.api); @@ -251,7 +251,7 @@ impl NpmResolution { Ok(nv) } - pub fn package_reqs(&self) -> HashMap<NpmPackageReq, NpmPackageNv> { + pub fn package_reqs(&self) -> HashMap<PackageReq, PackageNv> { self.snapshot.read().package_reqs().clone() } @@ -304,7 +304,7 @@ impl NpmResolution { async fn add_package_reqs_to_snapshot( api: &CliNpmRegistryApi, - package_reqs: &[NpmPackageReq], + package_reqs: &[PackageReq], maybe_lockfile: Option<Arc<Mutex<Lockfile>>>, get_new_snapshot: impl Fn() -> NpmResolutionSnapshot, ) -> Result<NpmResolutionSnapshot, AnyError> { diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs index 6a0065ba8..71b91c452 100644 --- a/cli/npm/resolvers/local.rs +++ b/cli/npm/resolvers/local.rs @@ -37,7 +37,7 @@ use deno_runtime::deno_fs; use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::PackageJson; -use deno_semver::npm::NpmPackageNv; +use deno_semver::package::PackageNv; use serde::Deserialize; use serde::Serialize; @@ -657,7 +657,7 @@ fn get_package_folder_id_from_folder_name( }; let version = deno_semver::Version::parse_from_npm(raw_version).ok()?; Some(NpmPackageCacheFolderId { - nv: NpmPackageNv { name, version }, + nv: PackageNv { name, version }, copy_index, }) } @@ -726,7 +726,7 @@ fn join_package_name(path: &Path, package_name: &str) -> PathBuf { #[cfg(test)] mod test { use deno_npm::NpmPackageCacheFolderId; - use deno_semver::npm::NpmPackageNv; + use deno_semver::package::PackageNv; use test_util::TempDir; use super::*; @@ -736,20 +736,14 @@ mod test { let cases = vec![ ( NpmPackageCacheFolderId { - nv: NpmPackageNv { - name: "@types/foo".to_string(), - version: deno_semver::Version::parse_standard("1.2.3").unwrap(), - }, + nv: PackageNv::from_str("@types/foo@1.2.3").unwrap(), copy_index: 1, }, "@types+foo@1.2.3_1".to_string(), ), ( NpmPackageCacheFolderId { - nv: NpmPackageNv { - name: "JSON".to_string(), - version: deno_semver::Version::parse_standard("3.2.1").unwrap(), - }, + nv: PackageNv::from_str("JSON@3.2.1").unwrap(), copy_index: 0, }, "_jjju6tq@3.2.1".to_string(), diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs index 1b3f57c9a..58a70dff0 100644 --- a/cli/npm/resolvers/mod.rs +++ b/cli/npm/resolvers/mod.rs @@ -25,8 +25,8 @@ use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NpmResolver; use deno_runtime::deno_node::PathClean; -use deno_semver::npm::NpmPackageNv; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageNv; +use deno_semver::package::PackageReq; use global::GlobalNpmPackageResolver; use serde::Deserialize; use serde::Serialize; @@ -91,7 +91,7 @@ impl CliNpmResolver { } /// Checks if the provided package req's folder is cached. - pub fn is_pkg_req_folder_cached(&self, req: &NpmPackageReq) -> bool { + pub fn is_pkg_req_folder_cached(&self, req: &PackageReq) -> bool { self .resolve_pkg_id_from_pkg_req(req) .ok() @@ -102,7 +102,7 @@ impl CliNpmResolver { pub fn resolve_pkg_id_from_pkg_req( &self, - req: &NpmPackageReq, + req: &PackageReq, ) -> Result<NpmPackageId, PackageReqNotFoundError> { self.resolution.resolve_pkg_id_from_pkg_req(req) } @@ -182,7 +182,7 @@ impl CliNpmResolver { /// Adds package requirements to the resolver and ensures everything is setup. pub async fn add_package_reqs( &self, - packages: &[NpmPackageReq], + packages: &[PackageReq], ) -> Result<(), AnyError> { if packages.is_empty() { return Ok(()); @@ -205,7 +205,7 @@ impl CliNpmResolver { /// This will retrieve and resolve package information, but not cache any package files. pub async fn set_package_reqs( &self, - packages: &[NpmPackageReq], + packages: &[PackageReq], ) -> Result<(), AnyError> { self.resolution.set_package_reqs(packages).await } @@ -225,7 +225,7 @@ impl CliNpmResolver { .unwrap() } - pub fn package_reqs(&self) -> HashMap<NpmPackageReq, NpmPackageNv> { + pub fn package_reqs(&self) -> HashMap<PackageReq, PackageNv> { self.resolution.package_reqs() } @@ -241,7 +241,7 @@ impl CliNpmResolver { &self, ) -> Result<(), AnyError> { // add and ensure this isn't added to the lockfile - let package_reqs = vec![NpmPackageReq::from_str("@types/node").unwrap()]; + let package_reqs = vec![PackageReq::from_str("@types/node").unwrap()]; self.resolution.add_package_reqs(&package_reqs).await?; self.fs_resolver.cache_packages().await?; @@ -279,7 +279,7 @@ impl NpmResolver for CliNpmResolver { fn resolve_package_folder_from_deno_module( &self, - pkg_nv: &NpmPackageNv, + pkg_nv: &PackageNv, ) -> Result<PathBuf, AnyError> { let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(pkg_nv)?; self.resolve_pkg_folder_from_pkg_id(&pkg_id) @@ -287,7 +287,7 @@ impl NpmResolver for CliNpmResolver { fn resolve_pkg_id_from_pkg_req( &self, - req: &NpmPackageReq, + req: &PackageReq, ) -> Result<NpmPackageId, PackageReqNotFoundError> { self.resolution.resolve_pkg_id_from_pkg_req(req) } diff --git a/cli/npm/tarball.rs b/cli/npm/tarball.rs index 18a555671..f2f8d1ba4 100644 --- a/cli/npm/tarball.rs +++ b/cli/npm/tarball.rs @@ -8,7 +8,7 @@ use std::path::PathBuf; use deno_core::anyhow::bail; use deno_core::error::AnyError; use deno_npm::registry::NpmPackageVersionDistInfo; -use deno_semver::npm::NpmPackageNv; +use deno_semver::package::PackageNv; use flate2::read::GzDecoder; use tar::Archive; use tar::EntryType; @@ -16,7 +16,7 @@ use tar::EntryType; use super::cache::with_folder_sync_lock; pub fn verify_and_extract_tarball( - package: &NpmPackageNv, + package: &PackageNv, data: &[u8], dist_info: &NpmPackageVersionDistInfo, output_folder: &Path, @@ -29,7 +29,7 @@ pub fn verify_and_extract_tarball( } fn verify_tarball_integrity( - package: &NpmPackageNv, + package: &PackageNv, data: &[u8], npm_integrity: &str, ) -> Result<(), AnyError> { @@ -140,7 +140,7 @@ mod test { #[test] pub fn test_verify_tarball() { - let package = NpmPackageNv { + let package = PackageNv { name: "package".to_string(), version: Version::parse_from_npm("1.0.0").unwrap(), }; diff --git a/cli/resolver.rs b/cli/resolver.rs index f78f31e8d..dfa709bcb 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -8,14 +8,14 @@ use deno_core::futures::future::LocalBoxFuture; use deno_core::futures::FutureExt; use deno_core::ModuleSpecifier; use deno_core::TaskQueue; -use deno_graph::source::NpmPackageReqResolution; use deno_graph::source::NpmResolver; +use deno_graph::source::PackageReqResolution; use deno_graph::source::Resolver; use deno_graph::source::UnknownBuiltInNodeModuleError; use deno_graph::source::DEFAULT_JSX_IMPORT_SOURCE_MODULE; use deno_npm::registry::NpmRegistryApi; use deno_runtime::deno_node::is_builtin_node_module; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageReq; use import_map::ImportMap; use std::path::PathBuf; use std::sync::Arc; @@ -333,12 +333,9 @@ impl NpmResolver for CliGraphResolver { .boxed() } - fn resolve_npm( - &self, - package_req: &NpmPackageReq, - ) -> NpmPackageReqResolution { + fn resolve_npm(&self, package_req: &PackageReq) -> PackageReqResolution { if self.no_npm { - return NpmPackageReqResolution::Err(anyhow!( + return PackageReqResolution::Err(anyhow!( "npm specifiers were requested; but --no-npm is specified" )); } @@ -347,13 +344,13 @@ impl NpmResolver for CliGraphResolver { .npm_resolution .resolve_package_req_as_pending(package_req); match result { - Ok(nv) => NpmPackageReqResolution::Ok(nv), + Ok(nv) => PackageReqResolution::Ok(nv), Err(err) => { if self.npm_registry_api.mark_force_reload() { log::debug!("Restarting npm specifier resolution to check for new registry information. Error: {:#}", err); - NpmPackageReqResolution::ReloadRegistryInfo(err.into()) + PackageReqResolution::ReloadRegistryInfo(err.into()) } else { - NpmPackageReqResolution::Err(err.into()) + PackageReqResolution::Err(err.into()) } } } @@ -370,7 +367,7 @@ mod test { fn test_resolve_package_json_dep() { fn resolve( specifier: &str, - deps: &BTreeMap<String, NpmPackageReq>, + deps: &BTreeMap<String, PackageReq>, ) -> Result<Option<String>, String> { let deps = deps .iter() @@ -384,15 +381,15 @@ mod test { let deps = BTreeMap::from([ ( "package".to_string(), - NpmPackageReq::from_str("package@1.0").unwrap(), + PackageReq::from_str("package@1.0").unwrap(), ), ( "package-alias".to_string(), - NpmPackageReq::from_str("package@^1.2").unwrap(), + PackageReq::from_str("package@^1.2").unwrap(), ), ( "@deno/test".to_string(), - NpmPackageReq::from_str("@deno/test@~0.2").unwrap(), + PackageReq::from_str("@deno/test@~0.2").unwrap(), ), ]); diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index bfafcdb6b..48ef043da 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -21,8 +21,8 @@ use deno_core::url::Url; use deno_npm::registry::PackageDepNpmSchemeValueParseError; use deno_npm::NpmSystemInfo; use deno_runtime::permissions::PermissionsOptions; -use deno_semver::npm::NpmPackageReq; -use deno_semver::npm::NpmVersionReqSpecifierParseError; +use deno_semver::package::PackageReq; +use deno_semver::VersionReqSpecifierParseError; use log::Level; use serde::Deserialize; use serde::Serialize; @@ -81,7 +81,7 @@ impl SerializablePackageJsonDepValueParseError { } SerializablePackageJsonDepValueParseError::Specifier(source) => { PackageJsonDepValueParseError::Specifier( - NpmVersionReqSpecifierParseError { + VersionReqSpecifierParseError { source: monch::ParseErrorFailureError::new(source), }, ) @@ -97,7 +97,7 @@ impl SerializablePackageJsonDepValueParseError { pub struct SerializablePackageJsonDeps( BTreeMap< String, - Result<NpmPackageReq, SerializablePackageJsonDepValueParseError>, + Result<PackageReq, SerializablePackageJsonDepValueParseError>, >, ); diff --git a/cli/tests/integration/compile_tests.rs b/cli/tests/integration/compile_tests.rs index 022148ce4..f43b1cff9 100644 --- a/cli/tests/integration/compile_tests.rs +++ b/cli/tests/integration/compile_tests.rs @@ -120,9 +120,9 @@ fn standalone_error() { assert_contains!(stderr, "error: Uncaught Error: boom!"); assert_contains!(stderr, "throw new Error(\"boom!\");"); assert_contains!(stderr, "\n at boom (file://"); - assert_contains!(stderr, "standalone_error.ts:2:11"); + assert_contains!(stderr, "standalone_error.ts:2:9"); assert_contains!(stderr, "at foo (file://"); - assert_contains!(stderr, "standalone_error.ts:5:5"); + assert_contains!(stderr, "standalone_error.ts:5:3"); assert_contains!(stderr, "standalone_error.ts:7:1"); } diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs index 79422ee5a..c507204e4 100644 --- a/cli/tests/integration/inspector_tests.rs +++ b/cli/tests/integration/inspector_tests.rs @@ -75,6 +75,12 @@ struct InspectorTester { stdout_lines: Box<dyn Iterator<Item = String>>, } +impl Drop for InspectorTester { + fn drop(&mut self) { + _ = self.child.kill(); + } +} + fn ignore_script_parsed(msg: &str) -> bool { !msg.starts_with(r#"{"method":"Debugger.scriptParsed","#) } @@ -953,7 +959,7 @@ async fn inspector_with_ts_files() { tester.assert_received_messages( &[ r#"{"id":4,"result":{"scriptSource":"import { foo } from \"./foo.ts\";\nimport { bar } from \"./bar.js\";\nconsole.log(foo());\nconsole.log(bar());\n//# sourceMappingURL=data:application/json;base64,"#, - r#"{"id":5,"result":{"scriptSource":"class Foo {\n hello() {\n return \"hello\";\n }\n}\nexport function foo() {\n const f = new Foo();\n return f.hello();\n}\n//# sourceMappingURL=data:application/json;base64,"#, + r#"{"id":5,"result":{"scriptSource":"class Foo {\n hello() {\n return \"hello\";\n }\n}\nexport function foo() {\n const f = new Foo();\n return f.hello();\n}\n//# sourceMappingURL=data:application/json;base64,"#, r#"{"id":6,"result":{"scriptSource":"export function bar() {\n return \"world\";\n}\n"#, ], &[], diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs index f27befe54..1352777d2 100644 --- a/cli/tests/integration/npm_tests.rs +++ b/cli/tests/integration/npm_tests.rs @@ -988,12 +988,12 @@ fn ensure_registry_files_local() { } itest!(bundle_errors { - args: "bundle --quiet npm/esm/main.js", - output_str: Some("error: npm specifiers have not yet been implemented for this subcommand (https://github.com/denoland/deno/issues/15960). Found: npm:chalk@5.0.1\n"), - exit_code: 1, - envs: env_vars_for_npm_tests(), - http_server: true, - }); + args: "bundle --quiet npm/esm/main.js", + output_str: Some("error: npm specifiers have not yet been implemented for this subcommand (https://github.com/denoland/deno/issues/15960). Found: npm:/chalk@5.0.1\n"), + exit_code: 1, + envs: env_vars_for_npm_tests(), + http_server: true, +}); itest!(info_chalk_display { args: "info --quiet npm/cjs_with_deps/main.js", diff --git a/cli/tests/testdata/npm/cjs_with_deps/main_info.out b/cli/tests/testdata/npm/cjs_with_deps/main_info.out index cf84197e1..bcaaf1eec 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main_info.out +++ b/cli/tests/testdata/npm/cjs_with_deps/main_info.out @@ -4,19 +4,19 @@ dependencies: 14 unique size: [WILDCARD] file:///[WILDCARD]/npm/cjs_with_deps/main.js ([WILDCARD]) -├─┬ npm:chalk@4.1.2 ([WILDCARD]) -│ ├─┬ npm:ansi-styles@4.3.0 ([WILDCARD]) -│ │ └─┬ npm:color-convert@2.0.1 ([WILDCARD]) -│ │ └── npm:color-name@1.1.4 ([WILDCARD]) -│ └─┬ npm:supports-color@7.2.0 ([WILDCARD]) -│ └── npm:has-flag@4.0.0 ([WILDCARD]) -└─┬ npm:chai@4.3.6 ([WILDCARD]) - ├── npm:assertion-error@1.1.0 ([WILDCARD]) - ├── npm:check-error@1.0.2 ([WILDCARD]) - ├─┬ npm:deep-eql@3.0.1 ([WILDCARD]) - │ └── npm:type-detect@4.0.8 ([WILDCARD]) - ├── npm:get-func-name@2.0.0 ([WILDCARD]) - ├─┬ npm:loupe@2.3.4 ([WILDCARD]) - │ └── npm:get-func-name@2.0.0 ([WILDCARD]) - ├── npm:pathval@1.1.1 ([WILDCARD]) - └── npm:type-detect@4.0.8 ([WILDCARD]) +├─┬ npm:/chalk@4.1.2 ([WILDCARD]) +│ ├─┬ npm:/ansi-styles@4.3.0 ([WILDCARD]) +│ │ └─┬ npm:/color-convert@2.0.1 ([WILDCARD]) +│ │ └── npm:/color-name@1.1.4 ([WILDCARD]) +│ └─┬ npm:/supports-color@7.2.0 ([WILDCARD]) +│ └── npm:/has-flag@4.0.0 ([WILDCARD]) +└─┬ npm:/chai@4.3.6 ([WILDCARD]) + ├── npm:/assertion-error@1.1.0 ([WILDCARD]) + ├── npm:/check-error@1.0.2 ([WILDCARD]) + ├─┬ npm:/deep-eql@3.0.1 ([WILDCARD]) + │ └── npm:/type-detect@4.0.8 ([WILDCARD]) + ├── npm:/get-func-name@2.0.0 ([WILDCARD]) + ├─┬ npm:/loupe@2.3.4 ([WILDCARD]) + │ └── npm:/get-func-name@2.0.0 ([WILDCARD]) + ├── npm:/pathval@1.1.1 ([WILDCARD]) + └── npm:/type-detect@4.0.8 ([WILDCARD]) diff --git a/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out b/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out index e2a659a42..fd850b8a1 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out +++ b/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out @@ -50,8 +50,8 @@ } ], "redirects": { - "npm:chai@4.3": "npm:chai@4.3.6", - "npm:chalk@4": "npm:chalk@4.1.2" + "npm:chai@4.3": "npm:/chai@4.3.6", + "npm:chalk@4": "npm:/chalk@4.1.2" }, "npmPackages": { "ansi-styles@4.3.0": { diff --git a/cli/tests/testdata/npm/info/chalk.out b/cli/tests/testdata/npm/info/chalk.out index d7ac95120..63fa20da5 100644 --- a/cli/tests/testdata/npm/info/chalk.out +++ b/cli/tests/testdata/npm/info/chalk.out @@ -1,9 +1,9 @@ dependencies: 5 unique size: [WILDCARD] -npm:chalk@4.1.2 ([WILDCARD]) -├─┬ npm:ansi-styles@4.3.0 ([WILDCARD]) -│ └─┬ npm:color-convert@2.0.1 ([WILDCARD]) -│ └── npm:color-name@1.1.4 ([WILDCARD]) -└─┬ npm:supports-color@7.2.0 ([WILDCARD]) - └── npm:has-flag@4.0.0 ([WILDCARD]) +npm:/chalk@4.1.2 ([WILDCARD]) +├─┬ npm:/ansi-styles@4.3.0 ([WILDCARD]) +│ └─┬ npm:/color-convert@2.0.1 ([WILDCARD]) +│ └── npm:/color-name@1.1.4 ([WILDCARD]) +└─┬ npm:/supports-color@7.2.0 ([WILDCARD]) + └── npm:/has-flag@4.0.0 ([WILDCARD]) diff --git a/cli/tests/testdata/npm/info/chalk_json.out b/cli/tests/testdata/npm/info/chalk_json.out index 0f86bc994..bffed4ad4 100644 --- a/cli/tests/testdata/npm/info/chalk_json.out +++ b/cli/tests/testdata/npm/info/chalk_json.out @@ -5,12 +5,12 @@ "modules": [ { "kind": "npm", - "specifier": "npm:chalk@4.1.2", + "specifier": "npm:/chalk@4.1.2", "npmPackage": "chalk@4.1.2" } ], "redirects": { - "npm:chalk@4": "npm:chalk@4.1.2" + "npm:chalk@4": "npm:/chalk@4.1.2" }, "npmPackages": { "ansi-styles@4.3.0": { diff --git a/cli/tests/testdata/npm/invalid_package_name/main.out b/cli/tests/testdata/npm/invalid_package_name/main.out index 7d2b3754d..b4a421bd7 100644 --- a/cli/tests/testdata/npm/invalid_package_name/main.out +++ b/cli/tests/testdata/npm/invalid_package_name/main.out @@ -1,2 +1,2 @@ -error: Not a valid package: @foo +error: Invalid package specifier 'npm:@foo'. Did not contain a valid package name. at [WILDCARD]/invalid_package_name/main.js:1:22 diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out b/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out index d85b00094..638f9328d 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out +++ b/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out @@ -4,11 +4,11 @@ dependencies: 6 unique size: [WILDCARD] file:///[WILDCARD]/testdata/npm/peer_deps_with_copied_folders/main.ts (171B) -├─┬ npm:@denotest/peer-dep-test-child@1.0.0 ([WILDCARD]) -│ ├─┬ npm:@denotest/peer-dep-test-grandchild@1.0.0_@denotest+peer-dep-test-peer@1.0.0 ([WILDCARD]) -│ │ └── npm:@denotest/peer-dep-test-peer@1.0.0 ([WILDCARD]) -│ └── npm:@denotest/peer-dep-test-peer@1.0.0 ([WILDCARD]) -└─┬ npm:@denotest/peer-dep-test-child@2.0.0 ([WILDCARD]) - ├─┬ npm:@denotest/peer-dep-test-grandchild@1.0.0_@denotest+peer-dep-test-peer@2.0.0 ([WILDCARD]) - │ └── npm:@denotest/peer-dep-test-peer@2.0.0 ([WILDCARD]) - └── npm:@denotest/peer-dep-test-peer@2.0.0 ([WILDCARD]) +├─┬ npm:/@denotest/peer-dep-test-child@1.0.0 ([WILDCARD]) +│ ├─┬ npm:/@denotest/peer-dep-test-grandchild@1.0.0_@denotest+peer-dep-test-peer@1.0.0 ([WILDCARD]) +│ │ └── npm:/@denotest/peer-dep-test-peer@1.0.0 ([WILDCARD]) +│ └── npm:/@denotest/peer-dep-test-peer@1.0.0 ([WILDCARD]) +└─┬ npm:/@denotest/peer-dep-test-child@2.0.0 ([WILDCARD]) + ├─┬ npm:/@denotest/peer-dep-test-grandchild@1.0.0_@denotest+peer-dep-test-peer@2.0.0 ([WILDCARD]) + │ └── npm:/@denotest/peer-dep-test-peer@2.0.0 ([WILDCARD]) + └── npm:/@denotest/peer-dep-test-peer@2.0.0 ([WILDCARD]) diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out b/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out index 6a455b001..a4306a6d5 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out +++ b/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out @@ -50,8 +50,8 @@ } ], "redirects": { - "npm:@denotest/peer-dep-test-child@1": "npm:@denotest/peer-dep-test-child@1.0.0", - "npm:@denotest/peer-dep-test-child@2": "npm:@denotest/peer-dep-test-child@2.0.0" + "npm:@denotest/peer-dep-test-child@1": "npm:/@denotest/peer-dep-test-child@1.0.0", + "npm:@denotest/peer-dep-test-child@2": "npm:/@denotest/peer-dep-test-child@2.0.0" }, "npmPackages": { "@denotest/peer-dep-test-child@1.0.0_@denotest+peer-dep-test-peer@1.0.0": { diff --git a/cli/tests/testdata/package_json/basic/main.info.out b/cli/tests/testdata/package_json/basic/main.info.out index 3572c75e1..b283a0ee0 100644 --- a/cli/tests/testdata/package_json/basic/main.info.out +++ b/cli/tests/testdata/package_json/basic/main.info.out @@ -5,4 +5,4 @@ size: [WILDCARD] file:///[WILDCARD]/main.ts (63B) └─┬ file:///[WILDCARD]/lib.ts (166B) - └── npm:@denotest/esm-basic@1.0.0 (416B) + └── npm:/@denotest/esm-basic@1.0.0 (416B) diff --git a/cli/tests/testdata/package_json/invalid_value/error.ts.out b/cli/tests/testdata/package_json/invalid_value/error.ts.out index 866388e60..faa811a30 100644 --- a/cli/tests/testdata/package_json/invalid_value/error.ts.out +++ b/cli/tests/testdata/package_json/invalid_value/error.ts.out @@ -1,6 +1,6 @@ error: Parsing version constraints in the application-level package.json is more strict at the moment. -Invalid npm specifier version requirement. Unexpected character. +Invalid specifier version requirement. Unexpected character. invalid stuff that won't parse ~ at file:///[WILDCARD]/error.ts:2:23 diff --git a/cli/tests/testdata/package_json/invalid_value/task.out b/cli/tests/testdata/package_json/invalid_value/task.out index 823c50612..c78a32739 100644 --- a/cli/tests/testdata/package_json/invalid_value/task.out +++ b/cli/tests/testdata/package_json/invalid_value/task.out @@ -1,4 +1,4 @@ -Warning Ignoring dependency '@denotest/cjs-default-export' in package.json because its version requirement failed to parse: Invalid npm specifier version requirement. Unexpected character. +Warning Ignoring dependency '@denotest/cjs-default-export' in package.json because its version requirement failed to parse: Invalid specifier version requirement. Unexpected character. invalid stuff that won't parse ~ Warning Currently only basic package.json `scripts` are supported. Programs like `rimraf` or `cross-env` will not work correctly. This will be fixed in an upcoming release. diff --git a/cli/tools/check.rs b/cli/tools/check.rs index f2e31b153..85ce44b95 100644 --- a/cli/tools/check.rs +++ b/cli/tools/check.rs @@ -11,8 +11,8 @@ use deno_graph::Module; use deno_graph::ModuleGraph; use deno_runtime::colors; use deno_runtime::deno_node::NodeResolver; -use deno_semver::npm::NpmPackageNv; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageNv; +use deno_semver::package::PackageReq; use once_cell::sync::Lazy; use regex::Regex; @@ -194,7 +194,7 @@ enum CheckHashResult { /// be used to tell fn get_check_hash( graph: &ModuleGraph, - package_reqs: HashMap<NpmPackageReq, NpmPackageNv>, + package_reqs: HashMap<PackageReq, PackageNv>, type_check_mode: TypeCheckMode, ts_config: &TsConfig, ) -> CheckHashResult { diff --git a/cli/tools/info.rs b/cli/tools/info.rs index 08345887b..c0dd686f8 100644 --- a/cli/tools/info.rs +++ b/cli/tools/info.rs @@ -21,9 +21,9 @@ use deno_npm::resolution::NpmResolutionSnapshot; use deno_npm::NpmPackageId; use deno_npm::NpmResolutionPackage; use deno_runtime::colors; -use deno_semver::npm::NpmPackageNv; use deno_semver::npm::NpmPackageNvReference; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageNv; use crate::args::Flags; use crate::args::InfoFlags; @@ -185,7 +185,7 @@ fn add_npm_packages_to_json( .and_then(|specifier| NpmPackageNvReference::from_str(specifier).ok()) .and_then(|package_ref| { snapshot - .resolve_package_from_deno_module(&package_ref.nv) + .resolve_package_from_deno_module(package_ref.nv()) .ok() }); if let Some(pkg) = maybe_package { @@ -220,7 +220,8 @@ fn add_npm_packages_to_json( let specifier = dep.get("specifier").and_then(|s| s.as_str()); if let Some(specifier) = specifier { if let Ok(npm_ref) = NpmPackageReqReference::from_str(specifier) { - if let Ok(pkg) = snapshot.resolve_pkg_from_pkg_req(&npm_ref.req) + if let Ok(pkg) = + snapshot.resolve_pkg_from_pkg_req(npm_ref.req()) { dep.insert( "npmPackage".to_string(), @@ -331,7 +332,7 @@ fn print_tree_node<TWrite: Write>( #[derive(Default)] struct NpmInfo { package_sizes: HashMap<NpmPackageId, u64>, - resolved_ids: HashMap<NpmPackageNv, NpmPackageId>, + resolved_ids: HashMap<PackageNv, NpmPackageId>, packages: HashMap<NpmPackageId, NpmResolutionPackage>, } @@ -348,7 +349,7 @@ impl NpmInfo { for module in graph.modules() { if let Module::Npm(module) = module { - let nv = &module.nv_reference.nv; + let nv = module.nv_reference.nv(); if let Ok(package) = npm_snapshot.resolve_package_from_deno_module(nv) { info.resolved_ids.insert(nv.clone(), package.id.clone()); if !info.packages.contains_key(&package.id) { @@ -382,7 +383,7 @@ impl NpmInfo { pub fn resolve_package( &self, - nv: &NpmPackageNv, + nv: &PackageNv, ) -> Option<&NpmResolutionPackage> { let id = self.resolved_ids.get(nv)?; self.packages.get(id) @@ -542,7 +543,7 @@ impl<'a> GraphDisplayContext<'a> { use PackageOrSpecifier::*; let package_or_specifier = match module.npm() { - Some(npm) => match self.npm_info.resolve_package(&npm.nv_reference.nv) { + Some(npm) => match self.npm_info.resolve_package(npm.nv_reference.nv()) { Some(package) => Package(package.clone()), None => Specifier(module.specifier().clone()), // should never happen }, @@ -615,7 +616,7 @@ impl<'a> GraphDisplayContext<'a> { let maybe_size = self.npm_info.package_sizes.get(dep_id).cloned(); let size_str = maybe_size_to_text(maybe_size); let mut child = TreeNode::from_text(format!( - "npm:{} {}", + "npm:/{} {}", dep_id.as_serialized(), size_str )); diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs index 03c2ffdcf..cabae9e28 100644 --- a/cli/tools/installer.rs +++ b/cli/tools/installer.rs @@ -140,6 +140,7 @@ pub async fn infer_name_from_url(url: &Url) -> Option<String> { } if let Ok(npm_ref) = NpmPackageReqReference::from_specifier(&url) { + let npm_ref = npm_ref.into_inner(); if let Some(sub_path) = npm_ref.sub_path { if !sub_path.contains('/') { return Some(sub_path); diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index 9261299df..d89cc95c3 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -505,7 +505,7 @@ impl ReplSession { let npm_imports = resolved_imports .iter() .flat_map(|url| NpmPackageReqReference::from_specifier(url).ok()) - .map(|r| r.req) + .map(|r| r.into_inner().req) .collect::<Vec<_>>(); let has_node_specifier = resolved_imports.iter().any(|url| url.scheme() == "node"); diff --git a/cli/tools/task.rs b/cli/tools/task.rs index f99e7431c..dcb53e4ec 100644 --- a/cli/tools/task.rs +++ b/cli/tools/task.rs @@ -13,7 +13,7 @@ use deno_core::error::AnyError; use deno_core::futures; use deno_core::futures::future::LocalBoxFuture; use deno_runtime::deno_node::NodeResolver; -use deno_semver::npm::NpmPackageNv; +use deno_semver::package::PackageNv; use deno_task_shell::ExecuteResult; use deno_task_shell::ShellCommand; use deno_task_shell::ShellCommandContext; @@ -237,7 +237,7 @@ impl ShellCommand for NpxCommand { #[derive(Clone)] struct NpmPackageBinCommand { name: String, - npm_package: NpmPackageNv, + npm_package: PackageNv, } impl ShellCommand for NpmPackageBinCommand { diff --git a/cli/worker.rs b/cli/worker.rs index b451cdbed..1d9252e65 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -346,7 +346,7 @@ impl CliMainWorkerFactory { { shared .npm_resolver - .add_package_reqs(&[package_ref.req.clone()]) + .add_package_reqs(&[package_ref.req().clone()]) .await?; let node_resolution = self.resolve_binary_entrypoint(&package_ref, &permissions)?; @@ -500,7 +500,7 @@ impl CliMainWorkerFactory { permissions: &PermissionsContainer, ) -> Result<Option<NodeResolution>, AnyError> { // only fallback if the user specified a sub path - if package_ref.sub_path.is_none() { + if package_ref.sub_path().is_none() { // it's confusing to users if the package doesn't have any binary // entrypoint and we just execute the main script which will likely // have blank output, so do not resolve the entrypoint in this case |