@irrelon/emitter 5.0.6 → 6.0.1
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/.eslintignore +2 -1
- package/.prettierignore +2 -1
- package/.prettierrc.yml +18 -1
- package/dist/cjs/src/Emitter.d.ts +71 -20
- package/dist/cjs/src/Emitter.js +128 -78
- package/dist/cjs/tests/Emitter.test.js +125 -52
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/{mjs → esm}/src/Emitter.d.ts +71 -20
- package/dist/{mjs → esm}/src/Emitter.js +128 -67
- package/dist/{mjs → esm}/tests/Emitter.test.js +123 -50
- package/dist/esm/tsconfig-esm.tsbuildinfo +1 -0
- package/fixup.sh +1 -1
- package/package.json +8 -7
- package/readme.md +101 -20
- package/src/Emitter.ts +287 -114
- package/tests/Emitter.test.ts +249 -82
- package/tsconfig-cjs.json +1 -1
- package/tsconfig-esm.json +8 -0
- package/tsconfig.json +33 -5
- package/fixPaths.cjs +0 -183
- package/tsconfig-base.json +0 -36
- /package/dist/{mjs → esm}/package.json +0 -0
- /package/dist/{mjs → esm}/tests/Emitter.test.d.ts +0 -0
- /package/dist/{mjs → esm}/tsconfig.tsbuildinfo +0 -0
package/tests/Emitter.test.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
|
-
import {
|
|
2
|
+
import { Emitter, EmitterEventsInterface, EventListenerCallback, ListenerReturnFlag } from "../src/Emitter";
|
|
3
3
|
|
|
4
4
|
let expectedAssertions = 0;
|
|
5
5
|
let actualAssertions = 0;
|
|
6
6
|
|
|
7
|
-
function expect
|
|
7
|
+
function expect(val: number) {
|
|
8
8
|
expectedAssertions = val;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
function reset
|
|
11
|
+
function reset() {
|
|
12
12
|
expectedAssertions = 0;
|
|
13
13
|
actualAssertions = 0;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
function countAssertion
|
|
16
|
+
function countAssertion() {
|
|
17
17
|
actualAssertions++;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function check
|
|
20
|
+
function check() {
|
|
21
21
|
if (expectedAssertions === undefined || expectedAssertions === actualAssertions) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
@@ -33,14 +33,19 @@ describe("Emitter", () => {
|
|
|
33
33
|
it("Creates emitter instance by instantiation", () => {
|
|
34
34
|
const myClass = new Emitter();
|
|
35
35
|
|
|
36
|
-
myClass.on("moo", () => {
|
|
37
|
-
});
|
|
36
|
+
myClass.on("moo", () => {});
|
|
38
37
|
|
|
39
38
|
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listener registered on event");
|
|
40
39
|
|
|
41
40
|
myClass.off("moo");
|
|
42
41
|
|
|
43
|
-
assert.strictEqual(
|
|
42
|
+
assert.strictEqual(
|
|
43
|
+
!myClass._eventListeners?.moo ||
|
|
44
|
+
!myClass._eventListeners.moo["*"] ||
|
|
45
|
+
myClass._eventListeners.moo["*"].length,
|
|
46
|
+
true,
|
|
47
|
+
"Listeners all removed from event"
|
|
48
|
+
);
|
|
44
49
|
});
|
|
45
50
|
|
|
46
51
|
it("Supports extending Emitter as a base class", () => {
|
|
@@ -48,13 +53,13 @@ describe("Emitter", () => {
|
|
|
48
53
|
|
|
49
54
|
// Test extending Emitter and modifying base functionality
|
|
50
55
|
class MyClass extends Emitter {
|
|
51
|
-
testFunc
|
|
56
|
+
testFunc() {
|
|
52
57
|
testFuncCount++;
|
|
53
58
|
}
|
|
54
59
|
|
|
55
|
-
on
|
|
56
|
-
on
|
|
57
|
-
on
|
|
60
|
+
on(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
61
|
+
on(eventName: string, listener: EventListenerCallback): this;
|
|
62
|
+
on(eventName: string, ...rest: any[]): this {
|
|
58
63
|
const restTypes = rest.map((arg) => typeof arg);
|
|
59
64
|
|
|
60
65
|
if (restTypes[0] === "function") {
|
|
@@ -68,14 +73,14 @@ describe("Emitter", () => {
|
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
// @ts-ignore
|
|
71
|
-
emit
|
|
76
|
+
emit(eventName: string, ...rest: any[]) {
|
|
72
77
|
return super.emitId(eventName, "^^noId", ...rest);
|
|
73
78
|
}
|
|
74
79
|
|
|
75
|
-
off
|
|
76
|
-
off
|
|
77
|
-
off
|
|
78
|
-
off
|
|
80
|
+
off(eventName: string, id: string, listener?: EventListenerCallback): this;
|
|
81
|
+
off(eventName: string, listener?: EventListenerCallback): this;
|
|
82
|
+
off(eventName: string): this;
|
|
83
|
+
off(eventName: string, ...rest: any[]) {
|
|
79
84
|
let id = rest[0];
|
|
80
85
|
let func = rest[1];
|
|
81
86
|
|
|
@@ -111,37 +116,61 @@ describe("Emitter", () => {
|
|
|
111
116
|
|
|
112
117
|
myClass.off("moo", "testId");
|
|
113
118
|
|
|
114
|
-
assert.strictEqual(
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
assert.strictEqual(
|
|
120
|
+
!myClass._eventListeners?.moo ||
|
|
121
|
+
!myClass._eventListeners?.moo["testId"] ||
|
|
122
|
+
(myClass._eventListeners?.moo["testId"].length as number) === 0,
|
|
123
|
+
true,
|
|
124
|
+
"Listeners all removed from event"
|
|
125
|
+
);
|
|
126
|
+
assert.strictEqual(
|
|
127
|
+
myClass._eventListeners?.moo &&
|
|
128
|
+
myClass._eventListeners?.moo["^^noId"] &&
|
|
129
|
+
myClass._eventListeners?.moo["^^noId"].length === 1,
|
|
130
|
+
true,
|
|
131
|
+
"Global listener still there"
|
|
132
|
+
);
|
|
133
|
+
assert.strictEqual(
|
|
134
|
+
!myClass._eventListeners?.moo ||
|
|
135
|
+
!myClass._eventListeners?.moo["*"] ||
|
|
136
|
+
myClass._eventListeners?.moo["*"].length === 0,
|
|
137
|
+
true,
|
|
138
|
+
"Global listener still there"
|
|
139
|
+
);
|
|
117
140
|
|
|
118
141
|
myClass.off("moo");
|
|
119
142
|
|
|
120
|
-
assert.strictEqual(
|
|
143
|
+
assert.strictEqual(
|
|
144
|
+
!myClass._eventListeners?.moo ||
|
|
145
|
+
!myClass._eventListeners?.moo["*"] ||
|
|
146
|
+
myClass._eventListeners?.moo["*"].length === 0,
|
|
147
|
+
true,
|
|
148
|
+
"Listeners all removed from event"
|
|
149
|
+
);
|
|
121
150
|
});
|
|
122
151
|
});
|
|
123
152
|
|
|
124
153
|
describe("emit()", () => {
|
|
125
154
|
it("Supports type safe usage", async () => {
|
|
126
155
|
interface MyEventsResponses {
|
|
127
|
-
post: () => void
|
|
128
|
-
person: (name: string, age: number, enabled: boolean) =>
|
|
156
|
+
post: () => Promise<void>;
|
|
157
|
+
person: (name: string, age: number, enabled: boolean) => Promise<string>;
|
|
129
158
|
house: (no: number, street: string, postcode: string, enabled: boolean) => void;
|
|
130
159
|
}
|
|
131
160
|
|
|
132
|
-
const emitter = new Emitter<
|
|
161
|
+
const emitter = new Emitter<MyEventsResponses>();
|
|
133
162
|
let listenerFiredCount = 0;
|
|
134
163
|
|
|
135
|
-
emitter.on("person",
|
|
136
|
-
return new Promise<
|
|
164
|
+
emitter.on("person", (name) => {
|
|
165
|
+
return new Promise<string>((resolve) => {
|
|
137
166
|
setTimeout(() => {
|
|
138
167
|
listenerFiredCount++;
|
|
139
|
-
resolve();
|
|
168
|
+
resolve(name);
|
|
140
169
|
}, 1000);
|
|
141
170
|
});
|
|
142
171
|
});
|
|
143
172
|
|
|
144
|
-
emitter.on("post",
|
|
173
|
+
emitter.on("post", () => {
|
|
145
174
|
return new Promise<void>((resolve) => {
|
|
146
175
|
setTimeout(() => {
|
|
147
176
|
listenerFiredCount++;
|
|
@@ -150,7 +179,7 @@ describe("Emitter", () => {
|
|
|
150
179
|
});
|
|
151
180
|
});
|
|
152
181
|
|
|
153
|
-
emitter.on("post",
|
|
182
|
+
emitter.on("post", () => {
|
|
154
183
|
return new Promise<void>((resolve) => {
|
|
155
184
|
setTimeout(() => {
|
|
156
185
|
listenerFiredCount++;
|
|
@@ -160,14 +189,22 @@ describe("Emitter", () => {
|
|
|
160
189
|
});
|
|
161
190
|
|
|
162
191
|
const time = new Date().getTime();
|
|
163
|
-
await emitter.emit("post");
|
|
192
|
+
await Promise.all(emitter.emit("post"));
|
|
164
193
|
const delta = new Date().getTime() - time;
|
|
165
194
|
|
|
166
195
|
assert.ok(delta > 900, `Delta was not correct, await may not have paused? Delta was: ${delta}`);
|
|
196
|
+
assert.ok(
|
|
197
|
+
listenerFiredCount === 2,
|
|
198
|
+
`listenerFiredCount was not correct, await may not have paused? listenerFiredCount was: ${listenerFiredCount}`
|
|
199
|
+
);
|
|
167
200
|
});
|
|
168
201
|
|
|
169
202
|
it("Supports awaiting async listeners", async () => {
|
|
170
|
-
|
|
203
|
+
interface TestEvents {
|
|
204
|
+
foo: () => Promise<void>;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const emitter = new Emitter<EmitterEventsInterface<TestEvents>>();
|
|
171
208
|
let listenerFiredCount = 0;
|
|
172
209
|
|
|
173
210
|
emitter.on("foo", async () => {
|
|
@@ -189,26 +226,124 @@ describe("Emitter", () => {
|
|
|
189
226
|
});
|
|
190
227
|
|
|
191
228
|
const time = new Date().getTime();
|
|
192
|
-
await emitter.emit("foo");
|
|
229
|
+
await Promise.all(emitter.emit("foo"));
|
|
230
|
+
const delta = new Date().getTime() - time;
|
|
231
|
+
|
|
232
|
+
assert.ok(delta > 900, "Delta was not correct, await may not have paused?");
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it("Supports awaiting async and non-async listener return data", async () => {
|
|
236
|
+
interface MyTestEvents {
|
|
237
|
+
foo: () => string | Promise<string>;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const emitter = new Emitter<EmitterEventsInterface<MyTestEvents>>();
|
|
241
|
+
let listenerFiredCount = 0;
|
|
242
|
+
|
|
243
|
+
emitter.on("foo", () => {
|
|
244
|
+
return new Promise<string>((resolve) => {
|
|
245
|
+
setTimeout(() => {
|
|
246
|
+
listenerFiredCount++;
|
|
247
|
+
resolve("Foo1 Return Value");
|
|
248
|
+
}, 1000);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
emitter.on("foo", () => {
|
|
253
|
+
return "Foo2 Return Value";
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
const time = new Date().getTime();
|
|
257
|
+
const results: string[] = await Promise.all(emitter.emit("foo"));
|
|
258
|
+
const delta = new Date().getTime() - time;
|
|
259
|
+
|
|
260
|
+
assert.ok(delta > 900, "Delta was not correct, await may not have paused?");
|
|
261
|
+
assert.ok(listenerFiredCount === 1, "listenerFiredCount was not correct, await may not have been used?");
|
|
262
|
+
assert.strictEqual(results[0], "Foo1 Return Value", "Return data for foo1 was not correct");
|
|
263
|
+
assert.strictEqual(results[1], "Foo2 Return Value", "Return data for foo2 was not correct");
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
it("Supports awaiting async and non-async rpc listener return data", async () => {
|
|
267
|
+
interface MyTestEvents {
|
|
268
|
+
foo1: () => string | Promise<string>;
|
|
269
|
+
foo2: () => string;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const emitter = new Emitter<EmitterEventsInterface<MyTestEvents>>();
|
|
273
|
+
let listenerFiredCount = 0;
|
|
274
|
+
|
|
275
|
+
emitter.on("foo1", () => {
|
|
276
|
+
return new Promise<string>((resolve) => {
|
|
277
|
+
setTimeout(() => {
|
|
278
|
+
listenerFiredCount++;
|
|
279
|
+
resolve("Foo1 Return Value");
|
|
280
|
+
}, 1000);
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
emitter.on("foo2", () => {
|
|
285
|
+
return "Foo2 Return Value";
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
const time = new Date().getTime();
|
|
289
|
+
const result1 = await emitter.rpc("foo1");
|
|
290
|
+
const result2 = emitter.rpc("foo2");
|
|
193
291
|
const delta = new Date().getTime() - time;
|
|
194
292
|
|
|
195
293
|
assert.ok(delta > 900, "Delta was not correct, await may not have paused?");
|
|
294
|
+
assert.ok(listenerFiredCount === 1, "listenerFiredCount was not correct, await may not have been used?");
|
|
295
|
+
assert.strictEqual(result1, "Foo1 Return Value", "Return data for foo1 was not correct");
|
|
296
|
+
assert.strictEqual(result2, "Foo2 Return Value", "Return data for foo2 was not correct");
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
it("Supports responding with a cancellation signal", async () => {
|
|
300
|
+
interface MyTestEvents {
|
|
301
|
+
foo: () => string | ListenerReturnFlag;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
const emitter = new Emitter<EmitterEventsInterface<MyTestEvents>>();
|
|
305
|
+
let listenerFiredCount = 0;
|
|
306
|
+
|
|
307
|
+
emitter.on("foo", () => {
|
|
308
|
+
listenerFiredCount++;
|
|
309
|
+
return "Foo1 Return Value";
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
emitter.on("foo", () => {
|
|
313
|
+
listenerFiredCount++;
|
|
314
|
+
|
|
315
|
+
// This listener will respond with a cancellation, this should terminate further listener calls
|
|
316
|
+
return ListenerReturnFlag.cancel;
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
emitter.on("foo", () => {
|
|
320
|
+
listenerFiredCount++;
|
|
321
|
+
return "Foo3 Return Value";
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
emitter.on("foo", () => {
|
|
325
|
+
listenerFiredCount++;
|
|
326
|
+
return "Foo4 Return Value";
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
const results = emitter.emit("foo");
|
|
330
|
+
|
|
331
|
+
assert.ok(listenerFiredCount === 2, "listenerFiredCount was not correct, await may not have been used?");
|
|
332
|
+
assert.strictEqual(results[0], "Foo1 Return Value", "Return data should be a cancel flag");
|
|
333
|
+
assert.strictEqual(results[1], ListenerReturnFlag.cancel, "Return data should be a cancel flag");
|
|
334
|
+
assert.ok(emitter.didCancel(results), "didCancel should detect a cancel flag");
|
|
196
335
|
});
|
|
197
336
|
});
|
|
198
337
|
|
|
199
338
|
describe("off()", () => {
|
|
200
339
|
it("Cancels all listeners (event)", () => {
|
|
201
340
|
const myClass = new Emitter();
|
|
202
|
-
const listener1 = () => {
|
|
203
|
-
};
|
|
204
|
-
const listener2 = () => {
|
|
205
|
-
};
|
|
341
|
+
const listener1 = () => {};
|
|
342
|
+
const listener2 = () => {};
|
|
206
343
|
|
|
207
|
-
myClass.on("moo", () => {
|
|
208
|
-
});
|
|
344
|
+
myClass.on("moo", () => {});
|
|
209
345
|
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
210
|
-
myClass.on("moo", "testId", () => {
|
|
211
|
-
});
|
|
346
|
+
myClass.on("moo", "testId", () => {});
|
|
212
347
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
213
348
|
myClass.on("moo", listener1);
|
|
214
349
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -217,21 +352,23 @@ describe("Emitter", () => {
|
|
|
217
352
|
|
|
218
353
|
myClass.off("moo");
|
|
219
354
|
|
|
220
|
-
assert.strictEqual(
|
|
355
|
+
assert.strictEqual(
|
|
356
|
+
!myClass._eventListeners?.moo ||
|
|
357
|
+
(myClass._eventListeners?.moo["*"].length === 0 &&
|
|
358
|
+
myClass._eventListeners?.moo["testId"].length === 0),
|
|
359
|
+
true,
|
|
360
|
+
"Listeners all removed from event"
|
|
361
|
+
);
|
|
221
362
|
});
|
|
222
363
|
|
|
223
364
|
it("Cancels id-based listeners (event, id)", () => {
|
|
224
365
|
const myClass = new Emitter();
|
|
225
|
-
const listener1 = () => {
|
|
226
|
-
};
|
|
227
|
-
const listener2 = () => {
|
|
228
|
-
};
|
|
366
|
+
const listener1 = () => {};
|
|
367
|
+
const listener2 = () => {};
|
|
229
368
|
|
|
230
|
-
myClass.on("moo", () => {
|
|
231
|
-
});
|
|
369
|
+
myClass.on("moo", () => {});
|
|
232
370
|
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
233
|
-
myClass.on("moo", "testId", () => {
|
|
234
|
-
});
|
|
371
|
+
myClass.on("moo", "testId", () => {});
|
|
235
372
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
236
373
|
myClass.on("moo", listener1);
|
|
237
374
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -240,22 +377,26 @@ describe("Emitter", () => {
|
|
|
240
377
|
|
|
241
378
|
myClass.off("moo", "testId");
|
|
242
379
|
|
|
243
|
-
assert.strictEqual(
|
|
244
|
-
|
|
380
|
+
assert.strictEqual(
|
|
381
|
+
myClass._eventListeners?.moo["*"].length === 2,
|
|
382
|
+
true,
|
|
383
|
+
"Listeners all removed from event"
|
|
384
|
+
);
|
|
385
|
+
assert.strictEqual(
|
|
386
|
+
!myClass._eventListeners?.moo["testId"] || myClass._eventListeners?.moo["testId"].length === 0,
|
|
387
|
+
true,
|
|
388
|
+
"Listeners all removed from event"
|
|
389
|
+
);
|
|
245
390
|
});
|
|
246
391
|
|
|
247
392
|
it("Cancels listener-based listeners (event, listener)", () => {
|
|
248
393
|
const myClass = new Emitter();
|
|
249
|
-
const listener1 = () => {
|
|
250
|
-
};
|
|
251
|
-
const listener2 = () => {
|
|
252
|
-
};
|
|
394
|
+
const listener1 = () => {};
|
|
395
|
+
const listener2 = () => {};
|
|
253
396
|
|
|
254
|
-
myClass.on("moo", () => {
|
|
255
|
-
});
|
|
397
|
+
myClass.on("moo", () => {});
|
|
256
398
|
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
257
|
-
myClass.on("moo", "testId", () => {
|
|
258
|
-
});
|
|
399
|
+
myClass.on("moo", "testId", () => {});
|
|
259
400
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
260
401
|
myClass.on("moo", listener1);
|
|
261
402
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -264,22 +405,26 @@ describe("Emitter", () => {
|
|
|
264
405
|
|
|
265
406
|
myClass.off("moo", listener1);
|
|
266
407
|
|
|
267
|
-
assert.strictEqual(
|
|
268
|
-
|
|
408
|
+
assert.strictEqual(
|
|
409
|
+
myClass._eventListeners?.moo["*"].length === 1,
|
|
410
|
+
true,
|
|
411
|
+
"Listeners all removed from event"
|
|
412
|
+
);
|
|
413
|
+
assert.strictEqual(
|
|
414
|
+
myClass._eventListeners?.moo["testId"].length === 2,
|
|
415
|
+
true,
|
|
416
|
+
"Listeners all removed from event"
|
|
417
|
+
);
|
|
269
418
|
});
|
|
270
419
|
|
|
271
420
|
it("Cancels id-based + listener-based listeners (event, id, listener)", () => {
|
|
272
421
|
const myClass = new Emitter();
|
|
273
|
-
const listener1 = () => {
|
|
274
|
-
};
|
|
275
|
-
const listener2 = () => {
|
|
276
|
-
};
|
|
422
|
+
const listener1 = () => {};
|
|
423
|
+
const listener2 = () => {};
|
|
277
424
|
|
|
278
|
-
myClass.on("moo", () => {
|
|
279
|
-
});
|
|
425
|
+
myClass.on("moo", () => {});
|
|
280
426
|
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
281
|
-
myClass.on("moo", "testId", () => {
|
|
282
|
-
});
|
|
427
|
+
myClass.on("moo", "testId", () => {});
|
|
283
428
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
284
429
|
myClass.on("moo", listener1);
|
|
285
430
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -288,15 +433,22 @@ describe("Emitter", () => {
|
|
|
288
433
|
|
|
289
434
|
myClass.off("moo", "testId", listener2);
|
|
290
435
|
|
|
291
|
-
assert.strictEqual(
|
|
292
|
-
|
|
436
|
+
assert.strictEqual(
|
|
437
|
+
myClass._eventListeners?.moo["*"].length === 2,
|
|
438
|
+
true,
|
|
439
|
+
"Listeners all removed from event"
|
|
440
|
+
);
|
|
441
|
+
assert.strictEqual(
|
|
442
|
+
myClass._eventListeners?.moo["testId"].length === 1,
|
|
443
|
+
true,
|
|
444
|
+
"Listeners all removed from event"
|
|
445
|
+
);
|
|
293
446
|
});
|
|
294
447
|
});
|
|
295
448
|
|
|
296
449
|
describe("emitStatic()", () => {
|
|
297
450
|
it("Static emitter will emit when a new listener is added", (resolve) => {
|
|
298
|
-
class MyClass extends Emitter {
|
|
299
|
-
}
|
|
451
|
+
class MyClass extends Emitter {}
|
|
300
452
|
|
|
301
453
|
expect(1);
|
|
302
454
|
|
|
@@ -312,8 +464,7 @@ describe("Emitter", () => {
|
|
|
312
464
|
|
|
313
465
|
describe("cancelStatic()", () => {
|
|
314
466
|
it("Removes static emitter", (resolve) => {
|
|
315
|
-
class MyClass extends Emitter {
|
|
316
|
-
}
|
|
467
|
+
class MyClass extends Emitter {}
|
|
317
468
|
|
|
318
469
|
expect(1);
|
|
319
470
|
|
|
@@ -338,8 +489,7 @@ describe("Emitter", () => {
|
|
|
338
489
|
|
|
339
490
|
describe("overwrite()", () => {
|
|
340
491
|
it("Only fires the last listener added, cancelling all other listeners before it", (resolve) => {
|
|
341
|
-
class MyClass extends Emitter {
|
|
342
|
-
}
|
|
492
|
+
class MyClass extends Emitter {}
|
|
343
493
|
|
|
344
494
|
expect(1);
|
|
345
495
|
|
|
@@ -364,8 +514,7 @@ describe("Emitter", () => {
|
|
|
364
514
|
});
|
|
365
515
|
|
|
366
516
|
it("Only fires the last listener added (with id), cancelling all other listeners before it", (resolve) => {
|
|
367
|
-
class MyClass extends Emitter {
|
|
368
|
-
}
|
|
517
|
+
class MyClass extends Emitter {}
|
|
369
518
|
|
|
370
519
|
expect(2);
|
|
371
520
|
|
|
@@ -424,12 +573,30 @@ describe("Emitter", () => {
|
|
|
424
573
|
|
|
425
574
|
myClass.off("moo", "testId");
|
|
426
575
|
|
|
427
|
-
assert.strictEqual(
|
|
428
|
-
|
|
576
|
+
assert.strictEqual(
|
|
577
|
+
!myClass._eventListeners?.moo ||
|
|
578
|
+
!myClass._eventListeners?.moo["testId"] ||
|
|
579
|
+
myClass._eventListeners?.moo["testId"].length,
|
|
580
|
+
true,
|
|
581
|
+
"Listeners all removed from event"
|
|
582
|
+
);
|
|
583
|
+
assert.strictEqual(
|
|
584
|
+
myClass._eventListeners?.moo &&
|
|
585
|
+
myClass._eventListeners?.moo["*"] &&
|
|
586
|
+
myClass._eventListeners?.moo["*"].length === 1,
|
|
587
|
+
true,
|
|
588
|
+
"Global listener still there"
|
|
589
|
+
);
|
|
429
590
|
|
|
430
591
|
myClass.off("moo");
|
|
431
592
|
|
|
432
|
-
assert.strictEqual(
|
|
593
|
+
assert.strictEqual(
|
|
594
|
+
!myClass._eventListeners?.moo ||
|
|
595
|
+
!myClass._eventListeners?.moo["*"] ||
|
|
596
|
+
myClass._eventListeners?.moo["*"].length === 0,
|
|
597
|
+
true,
|
|
598
|
+
"Listeners all removed from event"
|
|
599
|
+
);
|
|
433
600
|
});
|
|
434
601
|
});
|
|
435
602
|
});
|
package/tsconfig-cjs.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "./tsconfig-base.json",
|
|
3
2
|
"compilerOptions": {
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"target": "
|
|
7
|
-
|
|
3
|
+
"downlevelIteration": true,
|
|
4
|
+
"baseUrl": ".",
|
|
5
|
+
"target": "es6",
|
|
6
|
+
"lib": [
|
|
7
|
+
"esnext"
|
|
8
|
+
],
|
|
9
|
+
"allowJs": false,
|
|
10
|
+
"skipLibCheck": false,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"pretty": true,
|
|
13
|
+
"allowSyntheticDefaultImports": true,
|
|
14
|
+
"forceConsistentCasingInFileNames": true,
|
|
15
|
+
"noEmit": false,
|
|
16
|
+
"incremental": true,
|
|
17
|
+
"esModuleInterop": true,
|
|
18
|
+
"module": "es2022",
|
|
19
|
+
"moduleResolution": "node",
|
|
20
|
+
"resolveJsonModule": true,
|
|
21
|
+
"isolatedModules": true,
|
|
22
|
+
"declaration": true,
|
|
23
|
+
"inlineSourceMap": false,
|
|
24
|
+
"types": ["node", "jest"]
|
|
25
|
+
},
|
|
26
|
+
"include": [
|
|
27
|
+
"src/**/*.ts",
|
|
28
|
+
"tests/*.ts",
|
|
29
|
+
"tests/**/*.ts",
|
|
30
|
+
"src/**/*.tsx"
|
|
31
|
+
],
|
|
32
|
+
"exclude": [
|
|
33
|
+
"node_modules",
|
|
34
|
+
"dist"
|
|
35
|
+
]
|
|
8
36
|
}
|