summaryrefslogtreecommitdiff
path: root/cli/cache/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r--cli/cache/mod.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs
index eead9c419..6c50c4c8b 100644
--- a/cli/cache/mod.rs
+++ b/cli/cache/mod.rs
@@ -3,6 +3,7 @@
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;
@@ -44,6 +45,7 @@ pub struct FetchCacher {
file_fetcher: Arc<FileFetcher>,
root_permissions: PermissionsContainer,
cache_info_enabled: bool,
+ maybe_local_node_modules_url: Option<ModuleSpecifier>,
}
impl FetchCacher {
@@ -52,6 +54,7 @@ impl FetchCacher {
file_fetcher: Arc<FileFetcher>,
root_permissions: PermissionsContainer,
dynamic_permissions: PermissionsContainer,
+ maybe_local_node_modules_url: Option<ModuleSpecifier>,
) -> Self {
Self {
emit_cache,
@@ -59,6 +62,7 @@ impl FetchCacher {
file_fetcher,
root_permissions,
cache_info_enabled: false,
+ maybe_local_node_modules_url,
}
}
@@ -96,6 +100,16 @@ impl Loader for FetchCacher {
specifier: &ModuleSpecifier,
is_dynamic: bool,
) -> LoadFuture {
+ if let Some(node_modules_url) = self.maybe_local_node_modules_url.as_ref() {
+ if specifier.as_str().starts_with(node_modules_url.as_str()) {
+ return Box::pin(futures::future::ready(Ok(Some(
+ LoadResponse::External {
+ specifier: specifier.clone(),
+ },
+ ))));
+ }
+ }
+
let permissions = if is_dynamic {
self.dynamic_permissions.clone()
} else {