Skip to main content

deps_core/
lib.rs

1//! Core abstractions for deps-lsp.
2//!
3//! This crate provides the foundational traits and utilities used across
4//! all ecosystem-specific implementations (Cargo, npm, PyPI, etc.).
5//!
6//! # Architecture
7//!
8//! deps-core defines:
9//! - **Traits**: `Registry`, `Version`, `Metadata`, `Ecosystem`, `ParseResult`
10//! - **HTTP Cache**: Shared caching layer with ETag/Last-Modified validation
11//! - **Error Types**: Unified error handling across all ecosystems
12
13pub mod cache;
14pub mod completion;
15pub mod deps_dev;
16pub mod ecosystem;
17pub mod ecosystem_registry;
18pub mod error;
19pub mod freshness;
20pub mod fs_probe;
21pub mod github;
22pub mod json_ast;
23pub mod lockfile;
24pub mod lsp_helpers;
25pub mod macros;
26pub mod mtime_cache;
27pub mod net_policy;
28pub mod osv;
29pub mod package;
30pub mod pagination;
31pub mod parser;
32pub mod registry;
33pub mod secret;
34#[cfg(any(test, feature = "test-util"))]
35pub mod test_util;
36pub mod version_matcher;
37
38// Re-export commonly used types
39pub use cache::{BodyLimit, CachedResponse, HttpCache};
40pub use deps_dev::{DepsDevClient, ProvenanceStatus, ScorecardSummary, SupplyChainTrustSignal};
41pub use ecosystem::{Dependency, Ecosystem, EcosystemConfig, EcosystemId, ParseResult};
42pub use ecosystem_registry::EcosystemRegistry;
43pub use error::{DepsError, FetchFailure, Result};
44pub use freshness::{
45    DEFAULT_COOLDOWN_SECS, FreshnessSettings, PublishTime, format_relative_age, is_within_cooldown,
46};
47pub use json_ast::{JsonAst, JsonSection, find_last_prop};
48pub use lockfile::{
49    LockFileProvider, ResolvedPackage, ResolvedPackages, ResolvedSource, read_lockfile_content,
50};
51pub use lsp_helpers::{
52    DependencyOutcome, DependencyOutcomes, DiagnosticMessages, DiagnosticPolicy,
53    DiagnosticSeverities, EcosystemFormatter, HOVER_RECENT_VERSIONS, LineOffsetTable, OsvNaming,
54    PackageNaming, PackageRendering, PackageVersions, RequirementMatcher, RequirementResolution,
55    RequirementStatus, SourcePolicy, UNSATISFIABLE_DIAGNOSTIC_CODE, VersionData,
56    collect_update_all_edits, generate_code_actions as lsp_generate_code_actions,
57    generate_code_lenses as lsp_generate_code_lenses, generate_hover as lsp_generate_hover,
58    generate_inlay_hints as lsp_generate_inlay_hints, is_dot_segment,
59    is_safe_maven_coordinate_segment, is_safe_package_name, is_safe_registry_url,
60    is_safe_version_string, is_same_major_minor, position_in_range, requirement_is_unsatisfiable,
61    warn_rejected_value,
62};
63pub use mtime_cache::{DEFAULT_MAX_CACHED_FILES, MAX_CACHED_FILE_BYTES, MtimeFileCache};
64pub use package::{ConcreteVersion, InvalidPackageName, PackageName, VersionReq};
65pub use parser::{
66    DependencySource, LoadingState, MAX_JSON_NESTING_DEPTH, MAX_TOML_NESTING_DEPTH,
67    MAX_YAML_EXPANDED_BYTES, MAX_YAML_NESTING_DEPTH, check_json_nesting_depth,
68    check_toml_nesting_depth, check_yaml_expansion, check_yaml_nesting_depth, parse_json_checked,
69};
70pub use registry::{
71    Deprecation, Metadata, Registry, RemovalStatus, Version, find_latest_stable,
72    has_default_prerelease_marker, hash_routing_key, is_existence_wildcard,
73    is_existence_wildcard_str, select_latest_for_existence,
74};
75pub use version_matcher::{
76    Pep440Matcher, SemverMatcher, VersionRequirementMatcher, extract_pypi_min_version,
77    normalize_and_parse_version, normalize_operator_spacing,
78};