Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
jajbshjahavahh
GitHub Repository: jajbshjahavahh/Gojo-Satoru
Path: blob/master/node_modules/@protobufjs/eventemitter/index.js
2591 views
1
"use strict";
2
module.exports = EventEmitter;
3
4
/**
5
* Constructs a new event emitter instance.
6
* @classdesc A minimal event emitter.
7
* @memberof util
8
* @constructor
9
*/
10
function EventEmitter() {
11
12
/**
13
* Registered listeners.
14
* @type {Object.<string,*>}
15
* @private
16
*/
17
this._listeners = {};
18
}
19
20
/**
21
* Registers an event listener.
22
* @param {string} evt Event name
23
* @param {function} fn Listener
24
* @param {*} [ctx] Listener context
25
* @returns {util.EventEmitter} `this`
26
*/
27
EventEmitter.prototype.on = function on(evt, fn, ctx) {
28
(this._listeners[evt] || (this._listeners[evt] = [])).push({
29
fn : fn,
30
ctx : ctx || this
31
});
32
return this;
33
};
34
35
/**
36
* Removes an event listener or any matching listeners if arguments are omitted.
37
* @param {string} [evt] Event name. Removes all listeners if omitted.
38
* @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.
39
* @returns {util.EventEmitter} `this`
40
*/
41
EventEmitter.prototype.off = function off(evt, fn) {
42
if (evt === undefined)
43
this._listeners = {};
44
else {
45
if (fn === undefined)
46
this._listeners[evt] = [];
47
else {
48
var listeners = this._listeners[evt];
49
for (var i = 0; i < listeners.length;)
50
if (listeners[i].fn === fn)
51
listeners.splice(i, 1);
52
else
53
++i;
54
}
55
}
56
return this;
57
};
58
59
/**
60
* Emits an event by calling its listeners with the specified arguments.
61
* @param {string} evt Event name
62
* @param {...*} args Arguments
63
* @returns {util.EventEmitter} `this`
64
*/
65
EventEmitter.prototype.emit = function emit(evt) {
66
var listeners = this._listeners[evt];
67
if (listeners) {
68
var args = [],
69
i = 1;
70
for (; i < arguments.length;)
71
args.push(arguments[i++]);
72
for (i = 0; i < listeners.length;)
73
listeners[i].fn.apply(listeners[i++].ctx, args);
74
}
75
return this;
76
};
77
78