summaryrefslogtreecommitdiff
path: root/cli/lsp/sources.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/sources.rs')
-rw-r--r--cli/lsp/sources.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/cli/lsp/sources.rs b/cli/lsp/sources.rs
index c6ab87f21..5ef16a876 100644
--- a/cli/lsp/sources.rs
+++ b/cli/lsp/sources.rs
@@ -10,16 +10,36 @@ use crate::http_cache;
use crate::http_cache::HttpCache;
use crate::import_map::ImportMap;
use crate::media_type::MediaType;
+use crate::module_graph::GraphBuilder;
+use crate::program_state::ProgramState;
+use crate::specifier_handler::FetchHandler;
use crate::text_encoding;
+use crate::Permissions;
+use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_core::ModuleSpecifier;
use std::collections::HashMap;
use std::fs;
use std::path::Path;
use std::path::PathBuf;
+use std::sync::Arc;
+use std::sync::Mutex;
use std::time::SystemTime;
+pub async fn cache(
+ specifier: ModuleSpecifier,
+ maybe_import_map: Option<ImportMap>,
+) -> Result<(), AnyError> {
+ let program_state = Arc::new(ProgramState::new(Default::default())?);
+ let handler = Arc::new(Mutex::new(FetchHandler::new(
+ &program_state,
+ Permissions::allow_all(),
+ )?));
+ let mut builder = GraphBuilder::new(handler, maybe_import_map, None);
+ builder.add(&specifier, false).await
+}
+
#[derive(Debug, Clone, Default)]
struct Metadata {
dependencies: Option<HashMap<String, analysis::Dependency>>,