UNPKG

streamdeck-typescript

Version:

This library will help you build elgato stream deck plugins in typescript

46 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventManager = void 0; const illegal_argument_error_1 = require("../errors/illegal-argument.error"); class EventManager { constructor() { this.registeredEvents = new Map(); } static get INSTANCE() { if (!this._INSTANCE) this._INSTANCE = new EventManager(); return this._INSTANCE; } static DefaultDecoratorEventListener(event, target, propertyKey, descriptor) { const eventListener = (actionName, instance) => { if (typeof actionName !== 'string') { throw new illegal_argument_error_1.IllegalArgumentError(`actionName needs to be of type string but ${typeof actionName} given.`); } EventManager.INSTANCE.registerEvent(event, (eventActionName, ...params) => { if (!eventActionName || actionName === '*' || eventActionName === '*' || actionName === eventActionName) descriptor.value.apply(instance, params); }); }; if (!target._sd_events) { target._sd_events = []; } target._sd_events.push(eventListener); return descriptor; } registerEvent(eventName, callback) { var _a; if (!this.registeredEvents.has(eventName)) this.registeredEvents.set(eventName, []); (_a = this.registeredEvents.get(eventName)) === null || _a === void 0 ? void 0 : _a.push(callback); } callEvents(eventName, actionName = '*', ...params) { var _a; (_a = this.registeredEvents .get(eventName)) === null || _a === void 0 ? void 0 : _a.forEach((val) => val(actionName, ...params)); } } exports.EventManager = EventManager; //# sourceMappingURL=event.manager.js.map