UNPKG

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