UNPKG

strong-events

Version:

Strong Typed Event Emitter for TypeScript / JavaScript.

73 lines (72 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var EventEmitter = /** @class */ (function () { function EventEmitter() { this.handlers = []; } EventEmitter.prototype.register = function (cb, once) { if (once === void 0) { once = false; } this.handlers.push(cb); return this; }; EventEmitter.prototype.invoke = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.handlers.forEach(function (handler) { return handler.apply(void 0, args); }); }; EventEmitter.prototype.invokeAsync = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return Promise.all(this.handlers.map(function (handler) { return handler.apply(void 0, args); })); }; EventEmitter.prototype.remove = function (cb) { var index = this.handlers.indexOf(cb); this.handlers[index] = this.handlers[this.handlers.length - 1]; this.handlers.pop(); }; EventEmitter.prototype.clear = function () { this.handlers = []; }; return EventEmitter; }()); exports.EventEmitter = EventEmitter; function createSignal() { var emitter = new EventEmitter(); function register(cb) { return emitter.register(cb, this === null); } ; register.once = function (cb) { var callback = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } cb.apply(void 0, args); emitter.remove(callback); }; emitter.register(callback); }; register.remove = function (cb) { return emitter.remove(cb); }; register.invoke = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return emitter.invoke.apply(emitter, args); }; register.invokeAsync = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return emitter.invokeAsync.apply(emitter, args); }; register.clear = function () { return emitter.clear(); }; return register; } exports.createSignal = createSignal;