Base
Exports shared by plugins.
interface Plugable {
host: Plugins
install: function
}
type PluginFunction = (args: ARGS, opts: OPTS) => RET
type PluginMap<ID = PluginId> = Map<ID, PluginType<ID>>
type PluginPromiseMap<ID = PluginId> = Map<ID, Promise<PluginType<ID>>>
type PluginTypeRequired<Plugables>[T]
interface Plugins {
options: PluginsOptions
plugin: (plugin: ID) => PluginType<ID>
pluginPromise: (plugin: ID, location?: string) => Promise<PluginType<ID>>
}
/** @implements Plugable */
class PluginClass {
host: Plugins
install: function
}
/** Manages plugin lifecycle */
class PluginManager {
location: (path: string, id: string | PluginId) => string
locationsByPluginId: () => Record<PluginId, StringTuple>
plugin: (id: ID) => PluginType<ID>
pluginOrPromise: (id: ID) => Promise<PluginType<ID>>
}
/**
* Manages plugin dependencies and
* registration
*/
class PluginRegistry {
_dependencies: Map<PluginId, Array<PluginId>>
/** Get dependencies for a plugin */
getDependencies: (pluginName: PluginId) => Array<PluginId>
/** Register dependencies for a plugin */
registerDependencies: (pluginName: PluginId, dependencies?: Array<PluginId>) => void
}
/** @implements Plugins */
class PluginsClass {
options: PluginsOptions
plugin: (plugin: ID) => PluginType<ID>
pluginPromise: (plugin: ID, location?: string) => Promise<PluginType<ID>>
}
function stopEvent(
event: Event
): void