import { PluginContext } from './context'; import { PluginDiscovery } from './discovery'; import { ExtensiblePlugin } from './/extension'; import { PluginHost } from './host'; import { Plugin } from './plugin'; import { PluginRegistry } from './registry'; import { PluginLookupCallback, PluginLookupFilter } from './lookup'; /** * Interface which describes a plugin manager. */ export interface PluginManager extends PluginRegistry { /** * Get the plugin host. * * @return {PluginHost} * An object which represents the plugin host. */ getPluginHost(): PluginHost; /** * Get the plugin discovery. * * @return {PluginDiscovery} * An object which represents the plugin discovery. */ getPluginDiscovery(): PluginDiscovery; /** * Create a plugin instance for given context. * * @param {PluginContext} pluginContext * An object which represents the plugin context. */ createPluginInstance(pluginContext: PluginContext): Promise; } /** * Base plugin manager implementation. */ export declare abstract class PluginManagerBase implements PluginManager { /** * Holds the plugin host. * * @var {PluginHost} */ protected pluginHost: PluginHost; /** * Holds the plugin discovery. * * @var {PluginDiscovery} */ protected pluginDiscovery: PluginDiscovery; /** * Holds the registered plugins. * * @var {Plugin[]} */ protected pluginRegistry: PluginBaseType[]; /** * Create a DefaultPluginManager object. * * @param {PluginDiscovery} pluginDiscovery * An object which provides the plugin discovery mechanism. */ constructor(pluginHost: PluginHost, pluginDiscovery: PluginDiscovery); /** * {@inheritdoc} */ getPluginHost(): PluginHost; /** * {@inheritdoc} */ getPluginDiscovery(): PluginDiscovery; /** * {@inheritdoc} */ createPluginInstance(pluginContext: PluginContext): Promise; /** * {@inheritdoc} */ list(filter?: PluginLookupFilter): PluginBaseType[]; /** * {@inheritdoc} */ each(callback: PluginLookupCallback): Promise; /** * {@inheritdoc} */ has(id: string): boolean; /** * {@inheritdoc} */ get(id: string): PluginType | null; } /** * Interface which describes a plugin extension manager. */ export interface PluginExtensionManager> extends PluginManager { } /** * Base plugin extension manager implementation. */ export declare abstract class PluginExtensionManagerBase> extends PluginManagerBase implements PluginExtensionManager { } /** * Plugin extension manager which provide a create hook. */ export declare class HookablePluginExtensionManager> implements PluginExtensionManager { /** * Holds the plugin extension manager. * * @var {PluginExtensionManager} */ protected pluginExtensionManager: PluginExtensionManager; /** * Holds the create plugin instance callback. * * @var {Function} */ protected createPluginInstanceCallback: (plugin: PluginBaseType) => Promise; /** * Create a HookablePluginExtensionManager object. * * @param {PluginExtensionManager} pluginExtensionManager * An object which represents a plugin extension manager. * @param {Function} createCallback * A callback which will be invoked after creation. */ constructor(pluginExtensionManager: PluginExtensionManager, createPluginInstanceCallback: (plugin: PluginBaseType) => Promise); /** * {@inheritdoc} */ getPluginHost(): PluginHost; /** * {@inheritdoc} */ getPluginDiscovery(): PluginDiscovery; /** * {@inheritdoc} */ createPluginInstance(pluginContext: PluginContext): Promise; /** * {@inheritdoc} */ has(id: string): boolean; /** * {@inheritdoc} */ get(id: string): PluginType | null; /** * {@inheritdoc} */ list(filter?: PluginLookupFilter): PluginBaseType[]; /** * {@inheritdoc} */ each(callback: PluginLookupCallback): Promise; }