UNPKG

@lund-org/cherry

Version:

A light framework to quickly create a web server

55 lines (47 loc) 1.19 kB
const check = require('../helpers/check') class PluginManager { constructor () { this.plugins = { // Default keys of plugins that are used in the core RequestEngine: null, ViewEngine: null, DatabaseEngine: null } } /** * Register a plugin in the list */ registerPlugin (plugin) { const name = plugin.getIdentifier() if (check.isDefinedAndNotNull(this.plugins, name)) { console.warn(`The plugin ${name} has already been defined`) console.warn(`The previous class was ${this.plugins[name]} and the new one is ${plugin}`) } this.plugins[name] = plugin } /** * Retrieves a plugin by its name * @param {string} name The name of the plugin required * @return {Class} */ getPlugin (name) { return this.plugins[name] } /** * Retrieves the registered plugins * @return {Object<Class>} */ getPlugins () { return this.plugins } /** * Retrieves the list of the plugin types defined * @return {Array<string>} */ getPluginTypes () { return Object.keys(this.plugins).filter((key) => { return !!this.plugins[key] }) } } module.exports = PluginManager