v0.1.5
0.1.5 adds Arch Linux support, an AI SDK tool, and fixes data correctness across all registries.
👀 Highlights
Arch Linux support (official repos + AUR), a packageTool for Vercel AI SDK agents, and a whole round of data correctness fixes. Six bugs across five ecosystems, each quietly returning wrong data in its own creative way.
📦 Arch Linux Registry
New alpm ecosystem. pkg:alpm/arch/pacman for official repos, pkg:alpm/aur/paru for AUR. Namespace defaults to arch when omitted.
- Official + AUR - namespace-based routing (#10)
🤖 AI SDK Package Tool
regxa/ai exports a packageTool for Vercel AI SDK apps. One tool handles package info, versions, deps, maintainers, and bulk lookups.
packageTool- single tool for all registry operations (#13)
🩹 Registry Data Fixes
Each registry had its own way of quietly returning wrong data. RubyGems ignored the version parameter for deps, Cargo grabbed the wrong license, PyPI misclassified scope from PEP 508 markers, and cache keys collided across ecosystems.
- rubygems: Version-specific deps via v2 API (#19)
- cargo: License from latest stable, not newest version (#20)
- pypi: Proper PEP 508 marker parsing for scope (#26)
- cache: Storage keys namespaced by ecosystem (#21)
- api: Root helpers register all ecosystems automatically (#23)
🔐 Error Handling
PURL errors use typed classes now instead of bare Error, and malformed percent-encoding like %ZZ gets a proper InvalidPURLError. The HTTP client also handles RFC 7231 date-format Retry-After headers correctly.
- Typed PURL errors -
InvalidPURLErroreverywhere (#8) - Malformed encoding -
decodePURLComponentcatches decode failures (#28) - HTTP-date Retry-After - parsed correctly instead of NaN (#27)
⌨️ CLI
- Docs link in
infooutput (#11)
✅ Upgrading
pnpm add regxa@0.1.5No breaking changes from 0.1.4. The error type changes (InvalidPURLError instead of generic Error) might need a catch block update if you were matching on error messages.
👉 Changelog
🚀 Enhancements
🩹 Fixes
- errors: Use typed PURL errors (#8)
- rubygems: Use v2 API for version-specific dependencies (#19)
- cargo: Use latest stable version license instead of newest version (#20)
- cache: Namespace storage keys by ecosystem (#21)
- api: Root helper imports register all ecosystems (#23)
- pypi: Parse PEP 508 markers properly for scope classification (#26)
- client: Handle HTTP-date format in Retry-After header (#27)
- purl: Throw InvalidPURLError for malformed percent-encoding (#28)