From 87f80ff6be5e2a132b583a9c380fff5db3cb2b07 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Sat, 20 Aug 2022 11:31:33 -0400 Subject: feat(unstable): initial support for npm specifiers (#15484) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bartek IwaƄczuk --- cli/cache/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'cli/cache') diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs index 7482826cf..d7cf8aca4 100644 --- a/cli/cache/mod.rs +++ b/cli/cache/mod.rs @@ -2,7 +2,9 @@ use crate::errors::get_error_class_name; use crate::file_fetcher::FileFetcher; +use crate::npm; +use deno_core::futures; use deno_core::futures::FutureExt; use deno_core::ModuleSpecifier; use deno_graph::source::CacheInfo; @@ -53,6 +55,10 @@ impl FetchCacher { impl Loader for FetchCacher { fn get_cache_info(&self, specifier: &ModuleSpecifier) -> Option { + if specifier.scheme() == "npm" { + return None; + } + let local = self.file_fetcher.get_local_path(specifier)?; if local.is_file() { let emit = self @@ -74,6 +80,17 @@ impl Loader for FetchCacher { specifier: &ModuleSpecifier, is_dynamic: bool, ) -> LoadFuture { + if specifier.scheme() == "npm" { + return Box::pin(futures::future::ready( + match npm::NpmPackageReference::from_specifier(specifier) { + Ok(_) => Ok(Some(deno_graph::source::LoadResponse::External { + specifier: specifier.clone(), + })), + Err(err) => Err(err), + }, + )); + } + let specifier = specifier.clone(); let mut permissions = if is_dynamic { self.dynamic_permissions.clone() -- cgit v1.2.3