2018-12-05 14:00:25 +01:00
|
|
|
/*!
|
2017-01-11 16:24:33 +01:00
|
|
|
* Copyright JS Foundation and other contributors, http://js.foundation
|
2013-09-09 21:03:22 +02:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
|
|
|
|
2020-12-02 10:25:10 +01:00
|
|
|
/**
|
|
|
|
* Runtime events
|
|
|
|
* @mixin @node-red/util_events
|
|
|
|
*/
|
|
|
|
|
2020-09-29 17:29:10 +02:00
|
|
|
const events = new (require("events")).EventEmitter();
|
2018-12-05 14:00:25 +01:00
|
|
|
|
2020-09-29 17:29:10 +02:00
|
|
|
|
|
|
|
const deprecatedEvents = {
|
|
|
|
"nodes-stopped": "flows:stopped",
|
|
|
|
"nodes-started": "flows:started"
|
|
|
|
}
|
|
|
|
|
|
|
|
function wrapEventFunction(obj,func) {
|
|
|
|
events["_"+func] = events[func];
|
|
|
|
return function(eventName, listener) {
|
|
|
|
if (deprecatedEvents.hasOwnProperty(eventName)) {
|
|
|
|
const log = require("@node-red/util").log;
|
2022-01-12 23:07:44 +01:00
|
|
|
|
|
|
|
const stack = (new Error().stack).split("\n");
|
|
|
|
let location = "(unknown)"
|
|
|
|
// See https://github.com/node-red/node-red/issues/3292
|
|
|
|
if (stack.length > 2) {
|
|
|
|
location = stack[2].split("(")[1].slice(0,-1);
|
|
|
|
}
|
|
|
|
log.warn(`[RED.events] Deprecated use of "${eventName}" event from "${location}". Use "${deprecatedEvents[eventName]}" instead.`)
|
2020-09-29 17:29:10 +02:00
|
|
|
}
|
|
|
|
return events["_"+func].call(events,eventName,listener)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
events.on = wrapEventFunction(events,"on");
|
|
|
|
events.once = wrapEventFunction(events,"once");
|
|
|
|
events.addListener = events.on;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = events;
|
2018-12-05 14:00:25 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Runtime events emitter
|
2020-12-02 10:25:10 +01:00
|
|
|
* @mixin @node-red/util_events
|
2018-12-05 14:00:25 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Register an event listener for a runtime event
|
|
|
|
* @name on
|
|
|
|
* @function
|
2020-12-02 10:25:10 +01:00
|
|
|
* @memberof @node-red/util_events
|
2018-12-05 14:00:25 +01:00
|
|
|
* @param {String} eventName - the name of the event to listen to
|
|
|
|
* @param {Function} listener - the callback function for the event
|
|
|
|
*/
|
2013-09-09 21:03:22 +02:00
|
|
|
|
2018-12-05 14:00:25 +01:00
|
|
|
/**
|
|
|
|
* Emit an event to all of its registered listeners
|
|
|
|
* @name emit
|
|
|
|
* @function
|
2020-12-02 10:25:10 +01:00
|
|
|
* @memberof @node-red/util_events
|
2018-12-05 14:00:25 +01:00
|
|
|
* @param {String} eventName - the name of the event to emit
|
|
|
|
* @param {any} ...args - the arguments to pass in the event
|
|
|
|
* @return {Boolean} - whether the event had listeners or not
|
|
|
|
*/
|