RED.plugins = (function() { var plugins = {}; var pluginsByType = {}; function registerPlugin(id,definition) { plugins[id] = definition; if (definition.type) { pluginsByType[definition.type] = pluginsByType[definition.type] || []; pluginsByType[definition.type].push(definition); } if (definition.onadd && typeof definition.onadd === 'function') { definition.onadd(); } RED.events.emit("registry:plugin-added",id); } function getPlugin(id) { return plugins[id] } function getPluginsByType(type) { return pluginsByType[type] || []; } return { registerPlugin: registerPlugin, getPlugin: getPlugin, getPluginsByType: getPluginsByType } })();