mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
9e179170ee
Adds a `_` function to the plugin definition object that will automatically prepend the plugin's module namespace to any call. This saves the plugin from having to prepend its namespace all of the time.
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
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 (RED._loadingModule) {
|
|
definition.module = RED._loadingModule;
|
|
definition["_"] = function() {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
var originalKey = args[0];
|
|
if (!/:/.test(args[0])) {
|
|
args[0] = definition.module+":"+args[0];
|
|
}
|
|
var result = RED._.apply(null,args);
|
|
if (result === args[0]) {
|
|
return originalKey;
|
|
}
|
|
return result;
|
|
}
|
|
} else {
|
|
definition["_"] = RED["_"]
|
|
}
|
|
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
|
|
}
|
|
})();
|