* feat(datasource): add GraalVM version datasource with support for JDK and JRE releases * feat(datasource): add GraalVM version datasource with support for JDK and JRE releases * feat(datasource): add GraalVM version datasource with support for JDK and JRE releases * feat(datasource): add GraalVM version datasource with support for JDK and JRE releases * feat(datasource): add GraalVM version datasource with support for JDK and JRE releases * add coverage * fix * fix * fix * code cov * code cov * code cov * refactor(datasource): integrate GraalVM into java-version datasource Merges graalvm-version datasource into java-version as a unified multi-vendor Java distribution datasource. Implements vendor-based modular architecture with routing layer for Adoptium (Eclipse Temurin) and Oracle GraalVM. Architecture: - Vendor-specific handlers (adoptium.ts, graalvm.ts) with routing in index.ts - Vendor-aware system detection with different arch/os mappings per vendor - Custom registry support for GraalVM's mise-java API - Adoptium remains the default registry for backwards compatibility Package names: - New explicit: adoptium-jdk, adoptium-jre, oracle-graalvm-jdk, oracle-graalvm-jre - Legacy (map to Adoptium): java, java-jdk, java-jre Changes: - Created adoptium.ts and graalvm.ts vendor handlers - Enhanced common.ts with vendor detection and vendor-specific system mappings - Updated index.ts with routing layer and custom registry support - Merged test suites with comprehensive coverage for both vendors - Updated mise manager integration to use JavaVersionDatasource - Removed graalvm-version datasource directory All 65 datasource tests and 93 mise manager tests passing. * fix * test(datasource): add coverage for non-HttpError paths in java-version * fix(datasource): remove dead code and add coverage for java-version Remove unreachable HttpError handling from _getReleases catch block since both getAdoptiumReleases and getGraalvmReleases handle HttpError internally. Add test for the graalvmRegistryUrl fallback when registryUrl is undefined. * fix(datasource): address review comments for GraalVM datasource - Remove unused 'datasource-graalvm-version' cache namespace - Convert MiseJavaRelease interface to Zod schema and derive type from it - Use http.getJson() with the Zod schema in getGraalvmReleases instead of getJsonUnchecked, letting the schema handle invalid/empty responses - Update getGraalvmReleases test mock to use getJson * docs: remove unused datasource-graalvm-version from cacheTtlOverride docs * fix(datasource): preserve Adoptium config typing * fix(datasource): harden GraalVM release parsing * fix(datasource): address GraalVM review feedback * test: cover GraalVM mise package mapping * test(datasource): cover default GraalVM registry fallback * test(datasource): cover legacy registry resolution * test(datasource): type legacy datasource mocks * fix(datasource): harden GraalVM defaults and responses * refactor(datasource): use function-only registry accessors * test(datasource): cover registry accessor functions * test: restore coverage exclusions * chore: retrigger CI checks
This datasource fetches available Rust compiler versions from the official Rust distribution infrastructure at https://static.rust-lang.org/manifests.txt.
How it works
The datasource retrieves version information from a single source file (manifests.txt) which contains chronological URLs to manifest files for all Rust releases.
Rather than fetching each individual manifest TOML file, version information is extracted directly from the URL patterns using regex parsing.
Supported Versions
The datasource only returns versions that correspond to specific Rust releases:
- Stable releases:
1.81.0,1.82.0, etc. - Beta releases:
1.83.0-beta.4,1.83.0-beta.5, etc. - Dated nightlies:
nightly-2025-11-23,nightly-2025-11-24, etc.
Version Extraction
Manifest URLs follow this pattern:
static.rust-lang.org/dist/YYYY-MM-DD/channel-rust-{identifier}.toml
Examples:
static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml→ Version:nightly-2025-11-24static.rust-lang.org/dist/2024-10-17/channel-rust-1.82.0.toml→ Version:1.82.0static.rust-lang.org/dist/2025-01-15/channel-rust-1.83.0-beta.5.toml→ Version:1.83.0-beta.5
Release Timestamps
Release timestamps are derived from the date in the manifest URL and set to midnight UTC (YYYY-MM-DDTHH:MM:SS.000Z). This provides day-level precision for release timing.
Versioning Scheme
This datasource uses the rust-release-channel versioning scheme, which understands Rust's release channels, dated nightlies, and semantic versioning for stable and beta releases.