v0.1.7
v0.1.7 - Registry Plugin System
Refactored package scanning into a pluggable adapter-based architecture for easier multi-registry support
Features
- Registry Adapter Architecture - New
RegistryAdaptertrait defines a standard interface for registry-specific logic (metadata fetching, package downloading, trust scoring, CVE ecosystem mapping) - Unified Package Types - Introduced
ExtractedPackageandPackageMetadatatypes that work across all registries, eliminating duplicate code paths - Adapter Registry - Central
AdapterRegistrymanages multiple adapters, making it easy to add new registries by implementing the trait - Unified Scanner Methods - New
scan_unified()andscan_tarball_unified()methods replace registry-specific scan functions
Technical Changes
- NpmAdapter - Refactored existing npm client into adapter pattern with
fetch_metadata,download_package,extract_local, andcompute_trust_score - PypiAdapter - Refactored existing PyPI client into adapter pattern with support for both sdist and wheel formats
- Capabilities Module - Updated to detect language (Python vs JS/TS) from unified
SourceFiletypes and apply appropriate analysis - Simplified Worker Dispatch - Main worker loop now uses single code path for all registries
Architecture
RegistryAdapter (trait)
├── NpmAdapter → npm registry
├── PypiAdapter → PyPI registry
└── CratesAdapter → crates.io (future)
Benefits
- Extensibility - Add new registries by implementing
RegistryAdaptertrait - Maintainability - Single unified scan path instead of duplicated npm/PyPI code
- Consistency - All registries produce the same
ExtractedPackageformat for downstream processing
Full Changelog: v0.1.6...v0.1.7
What's Changed
Full Changelog: v0.1.6...v0.1.7