summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/import_map.rs31
-rw-r--r--cli/args/mod.rs44
2 files changed, 42 insertions, 33 deletions
diff --git a/cli/args/import_map.rs b/cli/args/import_map.rs
index 200336c43..bac31c080 100644
--- a/cli/args/import_map.rs
+++ b/cli/args/import_map.rs
@@ -3,11 +3,40 @@
use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_core::url::Url;
+use deno_runtime::permissions::PermissionsContainer;
use import_map::ImportMap;
use import_map::ImportMapDiagnostic;
use log::warn;
-pub fn import_map_from_value(
+use super::ConfigFile;
+use crate::file_fetcher::get_source_from_data_url;
+use crate::file_fetcher::FileFetcher;
+
+pub async fn resolve_import_map_from_specifier(
+ specifier: &Url,
+ maybe_config_file: Option<&ConfigFile>,
+ file_fetcher: &FileFetcher,
+) -> Result<ImportMap, AnyError> {
+ let value: serde_json::Value = if specifier.scheme() == "data" {
+ serde_json::from_str(&get_source_from_data_url(specifier)?.0)?
+ } else {
+ let import_map_config = maybe_config_file
+ .as_ref()
+ .filter(|c| c.specifier == *specifier);
+ match import_map_config {
+ Some(config) => config.to_import_map_value(),
+ None => {
+ let file = file_fetcher
+ .fetch(specifier, PermissionsContainer::allow_all())
+ .await?;
+ serde_json::from_str(&file.source)?
+ }
+ }
+ };
+ import_map_from_value(specifier, value)
+}
+
+fn import_map_from_value(
specifier: &Url,
json_value: serde_json::Value,
) -> Result<ImportMap, AnyError> {
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 1bf294018..5cb29cab2 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -6,7 +6,7 @@ mod flags_allow_net;
mod import_map;
mod lockfile;
-pub use self::import_map::import_map_from_value;
+pub use self::import_map::resolve_import_map_from_specifier;
use ::import_map::ImportMap;
pub use config_file::BenchConfig;
pub use config_file::CompilerOptions;
@@ -21,8 +21,6 @@ pub use config_file::TsConfig;
pub use config_file::TsConfigForEmit;
pub use config_file::TsConfigType;
pub use config_file::TsTypeLib;
-use deno_core::serde_json;
-use deno_runtime::permissions::PermissionsContainer;
pub use flags::*;
pub use lockfile::Lockfile;
pub use lockfile::LockfileError;
@@ -574,35 +572,17 @@ impl CliOptions {
Some(specifier) => specifier,
None => return Ok(None),
};
- self
- .resolve_import_map_from_specifier(&import_map_specifier, file_fetcher)
- .await
- .context(format!(
- "Unable to load '{}' import map",
- import_map_specifier
- ))
- .map(Some)
- }
-
- async fn resolve_import_map_from_specifier(
- &self,
- import_map_specifier: &ModuleSpecifier,
- file_fetcher: &FileFetcher,
- ) -> Result<ImportMap, AnyError> {
- let import_map_config = self
- .get_maybe_config_file()
- .as_ref()
- .filter(|c| c.specifier == *import_map_specifier);
- let value: serde_json::Value = match import_map_config {
- Some(config) => config.to_import_map_value(),
- None => {
- let file = file_fetcher
- .fetch(import_map_specifier, PermissionsContainer::allow_all())
- .await?;
- serde_json::from_str(&file.source)?
- }
- };
- import_map_from_value(import_map_specifier, value)
+ resolve_import_map_from_specifier(
+ &import_map_specifier,
+ self.get_maybe_config_file().as_ref(),
+ file_fetcher,
+ )
+ .await
+ .context(format!(
+ "Unable to load '{}' import map",
+ import_map_specifier
+ ))
+ .map(Some)
}
/// Overrides the import map specifier to use.