summaryrefslogtreecommitdiff
path: root/cli/tools/vendor/import_map.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-08-22 12:14:59 -0400
committerGitHub <noreply@github.com>2022-08-22 12:14:59 -0400
commit7a1a082876298a4c9e37237074ea62942180d083 (patch)
tree690b46889987a9f576a1b0601a322141b51b0660 /cli/tools/vendor/import_map.rs
parentc66386dbd20b735161017a239c6af013da1f1718 (diff)
perf: cache swc dependency analysis and don't hold onto `ParsedSource`s in memory (#15502)
Diffstat (limited to 'cli/tools/vendor/import_map.rs')
-rw-r--r--cli/tools/vendor/import_map.rs30
1 files changed, 19 insertions, 11 deletions
diff --git a/cli/tools/vendor/import_map.rs b/cli/tools/vendor/import_map.rs
index 7e72693a1..cc759b859 100644
--- a/cli/tools/vendor/import_map.rs
+++ b/cli/tools/vendor/import_map.rs
@@ -3,6 +3,7 @@
use deno_ast::LineAndColumnIndex;
use deno_ast::ModuleSpecifier;
use deno_ast::SourceTextInfo;
+use deno_core::error::AnyError;
use deno_graph::Module;
use deno_graph::ModuleGraph;
use deno_graph::Position;
@@ -13,6 +14,8 @@ use import_map::SpecifierMap;
use indexmap::IndexMap;
use log::warn;
+use crate::cache::ParsedSourceCache;
+
use super::mappings::Mappings;
use super::specifiers::is_remote_specifier;
use super::specifiers::is_remote_specifier_text;
@@ -179,9 +182,10 @@ pub fn build_import_map(
modules: &[&Module],
mappings: &Mappings,
original_import_map: Option<&ImportMap>,
-) -> String {
+ parsed_source_cache: &ParsedSourceCache,
+) -> Result<String, AnyError> {
let mut builder = ImportMapBuilder::new(base_dir, mappings);
- visit_modules(graph, modules, mappings, &mut builder);
+ visit_modules(graph, modules, mappings, &mut builder, parsed_source_cache)?;
for base_specifier in mappings.base_specifiers() {
builder
@@ -189,7 +193,7 @@ pub fn build_import_map(
.add(base_specifier.to_string(), base_specifier);
}
- builder.into_import_map(original_import_map).to_json()
+ Ok(builder.into_import_map(original_import_map).to_json())
}
fn visit_modules(
@@ -197,12 +201,14 @@ fn visit_modules(
modules: &[&Module],
mappings: &Mappings,
import_map: &mut ImportMapBuilder,
-) {
+ parsed_source_cache: &ParsedSourceCache,
+) -> Result<(), AnyError> {
for module in modules {
- let text_info = match &module.maybe_parsed_source {
- Some(source) => source.text_info(),
- None => continue,
- };
+ let text_info =
+ match parsed_source_cache.get_parsed_source_from_module(module)? {
+ Some(source) => source.text_info().clone(),
+ None => continue,
+ };
let source_text = match &module.maybe_source {
Some(source) => source,
None => continue,
@@ -215,7 +221,7 @@ fn visit_modules(
import_map,
&module.specifier,
mappings,
- text_info,
+ &text_info,
source_text,
);
visit_maybe_resolved(
@@ -224,7 +230,7 @@ fn visit_modules(
import_map,
&module.specifier,
mappings,
- text_info,
+ &text_info,
source_text,
);
}
@@ -236,11 +242,13 @@ fn visit_modules(
import_map,
&module.specifier,
mappings,
- text_info,
+ &text_info,
source_text,
);
}
}
+
+ Ok(())
}
fn visit_maybe_resolved(