peezy-cli
Version:
Production-ready CLI for scaffolding modern applications with curated full-stack templates, intelligent migrations, and enterprise security.
92 lines (91 loc) • 2.41 kB
TypeScript
/**
* Plugin Manager v1.0
*
* Manages plugin lifecycle, loading, and execution
*/
import type { PluginConfig, PluginRegistryEntry, ScaffoldContext, InstallContext, ProjectConfig, ValidationResult } from "./types.js";
/**
* Plugin Manager - handles plugin discovery, loading, and execution
*/
export declare class PluginManager {
private plugins;
private config;
private cliVersion;
constructor(config: PluginConfig, cliVersion: string);
/**
* Load all configured plugins
*/
loadPlugins(): Promise<void>;
/**
* Load a single plugin
*/
loadPlugin(pluginName: string, config?: Record<string, any>): Promise<void>;
/**
* Unload a plugin
*/
unloadPlugin(pluginName: string): Promise<void>;
/**
* Unload all plugins
*/
unloadAllPlugins(): Promise<void>;
/**
* Execute beforeScaffold hooks
*/
executeBeforeScaffold(context: ScaffoldContext): Promise<void>;
/**
* Execute templateTransform hooks
*/
executeTemplateTransform(context: ScaffoldContext): Promise<void>;
/**
* Execute afterScaffold hooks
*/
executeAfterScaffold(context: ScaffoldContext): Promise<void>;
/**
* Execute beforeInstall hooks
*/
executeBeforeInstall(context: InstallContext): Promise<void>;
/**
* Execute afterInstall hooks
*/
executeAfterInstall(context: InstallContext): Promise<void>;
/**
* Execute configValidation hooks
*/
executeConfigValidation(config: ProjectConfig): Promise<ValidationResult[]>;
/**
* Get loaded plugins
*/
getLoadedPlugins(): PluginRegistryEntry[];
/**
* Get plugin by name
*/
getPlugin(name: string): PluginRegistryEntry | undefined;
/**
* Check if plugin is loaded
*/
isPluginLoaded(name: string): boolean;
/**
* Execute hooks of a specific type
*/
private executeHooks;
/**
* Find plugin module path
*/
private findPlugin;
/**
* Validate plugin structure
*/
private validatePlugin;
/**
* Check version compatibility
*/
private checkVersionCompatibility;
}
/**
* Default plugin configuration
*/
export declare const defaultPluginConfig: PluginConfig;
/**
* Load plugin configuration from file
*/
export declare function loadPluginConfig(configPath?: string): Promise<PluginConfig>;