diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-02-22 14:15:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-22 14:15:25 -0500 |
commit | a6ca4d0d61c95b9f7fa79ecce81a31a6d1f6cc5d (patch) | |
tree | 278a915d7722a8a3d1fffbfa1f3a12752f44d13f /cli/cache/mod.rs | |
parent | 0f9daaeacb402a7199e58b14ad01ec0091ac2c8d (diff) |
refactor: use deno_graph for npm specifiers (#17858)
This changes npm specifiers to be handled by deno_graph and resolved to
an npm package name and version when the specifier is encountered. It
also slightly changes how npm specifier resolution occurs—previously it
would collect all the npm specifiers and resolve them all at once, but
now it resolves them on the fly as they are encountered in the module
graph.
https://github.com/denoland/deno_graph/pull/232
---------
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r-- | cli/cache/mod.rs | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs index 5a65bd0a2..eead9c419 100644 --- a/cli/cache/mod.rs +++ b/cli/cache/mod.rs @@ -3,7 +3,6 @@ use crate::errors::get_error_class_name; use crate::file_fetcher::FileFetcher; -use deno_core::futures; use deno_core::futures::FutureExt; use deno_core::ModuleSpecifier; use deno_graph::source::CacheInfo; @@ -76,10 +75,6 @@ impl Loader for FetchCacher { return None; } - if matches!(specifier.scheme(), "npm" | "node") { - return None; - } - let local = self.file_fetcher.get_local_path(specifier)?; if local.is_file() { let emit = self @@ -101,40 +96,13 @@ impl Loader for FetchCacher { specifier: &ModuleSpecifier, is_dynamic: bool, ) -> LoadFuture { - if specifier.scheme() == "npm" { - return Box::pin(futures::future::ready( - match deno_graph::npm::NpmPackageReqReference::from_specifier(specifier) - { - Ok(_) => Ok(Some(deno_graph::source::LoadResponse::External { - specifier: specifier.clone(), - })), - Err(err) => Err(err.into()), - }, - )); - } - - let specifier = - if let Some(module_name) = specifier.as_str().strip_prefix("node:") { - // Built-in Node modules are embedded in the Deno binary (in V8 snapshot) - // so we don't want them to be loaded by the "deno graph". - match crate::node::resolve_builtin_node_module(module_name) { - Ok(specifier) => { - return Box::pin(futures::future::ready(Ok(Some( - deno_graph::source::LoadResponse::External { specifier }, - )))) - } - Err(err) => return Box::pin(futures::future::ready(Err(err))), - } - } else { - specifier.clone() - }; - let permissions = if is_dynamic { self.dynamic_permissions.clone() } else { self.root_permissions.clone() }; let file_fetcher = self.file_fetcher.clone(); + let specifier = specifier.clone(); async move { file_fetcher |