feat(maven): Add Maven registry protocol support (storage, auth, routing, interfaces, and exports)

This commit is contained in:
2025-11-21 08:58:29 +00:00
parent 29dea2e0e8
commit 0b31219b7d
16 changed files with 2533 additions and 22 deletions

View File

@@ -4,10 +4,11 @@ import { BaseRegistry } from './core/classes.baseregistry.js';
import type { IRegistryConfig, IRequestContext, IResponse } from './core/interfaces.core.js';
import { OciRegistry } from './oci/classes.ociregistry.js';
import { NpmRegistry } from './npm/classes.npmregistry.js';
import { MavenRegistry } from './maven/classes.mavenregistry.js';
/**
* Main registry orchestrator
* Routes requests to appropriate protocol handlers (OCI or NPM)
* Routes requests to appropriate protocol handlers (OCI, NPM, or Maven)
*/
export class SmartRegistry {
private storage: RegistryStorage;
@@ -51,6 +52,15 @@ export class SmartRegistry {
this.registries.set('npm', npmRegistry);
}
// Initialize Maven registry if enabled
if (this.config.maven?.enabled) {
const mavenBasePath = this.config.maven.basePath || '/maven';
const registryUrl = `http://localhost:5000${mavenBasePath}`; // TODO: Make configurable
const mavenRegistry = new MavenRegistry(this.storage, this.authManager, mavenBasePath, registryUrl);
await mavenRegistry.init();
this.registries.set('maven', mavenRegistry);
}
this.initialized = true;
}
@@ -77,6 +87,14 @@ export class SmartRegistry {
}
}
// Route to Maven registry
if (this.config.maven?.enabled && path.startsWith(this.config.maven.basePath)) {
const mavenRegistry = this.registries.get('maven');
if (mavenRegistry) {
return mavenRegistry.handleRequest(context);
}
}
// No matching registry
return {
status: 404,
@@ -105,7 +123,7 @@ export class SmartRegistry {
/**
* Get a specific registry handler
*/
public getRegistry(protocol: 'oci' | 'npm'): BaseRegistry | undefined {
public getRegistry(protocol: 'oci' | 'npm' | 'maven'): BaseRegistry | undefined {
return this.registries.get(protocol);
}