UNPKG

eureca.io

Version:

Nodejs transparent bidirectional remote procedure call (RPC) supporting multiple transports : WebRTC, Websocket, engine.io, faye ...etc

67 lines (60 loc) 2.23 kB
/** @ignore */ module Eureca { export class EObject { _events: any; constructor() { } // Dynamic extend extend(options) { if (options) { for (var key in options) this[key] = options[key]; } } // Events primitives ====================== bind(event, fct) { this._events = this._events || {}; this._events[event] = this._events[event] || []; this._events[event].push(fct); } on(event, fct) { this._events = this._events || {}; this._events[event] = this._events[event] || []; this._events[event].push(fct); } unbind(event, fct) { this._events = this._events || {}; if (event in this._events === false) return; this._events[event].splice(this._events[event].indexOf(fct), 1); } unbindEvent(event) { this._events = this._events || {}; this._events[event] = []; } unbindAll() { this._events = this._events || {}; for (var event in this._events) this._events[event] = false; } trigger(event, ...args: any[]) { this._events = this._events || {}; if (event in this._events === false) return; for (var i = 0; i < this._events[event].length; i++) { this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1)) } } registerEvent(evtname:string) { this[evtname] = function (callback, replace) { if (typeof callback == 'function') { if (replace) this.unbindEvent(evtname); this.bind(evtname, callback); } return this; } } registerEvents(eventsArray: string[]) { for (var i = 0; i < eventsArray.length; i++) this.registerEvent(eventsArray[i]); } // ==================================================================================== } }