diff options
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r-- | cli/cache/mod.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs index ddb419e54..1aea67058 100644 --- a/cli/cache/mod.rs +++ b/cli/cache/mod.rs @@ -11,6 +11,7 @@ use deno_graph::source::LoadFuture; use deno_graph::source::LoadResponse; use deno_graph::source::Loader; use deno_runtime::permissions::PermissionsContainer; +use std::collections::HashMap; use std::sync::Arc; mod check; @@ -43,6 +44,7 @@ pub struct FetchCacher { emit_cache: EmitCache, dynamic_permissions: PermissionsContainer, file_fetcher: Arc<FileFetcher>, + file_header_overrides: HashMap<ModuleSpecifier, HashMap<String, String>>, root_permissions: PermissionsContainer, cache_info_enabled: bool, maybe_local_node_modules_url: Option<ModuleSpecifier>, @@ -52,6 +54,7 @@ impl FetchCacher { pub fn new( emit_cache: EmitCache, file_fetcher: Arc<FileFetcher>, + file_header_overrides: HashMap<ModuleSpecifier, HashMap<String, String>>, root_permissions: PermissionsContainer, dynamic_permissions: PermissionsContainer, maybe_local_node_modules_url: Option<ModuleSpecifier>, @@ -60,6 +63,7 @@ impl FetchCacher { emit_cache, dynamic_permissions, file_fetcher, + file_header_overrides, root_permissions, cache_info_enabled: false, maybe_local_node_modules_url, @@ -123,6 +127,7 @@ impl Loader for FetchCacher { self.root_permissions.clone() }; let file_fetcher = self.file_fetcher.clone(); + let file_header_overrides = self.file_header_overrides.clone(); let specifier = specifier.clone(); async move { @@ -130,9 +135,18 @@ impl Loader for FetchCacher { .fetch(&specifier, permissions) .await .map(|file| { + let maybe_headers = + match (file.maybe_headers, file_header_overrides.get(&specifier)) { + (Some(headers), Some(overrides)) => { + Some(headers.into_iter().chain(overrides.clone()).collect()) + } + (Some(headers), None) => Some(headers), + (None, Some(overrides)) => Some(overrides.clone()), + (None, None) => None, + }; Ok(Some(LoadResponse::Module { specifier: file.specifier, - maybe_headers: file.maybe_headers, + maybe_headers, content: file.source, })) }) |