diff options
Diffstat (limited to 'cli/args/import_map.rs')
-rw-r--r-- | cli/args/import_map.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/cli/args/import_map.rs b/cli/args/import_map.rs new file mode 100644 index 000000000..200336c43 --- /dev/null +++ b/cli/args/import_map.rs @@ -0,0 +1,35 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. + +use deno_core::error::AnyError; +use deno_core::serde_json; +use deno_core::url::Url; +use import_map::ImportMap; +use import_map::ImportMapDiagnostic; +use log::warn; + +pub fn import_map_from_value( + specifier: &Url, + json_value: serde_json::Value, +) -> Result<ImportMap, AnyError> { + debug_assert!( + !specifier.as_str().contains("../"), + "Import map specifier incorrectly contained ../: {}", + specifier.as_str() + ); + let result = import_map::parse_from_value(specifier, json_value)?; + print_import_map_diagnostics(&result.diagnostics); + Ok(result.import_map) +} + +fn print_import_map_diagnostics(diagnostics: &[ImportMapDiagnostic]) { + if !diagnostics.is_empty() { + warn!( + "Import map diagnostics:\n{}", + diagnostics + .iter() + .map(|d| format!(" - {}", d)) + .collect::<Vec<_>>() + .join("\n") + ); + } +} |