summaryrefslogtreecommitdiff
path: root/cli/cache
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-04-18 21:43:28 -0400
committerGitHub <noreply@github.com>2024-04-19 01:43:28 +0000
commitc497e766f1a136c674d8be2467eb103c85fe1d44 (patch)
treea6b84f9950f2bdca734d8d402b60d44f99605965 /cli/cache
parent8e77f091ad9b1f8b3dc2eaf8b4a2be2560a67354 (diff)
refactor: move redirect handling into deno_graph (#23444)
Diffstat (limited to 'cli/cache')
-rw-r--r--cli/cache/mod.rs55
1 files changed, 34 insertions, 21 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs
index aa8d3b9de..6ddeced9a 100644
--- a/cli/cache/mod.rs
+++ b/cli/cache/mod.rs
@@ -2,8 +2,10 @@
use crate::args::CacheSetting;
use crate::errors::get_error_class_name;
+use crate::file_fetcher::FetchNoFollowOptions;
use crate::file_fetcher::FetchOptions;
use crate::file_fetcher::FileFetcher;
+use crate::file_fetcher::FileOrRedirect;
use crate::npm::CliNpmResolver;
use crate::util::fs::atomic_write_file;
@@ -234,29 +236,40 @@ impl Loader for FetchCacher {
LoaderCacheSetting::Only => Some(CacheSetting::Only),
};
file_fetcher
- .fetch_with_options(FetchOptions {
- specifier: &specifier,
- permissions,
- maybe_accept: None,
- maybe_cache_setting: maybe_cache_setting.as_ref(),
- maybe_checksum: options.maybe_checksum,
+ .fetch_no_follow_with_options(FetchNoFollowOptions {
+ fetch_options: FetchOptions {
+ specifier: &specifier,
+ permissions: &permissions,
+ maybe_accept: None,
+ maybe_cache_setting: maybe_cache_setting.as_ref(),
+ },
+ maybe_checksum: options.maybe_checksum.as_ref(),
})
.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,
- content: file.source,
- }))
+ .map(|file_or_redirect| {
+ match file_or_redirect {
+ FileOrRedirect::File(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,
+ content: file.source,
+ }))
+ },
+ FileOrRedirect::Redirect(redirect_specifier) => {
+ Ok(Some(LoadResponse::Redirect {
+ specifier: redirect_specifier,
+ }))
+ },
+ }
})
.unwrap_or_else(|err| {
if let Some(io_err) = err.downcast_ref::<std::io::Error>() {