UNPKG

@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
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;