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