@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
106 lines (105 loc) • 3.41 kB
TypeScript
import { EventEmitter } from 'events';
import { PluginManifest, PluginRegistration } from './plugin-system';
export interface PluginDependencySpec {
name: string;
version: string;
required: boolean;
type: 'plugin' | 'npm' | 'peer';
source?: string;
scope?: string;
}
export interface ResolvedDependency extends PluginDependencySpec {
resolved: boolean;
resolvedVersion?: string;
installation?: PluginRegistration;
conflicts?: DependencyConflict[];
error?: Error;
}
export interface DependencyConflict {
type: 'version' | 'missing' | 'circular' | 'incompatible';
source: string;
target: string;
requested: string;
available?: string;
resolution?: ConflictResolution;
}
export interface ConflictResolution {
action: 'upgrade' | 'downgrade' | 'install' | 'remove' | 'ignore';
target: string;
version?: string;
reason: string;
}
export interface DependencyNode {
name: string;
version: string;
dependencies: Set<string>;
dependents: Set<string>;
resolved: boolean;
depth: number;
installation?: PluginRegistration;
}
export interface VersionConstraint {
constraint: string;
source: string;
type: 'exact' | 'range' | 'latest' | 'compatible';
}
export interface ResolutionOptions {
allowPrerelease?: boolean;
preferStable?: boolean;
ignoreOptional?: boolean;
maxDepth?: number;
timeout?: number;
strategy?: 'strict' | 'loose' | 'latest';
allowConflicts?: boolean;
autoInstall?: boolean;
}
export interface ResolutionResult {
resolved: ResolvedDependency[];
conflicts: DependencyConflict[];
missing: string[];
circular: string[][];
installationPlan: InstallationStep[];
success: boolean;
warnings: string[];
}
export interface InstallationStep {
action: 'install' | 'upgrade' | 'downgrade' | 'remove';
plugin: string;
version: string;
dependencies: string[];
order: number;
optional: boolean;
}
export declare class PluginDependencyResolver extends EventEmitter {
private options;
private dependencyGraph;
private versionCache;
private resolutionCache;
private plugins;
constructor(options?: Partial<ResolutionOptions>);
registerPlugin(registration: PluginRegistration): void;
unregisterPlugin(name: string): void;
resolveDependencies(manifest: PluginManifest, options?: Partial<ResolutionOptions>): Promise<ResolutionResult>;
private performResolution;
private extractDependencySpecs;
private buildDependencyTree;
private detectCircularDependencies;
private resolveVersionConstraints;
private resolveVersionConstraint;
private findSatisfyingVersion;
private findBestMatch;
private satisfiesAllConstraints;
private getAvailableVersions;
private createInstallationPlan;
private topologicalSort;
private generateWarnings;
private updateDependencyGraph;
clearCache(): void;
private getCacheKey;
getStats(): any;
getDependencyGraph(): Map<string, DependencyNode>;
}
export declare function createDependencyResolver(options?: Partial<ResolutionOptions>): PluginDependencyResolver;
export declare function validateVersion(version: string): boolean;
export declare function compareVersions(a: string, b: string): number;
export declare function satisfiesConstraint(version: string, constraint: string): boolean;