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

105 lines (104 loc) 3.54 kB
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;