diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-01-22 16:31:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-22 22:31:12 +0100 |
commit | 69d5f136badfd7cfa9b979ff2fee7caf397098ca (patch) | |
tree | 665c6686fbf6f0732d84984f5f48557e45b4c7b6 /cli/args/package_json.rs | |
parent | d20c9e75d1540b1a27e721d0cf66d29ba6a2c3fb (diff) |
feat(lockfile): track JSR and npm dependencies in config file (#22004)
See overview in https://github.com/denoland/deno_lockfile/pull/13
Diffstat (limited to 'cli/args/package_json.rs')
-rw-r--r-- | cli/args/package_json.rs | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs index c304d0715..67481fd07 100644 --- a/cli/args/package_json.rs +++ b/cli/args/package_json.rs @@ -6,7 +6,6 @@ use std::path::PathBuf; use deno_core::anyhow::bail; 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::package::PackageReq; use deno_semver::VersionReq; @@ -17,8 +16,6 @@ use thiserror::Error; #[derive(Debug, Error, Clone)] pub enum PackageJsonDepValueParseError { #[error(transparent)] - SchemeValue(#[from] PackageDepNpmSchemeValueParseError), - #[error(transparent)] Specifier(#[from] VersionReqSpecifierParseError), #[error("Not implemented scheme '{scheme}'")] Unsupported { scheme: String }, @@ -39,7 +36,7 @@ impl PackageJsonDepsProvider { self.0.as_ref() } - pub fn reqs(&self) -> Vec<&PackageReq> { + pub fn reqs(&self) -> Option<Vec<&PackageReq>> { match &self.0 { Some(deps) => { let mut package_reqs = deps @@ -47,9 +44,9 @@ impl PackageJsonDepsProvider { .filter_map(|r| r.as_ref().ok()) .collect::<Vec<_>>(); package_reqs.sort(); // deterministic resolution - package_reqs + Some(package_reqs) } - None => Vec::new(), + None => None, } } } @@ -77,9 +74,7 @@ pub fn get_local_package_json_version_reqs( scheme: value.split(':').next().unwrap().to_string(), }); } - let (name, version_req) = parse_dep_entry_name_and_raw_version(key, value) - .map_err(PackageJsonDepValueParseError::SchemeValue)?; - + let (name, version_req) = parse_dep_entry_name_and_raw_version(key, value); let result = VersionReq::parse_from_specifier(version_req); match result { Ok(version_req) => Ok(PackageReq { @@ -159,27 +154,6 @@ mod test { use super::*; - #[test] - fn test_parse_dep_entry_name_and_raw_version() { - let cases = [ - ("test", "^1.2", Ok(("test", "^1.2"))), - ("test", "1.x - 2.6", Ok(("test", "1.x - 2.6"))), - ("test", "npm:package@^1.2", Ok(("package", "^1.2"))), - ( - "test", - "npm:package", - Err("Could not find @ symbol in npm url 'npm:package'"), - ), - ]; - for (key, value, expected_result) in cases { - let result = parse_dep_entry_name_and_raw_version(key, value); - match result { - Ok(result) => assert_eq!(result, expected_result.unwrap()), - Err(err) => assert_eq!(err.to_string(), expected_result.err().unwrap()), - } - } - } - fn get_local_package_json_version_reqs_for_tests( package_json: &PackageJson, ) -> IndexMap<String, Result<PackageReq, String>> { |