@irrelon/emitter 5.0.3 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/Emitter.d.ts +202 -0
- package/{src → dist/cjs/src}/Emitter.js +50 -129
- package/dist/cjs/tests/Emitter.test.js +357 -0
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/mjs/package.json +3 -0
- package/dist/mjs/src/Emitter.d.ts +202 -0
- package/dist/mjs/src/Emitter.js +483 -0
- package/dist/mjs/tests/Emitter.test.d.ts +1 -0
- package/dist/mjs/tests/Emitter.test.js +336 -0
- package/dist/mjs/tsconfig.tsbuildinfo +1 -0
- package/fixup.sh +11 -0
- package/license.md +11 -0
- package/package.json +10 -4
- package/readme.md +1 -1
- package/src/Emitter.ts +133 -113
- package/tests/Emitter.test.ts +132 -32
- package/tsconfig-base.json +36 -0
- package/tsconfig-cjs.json +8 -0
- package/tsconfig.json +5 -47
- package/src/Emitter.d.ts +0 -190
- package/tests/Emitter.test.js +0 -277
- /package/{tests → dist/cjs/tests}/Emitter.test.d.ts +0 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const assert_1 = __importDefault(require("assert"));
|
|
16
|
+
const Emitter_1 = require("../src/Emitter");
|
|
17
|
+
let expectedAssertions = 0;
|
|
18
|
+
let actualAssertions = 0;
|
|
19
|
+
function expect(val) {
|
|
20
|
+
expectedAssertions = val;
|
|
21
|
+
}
|
|
22
|
+
function reset() {
|
|
23
|
+
expectedAssertions = 0;
|
|
24
|
+
actualAssertions = 0;
|
|
25
|
+
}
|
|
26
|
+
function countAssertion() {
|
|
27
|
+
actualAssertions++;
|
|
28
|
+
}
|
|
29
|
+
function check() {
|
|
30
|
+
if (expectedAssertions === undefined || expectedAssertions === actualAssertions) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
throw new Error("expected " + expectedAssertions + " assertions, got " + actualAssertions);
|
|
34
|
+
}
|
|
35
|
+
beforeEach(reset);
|
|
36
|
+
afterEach(check);
|
|
37
|
+
describe("Emitter", () => {
|
|
38
|
+
describe("new Emitter()", () => {
|
|
39
|
+
it("Creates emitter instance by instantiation", () => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const myClass = new Emitter_1.Emitter();
|
|
42
|
+
myClass.on("moo", () => {
|
|
43
|
+
});
|
|
44
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["*"].length, 1, "Listener registered on event");
|
|
45
|
+
myClass.off("moo");
|
|
46
|
+
assert_1.default.strictEqual(!((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo) || !myClass._eventListeners.moo["*"] || myClass._eventListeners.moo["*"].length, true, "Listeners all removed from event");
|
|
47
|
+
});
|
|
48
|
+
it("Supports extending Emitter as a base class", () => {
|
|
49
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
50
|
+
let testFuncCount = 0;
|
|
51
|
+
// Test extending Emitter and modifying base functionality
|
|
52
|
+
class MyClass extends Emitter_1.Emitter {
|
|
53
|
+
testFunc() {
|
|
54
|
+
testFuncCount++;
|
|
55
|
+
}
|
|
56
|
+
on(eventName, ...rest) {
|
|
57
|
+
const restTypes = rest.map((arg) => typeof arg);
|
|
58
|
+
if (restTypes[0] === "function") {
|
|
59
|
+
const listener = restTypes[0];
|
|
60
|
+
const id = "^^noId";
|
|
61
|
+
return super.on(eventName, id, listener);
|
|
62
|
+
}
|
|
63
|
+
return super.on(eventName, rest[0], rest[1]);
|
|
64
|
+
}
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
emit(eventName, ...rest) {
|
|
67
|
+
return super.emitId(eventName, "^^noId", ...rest);
|
|
68
|
+
}
|
|
69
|
+
off(eventName, ...rest) {
|
|
70
|
+
let id = rest[0];
|
|
71
|
+
let func = rest[1];
|
|
72
|
+
if (typeof rest[0] === "function") {
|
|
73
|
+
func = rest[0];
|
|
74
|
+
id = "^^noId";
|
|
75
|
+
}
|
|
76
|
+
else if (typeof id === "undefined") {
|
|
77
|
+
id = "^^noId";
|
|
78
|
+
}
|
|
79
|
+
return super.off(eventName, id, func);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const myClass = new MyClass();
|
|
83
|
+
let emitCount = 0;
|
|
84
|
+
// Register id-based listener
|
|
85
|
+
myClass.on("moo", "testId", () => {
|
|
86
|
+
emitCount++;
|
|
87
|
+
});
|
|
88
|
+
// Register non-id-based listener
|
|
89
|
+
myClass.on("moo", () => {
|
|
90
|
+
emitCount++;
|
|
91
|
+
});
|
|
92
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["testId"].length, 1, "Listener registered on event");
|
|
93
|
+
myClass.emitId("moo", "testId", "foo");
|
|
94
|
+
assert_1.default.strictEqual(emitCount, 1, "Event fired correctly");
|
|
95
|
+
myClass.off("moo", "testId");
|
|
96
|
+
assert_1.default.strictEqual(!((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo) || !((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["testId"]) || ((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length) === 0, true, "Listeners all removed from event");
|
|
97
|
+
assert_1.default.strictEqual(((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo) && ((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["^^noId"]) && ((_g = myClass._eventListeners) === null || _g === void 0 ? void 0 : _g.moo["^^noId"].length) === 1, true, "Global listener still there");
|
|
98
|
+
assert_1.default.strictEqual(!((_h = myClass._eventListeners) === null || _h === void 0 ? void 0 : _h.moo) || !((_j = myClass._eventListeners) === null || _j === void 0 ? void 0 : _j.moo["*"]) || ((_k = myClass._eventListeners) === null || _k === void 0 ? void 0 : _k.moo["*"].length) === 0, true, "Global listener still there");
|
|
99
|
+
myClass.off("moo");
|
|
100
|
+
assert_1.default.strictEqual(!((_l = myClass._eventListeners) === null || _l === void 0 ? void 0 : _l.moo) || !((_m = myClass._eventListeners) === null || _m === void 0 ? void 0 : _m.moo["*"]) || ((_o = myClass._eventListeners) === null || _o === void 0 ? void 0 : _o.moo["*"].length) === 0, true, "Listeners all removed from event");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("emit()", () => {
|
|
104
|
+
it("Supports type safe usage", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
|
+
const emitter = new Emitter_1.Emitter();
|
|
106
|
+
let listenerFiredCount = 0;
|
|
107
|
+
emitter.on("person", (name, age, enabled) => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
return new Promise((resolve) => {
|
|
109
|
+
setTimeout(() => {
|
|
110
|
+
listenerFiredCount++;
|
|
111
|
+
resolve();
|
|
112
|
+
}, 1000);
|
|
113
|
+
});
|
|
114
|
+
}));
|
|
115
|
+
emitter.on("post", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
listenerFiredCount++;
|
|
119
|
+
resolve();
|
|
120
|
+
}, 1000);
|
|
121
|
+
});
|
|
122
|
+
}));
|
|
123
|
+
emitter.on("post", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
|
+
return new Promise((resolve) => {
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
listenerFiredCount++;
|
|
127
|
+
resolve();
|
|
128
|
+
}, 1000);
|
|
129
|
+
});
|
|
130
|
+
}));
|
|
131
|
+
const time = new Date().getTime();
|
|
132
|
+
yield emitter.emit("post");
|
|
133
|
+
const delta = new Date().getTime() - time;
|
|
134
|
+
assert_1.default.ok(delta > 900, `Delta was not correct, await may not have paused? Delta was: ${delta}`);
|
|
135
|
+
}));
|
|
136
|
+
it("Supports awaiting async listeners", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
const emitter = new Emitter_1.Emitter();
|
|
138
|
+
let listenerFiredCount = 0;
|
|
139
|
+
emitter.on("foo", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
140
|
+
return new Promise((resolve) => {
|
|
141
|
+
setTimeout(() => {
|
|
142
|
+
listenerFiredCount++;
|
|
143
|
+
resolve();
|
|
144
|
+
}, 1000);
|
|
145
|
+
});
|
|
146
|
+
}));
|
|
147
|
+
emitter.on("foo", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
148
|
+
return new Promise((resolve) => {
|
|
149
|
+
setTimeout(() => {
|
|
150
|
+
listenerFiredCount++;
|
|
151
|
+
resolve();
|
|
152
|
+
}, 1000);
|
|
153
|
+
});
|
|
154
|
+
}));
|
|
155
|
+
const time = new Date().getTime();
|
|
156
|
+
yield emitter.emit("foo");
|
|
157
|
+
const delta = new Date().getTime() - time;
|
|
158
|
+
assert_1.default.ok(delta > 900, "Delta was not correct, await may not have paused?");
|
|
159
|
+
}));
|
|
160
|
+
});
|
|
161
|
+
describe("off()", () => {
|
|
162
|
+
it("Cancels all listeners (event)", () => {
|
|
163
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
164
|
+
const myClass = new Emitter_1.Emitter();
|
|
165
|
+
const listener1 = () => {
|
|
166
|
+
};
|
|
167
|
+
const listener2 = () => {
|
|
168
|
+
};
|
|
169
|
+
myClass.on("moo", () => {
|
|
170
|
+
});
|
|
171
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["*"].length, 1, "Listeners registered on event");
|
|
172
|
+
myClass.on("moo", "testId", () => {
|
|
173
|
+
});
|
|
174
|
+
assert_1.default.strictEqual((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo["testId"].length, 1, "Listeners registered on event");
|
|
175
|
+
myClass.on("moo", listener1);
|
|
176
|
+
assert_1.default.strictEqual((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["*"].length, 2, "Listeners registered on event");
|
|
177
|
+
myClass.on("moo", "testId", listener2);
|
|
178
|
+
assert_1.default.strictEqual((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length, 2, "Listeners registered on event");
|
|
179
|
+
myClass.off("moo");
|
|
180
|
+
assert_1.default.strictEqual(!((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo) || (((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["*"].length) === 0 && ((_g = myClass._eventListeners) === null || _g === void 0 ? void 0 : _g.moo["testId"].length) === 0), true, "Listeners all removed from event");
|
|
181
|
+
});
|
|
182
|
+
it("Cancels id-based listeners (event, id)", () => {
|
|
183
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
184
|
+
const myClass = new Emitter_1.Emitter();
|
|
185
|
+
const listener1 = () => {
|
|
186
|
+
};
|
|
187
|
+
const listener2 = () => {
|
|
188
|
+
};
|
|
189
|
+
myClass.on("moo", () => {
|
|
190
|
+
});
|
|
191
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["*"].length, 1, "Listeners registered on event");
|
|
192
|
+
myClass.on("moo", "testId", () => {
|
|
193
|
+
});
|
|
194
|
+
assert_1.default.strictEqual((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo["testId"].length, 1, "Listeners registered on event");
|
|
195
|
+
myClass.on("moo", listener1);
|
|
196
|
+
assert_1.default.strictEqual((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["*"].length, 2, "Listeners registered on event");
|
|
197
|
+
myClass.on("moo", "testId", listener2);
|
|
198
|
+
assert_1.default.strictEqual((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length, 2, "Listeners registered on event");
|
|
199
|
+
myClass.off("moo", "testId");
|
|
200
|
+
assert_1.default.strictEqual(((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo["*"].length) === 2, true, "Listeners all removed from event");
|
|
201
|
+
assert_1.default.strictEqual(!((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["testId"]) || ((_g = myClass._eventListeners) === null || _g === void 0 ? void 0 : _g.moo["testId"].length) === 0, true, "Listeners all removed from event");
|
|
202
|
+
});
|
|
203
|
+
it("Cancels listener-based listeners (event, listener)", () => {
|
|
204
|
+
var _a, _b, _c, _d, _e, _f;
|
|
205
|
+
const myClass = new Emitter_1.Emitter();
|
|
206
|
+
const listener1 = () => {
|
|
207
|
+
};
|
|
208
|
+
const listener2 = () => {
|
|
209
|
+
};
|
|
210
|
+
myClass.on("moo", () => {
|
|
211
|
+
});
|
|
212
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["*"].length, 1, "Listeners registered on event");
|
|
213
|
+
myClass.on("moo", "testId", () => {
|
|
214
|
+
});
|
|
215
|
+
assert_1.default.strictEqual((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo["testId"].length, 1, "Listeners registered on event");
|
|
216
|
+
myClass.on("moo", listener1);
|
|
217
|
+
assert_1.default.strictEqual((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["*"].length, 2, "Listeners registered on event");
|
|
218
|
+
myClass.on("moo", "testId", listener2);
|
|
219
|
+
assert_1.default.strictEqual((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length, 2, "Listeners registered on event");
|
|
220
|
+
myClass.off("moo", listener1);
|
|
221
|
+
assert_1.default.strictEqual(((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo["*"].length) === 1, true, "Listeners all removed from event");
|
|
222
|
+
assert_1.default.strictEqual(((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["testId"].length) === 2, true, "Listeners all removed from event");
|
|
223
|
+
});
|
|
224
|
+
it("Cancels id-based + listener-based listeners (event, id, listener)", () => {
|
|
225
|
+
var _a, _b, _c, _d, _e, _f;
|
|
226
|
+
const myClass = new Emitter_1.Emitter();
|
|
227
|
+
const listener1 = () => {
|
|
228
|
+
};
|
|
229
|
+
const listener2 = () => {
|
|
230
|
+
};
|
|
231
|
+
myClass.on("moo", () => {
|
|
232
|
+
});
|
|
233
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["*"].length, 1, "Listeners registered on event");
|
|
234
|
+
myClass.on("moo", "testId", () => {
|
|
235
|
+
});
|
|
236
|
+
assert_1.default.strictEqual((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo["testId"].length, 1, "Listeners registered on event");
|
|
237
|
+
myClass.on("moo", listener1);
|
|
238
|
+
assert_1.default.strictEqual((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["*"].length, 2, "Listeners registered on event");
|
|
239
|
+
myClass.on("moo", "testId", listener2);
|
|
240
|
+
assert_1.default.strictEqual((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length, 2, "Listeners registered on event");
|
|
241
|
+
myClass.off("moo", "testId", listener2);
|
|
242
|
+
assert_1.default.strictEqual(((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo["*"].length) === 2, true, "Listeners all removed from event");
|
|
243
|
+
assert_1.default.strictEqual(((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["testId"].length) === 1, true, "Listeners all removed from event");
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
describe("emitStatic()", () => {
|
|
247
|
+
it("Static emitter will emit when a new listener is added", (resolve) => {
|
|
248
|
+
class MyClass extends Emitter_1.Emitter {
|
|
249
|
+
}
|
|
250
|
+
expect(1);
|
|
251
|
+
const myClass = new MyClass();
|
|
252
|
+
myClass.emitStatic("moo");
|
|
253
|
+
myClass.on("moo", () => {
|
|
254
|
+
countAssertion();
|
|
255
|
+
assert_1.default.ok(true, "Callback was fired");
|
|
256
|
+
resolve();
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe("cancelStatic()", () => {
|
|
261
|
+
it("Removes static emitter", (resolve) => {
|
|
262
|
+
class MyClass extends Emitter_1.Emitter {
|
|
263
|
+
}
|
|
264
|
+
expect(1);
|
|
265
|
+
const myClass = new MyClass();
|
|
266
|
+
myClass.emitStatic("moo");
|
|
267
|
+
myClass.on("moo", () => {
|
|
268
|
+
countAssertion();
|
|
269
|
+
assert_1.default.ok(true, "Callback was fired");
|
|
270
|
+
});
|
|
271
|
+
myClass.cancelStatic("moo");
|
|
272
|
+
myClass.on("moo", () => {
|
|
273
|
+
countAssertion();
|
|
274
|
+
assert_1.default.ok(false, "Callback was fired");
|
|
275
|
+
});
|
|
276
|
+
setTimeout(() => {
|
|
277
|
+
resolve();
|
|
278
|
+
}, 10);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
describe("overwrite()", () => {
|
|
282
|
+
it("Only fires the last listener added, cancelling all other listeners before it", (resolve) => {
|
|
283
|
+
class MyClass extends Emitter_1.Emitter {
|
|
284
|
+
}
|
|
285
|
+
expect(1);
|
|
286
|
+
const myClass = new MyClass();
|
|
287
|
+
myClass.on("moo", () => {
|
|
288
|
+
countAssertion();
|
|
289
|
+
assert_1.default.ok(false, "Correct callback was fired");
|
|
290
|
+
});
|
|
291
|
+
myClass.on("moo", () => {
|
|
292
|
+
countAssertion();
|
|
293
|
+
assert_1.default.ok(false, "Correct callback was fired");
|
|
294
|
+
});
|
|
295
|
+
myClass.overwrite("moo", () => {
|
|
296
|
+
countAssertion();
|
|
297
|
+
assert_1.default.ok(true, "Correct callback was fired");
|
|
298
|
+
});
|
|
299
|
+
myClass.emit("moo");
|
|
300
|
+
setTimeout(() => {
|
|
301
|
+
resolve();
|
|
302
|
+
}, 10);
|
|
303
|
+
});
|
|
304
|
+
it("Only fires the last listener added (with id), cancelling all other listeners before it", (resolve) => {
|
|
305
|
+
class MyClass extends Emitter_1.Emitter {
|
|
306
|
+
}
|
|
307
|
+
expect(2);
|
|
308
|
+
const myClass = new MyClass();
|
|
309
|
+
// Define a listener without an id, this should not be overwritten
|
|
310
|
+
myClass.on("moo", () => {
|
|
311
|
+
countAssertion();
|
|
312
|
+
assert_1.default.ok(true, "Correct callback was fired");
|
|
313
|
+
});
|
|
314
|
+
// Define some listeners WITH ids, these should be overwritten
|
|
315
|
+
myClass.on("moo", "1234", () => {
|
|
316
|
+
countAssertion();
|
|
317
|
+
assert_1.default.ok(false, "Correct callback was fired");
|
|
318
|
+
});
|
|
319
|
+
myClass.on("moo", "1234", () => {
|
|
320
|
+
countAssertion();
|
|
321
|
+
assert_1.default.ok(false, "Correct callback was fired");
|
|
322
|
+
});
|
|
323
|
+
// Overwrite the id listeners
|
|
324
|
+
myClass.overwrite("moo", "1234", () => {
|
|
325
|
+
countAssertion();
|
|
326
|
+
assert_1.default.ok(true, "Correct callback was fired");
|
|
327
|
+
});
|
|
328
|
+
myClass.emitId("moo", "1234");
|
|
329
|
+
setTimeout(() => {
|
|
330
|
+
resolve();
|
|
331
|
+
}, 50);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
describe("emitId()", () => {
|
|
335
|
+
it("Fires an id-based event first followed by a global event", () => {
|
|
336
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
337
|
+
const myClass = new Emitter_1.Emitter();
|
|
338
|
+
let emitCount = 0;
|
|
339
|
+
// Register id-based listener
|
|
340
|
+
myClass.on("moo", "testId", () => {
|
|
341
|
+
emitCount++;
|
|
342
|
+
});
|
|
343
|
+
// Register non-id-based listener
|
|
344
|
+
myClass.on("moo", () => {
|
|
345
|
+
emitCount++;
|
|
346
|
+
});
|
|
347
|
+
assert_1.default.strictEqual((_a = myClass._eventListeners) === null || _a === void 0 ? void 0 : _a.moo["testId"].length, 1, "Listener registered on event");
|
|
348
|
+
myClass.emitId("moo", "testId", "foo");
|
|
349
|
+
assert_1.default.strictEqual(emitCount, 2, "Event fired correctly");
|
|
350
|
+
myClass.off("moo", "testId");
|
|
351
|
+
assert_1.default.strictEqual(!((_b = myClass._eventListeners) === null || _b === void 0 ? void 0 : _b.moo) || !((_c = myClass._eventListeners) === null || _c === void 0 ? void 0 : _c.moo["testId"]) || ((_d = myClass._eventListeners) === null || _d === void 0 ? void 0 : _d.moo["testId"].length), true, "Listeners all removed from event");
|
|
352
|
+
assert_1.default.strictEqual(((_e = myClass._eventListeners) === null || _e === void 0 ? void 0 : _e.moo) && ((_f = myClass._eventListeners) === null || _f === void 0 ? void 0 : _f.moo["*"]) && ((_g = myClass._eventListeners) === null || _g === void 0 ? void 0 : _g.moo["*"].length) === 1, true, "Global listener still there");
|
|
353
|
+
myClass.off("moo");
|
|
354
|
+
assert_1.default.strictEqual(!((_h = myClass._eventListeners) === null || _h === void 0 ? void 0 : _h.moo) || !((_j = myClass._eventListeners) === null || _j === void 0 ? void 0 : _j.moo["*"]) || ((_k = myClass._eventListeners) === null || _k === void 0 ? void 0 : _k.moo["*"].length) === 0, true, "Listeners all removed from event");
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../src/emitter.ts","../../tests/emitter.test.ts","../../node_modules/@types/node/ts4.8/assert.d.ts","../../node_modules/@types/node/ts4.8/assert/strict.d.ts","../../node_modules/@types/node/ts4.8/globals.d.ts","../../node_modules/@types/node/ts4.8/async_hooks.d.ts","../../node_modules/@types/node/ts4.8/buffer.d.ts","../../node_modules/@types/node/ts4.8/child_process.d.ts","../../node_modules/@types/node/ts4.8/cluster.d.ts","../../node_modules/@types/node/ts4.8/console.d.ts","../../node_modules/@types/node/ts4.8/constants.d.ts","../../node_modules/@types/node/ts4.8/crypto.d.ts","../../node_modules/@types/node/ts4.8/dgram.d.ts","../../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../../node_modules/@types/node/ts4.8/dns.d.ts","../../node_modules/@types/node/ts4.8/dns/promises.d.ts","../../node_modules/@types/node/ts4.8/domain.d.ts","../../node_modules/@types/node/ts4.8/events.d.ts","../../node_modules/@types/node/ts4.8/fs.d.ts","../../node_modules/@types/node/ts4.8/fs/promises.d.ts","../../node_modules/@types/node/ts4.8/http.d.ts","../../node_modules/@types/node/ts4.8/http2.d.ts","../../node_modules/@types/node/ts4.8/https.d.ts","../../node_modules/@types/node/ts4.8/inspector.d.ts","../../node_modules/@types/node/ts4.8/module.d.ts","../../node_modules/@types/node/ts4.8/net.d.ts","../../node_modules/@types/node/ts4.8/os.d.ts","../../node_modules/@types/node/ts4.8/path.d.ts","../../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../node_modules/@types/node/ts4.8/process.d.ts","../../node_modules/@types/node/ts4.8/punycode.d.ts","../../node_modules/@types/node/ts4.8/querystring.d.ts","../../node_modules/@types/node/ts4.8/readline.d.ts","../../node_modules/@types/node/ts4.8/readline/promises.d.ts","../../node_modules/@types/node/ts4.8/repl.d.ts","../../node_modules/@types/node/ts4.8/stream.d.ts","../../node_modules/@types/node/ts4.8/stream/promises.d.ts","../../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../../node_modules/@types/node/ts4.8/stream/web.d.ts","../../node_modules/@types/node/ts4.8/string_decoder.d.ts","../../node_modules/@types/node/ts4.8/test.d.ts","../../node_modules/@types/node/ts4.8/timers.d.ts","../../node_modules/@types/node/ts4.8/timers/promises.d.ts","../../node_modules/@types/node/ts4.8/tls.d.ts","../../node_modules/@types/node/ts4.8/trace_events.d.ts","../../node_modules/@types/node/ts4.8/tty.d.ts","../../node_modules/@types/node/ts4.8/url.d.ts","../../node_modules/@types/node/ts4.8/util.d.ts","../../node_modules/@types/node/ts4.8/v8.d.ts","../../node_modules/@types/node/ts4.8/vm.d.ts","../../node_modules/@types/node/ts4.8/wasi.d.ts","../../node_modules/@types/node/ts4.8/worker_threads.d.ts","../../node_modules/@types/node/ts4.8/zlib.d.ts","../../node_modules/@types/node/ts4.8/globals.global.d.ts","../../node_modules/@types/node/ts4.8/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"b70aa0fb83e36865d0a0eaf6c48ac44e20cf3f24a63327803b98af47bfb3cb78","signature":"95de3cc79ce33b1197a6c7a1fb78998b3fb77583c814bf16eb58906126ac5333"},{"version":"35c646323071a40f8561d46a3ab38f101a817e4891948299ebb098d2f6957a92","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","c4cfc9a6e2ebb8bc8c0e2392dfc4056993ced3b35069ebf132ac18ca7a562881","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","df36874d9e56aff601e921c4b3971d37cf66d14f6455935ce821e6cad13b1823","3c135ff5bda0355f6b52a10ea931736ec7c5a80b7fb8772019054e0eaa0fd6b6","1abb206a4ecd13b21536b677d7d5f66e0d7316f0d44610197cfcc5776f78884a","dbe5aa5a5dd8bd1c6a8d11b1310c3f0cdabaacc78a37b394a8c7b14faeb5fb84","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"76527127c8b749bee5977408861ce3ee56ec19ddcea8704c628f98ca610283e6","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b68bd7bef90dab08b1866a9fee24f03d9fee10bcb3f587b074e96e61abf6d3f0","cb4f3f03480e1727eae46400606cecaa97f550186ff8fa909ebc00db4180531b",{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","0830071706fa0e477fb5e95f0955cc1062b5948b146b7d4e03a126f12ad6085f",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"ecd8eb2ed2ea3f7e17ae00a2ce61db2c199e6e3944f6ff4a02de85c1a98e38eb","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","032cbd1883827ca3728c1400145403b62e65b7b584a0d2115ae538c9edec7936","427ce5854885cfc34387e09de05c1d5c1acf94c2143e1693f1d9ff54880573e7","bed2c4f96fab3348be4a34d88dcb12578c1b2475b07c6acd369e99e227718d81","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","3b105d5a0dacc73812d93e90d3c7243fd5a9c0566a2e63bc2964ca12d882c8e8",{"version":"458e2fd1185e659cb800ef68d01ef77de70dcab8860bedf6d94eaebe736751f1","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"downlevelIteration":true,"esModuleInterop":true,"inlineSourceMap":false,"module":1,"outDir":"./","skipLibCheck":false,"strict":true,"target":2},"fileIdsList":[[101],[101,111],[101,113,116],[56,101],[59,101],[60,65,101],[61,71,72,79,89,100,101],[61,62,71,79,101],[63,101],[64,65,72,80,101],[65,89,97,101],[66,68,71,79,101],[67,101],[68,69,101],[70,71,101],[71,101],[71,72,73,89,100,101],[71,72,73,89,92,101],[101,105],[74,79,89,100,101],[71,72,74,75,79,89,97,100,101],[74,76,89,97,100,101],[56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],[71,77,101],[78,100,101],[68,71,79,89,101],[80,101],[81,101],[59,82,101],[83,99,101,105],[84,101],[85,101],[71,86,87,101],[86,88,101,103],[71,89,90,91,92,101],[89,91,101],[89,90,101],[92,101],[93,101],[71,95,96,101],[95,96,101],[65,79,89,97,101],[98,101],[79,99,101],[60,74,85,100,101],[65,101],[89,101,102],[101,103],[101,104],[60,65,71,73,82,89,100,101,103,105],[89,101,106],[101,109,115],[101,113],[101,110,114],[101,112],[54,56,101]],"referencedMap":[[109,1],[112,2],[111,1],[117,3],[56,4],[57,4],[59,5],[60,6],[61,7],[62,8],[63,9],[64,10],[65,11],[66,12],[67,13],[68,14],[69,14],[70,15],[71,16],[72,17],[73,18],[58,19],[107,1],[74,20],[75,21],[76,22],[108,23],[77,24],[78,25],[79,26],[80,27],[81,28],[82,29],[83,30],[84,31],[85,32],[86,33],[87,33],[88,34],[89,35],[91,36],[90,37],[92,38],[93,39],[94,1],[95,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[116,52],[114,53],[115,54],[110,1],[113,55],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[4,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[32,1],[33,1],[34,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[8,1],[46,1],[43,1],[44,1],[45,1],[47,1],[9,1],[48,1],[49,1],[50,1],[51,1],[52,1],[1,1],[10,1],[53,1],[54,1],[55,56]],"exportedModulesMap":[[109,1],[112,2],[111,1],[117,3],[56,4],[57,4],[59,5],[60,6],[61,7],[62,8],[63,9],[64,10],[65,11],[66,12],[67,13],[68,14],[69,14],[70,15],[71,16],[72,17],[73,18],[58,19],[107,1],[74,20],[75,21],[76,22],[108,23],[77,24],[78,25],[79,26],[80,27],[81,28],[82,29],[83,30],[84,31],[85,32],[86,33],[87,33],[88,34],[89,35],[91,36],[90,37],[92,38],[93,39],[94,1],[95,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[116,52],[114,53],[115,54],[110,1],[113,55],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[4,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[32,1],[33,1],[34,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[8,1],[46,1],[43,1],[44,1],[45,1],[47,1],[9,1],[48,1],[49,1],[50,1],[51,1],[52,1],[1,1],[10,1],[53,1]],"semanticDiagnosticsPerFile":[109,112,111,117,56,57,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,107,74,75,76,108,77,78,79,80,81,82,83,84,85,86,87,88,89,91,90,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,116,114,115,110,113,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,36,41,42,37,38,39,40,8,46,43,44,45,47,9,48,49,50,51,52,1,10,53,54,55]},"version":"4.8.4"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export declare type AnyFunction<ReturnType = any> = (...args: any[]) => ReturnType;
|
|
2
|
+
export declare type AnyConstructor = new (...args: any[]) => any;
|
|
3
|
+
export declare enum EventReturnFlag {
|
|
4
|
+
none = 0,
|
|
5
|
+
cancel = 1
|
|
6
|
+
}
|
|
7
|
+
export declare type EventListenerCallback<EventCallbackFunctionSignature extends AnyFunction = AnyFunction> = (...args: Parameters<EventCallbackFunctionSignature>) => ReturnType<EventCallbackFunctionSignature>;
|
|
8
|
+
export interface EventStaticEmitterObject<EventCallbackFunctionSignature extends AnyFunction = AnyFunction> {
|
|
9
|
+
id: string;
|
|
10
|
+
args: Parameters<EventCallbackFunctionSignature>;
|
|
11
|
+
}
|
|
12
|
+
export interface EmitterEventsInterface {
|
|
13
|
+
[key: string]: AnyFunction;
|
|
14
|
+
}
|
|
15
|
+
export declare type ConvertInterfaceToDict<T> = {
|
|
16
|
+
[K in keyof T]: T[K];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new class with the capability to emit events.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Emitter<EventsInterface extends EmitterEventsInterface = EmitterEventsInterface> {
|
|
22
|
+
_eventsEmitting: boolean;
|
|
23
|
+
_eventRemovalQueue: any[];
|
|
24
|
+
_eventListeners?: {
|
|
25
|
+
[EventName in (keyof EventsInterface)]?: Record<string, EventListenerCallback<EventsInterface[EventName]>[]>;
|
|
26
|
+
};
|
|
27
|
+
_eventStaticEmitters: {
|
|
28
|
+
[EventName in (keyof EventsInterface)]?: EventStaticEmitterObject<EventsInterface[EventName]>[];
|
|
29
|
+
};
|
|
30
|
+
_eventsAllowDefer: boolean;
|
|
31
|
+
_eventsDeferTimeouts: Record<any, number>;
|
|
32
|
+
/**
|
|
33
|
+
* Attach an event listener to the passed event only if the passed
|
|
34
|
+
* id matches the id for the event being fired.
|
|
35
|
+
* @param eventName The name of the event to listen for.
|
|
36
|
+
* @param id The id to match against.
|
|
37
|
+
* @param listener The method to call when the event is fired.
|
|
38
|
+
* @returns The emitter instance.
|
|
39
|
+
*/
|
|
40
|
+
_on<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
41
|
+
/**
|
|
42
|
+
* Attach an event listener to the passed event only if the passed
|
|
43
|
+
* id matches the document id for the event being fired.
|
|
44
|
+
* @param eventName The name of the event to listen for.
|
|
45
|
+
* @param id The id to match against.
|
|
46
|
+
* @param listener The method to call when the event is fired.
|
|
47
|
+
* @returns The emitter instance.
|
|
48
|
+
*/
|
|
49
|
+
_once<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
50
|
+
/**
|
|
51
|
+
* Cancels an event listener based on an event name, id and listener function.
|
|
52
|
+
* @param eventName The event to cancel listener for.
|
|
53
|
+
* @param id The ID of the event to cancel listening for.
|
|
54
|
+
* @param listener The event listener function used in the on()
|
|
55
|
+
* or once() call to cancel.
|
|
56
|
+
* @returns The emitter instance.
|
|
57
|
+
*/
|
|
58
|
+
_off<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener?: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
59
|
+
/**
|
|
60
|
+
* Attach an event listener to the passed event only if the passed
|
|
61
|
+
* id matches the document id for the event being fired.
|
|
62
|
+
* @param eventName The name of the event to listen for.
|
|
63
|
+
* @param id The id to match against.
|
|
64
|
+
* @param listener The method to call when the event is fired.
|
|
65
|
+
* @returns The emitter instance.
|
|
66
|
+
*/
|
|
67
|
+
on<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
68
|
+
on<EventName extends keyof EventsInterface>(eventName: EventName, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
69
|
+
/**
|
|
70
|
+
* Attach an event listener to the passed event only if the passed
|
|
71
|
+
* id matches the document id for the event being fired.
|
|
72
|
+
* @param eventName The name of the event to listen for.
|
|
73
|
+
* @param id The id to match against.
|
|
74
|
+
* @param listener
|
|
75
|
+
* @returns The emitter instance.
|
|
76
|
+
*/
|
|
77
|
+
once<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
78
|
+
once<EventName extends keyof EventsInterface>(eventName: EventName, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
79
|
+
/**
|
|
80
|
+
* Overwrites any previous event listeners so that if the event fires, only
|
|
81
|
+
* the listener you pass will be called. If you pass an id along with the
|
|
82
|
+
* listener, only listeners for the id will be overwritten. This is similar
|
|
83
|
+
* to calling `.off(eventName)` then `on(eventName, listener)` since
|
|
84
|
+
* `off(eventName)` will cancel any previous event listeners for the passed
|
|
85
|
+
* event name.
|
|
86
|
+
* @param eventName The name of the event to listen for.
|
|
87
|
+
* @param id The id to match against.
|
|
88
|
+
* @param listener The method to call when the event is fired.
|
|
89
|
+
* @returns The emitter instance.
|
|
90
|
+
*/
|
|
91
|
+
overwrite<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
92
|
+
overwrite<EventName extends keyof EventsInterface>(eventName: EventName, listener: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
93
|
+
/**
|
|
94
|
+
* Cancels an event listener based on an event name, id and listener function.
|
|
95
|
+
* @param eventName The event to cancel listener for.
|
|
96
|
+
* @param id The ID of the event to cancel listening for.
|
|
97
|
+
* @param listener The event listener function used in the on()
|
|
98
|
+
* or once() call to cancel.
|
|
99
|
+
* @returns The emitter instance.
|
|
100
|
+
*/
|
|
101
|
+
off<EventName extends keyof EventsInterface>(eventName: EventName, id: string, listener?: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
102
|
+
off<EventName extends keyof EventsInterface>(eventName: EventName, listener?: EventListenerCallback<EventsInterface[EventName]>): this;
|
|
103
|
+
off<EventName extends keyof EventsInterface>(eventName: EventName): this;
|
|
104
|
+
/**
|
|
105
|
+
* Emit an event by name.
|
|
106
|
+
* @param eventName The name of the event to emit.
|
|
107
|
+
* @param {...any} data The arguments to send to any listening methods.
|
|
108
|
+
* If you are sending multiple arguments, separate them with a comma so
|
|
109
|
+
* that they are received by the function as separate arguments.
|
|
110
|
+
* @return {number}
|
|
111
|
+
* @example #Emit an Event
|
|
112
|
+
* // Emit the event named "hello"
|
|
113
|
+
* myEntity.emit('hello');
|
|
114
|
+
* @example #Emit an Event With Data Object
|
|
115
|
+
* // Emit the event named "hello"
|
|
116
|
+
* myEntity.emit('hello', {moo: true});
|
|
117
|
+
* @example #Emit an Event With Multiple Data Values
|
|
118
|
+
* // Emit the event named "hello"
|
|
119
|
+
* myEntity.emit('hello', {moo: true}, 'someString');
|
|
120
|
+
* @example #Listen for Event Data
|
|
121
|
+
* // Set a listener to listen for the data (multiple values emitted
|
|
122
|
+
* // from an event are passed as function arguments)
|
|
123
|
+
* myEntity.on('hello', function (arg1, arg2) {
|
|
124
|
+
* console.log(arg1, arg2);
|
|
125
|
+
* }
|
|
126
|
+
*
|
|
127
|
+
* // Emit the event named "hello"
|
|
128
|
+
* myEntity.emit('hello', 'data1', 'data2');
|
|
129
|
+
*
|
|
130
|
+
* // The console output is:
|
|
131
|
+
* // data1, data2
|
|
132
|
+
*/
|
|
133
|
+
emit<EventName extends keyof EventsInterface>(eventName: EventName, ...data: Parameters<EventsInterface[EventName]>): Promise<EventReturnFlag>;
|
|
134
|
+
emitId<EventName extends keyof EventsInterface>(eventName: EventName, id: string, ...data: Parameters<EventsInterface[EventName]>): EventReturnFlag;
|
|
135
|
+
/**
|
|
136
|
+
* Creates a persistent emitter record that will fire a listener if
|
|
137
|
+
* one is added for this event after the emitStatic() call has been
|
|
138
|
+
* made.
|
|
139
|
+
* @param eventName The name of the event to emit.
|
|
140
|
+
* @param {...any} data Optional arguments to emit with the event.
|
|
141
|
+
* @returns The emitter instance.
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
emitStatic<EventName extends keyof EventsInterface>(eventName: EventName, ...data: Parameters<EventsInterface[EventName]>): this;
|
|
145
|
+
/**
|
|
146
|
+
* Creates a persistent emitter record that will fire a listener if
|
|
147
|
+
* one is added for this event after the emitStatic() call has been
|
|
148
|
+
* made.
|
|
149
|
+
* @param eventName The name of the event to emit.
|
|
150
|
+
* @param id The id of the event to emit.
|
|
151
|
+
* @param {...any} data Optional arguments to emit with the event.
|
|
152
|
+
* @returns The emitter instance.
|
|
153
|
+
* @private
|
|
154
|
+
*/
|
|
155
|
+
emitStaticId<EventName extends keyof EventsInterface>(eventName: EventName, id: string, ...data: Parameters<EventsInterface[EventName]>): this;
|
|
156
|
+
/**
|
|
157
|
+
* Handles removing emitters, is an internal method not called directly.
|
|
158
|
+
* @param eventName The event to remove static emitter for.
|
|
159
|
+
* @returns The emitter instance.
|
|
160
|
+
* @private
|
|
161
|
+
*/
|
|
162
|
+
cancelStatic<EventName extends keyof EventsInterface>(eventName: EventName): this;
|
|
163
|
+
/**
|
|
164
|
+
* Checks if an event has any event listeners or not.
|
|
165
|
+
* @param eventName The name of the event to check for.
|
|
166
|
+
* @returns True if one or more event listeners are registered for
|
|
167
|
+
* the event. False if none are found.
|
|
168
|
+
*/
|
|
169
|
+
willEmit<EventName extends keyof EventsInterface>(eventName: EventName): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Checks if an event has any event listeners or not based on the passed id.
|
|
172
|
+
* @param eventName The name of the event to check for.
|
|
173
|
+
* @param id The event ID to check for.
|
|
174
|
+
* @returns True if one or more event listeners are registered for
|
|
175
|
+
* the event. False if none are found.
|
|
176
|
+
*/
|
|
177
|
+
willEmitId<EventName extends keyof EventsInterface>(eventName: EventName, id: string): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Queues an event to be fired. This has automatic de-bouncing so that any
|
|
180
|
+
* events of the same type that occur within 100 milliseconds of a previous
|
|
181
|
+
* one will all be wrapped into a single emit rather than emitting tons of
|
|
182
|
+
* events for lots of chained inserts etc. Only the data from the last
|
|
183
|
+
* de-bounced event will be emitted.
|
|
184
|
+
* @param eventName The name of the event to emit.
|
|
185
|
+
* @param {...any} data Optional arguments to emit with the event.
|
|
186
|
+
* @returns The emitter instance.
|
|
187
|
+
*/
|
|
188
|
+
deferEmit<EventName extends keyof EventsInterface>(eventName: EventName, ...data: Parameters<EventsInterface[EventName]>): this;
|
|
189
|
+
/**
|
|
190
|
+
* If events are cleared with the off() method while the event emitter is
|
|
191
|
+
* actively processing any events then the off() calls get added to a
|
|
192
|
+
* queue to be executed after the event emitter is finished. This stops
|
|
193
|
+
* errors that might occur by potentially modifying the event queue while
|
|
194
|
+
* the emitter is running through them. This method is called after the
|
|
195
|
+
* event emitter is finished processing.
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
198
|
+
_processRemovalQueue(): void;
|
|
199
|
+
}
|
|
200
|
+
export declare function makeEmitter(obj: AnyConstructor, prototypeMode: boolean): Emitter;
|
|
201
|
+
export declare function makeEmitter(obj: boolean): Emitter;
|
|
202
|
+
export declare function makeEmitter(obj: Record<string, unknown>, prototypeMode: boolean): Emitter;
|