UNPKG

node-red-contrib-home-assistant-websocket

Version:
80 lines (79 loc) 3.82 kB
"use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var _Events_instances, _Events_listeners, _Events_status, _Events_errorHandler, _Events_onClose; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeEvent = void 0; const inputErrorHandler_1 = require("../errors/inputErrorHandler"); var NodeEvent; (function (NodeEvent) { NodeEvent["Close"] = "close"; NodeEvent["Input"] = "input"; NodeEvent["StateChanged"] = "state_changed"; })(NodeEvent || (exports.NodeEvent = NodeEvent = {})); class Events { constructor({ node, emitter }) { _Events_instances.add(this); _Events_listeners.set(this, []); _Events_status.set(this, void 0); this.node = node; this.emitter = emitter; emitter.setMaxListeners(0); node.on(NodeEvent.Close, __classPrivateFieldGet(this, _Events_instances, "m", _Events_onClose).bind(this)); } addListener(event, handler, options = { once: false }) { const handlerWrapper = __classPrivateFieldGet(this, _Events_instances, "m", _Events_errorHandler).call(this, handler); __classPrivateFieldGet(this, _Events_listeners, "f").push([event, handlerWrapper]); if (options.once === true) { this.emitter.once(event, handlerWrapper); } else { this.emitter.on(event, handlerWrapper); } } addListeners(bind, eventsList) { eventsList.forEach(([event, handler]) => { this.addListener(event, handler.bind(bind)); }); } removeListeners() { __classPrivateFieldGet(this, _Events_listeners, "f").forEach(([event, handler]) => { this.emitter.removeListener(event, handler); }); __classPrivateFieldSet(this, _Events_listeners, [], "f"); } // set status for error reporting setStatus(status) { __classPrivateFieldSet(this, _Events_status, status, "f"); } emit(event, ...args) { return this.emitter.emit(event, ...args); } } _Events_listeners = new WeakMap(), _Events_status = new WeakMap(), _Events_instances = new WeakSet(), _Events_errorHandler = function _Events_errorHandler(callback) { return async (...args) => { var _a; try { // eslint-disable-next-line n/no-callback-literal await callback(...args); } catch (e) { const { error, statusMessage } = (0, inputErrorHandler_1.getErrorData)(e); this.node.error(error); (_a = __classPrivateFieldGet(this, _Events_status, "f")) === null || _a === void 0 ? void 0 : _a.setFailed(statusMessage); } }; }, _Events_onClose = function _Events_onClose(_removed, done) { this.removeListeners(); done(); }; exports.default = Events;