@dataql/node
Version:
DataQL core SDK for unified data management with MongoDB and GraphQL - Production Multi-Cloud Ready
87 lines (86 loc) • 2.41 kB
TypeScript
import { PluginRegistry as IPluginRegistry, PluginInfo, PluginManifest, Plugin, PluginType, PluginDiscoveryOptions } from "./types.js";
/**
* Plugin Registry Implementation
*
* Handles plugin discovery, installation, and management.
* This is the foundation for a plugin ecosystem around DataQL.
*/
export declare class PluginRegistry implements IPluginRegistry {
private registryUrl;
private cache;
private installed;
constructor(registryUrl?: string);
/**
* Search for plugins in the registry
*/
search(query: string, type?: PluginType): Promise<PluginInfo[]>;
/**
* Get detailed information about a plugin
*/
getPluginInfo(pluginId: string): Promise<PluginInfo>;
/**
* Install a plugin from the registry
*/
install(pluginId: string, version?: string): Promise<void>;
/**
* Uninstall a plugin
*/
uninstall(pluginId: string): Promise<void>;
/**
* List installed plugins
*/
listInstalled(): Promise<PluginInfo[]>;
/**
* Update a plugin to a new version
*/
update(pluginId: string, version?: string): Promise<void>;
/**
* Publish a plugin to the registry
*/
publish(plugin: Plugin, manifest: PluginManifest): Promise<void>;
/**
* Discover plugins from various sources
*/
discoverPlugins(options: PluginDiscoveryOptions): Promise<Plugin[]>;
/**
* Load a plugin from a manifest
*/
loadFromManifest(manifest: PluginManifest): Promise<Plugin>;
/**
* Validate plugin compatibility
*/
validateCompatibility(plugin: Plugin, dataqlVersion: string): boolean;
/**
* Private: Search locally cached plugins
*/
private searchLocal;
/**
* Private: Download plugin from registry
*/
private downloadPlugin;
/**
* Private: Remove plugin files
*/
private removePluginFiles;
/**
* Private: Discover plugins from directory
*/
private discoverFromDirectory;
/**
* Private: Install a locally discovered plugin
*/
private installLocalPlugin;
/**
* Get registry statistics
*/
getStats(): Promise<{
totalPlugins: number;
pluginsByType: Record<PluginType, number>;
recentlyUpdated: PluginInfo[];
popular: PluginInfo[];
}>;
/**
* Clear registry cache
*/
clearCache(): void;
}