summaryrefslogtreecommitdiff
path: root/cli/lsp/documents.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r--cli/lsp/documents.rs42
1 files changed, 24 insertions, 18 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index 611d1d07f..c758d341b 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -13,9 +13,6 @@ use crate::args::ConfigFile;
use crate::args::JsxImportSourceConfig;
use crate::cache::FastInsecureHasher;
use crate::cache::HttpCache;
-use crate::file_fetcher::get_source_from_bytes;
-use crate::file_fetcher::get_source_from_data_url;
-use crate::file_fetcher::map_content_type;
use crate::lsp::logging::lsp_warn;
use crate::npm::CliNpmResolver;
use crate::resolver::CliGraphResolver;
@@ -24,7 +21,6 @@ use crate::resolver::SloppyImportsFsEntry;
use crate::resolver::SloppyImportsResolution;
use crate::resolver::SloppyImportsResolver;
use crate::util::path::specifier_to_file_path;
-use crate::util::text_encoding;
use deno_ast::MediaType;
use deno_ast::ParsedSource;
@@ -278,7 +274,7 @@ impl DocumentDependencies {
}
}
- pub fn from_module(module: &deno_graph::EsmModule) -> Self {
+ pub fn from_module(module: &deno_graph::JsModule) -> Self {
Self {
deps: module.dependencies.clone(),
maybe_types_dependency: module.maybe_types_dependency.clone(),
@@ -286,7 +282,7 @@ impl DocumentDependencies {
}
}
-type ModuleResult = Result<deno_graph::EsmModule, deno_graph::ModuleGraphError>;
+type ModuleResult = Result<deno_graph::JsModule, deno_graph::ModuleGraphError>;
type ParsedSourceResult = Result<ParsedSource, deno_ast::Diagnostic>;
#[derive(Debug)]
@@ -593,7 +589,7 @@ impl Document {
self.0.maybe_lsp_version
}
- fn maybe_esm_module(&self) -> Option<&ModuleResult> {
+ fn maybe_js_module(&self) -> Option<&ModuleResult> {
self.0.maybe_module.as_ref()
}
@@ -632,7 +628,7 @@ impl Document {
&self,
position: &lsp::Position,
) -> Option<(String, deno_graph::Dependency, deno_graph::Range)> {
- let module = self.maybe_esm_module()?.as_ref().ok()?;
+ let module = self.maybe_js_module()?.as_ref().ok()?;
let position = deno_graph::Position {
line: position.line as usize,
character: position.character as usize,
@@ -798,9 +794,8 @@ impl FileSystemDocuments {
let path = specifier_to_file_path(specifier).ok()?;
let fs_version = calculate_fs_version_at_path(&path)?;
let bytes = fs::read(path).ok()?;
- let maybe_charset =
- Some(text_encoding::detect_charset(&bytes).to_string());
- let content = get_source_from_bytes(bytes, maybe_charset).ok()?;
+ let content =
+ deno_graph::source::decode_owned_source(specifier, bytes, None).ok()?;
Document::new(
specifier.clone(),
fs_version,
@@ -810,7 +805,10 @@ impl FileSystemDocuments {
npm_resolver,
)
} else if specifier.scheme() == "data" {
- let (source, _) = get_source_from_data_url(specifier).ok()?;
+ let source = deno_graph::source::RawDataUrl::parse(specifier)
+ .ok()?
+ .decode()
+ .ok()?;
Document::new(
specifier.clone(),
"1".to_string(),
@@ -824,10 +822,18 @@ impl FileSystemDocuments {
let cache_key = cache.cache_item_key(specifier).ok()?;
let bytes = cache.read_file_bytes(&cache_key).ok()??;
let specifier_metadata = cache.read_metadata(&cache_key).ok()??;
- let maybe_content_type = specifier_metadata.headers.get("content-type");
- let (_, maybe_charset) = map_content_type(specifier, maybe_content_type);
+ let (_, maybe_charset) =
+ deno_graph::source::resolve_media_type_and_charset_from_headers(
+ specifier,
+ Some(&specifier_metadata.headers),
+ );
+ let content = deno_graph::source::decode_owned_source(
+ specifier,
+ bytes,
+ maybe_charset,
+ )
+ .ok()?;
let maybe_headers = Some(specifier_metadata.headers);
- let content = get_source_from_bytes(bytes, maybe_charset).ok()?;
Document::new(
specifier.clone(),
fs_version,
@@ -1681,7 +1687,7 @@ impl Documents {
return node_resolve_npm_req_ref(npm_ref, maybe_npm, referrer);
}
let doc = self.get(specifier)?;
- let maybe_module = doc.maybe_esm_module().and_then(|r| r.as_ref().ok());
+ let maybe_module = doc.maybe_js_module().and_then(|r| r.as_ref().ok());
let maybe_types_dependency = maybe_module
.and_then(|m| m.maybe_types_dependency.as_ref().map(|d| &d.dependency));
if let Some(specifier) =
@@ -1752,7 +1758,7 @@ impl<'a> OpenDocumentsGraphLoader<'a> {
if let Some(doc) = self.open_docs.get(specifier) {
return Some(
future::ready(Ok(Some(deno_graph::source::LoadResponse::Module {
- content: doc.content(),
+ content: Arc::from(doc.content()),
specifier: doc.specifier().clone(),
maybe_headers: None,
})))
@@ -1816,7 +1822,7 @@ impl<'a> deno_graph::source::Loader for OpenDocumentsGraphLoader<'a> {
fn cache_module_info(
&mut self,
specifier: &deno_ast::ModuleSpecifier,
- source: &str,
+ source: &Arc<[u8]>,
module_info: &deno_graph::ModuleInfo,
) {
self