UNPKG

eosplayer

Version:

eosplayer is the glue layer of eosjs, which is packaged based on eosjs and provides better usability for the application layer. It can be used on browsers already installed scatter or in Dapp wallets.

75 lines 2.94 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); /** * Event Handler * @desc * - only enabled event can be emitted * - If the callback of an event is not set, alert will be called by default on the browser, and Error will be triggered in nodejs * @author kinghand@foxmail.com */ var EventHandler = /** @class */ (function () { function EventHandler(supportedEvents) { this._eventMap = {}; this._supportedEvents = []; this._defaultCb = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } args.forEach(function (v) { if (v instanceof Error) { throw v; } else { throw new Error(v); } }); }; if (supportedEvents) { this.enableEvents(supportedEvents); this._eventMap = Array.isArray(supportedEvents) ? {} : supportedEvents; } } /** * enable event names * @param {Array | Object} supportedEvents - keys will be used when it's an object */ EventHandler.prototype.enableEvents = function (supportedEvents) { var newEventKeys = Array.isArray(supportedEvents) ? supportedEvents : Object.keys(supportedEvents); this._supportedEvents = (this._supportedEvents || []).concat(newEventKeys); }; /** * set callback of an event name * @param {string} event - event name * @param {Function} fnCallback - if there is already a callback, then the new one will cover the previous one. * @param {*} instance - the instance of the callback. * @return {EventHandler} - for pipeline */ EventHandler.prototype.setEvent = function (event, fnCallback, instance) { if (!this._supportedEvents.find(function (name) { return name === event; })) { throw new Error("event handler : event " + event + " are not supported."); } this._eventMap[event] = { cb: fnCallback, ctx: instance }; return this; }; /** * trigger an event by name * @param {string} event - event name * @param {Array} args - arguments */ EventHandler.prototype.emitEvent = function (event) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var _a, _b; if (!this._supportedEvents.find(function (name) { return name === event; })) { throw new Error("event handler : event " + event + " are not found."); } var e = this._eventMap[event]; return e ? (_a = e.cb).call.apply(_a, [e.ctx].concat(args)) : (_b = this._defaultCb).call.apply(_b, [event].concat(args)); }; return EventHandler; }()); exports.default = EventHandler; //# sourceMappingURL=eventHandler.js.map