@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
TypeScript
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[];