summaryrefslogtreecommitdiff
path: root/cli/npm/managed
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/managed')
-rw-r--r--cli/npm/managed/cache/mod.rs44
-rw-r--r--cli/npm/managed/mod.rs4
-rw-r--r--cli/npm/managed/resolvers/local.rs4
3 files changed, 40 insertions, 12 deletions
diff --git a/cli/npm/managed/cache/mod.rs b/cli/npm/managed/cache/mod.rs
index f409744b9..fa0e8c8a5 100644
--- a/cli/npm/managed/cache/mod.rs
+++ b/cli/npm/managed/cache/mod.rs
@@ -8,6 +8,7 @@ use std::path::PathBuf;
use std::sync::Arc;
use deno_ast::ModuleSpecifier;
+use deno_cache_dir::npm::NpmCacheDir;
use deno_core::anyhow::bail;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
@@ -18,10 +19,10 @@ use deno_npm::npm_rc::ResolvedNpmRc;
use deno_npm::registry::NpmPackageInfo;
use deno_npm::NpmPackageCacheFolderId;
use deno_semver::package::PackageNv;
+use deno_semver::Version;
use crate::args::CacheSetting;
use crate::cache::CACHE_PERM;
-use crate::npm::NpmCacheDir;
use crate::util::fs::atomic_write_file_with_retries;
use crate::util::fs::hard_link_dir_recursive;
@@ -87,9 +88,12 @@ impl NpmCache {
) -> Result<(), AnyError> {
let registry_url = self.npmrc.get_registry_url(&folder_id.nv.name);
assert_ne!(folder_id.copy_index, 0);
- let package_folder = self
- .cache_dir
- .package_folder_for_id(folder_id, registry_url);
+ let package_folder = self.cache_dir.package_folder_for_id(
+ &folder_id.nv.name,
+ &folder_id.nv.version.to_string(),
+ folder_id.copy_index,
+ registry_url,
+ );
if package_folder.exists()
// if this file exists, then the package didn't successfully initialize
@@ -100,9 +104,12 @@ impl NpmCache {
return Ok(());
}
- let original_package_folder = self
- .cache_dir
- .package_folder_for_nv(&folder_id.nv, registry_url);
+ let original_package_folder = self.cache_dir.package_folder_for_id(
+ &folder_id.nv.name,
+ &folder_id.nv.version.to_string(),
+ 0, // original copy index
+ registry_url,
+ );
// it seems Windows does an "AccessDenied" error when moving a
// directory with hard links, so that's why this solution is done
@@ -114,7 +121,12 @@ impl NpmCache {
pub fn package_folder_for_id(&self, id: &NpmPackageCacheFolderId) -> PathBuf {
let registry_url = self.npmrc.get_registry_url(&id.nv.name);
- self.cache_dir.package_folder_for_id(id, registry_url)
+ self.cache_dir.package_folder_for_id(
+ &id.nv.name,
+ &id.nv.version.to_string(),
+ id.copy_index,
+ registry_url,
+ )
}
pub fn package_folder_for_nv(&self, package: &PackageNv) -> PathBuf {
@@ -127,7 +139,12 @@ impl NpmCache {
package: &PackageNv,
registry_url: &Url,
) -> PathBuf {
- self.cache_dir.package_folder_for_nv(package, registry_url)
+ self.cache_dir.package_folder_for_id(
+ &package.name,
+ &package.version.to_string(),
+ 0, // original copy_index
+ registry_url,
+ )
}
pub fn package_name_folder(&self, name: &str) -> PathBuf {
@@ -146,6 +163,15 @@ impl NpmCache {
self
.cache_dir
.resolve_package_folder_id_from_specifier(specifier)
+ .and_then(|cache_id| {
+ Some(NpmPackageCacheFolderId {
+ nv: PackageNv {
+ name: cache_id.name,
+ version: Version::parse_from_npm(&cache_id.version).ok()?,
+ },
+ copy_index: cache_id.copy_index,
+ })
+ })
}
pub fn load_package_info(
diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs
index 40c92cd46..e3ac5e1af 100644
--- a/cli/npm/managed/mod.rs
+++ b/cli/npm/managed/mod.rs
@@ -7,6 +7,7 @@ use std::sync::Arc;
use cache::RegistryInfoDownloader;
use cache::TarballCache;
use deno_ast::ModuleSpecifier;
+use deno_cache_dir::npm::NpmCacheDir;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
use deno_core::serde_json;
@@ -35,6 +36,7 @@ use crate::args::LifecycleScriptsConfig;
use crate::args::NpmInstallDepsProvider;
use crate::args::NpmProcessState;
use crate::args::NpmProcessStateKind;
+use crate::cache::DenoCacheEnvFsAdapter;
use crate::cache::FastInsecureHasher;
use crate::http_util::HttpClientProvider;
use crate::util::fs::canonicalize_path_maybe_not_exists_with_fs;
@@ -50,7 +52,6 @@ use self::resolvers::NpmPackageFsResolver;
use super::CliNpmResolver;
use super::InnerCliNpmResolverRef;
-use super::NpmCacheDir;
mod cache;
mod registry;
@@ -188,6 +189,7 @@ fn create_inner(
fn create_cache(options: &CliNpmResolverManagedCreateOptions) -> Arc<NpmCache> {
Arc::new(NpmCache::new(
NpmCacheDir::new(
+ &DenoCacheEnvFsAdapter(options.fs.as_ref()),
options.npm_global_cache_dir.clone(),
options.npmrc.get_all_known_registries_urls(),
),
diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs
index 5a90f252d..297fcab23 100644
--- a/cli/npm/managed/resolvers/local.rs
+++ b/cli/npm/managed/resolvers/local.rs
@@ -19,6 +19,8 @@ use crate::args::LifecycleScriptsConfig;
use crate::colors;
use async_trait::async_trait;
use deno_ast::ModuleSpecifier;
+use deno_cache_dir::npm::mixed_case_package_name_decode;
+use deno_cache_dir::npm::mixed_case_package_name_encode;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
use deno_core::futures::stream::FuturesUnordered;
@@ -42,8 +44,6 @@ use serde::Serialize;
use crate::args::NpmInstallDepsProvider;
use crate::cache::CACHE_PERM;
-use crate::npm::cache_dir::mixed_case_package_name_decode;
-use crate::npm::cache_dir::mixed_case_package_name_encode;
use crate::util::fs::atomic_write_file_with_retries;
use crate::util::fs::canonicalize_path_maybe_not_exists_with_fs;
use crate::util::fs::clone_dir_recursive;