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.rs53
1 files changed, 38 insertions, 15 deletions
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index 114bf15f2..22997a8b2 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -1,12 +1,8 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+mod cache_dir;
mod managed;
-// todo(#18967): move the cache, registry, and tarball into the managed folder
-mod cache;
-mod registry;
-mod tarball;
-
use std::collections::HashMap;
use std::path::PathBuf;
use std::sync::Arc;
@@ -17,20 +13,45 @@ use deno_core::url::Url;
use deno_graph::NpmPackageReqResolution;
use deno_npm::resolution::PackageReqNotFoundError;
use deno_runtime::deno_node::NpmResolver;
-
-pub use cache::NpmCache;
-pub use cache::NpmCacheDir;
use deno_semver::npm::NpmPackageNvReference;
use deno_semver::npm::NpmPackageReqReference;
use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
-pub use managed::create_npm_fs_resolver;
-pub use managed::ManagedCliNpmResolver;
-pub use managed::NpmPackageFsResolver;
-pub use managed::NpmProcessState;
-pub use managed::NpmResolution;
-pub use managed::PackageJsonDepsInstaller;
-pub use registry::CliNpmRegistryApi;
+
+pub use self::cache_dir::NpmCacheDir;
+pub use self::managed::CliNpmResolverManagedCreateOptions;
+pub use self::managed::CliNpmResolverManagedPackageJsonInstallerOption;
+pub use self::managed::CliNpmResolverManagedSnapshotOption;
+pub use self::managed::ManagedCliNpmResolver;
+
+pub enum CliNpmResolverCreateOptions {
+ Managed(CliNpmResolverManagedCreateOptions),
+ // todo(dsherret): implement this
+ #[allow(dead_code)]
+ Byonm,
+}
+
+pub async fn create_cli_npm_resolver_for_lsp(
+ options: CliNpmResolverCreateOptions,
+) -> Arc<dyn CliNpmResolver> {
+ use CliNpmResolverCreateOptions::*;
+ match options {
+ Managed(options) => {
+ managed::create_managed_npm_resolver_for_lsp(options).await
+ }
+ Byonm => todo!(),
+ }
+}
+
+pub async fn create_cli_npm_resolver(
+ options: CliNpmResolverCreateOptions,
+) -> Result<Arc<dyn CliNpmResolver>, AnyError> {
+ use CliNpmResolverCreateOptions::*;
+ match options {
+ Managed(options) => managed::create_managed_npm_resolver(options).await,
+ Byonm => todo!(),
+ }
+}
pub enum InnerCliNpmResolverRef<'a> {
Managed(&'a ManagedCliNpmResolver),
@@ -41,6 +62,8 @@ pub enum InnerCliNpmResolverRef<'a> {
pub trait CliNpmResolver: NpmResolver {
fn into_npm_resolver(self: Arc<Self>) -> Arc<dyn NpmResolver>;
+ fn clone_snapshotted(&self) -> Arc<dyn CliNpmResolver>;
+
fn root_dir_url(&self) -> &Url;
fn as_inner(&self) -> InnerCliNpmResolverRef;