diff options
| author | David Sherret <dsherret@users.noreply.github.com> | 2023-02-09 22:00:23 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-09 22:00:23 -0500 |
| commit | b3e88e0681248631b4bf8e4d9cd2e4d2c651f333 (patch) | |
| tree | cd526bb63ef712e21aef24ff77703727791f48d5 /cli/tools/vendor | |
| parent | 8da235adced567839912344ba092fb445683485a (diff) | |
refactor: deno_graph 0.43 upgrade (#17692)
Diffstat (limited to 'cli/tools/vendor')
| -rw-r--r-- | cli/tools/vendor/build.rs | 29 | ||||
| -rw-r--r-- | cli/tools/vendor/import_map.rs | 30 | ||||
| -rw-r--r-- | cli/tools/vendor/mappings.rs | 14 | ||||
| -rw-r--r-- | cli/tools/vendor/test.rs | 25 |
4 files changed, 55 insertions, 43 deletions
diff --git a/cli/tools/vendor/build.rs b/cli/tools/vendor/build.rs index f418670b3..f3cc01444 100644 --- a/cli/tools/vendor/build.rs +++ b/cli/tools/vendor/build.rs @@ -18,6 +18,7 @@ use import_map::SpecifierMap; use crate::args::Lockfile; use crate::cache::ParsedSourceCache; +use crate::graph_util; use crate::graph_util::graph_lock_or_exit; use super::analyze::has_default_export; @@ -72,18 +73,22 @@ pub fn build( validate_original_import_map(original_im, &output_dir_specifier)?; } - // build the graph + // check the lockfile if let Some(lockfile) = maybe_lockfile { graph_lock_or_exit(&graph, &mut lockfile.lock()); } - let mut graph_errors = graph.errors().peekable(); - if graph_errors.peek().is_some() { - for err in graph_errors { - log::error!("{}", err); - } - bail!("failed vendoring"); - } + // surface any errors + graph_util::graph_valid( + &graph, + &graph.roots, + deno_graph::WalkOptions { + // surface all errors + check_js: true, + follow_dynamic: true, + follow_type_only: true, + }, + )?; // figure out how to map remote modules to local let all_modules = graph.modules().collect::<Vec<_>>(); @@ -1119,7 +1124,13 @@ mod test { .err() .unwrap(); - assert_eq!(err.to_string(), "failed vendoring"); + assert_eq!( + err.to_string(), + concat!( + "500 Internal Server Error\n", + " at https://localhost/mod.ts:1:14" + ) + ); } fn to_file_vec(items: &[(&str, &str)]) -> Vec<(String, String)> { diff --git a/cli/tools/vendor/import_map.rs b/cli/tools/vendor/import_map.rs index 0897cbcf6..753ac52e5 100644 --- a/cli/tools/vendor/import_map.rs +++ b/cli/tools/vendor/import_map.rs @@ -9,7 +9,7 @@ use deno_graph::Module; use deno_graph::ModuleGraph; use deno_graph::Position; use deno_graph::Range; -use deno_graph::Resolved; +use deno_graph::Resolution; use import_map::ImportMap; use import_map::SpecifierMap; use indexmap::IndexMap; @@ -221,7 +221,7 @@ fn visit_modules( }; for dep in module.dependencies.values() { - visit_maybe_resolved( + visit_resolution( &dep.maybe_code, graph, import_map, @@ -230,7 +230,7 @@ fn visit_modules( &text_info, source_text, ); - visit_maybe_resolved( + visit_resolution( &dep.maybe_type, graph, import_map, @@ -241,9 +241,9 @@ fn visit_modules( ); } - if let Some((_, maybe_resolved)) = &module.maybe_types_dependency { - visit_maybe_resolved( - maybe_resolved, + if let Some(types_dep) = &module.maybe_types_dependency { + visit_resolution( + &types_dep.dependency, graph, import_map, &module.specifier, @@ -257,8 +257,8 @@ fn visit_modules( Ok(()) } -fn visit_maybe_resolved( - maybe_resolved: &Resolved, +fn visit_resolution( + resolution: &Resolution, graph: &ModuleGraph, import_map: &mut ImportMapBuilder, referrer: &ModuleSpecifier, @@ -266,15 +266,17 @@ fn visit_maybe_resolved( text_info: &SourceTextInfo, source_text: &str, ) { - if let Resolved::Ok { - specifier, range, .. - } = maybe_resolved - { - let text = text_from_range(text_info, source_text, range); + if let Some(resolved) = resolution.ok() { + let text = text_from_range(text_info, source_text, &resolved.range); // if the text is empty then it's probably an x-TypeScript-types if !text.is_empty() { handle_dep_specifier( - text, specifier, graph, import_map, referrer, mappings, + text, + &resolved.specifier, + graph, + import_map, + referrer, + mappings, ); } } diff --git a/cli/tools/vendor/mappings.rs b/cli/tools/vendor/mappings.rs index 8cf6388d2..399002ea3 100644 --- a/cli/tools/vendor/mappings.rs +++ b/cli/tools/vendor/mappings.rs @@ -11,7 +11,6 @@ use deno_core::error::AnyError; use deno_graph::Module; use deno_graph::ModuleGraph; use deno_graph::Position; -use deno_graph::Resolved; use crate::util::path::path_with_stem_suffix; use crate::util::path::relative_specifier; @@ -76,13 +75,12 @@ impl Mappings { // resolve all the "proxy" paths to use for when an x-typescript-types header is specified for module in remote_modules { - if let Some(( - _, - Resolved::Ok { - specifier, range, .. - }, - )) = &module.maybe_types_dependency + if let Some(resolved) = &module + .maybe_types_dependency + .as_ref() + .and_then(|d| d.dependency.ok()) { + let range = &resolved.range; // hack to tell if it's an x-typescript-types header let is_ts_types_header = range.start == Position::zeroed() && range.end == Position::zeroed(); @@ -96,7 +94,7 @@ impl Mappings { module.specifier.clone(), ProxiedModule { output_path: proxied_path, - declaration_specifier: specifier.clone(), + declaration_specifier: resolved.specifier.clone(), }, ); } diff --git a/cli/tools/vendor/test.rs b/cli/tools/vendor/test.rs index a24fa1e4f..e5713a54c 100644 --- a/cli/tools/vendor/test.rs +++ b/cli/tools/vendor/test.rs @@ -262,18 +262,19 @@ async fn build_test_graph( ) -> ModuleGraph { let resolver = original_import_map.map(|m| CliResolver::with_import_map(Arc::new(m))); - deno_graph::create_graph( - roots, - &mut loader, - deno_graph::GraphOptions { - is_dynamic: false, - imports: None, - resolver: resolver.as_ref().map(|r| r.as_graph_resolver()), - module_analyzer: Some(analyzer), - reporter: None, - }, - ) - .await + let mut graph = ModuleGraph::default(); + graph + .build( + roots, + &mut loader, + deno_graph::BuildOptions { + resolver: resolver.as_ref().map(|r| r.as_graph_resolver()), + module_analyzer: Some(analyzer), + ..Default::default() + }, + ) + .await; + graph } fn make_path(text: &str) -> PathBuf { |
