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

100 lines (99 loc) 3.08 kB
import { ValidationError } from './error-handler'; import { WorkspaceDefinition, WorkspaceDependency, WorkspaceEntry } from './workspace-schema'; export interface WorkspaceNode { name: string; workspace: WorkspaceEntry; dependencies: Set<string>; dependents: Set<string>; metadata: { visited?: boolean; visiting?: boolean; topologicalOrder?: number; level?: number; criticalPath?: boolean; }; } export interface DependencyEdge { from: string; to: string; type: 'build' | 'dev' | 'test' | 'runtime'; optional: boolean; version?: string; conditions?: string[]; weight: number; } export interface CycleDetectionResult { hasCycles: boolean; cycles: WorkspaceCycle[]; stronglyConnectedComponents: string[][]; } export interface WorkspaceCycle { path: string[]; type: 'build' | 'dev' | 'test' | 'runtime' | 'mixed'; severity: 'error' | 'warning' | 'info'; suggestions: string[]; } export interface GraphAnalysis { nodeCount: number; edgeCount: number; cycles: CycleDetectionResult; topologicalOrder: string[]; levels: string[][]; criticalPath: string[]; orphanedNodes: string[]; statistics: { maxDepth: number; avgDependencies: number; avgDependents: number; isolatedComponents: number; }; } export interface BuildOrder { order: string[][]; parallelizable: boolean; maxParallelism: number; estimatedTime: number; dependencies: Map<string, string[]>; } export declare class WorkspaceDependencyGraph { private nodes; private edges; private definition; constructor(definition: WorkspaceDefinition); private buildGraph; private addEdge; private calculateEdgeWeight; detectCycles(): CycleDetectionResult; private detectCyclesDFS; private analyzeCycle; private findStronglyConnectedComponents; generateTopologicalOrder(): string[]; calculateLevels(): string[][]; findCriticalPath(): string[]; generateBuildOrder(): BuildOrder; analyzeGraph(): GraphAnalysis; getVisualizationData(): { nodes: Array<{ id: string; label: string; group: string; level?: number; }>; edges: Array<{ from: string; to: string; label: string; color: string; }>; }; private getEdgeColor; getNode(name: string): WorkspaceNode | undefined; getAllNodes(): Map<string, WorkspaceNode>; getEdges(from: string): DependencyEdge[]; hasPath(from: string, to: string): boolean; addWorkspace(name: string, workspace: WorkspaceEntry): void; removeWorkspace(name: string): void; updateDependencies(workspaceName: string, dependencies: WorkspaceDependency[]): void; } export declare function createWorkspaceDependencyGraph(definition: WorkspaceDefinition): WorkspaceDependencyGraph; export declare function validateWorkspaceDependencies(definition: WorkspaceDefinition): ValidationError[];