summaryrefslogtreecommitdiff
path: root/cli/cache/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-08-20 11:31:33 -0400
committerGitHub <noreply@github.com>2022-08-20 11:31:33 -0400
commit87f80ff6be5e2a132b583a9c380fff5db3cb2b07 (patch)
treeb2c43c9004b9ada204f3b5db7c221fa6322f026a /cli/cache/mod.rs
parent1ffbd561642d05a05e18ada764d50581dea779ef (diff)
feat(unstable): initial support for npm specifiers (#15484)
Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r--cli/cache/mod.rs17
1 files changed, 17 insertions, 0 deletions
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<CacheInfo> {
+ 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()