From 6233c0aff0dc9e58b02dfc9499048385bbf836c6 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Thu, 23 Feb 2023 12:33:23 -0500 Subject: fix(npm): support bare specifiers in package.json having a path (#17903) For example `import * as test from "package/path.js"` --- cli/args/mod.rs | 4 ++-- cli/args/package_json.rs | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'cli/args') diff --git a/cli/args/mod.rs b/cli/args/mod.rs index fe6883f2c..8347a610c 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -49,7 +49,7 @@ use deno_runtime::deno_tls::webpki_roots; use deno_runtime::inspector_server::InspectorServer; use deno_runtime::permissions::PermissionsOptions; use once_cell::sync::Lazy; -use std::collections::HashMap; +use std::collections::BTreeMap; use std::env; use std::io::BufReader; use std::io::Cursor; @@ -799,7 +799,7 @@ impl CliOptions { pub fn maybe_package_json_deps( &self, - ) -> Result>, AnyError> { + ) -> Result>, AnyError> { if matches!( self.flags.subcommand, DenoSubcommand::Task(TaskFlags { task: None, .. }) diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs index 73bcfb582..667918cd1 100644 --- a/cli/args/package_json.rs +++ b/cli/args/package_json.rs @@ -1,5 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +use std::collections::BTreeMap; use std::collections::HashMap; use std::path::Path; use std::path::PathBuf; @@ -36,10 +37,10 @@ pub fn parse_dep_entry_name_and_raw_version<'a>( /// entries to npm specifiers which can then be used in the resolver. pub fn get_local_package_json_version_reqs( package_json: &PackageJson, -) -> Result, AnyError> { +) -> Result, AnyError> { fn insert_deps( deps: Option<&HashMap>, - result: &mut HashMap, + result: &mut BTreeMap, ) -> Result<(), AnyError> { if let Some(deps) = deps { for (key, value) in deps { @@ -73,9 +74,7 @@ pub fn get_local_package_json_version_reqs( let deps = package_json.dependencies.as_ref(); let dev_deps = package_json.dev_dependencies.as_ref(); - let mut result = HashMap::with_capacity( - deps.map(|d| d.len()).unwrap_or(0) + dev_deps.map(|d| d.len()).unwrap_or(0), - ); + let mut result = BTreeMap::new(); // insert the dev dependencies first so the dependencies will // take priority and overwrite any collisions @@ -166,7 +165,7 @@ mod test { let result = get_local_package_json_version_reqs(&package_json).unwrap(); assert_eq!( result, - HashMap::from([ + BTreeMap::from([ ( "test".to_string(), NpmPackageReq::from_str("test@^1.2").unwrap() -- cgit v1.2.3