summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-01-13 18:17:56 -0500
committerGitHub <noreply@github.com>2022-01-13 18:17:56 -0500
commiteda6e58520276786bd87e411d0284eb56d9686a6 (patch)
tree1e60511f3e0425a15490acccab23fe87a013f075
parent9975ede773f5bf2f7f121ba2f3354592ed3be520 (diff)
refactor: upgrade to import_map v0.6 (#13368)
-rw-r--r--Cargo.lock4
-rw-r--r--cli/Cargo.toml2
-rw-r--r--cli/lsp/language_server.rs8
-rw-r--r--cli/ops/runtime_compiler.rs10
-rw-r--r--cli/proc_state.rs22
-rw-r--r--cli/resolver.rs2
-rw-r--r--cli/tools/doc.rs2
7 files changed, 35 insertions, 15 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 1b0105ad5..f3be74712 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1907,9 +1907,9 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed"
[[package]]
name = "import_map"
-version = "0.4.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91db0bc4eff39727c95caa6e70268df077d7ebde57c1454a9cb8ddeb76b9689"
+checksum = "7f64f821df8ee00a0fba2dde6296af519eff7d823542b057c1b8c40ca1d58f4c"
dependencies = [
"indexmap",
"log",
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 25f9e1de5..b5192ed88 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -61,7 +61,7 @@ encoding_rs = "=0.8.29"
env_logger = "=0.8.4"
fancy-regex = "=0.7.1"
http = "=0.2.4"
-import_map = "=0.4.0"
+import_map = "=0.6.0"
jsonc-parser = { version = "=0.17.1", features = ["serde"] }
libc = "=0.2.106"
log = { version = "=0.4.14", features = ["serde"] }
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 0fec7ff80..a74db1175 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -62,6 +62,7 @@ use crate::file_fetcher::get_source_from_data_url;
use crate::fs_util;
use crate::logger;
use crate::lsp::logging::lsp_log;
+use crate::proc_state::import_map_from_text;
use crate::tools::fmt::format_file;
use crate::tools::fmt::format_parsed_source;
@@ -482,12 +483,9 @@ impl Inner {
)
})?
};
- let import_map = Arc::new(ImportMap::from_json(
- &import_map_url.to_string(),
- &import_map_json,
- )?);
+ let import_map = import_map_from_text(&import_map_url, &import_map_json)?;
self.maybe_import_map_uri = Some(import_map_url);
- self.maybe_import_map = Some(import_map);
+ self.maybe_import_map = Some(Arc::new(import_map));
} else {
self.maybe_import_map = None;
}
diff --git a/cli/ops/runtime_compiler.rs b/cli/ops/runtime_compiler.rs
index 3d079e2fb..548b20ead 100644
--- a/cli/ops/runtime_compiler.rs
+++ b/cli/ops/runtime_compiler.rs
@@ -7,6 +7,7 @@ use crate::emit;
use crate::errors::get_error_class_name;
use crate::flags;
use crate::graph_util::graph_valid;
+use crate::proc_state::import_map_from_text;
use crate::proc_state::ProcState;
use crate::resolver::ImportMapResolver;
use crate::resolver::JsxResolver;
@@ -24,7 +25,6 @@ use deno_core::Extension;
use deno_core::ModuleSpecifier;
use deno_core::OpState;
use deno_runtime::permissions::Permissions;
-use import_map::ImportMap;
use serde::Deserialize;
use serde::Serialize;
use std::cell::RefCell;
@@ -174,8 +174,8 @@ async fn op_emit(
.with_context(|| {
format!("Bad URL (\"{}\") for import map.", import_map_str)
})?;
- let import_map = if let Some(value) = args.import_map {
- ImportMap::from_json(import_map_specifier.as_str(), &value.to_string())?
+ let import_map_source = if let Some(value) = args.import_map {
+ Arc::new(value.to_string())
} else {
let file = ps
.file_fetcher
@@ -187,8 +187,10 @@ async fn op_emit(
import_map_specifier, e
))
})?;
- ImportMap::from_json(import_map_specifier.as_str(), &file.source)?
+ file.source
};
+ let import_map =
+ import_map_from_text(&import_map_specifier, &import_map_source)?;
Some(ImportMapResolver::new(Arc::new(import_map)))
} else if args.import_map.is_some() {
return Err(generic_error("An importMap was specified, but no importMapPath was provided, which is required."));
diff --git a/cli/proc_state.rs b/cli/proc_state.rs
index 253878872..6e8507810 100644
--- a/cli/proc_state.rs
+++ b/cli/proc_state.rs
@@ -51,6 +51,7 @@ use deno_runtime::deno_web::BlobStore;
use deno_runtime::inspector_server::InspectorServer;
use deno_runtime::permissions::Permissions;
use import_map::ImportMap;
+use log::warn;
use std::collections::HashSet;
use std::env;
use std::fs::File;
@@ -230,7 +231,7 @@ impl ProcState {
import_map_specifier
))?;
let import_map =
- ImportMap::from_json(import_map_specifier.as_str(), &file.source)?;
+ import_map_from_text(&import_map_specifier, &file.source)?;
Some(Arc::new(import_map))
}
};
@@ -676,6 +677,25 @@ impl SourceMapGetter for ProcState {
}
}
+pub fn import_map_from_text(
+ specifier: &Url,
+ json_text: &str,
+) -> Result<ImportMap, AnyError> {
+ let result = ImportMap::from_json_with_diagnostics(specifier, json_text)?;
+ if !result.diagnostics.is_empty() {
+ warn!(
+ "Import map diagnostics:\n{}",
+ result
+ .diagnostics
+ .into_iter()
+ .map(|d| format!(" - {}", d))
+ .collect::<Vec<_>>()
+ .join("\n")
+ )
+ }
+ Ok(result.import_map)
+}
+
fn source_map_from_code(code: String) -> Option<Vec<u8>> {
let lines: Vec<&str> = code.split('\n').collect();
if let Some(last_line) = lines.last() {
diff --git a/cli/resolver.rs b/cli/resolver.rs
index 6143ac6a0..f040e1e70 100644
--- a/cli/resolver.rs
+++ b/cli/resolver.rs
@@ -31,7 +31,7 @@ impl Resolver for ImportMapResolver {
) -> Result<ModuleSpecifier, AnyError> {
self
.0
- .resolve(specifier, referrer.as_str())
+ .resolve(specifier, referrer)
.map_err(|err| err.into())
}
}
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs
index 1ef2e29eb..e52693b16 100644
--- a/cli/tools/doc.rs
+++ b/cli/tools/doc.rs
@@ -50,7 +50,7 @@ impl Resolver for DocResolver {
) -> Result<ModuleSpecifier, AnyError> {
if let Some(import_map) = &self.import_map {
return import_map
- .resolve(specifier, referrer.as_str())
+ .resolve(specifier, referrer)
.map_err(AnyError::from);
}