Skip to content

v0.1.5

Choose a tag to compare

@oritwoen oritwoen released this 10 Mar 12:36
· 26 commits to main since this release

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 - InvalidPURLError everywhere (#8)
  • Malformed encoding - decodePURLComponent catches decode failures (#28)
  • HTTP-date Retry-After - parsed correctly instead of NaN (#27)

⌨️ CLI

  • Docs link in info output (#11)

✅ Upgrading

pnpm add regxa@0.1.5

No 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

compare changes

🚀 Enhancements

  • Add alpm registry (#10)
  • cli: Show docs link in info output (#11)
  • Add AI SDK package tool (#13)

🩹 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)

🏡 Chore

  • Update README.md (eadefd7)
  • Add oxlint, oxfmt and editorconfig (#17)