summaryrefslogtreecommitdiff
path: root/cli/tools/vendor
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-02-09 22:00:23 -0500
committerGitHub <noreply@github.com>2023-02-09 22:00:23 -0500
commitb3e88e0681248631b4bf8e4d9cd2e4d2c651f333 (patch)
treecd526bb63ef712e21aef24ff77703727791f48d5 /cli/tools/vendor
parent8da235adced567839912344ba092fb445683485a (diff)
refactor: deno_graph 0.43 upgrade (#17692)
Diffstat (limited to 'cli/tools/vendor')
-rw-r--r--cli/tools/vendor/build.rs29
-rw-r--r--cli/tools/vendor/import_map.rs30
-rw-r--r--cli/tools/vendor/mappings.rs14
-rw-r--r--cli/tools/vendor/test.rs25
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 {