summaryrefslogtreecommitdiff
path: root/cli/npm/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/mod.rs')
-rw-r--r--cli/npm/mod.rs47
1 files changed, 12 insertions, 35 deletions
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index 22997a8b2..81f46419e 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -1,21 +1,15 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
mod cache_dir;
+mod common;
mod managed;
-use std::collections::HashMap;
use std::path::PathBuf;
use std::sync::Arc;
use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
-use deno_core::url::Url;
-use deno_graph::NpmPackageReqResolution;
-use deno_npm::resolution::PackageReqNotFoundError;
use deno_runtime::deno_node::NpmResolver;
-use deno_semver::npm::NpmPackageNvReference;
-use deno_semver::npm::NpmPackageReqReference;
-use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
pub use self::cache_dir::NpmCacheDir;
@@ -64,8 +58,6 @@ pub trait CliNpmResolver: NpmResolver {
fn clone_snapshotted(&self) -> Arc<dyn CliNpmResolver>;
- fn root_dir_url(&self) -> &Url;
-
fn as_inner(&self) -> InnerCliNpmResolverRef;
fn as_managed(&self) -> Option<&ManagedCliNpmResolver> {
@@ -75,27 +67,16 @@ pub trait CliNpmResolver: NpmResolver {
}
}
- fn node_modules_path(&self) -> Option<PathBuf>;
-
- /// Checks if the provided package req's folder is cached.
- fn is_pkg_req_folder_cached(&self, req: &PackageReq) -> bool;
-
- /// Resolves a package requirement for deno graph. This should only be
- /// called by deno_graph's NpmResolver or for resolving packages in
- /// a package.json
- fn resolve_npm_for_deno_graph(
- &self,
- pkg_req: &PackageReq,
- ) -> NpmPackageReqResolution;
+ fn as_byonm(&self) -> Option<&ByonmCliNpmResolver> {
+ match self.as_inner() {
+ InnerCliNpmResolverRef::Managed(_) => None,
+ InnerCliNpmResolverRef::Byonm(inner) => Some(inner),
+ }
+ }
- fn resolve_pkg_nv_ref_from_pkg_req_ref(
- &self,
- req_ref: &NpmPackageReqReference,
- ) -> Result<NpmPackageNvReference, PackageReqNotFoundError>;
+ fn root_node_modules_path(&self) -> Option<PathBuf>;
/// Resolve the root folder of the package the provided specifier is in.
- ///
- /// This will error when the provided specifier is not in an npm package.
fn resolve_pkg_folder_from_specifier(
&self,
specifier: &ModuleSpecifier,
@@ -104,19 +85,15 @@ pub trait CliNpmResolver: NpmResolver {
fn resolve_pkg_folder_from_deno_module_req(
&self,
req: &PackageReq,
- ) -> Result<PathBuf, AnyError>;
-
- fn resolve_pkg_folder_from_deno_module(
- &self,
- nv: &PackageNv,
+ referrer: &ModuleSpecifier,
) -> Result<PathBuf, AnyError>;
/// Gets the state of npm for the process.
fn get_npm_process_state(&self) -> String;
- // todo(#18967): should instead return a hash state of the resolver
- // or perhaps this could be non-BYONM only and byonm always runs deno check
- fn package_reqs(&self) -> HashMap<PackageReq, PackageNv>;
+ /// Returns a hash returning the state of the npm resolver
+ /// or `None` if the state currently can't be determined.
+ fn check_state_hash(&self) -> Option<u64>;
}
// todo(#18967): implement this