import { BlueRain, Plugin } from '../index'; import { MaybeEsModule } from '../typings'; import MapRegistry from './MapRegistry'; /** * All system plugins are stored in this registry * @property {Map} data Storage Map of all plugins */ export default class PluginRegistry extends MapRegistry { private BR; constructor(BR: BlueRain); /** * Register an Plugin * @param {Plugin} plugin The BlueRain plugin to register */ add(key: string, plugin: MaybeEsModule): void; add(plugin: MaybeEsModule): void; /** * Replace an item in the Registry. * * @param {string} key The key of the item * @param {any} item The item to add */ set(key: string, plugin: MaybeEsModule): void; set(plugin: MaybeEsModule): void; /** * Register many plugins at once * @param {Array} plugins The BlueRain plugins to register */ registerMany(plugins: Array>): void; /** * Initialize all the registered plugins */ initializeAll(): void; /** * Returns a plugin slug, or generates one * * @param {Plugin} plugin * @returns {string} */ createSlug(plugin: Plugin): string; /** * Takes an plugin, adds necessary fields and returns the processed plugin with a key * @param key * @param plugin */ private getKeyAndItem; }