feat(registry): add declarative protocol routing and request-scoped storage hook context across registries

This commit is contained in:
2026-04-16 10:42:33 +00:00
parent 09335d41f3
commit 9643ef98b9
28 changed files with 2327 additions and 1919 deletions
+5
View File
@@ -22,6 +22,7 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
- **Shared Storage**: Cloud-agnostic S3-compatible backend via [@push.rocks/smartbucket](https://www.npmjs.com/package/@push.rocks/smartbucket) with standardized `IS3Descriptor` from [@tsclass/tsclass](https://www.npmjs.com/package/@tsclass/tsclass)
- **Unified Authentication**: Scope-based permissions across all protocols
- **Path-based Routing**: `/oci/*`, `/npm/*`, `/maven/*`, `/cargo/*`, `/composer/*`, `/pypi/*`, `/rubygems/*`
- **Declarative Protocol Wiring**: Protocol registration, initialization, and routing stay aligned through shared descriptors
### 🔐 Authentication & Authorization
- NPM UUID tokens for package operations
@@ -60,6 +61,7 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
### 🔌 Enterprise Extensibility
- **Storage Event Hooks** (`IStorageHooks`): Quota tracking, audit logging, virus scanning, cache invalidation
- **Request Actor Context**: Pass user/org info through requests for audit trails and rate limiting
- **Request-Scoped Hook Metadata**: Hooks receive protocol, actor, package, and version context without cross-request leakage
## 📥 Installation
@@ -233,6 +235,9 @@ const search = await registry.handleRequest({
});
```
Scoped package requests are supported with both encoded and unencoded paths, for example
`/npm/@scope%2fpackage` and `/npm/@scope/package`.
### 🦀 Cargo Registry (Rust Crates)
```typescript