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

172 lines (171 loc) 4.74 kB
import { ValidationError } from './error-handler'; export interface WorkspaceDefinition { version: string; name: string; description?: string; root: string; patterns: string[]; types: { [key: string]: WorkspaceTypeConfig; }; workspaces: { [key: string]: WorkspaceEntry; }; dependencies: { [key: string]: WorkspaceDependency[]; }; build: { target?: string; parallel?: boolean; maxConcurrency?: number; cache?: boolean; outputDir?: string; sourcemap?: boolean; }; dev: { mode?: 'concurrent' | 'sequential'; proxy?: Record<string, string>; cors?: boolean; hot?: boolean; }; test: { coverage?: { enabled: boolean; threshold: number; exclude?: string[]; }; parallel?: boolean; timeout?: number; }; scripts: { [key: string]: WorkspaceScript; }; environments?: { [key: string]: Partial<WorkspaceDefinition>; }; plugins?: string[]; metadata?: { created: string; lastModified: string; author?: string; tags?: string[]; [key: string]: any; }; } export interface WorkspaceTypeConfig { name: string; description?: string; framework?: string; template?: string; build?: { command?: string; outputDir?: string; env?: Record<string, string>; dependencies?: string[]; }; dev?: { command?: string; port?: number; env?: Record<string, string>; }; test?: { command?: string; pattern?: string; env?: Record<string, string>; }; lint?: { command?: string; files?: string[]; env?: Record<string, string>; }; typecheck?: { command?: string; files?: string[]; env?: Record<string, string>; }; patterns?: { source?: string[]; test?: string[]; config?: string[]; assets?: string[]; }; requiredFiles?: string[]; detection?: { files?: string[]; packageJsonFields?: string[]; commands?: string[]; }; } export interface WorkspaceEntry { name: string; type: string; path: string; description?: string; build?: Partial<WorkspaceTypeConfig['build']>; dev?: Partial<WorkspaceTypeConfig['dev']>; test?: Partial<WorkspaceTypeConfig['test']>; lint?: Partial<WorkspaceTypeConfig['lint']>; typecheck?: Partial<WorkspaceTypeConfig['typecheck']>; env?: Record<string, string>; tags?: string[]; active?: boolean; metadata?: Record<string, any>; } export interface WorkspaceDependency { name: string; type: 'build' | 'dev' | 'test' | 'runtime'; version?: string; optional?: boolean; conditions?: string[]; } export interface WorkspaceScript { description?: string; command: string; workspaces?: string[] | 'all'; parallel?: boolean; continueOnError?: boolean; env?: Record<string, string>; timeout?: number; cache?: boolean; } export interface ValidationResult { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; suggestions: ValidationSuggestion[]; } export interface ValidationWarning { path: string; message: string; severity: 'low' | 'medium' | 'high'; } export interface ValidationSuggestion { path: string; message: string; fix?: string; } export declare const DEFAULT_WORKSPACE_DEFINITION: WorkspaceDefinition; export declare class WorkspaceSchemaValidator { private definition; private rootPath; constructor(definition: WorkspaceDefinition, rootPath?: string); validateDefinition(): Promise<ValidationResult>; validateWorkspaceStructure(): Promise<ValidationResult>; autoDetectWorkspaces(): Promise<WorkspaceEntry[]>; private validateRequiredFields; private validateVersion; private validateWorkspaceTypes; private validateWorkspaceEntries; private validateDependencies; private validateScripts; private validatePatterns; private validateBuildConfig; private validateCommand; private detectWorkspaceType; private validateWorkspacePackageJson; private checkOrphanedWorkspaces; private hasNestedProperty; } export declare function loadWorkspaceDefinition(filePath: string): Promise<WorkspaceDefinition>; export declare function saveWorkspaceDefinition(definition: WorkspaceDefinition, filePath: string): Promise<void>; export declare function createDefaultWorkspaceDefinition(name: string, options?: Partial<WorkspaceDefinition>): WorkspaceDefinition;