summaryrefslogtreecommitdiff
path: root/cli/args/package_json.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-01-22 16:31:12 -0500
committerGitHub <noreply@github.com>2024-01-22 22:31:12 +0100
commit69d5f136badfd7cfa9b979ff2fee7caf397098ca (patch)
tree665c6686fbf6f0732d84984f5f48557e45b4c7b6 /cli/args/package_json.rs
parentd20c9e75d1540b1a27e721d0cf66d29ba6a2c3fb (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.rs34
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>> {