'use strict'; function SyncEventEmitter () { this.listeners = new Map(); } SyncEventEmitter.prototype.on = function (ev, callback) { if (this.listeners.has(ev)) { this.listeners.remove(ev); } this.listeners.set(ev, callback); return this; }; SyncEventEmitter.prototype.emit = function (ev) { if (this.listeners.has(ev)) { let params = []; for (var i = 1 ; i < arguments.length ; ++i) { params.push(arguments[i]); } return this.listeners.get(ev).apply(undefined, params); } }; SyncEventEmitter.prototype.removeListener = function (ev) { if (this.listeners.has(ev)) { this.listeners.remove(ev); } }; SyncEventEmitter.prototype.hasListener = function (ev) { return this.listeners.has(ev); }; module.exports = SyncEventEmitter;