@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
105 lines (104 loc) • 3.54 kB
TypeScript
import { EventEmitter } from 'events';
import { Template } from './template-engine';
export interface TemplateVersion {
version: string;
releaseDate: Date;
changelog: string;
breaking: boolean;
deprecated?: boolean;
minimumCliVersion?: string;
maximumCliVersion?: string;
checksum: string;
size: number;
downloads?: number;
}
export interface TemplateManifest {
id: string;
name: string;
description: string;
latestVersion: string;
versions: TemplateVersion[];
repository?: string;
homepage?: string;
issues?: string;
updateChannel: 'stable' | 'beta' | 'edge';
autoUpdate: boolean;
lastChecked?: Date;
installedVersion?: string;
installedPath?: string;
}
export interface UpdateCheckResult {
id: string;
currentVersion: string;
latestVersion: string;
updateAvailable: boolean;
isBreaking: boolean;
changelog?: string;
installCommand?: string;
updateUrl?: string;
}
export interface UpdateOptions {
prerelease?: boolean;
force?: boolean;
backup?: boolean;
dryRun?: boolean;
channel?: 'stable' | 'beta' | 'edge';
}
export interface MigrationScript {
fromVersion: string;
toVersion: string;
description: string;
automatic: boolean;
script: (template: Template, context: any) => Promise<Template>;
rollback?: (template: Template, context: any) => Promise<Template>;
}
export interface VersioningConfig {
registryUrl?: string;
checkInterval?: number;
autoCheck?: boolean;
autoUpdate?: boolean;
backupBeforeUpdate?: boolean;
maxBackups?: number;
cacheDirectory?: string;
}
export declare class TemplateVersionManager extends EventEmitter {
private templatesDir;
private config;
private manifests;
private migrations;
private updateCheckInterval?;
private cacheDir;
private defaultConfig;
constructor(templatesDir: string, config?: VersioningConfig);
private initialize;
private loadManifests;
private saveManifests;
private startUpdateChecking;
registerTemplate(template: Template, localPath: string): Promise<TemplateManifest>;
checkUpdate(templateId: string): Promise<UpdateCheckResult | null>;
checkAllUpdates(): Promise<UpdateCheckResult[]>;
updateTemplate(templateId: string, targetVersion?: string, options?: UpdateOptions): Promise<boolean>;
rollbackTemplate(templateId: string, version: string): Promise<void>;
registerMigration(templateId: string, migration: MigrationScript): void;
private runMigrations;
private fetchManifestFromRegistry;
private downloadTemplateVersion;
private loadTemplateFromPath;
private backupTemplate;
private cleanupOldBackups;
private getBackupPath;
private getChangelogBetweenVersions;
private calculateChecksum;
private calculateSize;
private getAllFiles;
getManifest(templateId: string): TemplateManifest | undefined;
getAllManifests(): TemplateManifest[];
getInstalledTemplates(): TemplateManifest[];
getOutdatedTemplates(): TemplateManifest[];
getBackups(templateId: string): string[];
updateConfig(config: Partial<VersioningConfig>): void;
stop(): void;
}
export declare function createTemplateVersionManager(templatesDir: string, config?: VersioningConfig): TemplateVersionManager;
export declare function getGlobalTemplateVersionManager(): TemplateVersionManager;
export declare function setGlobalTemplateVersionManager(manager: TemplateVersionManager): void;