refactor: upgrade to deno_graph 0.95 (#29575)

This commit is contained in:
David Sherret 2025-06-03 13:52:23 -04:00 committed by GitHub
parent 5f8373309b
commit b42d5906cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 94 additions and 87 deletions

12
Cargo.lock generated
View file

@ -1849,9 +1849,9 @@ dependencies = [
[[package]]
name = "deno_doc"
version = "0.177.0"
version = "0.178.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fe1094f3e84803dac3c613d3bef2a0c6c172962bf9abfabefef12236f1bea1e"
checksum = "52fe9fb2d9e6efed6c19dbceecd14d169023ee61223336e386e0d7aa396249c4"
dependencies = [
"anyhow",
"cfg-if",
@ -1999,9 +1999,9 @@ dependencies = [
[[package]]
name = "deno_graph"
version = "0.94.2"
version = "0.95.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d8943de4ab8cc7a124a0cd75191447f6e8be443ebeb5117416e31cc99ba2045"
checksum = "af557eab0d8abf2c6e7c890d510eccaebe52388924ae4a3e15c8a818c1bbbb90"
dependencies = [
"async-trait",
"capacity_builder",
@ -3573,9 +3573,9 @@ checksum = "31ae425815400e5ed474178a7a22e275a9687086a12ca63ec793ff292d8fdae8"
[[package]]
name = "eszip"
version = "0.91.0"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e626660183f085e9ad81dc48a3954394e3c32d1f203ceedfa364d76984af361a"
checksum = "dccf7977c7fcddecd68242e657b6a7b91047553da6bae3f7d1febb4e92e077b0"
dependencies = [
"anyhow",
"async-trait",

View file

@ -59,9 +59,9 @@ deno_core = { version = "0.350.0" }
deno_cache_dir = "=0.22.1"
deno_config = { version = "=0.55.0", features = ["workspace"] }
deno_doc = "=0.177.0"
deno_doc = "=0.178.0"
deno_error = "=0.6.1"
deno_graph = { version = "=0.94.2", default-features = false }
deno_graph = { version = "=0.95.0", default-features = false }
deno_lint = "=0.76.0"
deno_lockfile = "=0.29.0"
deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
@ -74,7 +74,7 @@ deno_task_shell = "=0.24.0"
deno_terminal = "=0.2.2"
deno_unsync = "0.4.3"
deno_whoami = "0.1.0"
eszip = "=0.91.0"
eszip = "=0.92.0"
denokv_proto = "0.11.0"
denokv_remote = "0.11.0"

View file

@ -1,8 +1,8 @@
// Copyright 2018-2025 the Deno authors. MIT license.
use deno_core::error::AnyError;
use deno_graph::FastCheckCacheItem;
use deno_graph::FastCheckCacheKey;
use deno_graph::fast_check::FastCheckCacheItem;
use deno_graph::fast_check::FastCheckCacheKey;
use deno_runtime::deno_webstorage::rusqlite::params;
use super::cache_db::CacheDB;
@ -52,7 +52,7 @@ impl FastCheckCache {
}
}
impl deno_graph::FastCheckCache for FastCheckCache {
impl deno_graph::fast_check::FastCheckCache for FastCheckCache {
fn get(&self, key: FastCheckCacheKey) -> Option<FastCheckCacheItem> {
Self::ensure_ok(self.inner.get(key))
}
@ -118,9 +118,9 @@ mod test {
use std::collections::BTreeSet;
use deno_ast::ModuleSpecifier;
use deno_graph::FastCheckCache as _;
use deno_graph::FastCheckCacheModuleItem;
use deno_graph::FastCheckCacheModuleItemDiagnostic;
use deno_graph::fast_check::FastCheckCache as _;
use deno_graph::fast_check::FastCheckCacheModuleItem;
use deno_graph::fast_check::FastCheckCacheModuleItemDiagnostic;
use deno_semver::package::PackageNv;
use super::*;

View file

@ -6,8 +6,9 @@ use deno_ast::MediaType;
use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_graph::ModuleInfo;
use deno_graph::ParserModuleAnalyzer;
use deno_error::JsErrorBox;
use deno_graph::analysis::ModuleInfo;
use deno_graph::ast::ParserModuleAnalyzer;
use deno_runtime::deno_webstorage::rusqlite::params;
use super::cache_db::CacheDB;
@ -142,7 +143,7 @@ impl deno_graph::source::ModuleInfoCacher for ModuleInfoCache {
specifier: &ModuleSpecifier,
media_type: MediaType,
source: &Arc<[u8]>,
module_info: &deno_graph::ModuleInfo,
module_info: &deno_graph::analysis::ModuleInfo,
) {
log::debug!("Caching module info for {}", specifier);
let source_hash = CacheDBHash::from_hashable(source);
@ -243,13 +244,15 @@ impl ModuleInfoCacheModuleAnalyzer<'_> {
}
#[async_trait::async_trait(?Send)]
impl deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'_> {
impl deno_graph::analysis::ModuleAnalyzer
for ModuleInfoCacheModuleAnalyzer<'_>
{
async fn analyze(
&self,
specifier: &ModuleSpecifier,
source: Arc<str>,
media_type: MediaType,
) -> Result<ModuleInfo, deno_ast::ParseDiagnostic> {
) -> Result<ModuleInfo, JsErrorBox> {
// attempt to load from the cache
let source_hash = CacheDBHash::from_hashable(&source);
if let Some(info) =
@ -265,7 +268,9 @@ impl deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'_> {
move || {
let parser = cache.as_capturing_parser();
let analyzer = ParserModuleAnalyzer::new(&parser);
analyzer.analyze_sync(&specifier, source, media_type)
analyzer
.analyze_sync(&specifier, source, media_type)
.map_err(JsErrorBox::from_err)
}
})
.await
@ -311,9 +316,9 @@ fn serialize_media_type(media_type: MediaType) -> i64 {
#[cfg(test)]
mod test {
use deno_graph::JsDocImportInfo;
use deno_graph::analysis::JsDocImportInfo;
use deno_graph::analysis::SpecifierWithRange;
use deno_graph::PositionRange;
use deno_graph::SpecifierWithRange;
use super::*;

View file

@ -7,11 +7,11 @@ use deno_ast::MediaType;
use deno_ast::ModuleSpecifier;
use deno_ast::ParsedSource;
use deno_core::parking_lot::Mutex;
use deno_graph::CapturingEsParser;
use deno_graph::DefaultEsParser;
use deno_graph::EsParser;
use deno_graph::ParseOptions;
use deno_graph::ParsedSourceStore;
use deno_graph::ast::CapturingEsParser;
use deno_graph::ast::DefaultEsParser;
use deno_graph::ast::EsParser;
use deno_graph::ast::ParseOptions;
use deno_graph::ast::ParsedSourceStore;
/// Lazily parses JS/TS sources from a `deno_graph::ModuleGraph` given
/// a `ParsedSourceCache`. Note that deno_graph doesn't necessarily cause
@ -120,7 +120,7 @@ impl ParsedSourceCache {
/// and in LSP settings the concurrency will be enforced
/// at a higher level to ensure this will have the latest
/// parsed source.
impl deno_graph::ParsedSourceStore for ParsedSourceCache {
impl deno_graph::ast::ParsedSourceStore for ParsedSourceCache {
fn set_parsed_source(
&self,
specifier: ModuleSpecifier,

View file

@ -1993,7 +1993,7 @@ fn analyze_module(
deno_graph::ModuleError::Parse {
specifier,
mtime: None,
diagnostic: diagnostic.clone(),
diagnostic: Arc::new(JsErrorBox::from_err(diagnostic.clone())),
},
)),
ResolutionMode::Import,

View file

@ -1559,7 +1559,7 @@ impl EszipModuleLoader {
#[cfg(test)]
mod tests {
use deno_graph::ParsedSourceStore;
use deno_graph::ast::ParsedSourceStore;
use super::*;

View file

@ -7,7 +7,7 @@ use deno_ast::MediaType;
use deno_ast::ModuleExportsAndReExports;
use deno_ast::ModuleSpecifier;
use deno_error::JsErrorBox;
use deno_graph::ParsedSourceStore;
use deno_graph::ast::ParsedSourceStore;
use deno_resolver::npm::DenoInNpmPackageChecker;
use deno_runtime::deno_fs;
use node_resolver::analyze::CjsAnalysis as ExtNodeCjsAnalysis;

View file

@ -15,11 +15,11 @@ use deno_doc as doc;
use deno_doc::html::UrlResolveKind;
use deno_doc::html::UsageComposer;
use deno_doc::html::UsageComposerEntry;
use deno_graph::analysis::ModuleAnalyzer;
use deno_graph::ast::EsParser;
use deno_graph::source::NullFileSystem;
use deno_graph::CheckJsOption;
use deno_graph::EsParser;
use deno_graph::GraphKind;
use deno_graph::ModuleAnalyzer;
use deno_graph::ModuleSpecifier;
use deno_lib::version::DENO_VERSION_INFO;
use deno_npm_installer::graph::NpmCachingStrategy;

View file

@ -4,7 +4,7 @@ use std::borrow::Cow;
use deno_ast::diagnostics::Diagnostic;
use deno_ast::ModuleSpecifier;
use deno_graph::FastCheckDiagnostic;
use deno_graph::fast_check::FastCheckDiagnostic;
use deno_graph::ModuleGraph;
use deno_lint::diagnostic::LintDiagnostic;
use deno_lint::diagnostic::LintDiagnosticDetails;

View file

@ -22,7 +22,7 @@ use deno_core::anyhow::anyhow;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
use deno_core::url::Url;
use deno_graph::FastCheckDiagnostic;
use deno_graph::fast_check::FastCheckDiagnostic;
use deno_semver::Version;
use super::unfurl::SpecifierUnfurlerDiagnostic;

View file

@ -117,7 +117,7 @@ impl<TSys: FsMetadata + FsRead> ModuleContentProvider<TSys> {
};
let text_info = parsed_source.text_info_lazy();
let module_info =
deno_graph::ParserModuleAnalyzer::module_info(&parsed_source);
deno_graph::ast::ParserModuleAnalyzer::module_info(&parsed_source);
let mut text_changes = Vec::new();
if media_type.is_jsx() {
self.add_jsx_text_changes(
@ -148,7 +148,7 @@ impl<TSys: FsMetadata + FsRead> ModuleContentProvider<TSys> {
specifier: &Url,
parsed_source: &ParsedSource,
text_info: &SourceTextInfo,
module_info: &deno_graph::ModuleInfo,
module_info: &deno_graph::analysis::ModuleInfo,
diagnostic_reporter: &mut dyn FnMut(SpecifierUnfurlerDiagnostic),
text_changes: &mut Vec<TextChange>,
) -> Result<(), AnyError> {

View file

@ -18,10 +18,10 @@ use deno_ast::SourceTextProvider;
use deno_ast::TextChange;
use deno_core::anyhow;
use deno_core::ModuleSpecifier;
use deno_graph::DependencyDescriptor;
use deno_graph::DynamicTemplatePart;
use deno_graph::StaticDependencyKind;
use deno_graph::TypeScriptReference;
use deno_graph::analysis::DependencyDescriptor;
use deno_graph::analysis::DynamicTemplatePart;
use deno_graph::analysis::StaticDependencyKind;
use deno_graph::analysis::TypeScriptReference;
use deno_package_json::PackageJsonDepValue;
use deno_package_json::PackageJsonDepWorkspaceReq;
use deno_resolver::workspace::MappedResolution;
@ -510,12 +510,12 @@ impl<TSys: FsMetadata + FsRead> SpecifierUnfurler<TSys> {
&self,
module_url: &ModuleSpecifier,
text_info: &SourceTextInfo,
dep: &deno_graph::DynamicDependencyDescriptor,
dep: &deno_graph::analysis::DynamicDependencyDescriptor,
text_changes: &mut Vec<deno_ast::TextChange>,
diagnostic_reporter: &mut dyn FnMut(SpecifierUnfurlerDiagnostic),
) -> bool {
match &dep.argument {
deno_graph::DynamicArgument::String(specifier) => {
deno_graph::analysis::DynamicArgument::String(specifier) => {
let range = to_range(text_info, &dep.argument_range);
let maybe_relative_index =
text_info.text_str()[range.start..range.end].find(specifier);
@ -539,49 +539,51 @@ impl<TSys: FsMetadata + FsRead> SpecifierUnfurler<TSys> {
}
true
}
deno_graph::DynamicArgument::Template(parts) => match parts.first() {
Some(DynamicTemplatePart::String { value: specifier }) => {
// relative doesn't need to be modified
let is_relative =
specifier.starts_with("./") || specifier.starts_with("../");
if is_relative {
return true;
deno_graph::analysis::DynamicArgument::Template(parts) => {
match parts.first() {
Some(DynamicTemplatePart::String { value: specifier }) => {
// relative doesn't need to be modified
let is_relative =
specifier.starts_with("./") || specifier.starts_with("../");
if is_relative {
return true;
}
if !specifier.ends_with('/') {
return false;
}
let unfurled = self.unfurl_specifier_reporting_diagnostic(
module_url,
specifier,
deno_resolver::workspace::ResolutionKind::Execution, // dynamic imports are always execution
text_info,
&dep.argument_range,
diagnostic_reporter,
);
let Some(unfurled) = unfurled else {
return true; // nothing to unfurl
};
let range = to_range(text_info, &dep.argument_range);
let maybe_relative_index =
text_info.text_str()[range.start..].find(specifier);
let Some(relative_index) = maybe_relative_index else {
return false;
};
let start = range.start + relative_index;
text_changes.push(deno_ast::TextChange {
range: start..start + specifier.len(),
new_text: unfurled,
});
true
}
if !specifier.ends_with('/') {
return false;
Some(DynamicTemplatePart::Expr) => {
false // failed analyzing
}
None => {
true // ignore
}
let unfurled = self.unfurl_specifier_reporting_diagnostic(
module_url,
specifier,
deno_resolver::workspace::ResolutionKind::Execution, // dynamic imports are always execution
text_info,
&dep.argument_range,
diagnostic_reporter,
);
let Some(unfurled) = unfurled else {
return true; // nothing to unfurl
};
let range = to_range(text_info, &dep.argument_range);
let maybe_relative_index =
text_info.text_str()[range.start..].find(specifier);
let Some(relative_index) = maybe_relative_index else {
return false;
};
let start = range.start + relative_index;
text_changes.push(deno_ast::TextChange {
range: start..start + specifier.len(),
new_text: unfurled,
});
true
}
Some(DynamicTemplatePart::Expr) => {
false // failed analyzing
}
None => {
true // ignore
}
},
deno_graph::DynamicArgument::Expr => {
}
deno_graph::analysis::DynamicArgument::Expr => {
false // failed analyzing
}
}
@ -591,7 +593,7 @@ impl<TSys: FsMetadata + FsRead> SpecifierUnfurler<TSys> {
&self,
url: &ModuleSpecifier,
parsed_source: &ParsedSource,
module_info: &deno_graph::ModuleInfo,
module_info: &deno_graph::analysis::ModuleInfo,
text_changes: &mut Vec<TextChange>,
diagnostic_reporter: &mut dyn FnMut(SpecifierUnfurlerDiagnostic),
) {
@ -757,7 +759,7 @@ mod tests {
use deno_config::workspace::ResolverWorkspaceJsrPackage;
use deno_core::serde_json::json;
use deno_core::url::Url;
use deno_graph::ParserModuleAnalyzer;
use deno_graph::ast::ParserModuleAnalyzer;
use deno_resolver::workspace::SloppyImportsOptions;
use deno_runtime::deno_node::PackageJson;
use deno_semver::Version;

View file

@ -29,9 +29,9 @@ use deno_core::url::Url;
use deno_core::LocalInspectorSession;
use deno_core::PollEventLoopOptions;
use deno_error::JsErrorBox;
use deno_graph::analysis::SpecifierWithRange;
use deno_graph::Position;
use deno_graph::PositionRange;
use deno_graph::SpecifierWithRange;
use deno_lib::util::result::any_and_jserrorbox_downcast_ref;
use deno_runtime::worker::MainWorker;
use deno_semver::npm::NpmPackageReqReference;