UNPKG

every-plugin

Version:
43 lines (42 loc) 2.24 kB
import { AnyPlugin, InferRegistryFromEntries, InitializedPlugin, LoadedPlugin, PluginConfigInput, PluginInstance, PluginRegistry, PluginRegistryEntry, PluginRuntimeConfig, RegisteredPlugin, RegisteredPlugins, UsePluginResult } from "../types.mjs"; import { PluginService } from "./services/plugin.service.mjs"; import { ManagedRuntime } from "effect"; //#region src/runtime/index.d.ts declare class PluginRuntime<R = RegisteredPlugins> { private runtime; private registry; readonly __registryType?: R; private pluginCache; constructor(runtime: ManagedRuntime.ManagedRuntime<PluginService, never>, registry: PluginRegistry); private generateCacheKey; private validatePluginId; private runPromise; usePlugin<K extends keyof R & string>(pluginId: K, config: PluginConfigInput<R[K]>, plugins?: Record<string, unknown>): Promise<UsePluginResult<K, R>>; loadPlugin<K extends keyof R & string>(pluginId: K): Promise<LoadedPlugin<RegisteredPlugin<K, R>>>; instantiatePlugin<K extends keyof R & string>(pluginId: K, loadedPlugin: LoadedPlugin<RegisteredPlugin<K, R>>): Promise<PluginInstance<RegisteredPlugin<K, R>>>; initializePlugin<T extends AnyPlugin>(instance: PluginInstance<T>, config: any, plugins?: Record<string, unknown>): Promise<InitializedPlugin<T>>; shutdown(): Promise<void>; evictPlugin<K extends keyof R & string>(pluginId: K, config: PluginConfigInput<R[K]>): Promise<void>; } /** * Creates a plugin runtime with support for both module and remote plugin entries. * * @example * ```typescript * // With module entries (types inferred automatically) * const runtime = createPluginRuntime({ * registry: { * telegram: { module: TelegramPlugin }, * gopher: { remote: "https://cdn.example.com/gopher/remoteEntry.js" } * }, * secrets: { API_KEY: "..." } * }); * * // Types are automatically inferred from module entries! * const { router } = await runtime.usePlugin("telegram", config); * ``` */ declare function createPluginRuntime<TRegistry extends Record<string, PluginRegistryEntry>>(config: PluginRuntimeConfig<TRegistry>): PluginRuntime<InferRegistryFromEntries<TRegistry>>; //#endregion export { PluginRuntime, createPluginRuntime }; //# sourceMappingURL=index.d.mts.map