every-plugin
Version:
43 lines (42 loc) • 2.24 kB
text/typescript
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