Skip to main content

DenoEcosystem

Struct DenoEcosystem 

Source
pub struct DenoEcosystem { /* private fields */ }
Expand description

Deno ecosystem implementation.

Provides LSP functionality for deno.json/deno.jsonc files, including:

  • Dependency parsing with position tracking (imports map only, D8)
  • Version information from the JSR and npm registries, dispatched by DenoRegistry (D3)
  • Inlay hints, hover, code actions, and diagnostics via the shared deps-core handlers

No lock file support in the MVP (D9): deno.lock resolved-version parsing is a follow-up increment.

Implementations§

Source§

impl DenoEcosystem

Source

pub fn new(cache: Arc<HttpCache>) -> DenoEcosystem

Creates a new Deno ecosystem with the given HTTP cache.

The same cache backs both halves of the registry facade (M1), deduping plain cached GETs between package.json and deno.json for the same npm package. This does not extend to npm’s separate freshness-path packument fetch, which bypasses HttpCache and is memoized per NpmRegistry instance — see DenoRegistry::new’s docs for the full caveat (N4). Use Self::with_npm to avoid it.

Source

pub fn with_npm(cache: Arc<HttpCache>, npm: NpmRegistry) -> DenoEcosystem

Creates a new Deno ecosystem sharing an existing NpmRegistry instance for its npm:-scheme half, instead of building a private one (N4/#312).

deps-lsp’s ecosystem registration uses this when both the npm and deno features are enabled, so a package appearing in both package.json and deno.json shares one freshness-path publish-time cache. See DenoRegistry::with_npm for what this dedupes.

Trait Implementations§

Source§

impl Ecosystem for DenoEcosystem

Source§

fn id(&self) -> &'static str

Unique identifier (e.g., “cargo”, “npm”, “pypi”) Read more
Source§

fn display_name(&self) -> &'static str

Human-readable name (e.g., “Cargo (Rust)”, “npm (JavaScript)”) Read more
Source§

fn manifest_filenames(&self) -> &[&'static str]

Manifest filenames this ecosystem handles (e.g., [“Cargo.toml”]) Read more
Source§

fn parse_manifest<'a>( &'a self, content: &'a str, uri: &'a Uri, ) -> Pin<Box<dyn Future<Output = Result<Box<dyn ParseResult>, DepsError>> + Send + 'a>>

Parse a manifest file and return parsed result Read more
Source§

fn registry(&self) -> Arc<dyn Registry>

Get the registry client for this ecosystem Read more
Source§

fn formatter(&self) -> &dyn EcosystemFormatter

Get the ecosystem-specific formatter for LSP response generation. Read more
Source§

fn generate_completions<'a>( &'a self, parse_result: &'a dyn ParseResult, position: Position, content: &'a str, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Completions> + Send + 'a>>

Generate completions for a position. Read more
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Support for downcasting to concrete ecosystem type Read more
Source§

fn manifest_extensions(&self) -> &[&'static str]

File extensions this ecosystem handles when the manifest basename is not fixed (e.g. [".csproj", ".fsproj"] for NuGet project files). Read more
Source§

fn manifest_patterns(&self) -> &[&'static str]

Basename glob patterns this ecosystem handles, each containing exactly one * wildcard (e.g. ["requirements*.txt"]). Read more
Source§

fn manifest_directory_patterns(&self) -> &[(&'static str, &'static str)]

(directory_path, file_suffix) pairs identifying a file solely by its containing directory path and suffix. directory_path may be a single segment (e.g. [("requirements", ".txt")] for Python’s requirements/base.txt split-file layout) or multiple /-joined segments (e.g. [(".github/workflows", ".yml")] for GitHub Actions workflow files) — either way it is matched against the tail of the file’s directory path on segment boundaries, not just the immediate parent, so a multi-segment pattern matches regardless of how many ancestor directories precede it. Used when the basename alone carries no ecosystem signal. Read more
Source§

fn lockfile_filenames(&self) -> &[&'static str]

Lock file filenames this ecosystem uses (e.g., [“Cargo.lock”]) Read more
Source§

fn watched_config_filenames(&self) -> &[&'static str]

Non-lockfile config filenames this ecosystem resolves during Self::parse_manifest (e.g. ["pnpm-workspace.yaml", ".npmrc"] for npm’s catalog and registry resolution), whose values end up baked into a manifest’s ParseResult rather than looked up separately the way a Self::lockfile_provider is. Read more
Source§

fn lockfile_provider(&self) -> Option<Arc<dyn LockFileProvider>>

Get the lock file provider for this ecosystem. Read more
Source§

fn generate_inlay_hints<'a>( &'a self, parse_result: &'a dyn ParseResult, versions: VersionData<'a>, loading_state: LoadingState, config: &'a EcosystemConfig, ) -> Pin<Box<dyn Future<Output = Vec<InlayHint>> + Send + 'a>>

Generate inlay hints for the document. Read more
Source§

fn generate_hover<'a>( &'a self, parse_result: &'a dyn ParseResult, position: Position, versions: VersionData<'a>, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Option<Hover>> + Send + 'a>>

Generate hover information for a position. Read more
Source§

fn generate_code_actions<'a>( &'a self, parse_result: &'a dyn ParseResult, position: Position, uri: &'a Uri, versions: VersionData<'a>, content: &'a str, ) -> Pin<Box<dyn Future<Output = Vec<CodeAction>> + Send + 'a>>

Generate code actions for a position. Read more
Source§

fn generate_diagnostics<'a>( &'a self, parse_result: &'a dyn ParseResult, versions: VersionData<'a>, uri: &'a Uri, freshness: FreshnessSettings, severities: DiagnosticSeverities, ) -> Pin<Box<dyn Future<Output = Vec<Diagnostic>> + Send + 'a>>

Generate diagnostics for the document. Read more
Generate textDocument/documentLink targets for the document. Read more
Source§

fn generate_code_lenses<'a>( &'a self, parse_result: &'a dyn ParseResult, content: &'a str, versions: VersionData<'a>, uri: &'a Uri, command_id: &'a str, ) -> Pin<Box<dyn Future<Output = Vec<CodeLens>> + Send + 'a>>

Generate the “Update N outdated dependencies” code lens for the document. Read more
Source§

fn package_search_is_incomplete(&self) -> bool

Whether this ecosystem’s package-name search may return a truncated view of a larger candidate set (see e.g. PypiRegistry::search’s doc comment). Read more
Source§

impl Sealed for DenoEcosystem

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more