@irrelon/emitter 5.0.2 → 5.0.4
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 +19 -19
- 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
package/tests/Emitter.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
|
-
import {Emitter, EventListenerCallback, EventReturnFlag} from "../src/Emitter";
|
|
2
|
+
import {ConvertInterfaceToDict, Emitter, EventListenerCallback, EventReturnFlag} from "../src/Emitter";
|
|
3
3
|
|
|
4
4
|
let expectedAssertions = 0;
|
|
5
5
|
let actualAssertions = 0;
|
|
@@ -21,9 +21,8 @@ function check () {
|
|
|
21
21
|
if (expectedAssertions === undefined || expectedAssertions === actualAssertions) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.currentTest.emit("error", err);
|
|
24
|
+
|
|
25
|
+
throw new Error("expected " + expectedAssertions + " assertions, got " + actualAssertions);
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
beforeEach(reset);
|
|
@@ -37,7 +36,7 @@ describe("Emitter", () => {
|
|
|
37
36
|
myClass.on("moo", () => {
|
|
38
37
|
});
|
|
39
38
|
|
|
40
|
-
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 1, "Listener registered on event");
|
|
39
|
+
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listener registered on event");
|
|
41
40
|
|
|
42
41
|
myClass.off("moo");
|
|
43
42
|
|
|
@@ -104,7 +103,7 @@ describe("Emitter", () => {
|
|
|
104
103
|
emitCount++;
|
|
105
104
|
});
|
|
106
105
|
|
|
107
|
-
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listener registered on event");
|
|
106
|
+
assert.strictEqual(myClass._eventListeners?.moo!["testId"].length, 1, "Listener registered on event");
|
|
108
107
|
|
|
109
108
|
myClass.emitId("moo", "testId", "foo");
|
|
110
109
|
|
|
@@ -123,6 +122,50 @@ describe("Emitter", () => {
|
|
|
123
122
|
});
|
|
124
123
|
|
|
125
124
|
describe("emit()", () => {
|
|
125
|
+
it("Supports type safe usage", async () => {
|
|
126
|
+
interface MyEventsResponses {
|
|
127
|
+
post: () => void;
|
|
128
|
+
person: (name: string, age: number, enabled: boolean) => void;
|
|
129
|
+
house: (no: number, street: string, postcode: string, enabled: boolean) => void;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const emitter = new Emitter<ConvertInterfaceToDict<MyEventsResponses>>();
|
|
133
|
+
let listenerFiredCount = 0;
|
|
134
|
+
|
|
135
|
+
emitter.on("person", async (name, age, enabled) => {
|
|
136
|
+
return new Promise<void>((resolve) => {
|
|
137
|
+
setTimeout(() => {
|
|
138
|
+
listenerFiredCount++;
|
|
139
|
+
resolve();
|
|
140
|
+
}, 1000);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
emitter.on("post", async () => {
|
|
145
|
+
return new Promise<void>((resolve) => {
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
listenerFiredCount++;
|
|
148
|
+
resolve();
|
|
149
|
+
}, 1000);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
emitter.on("post", async () => {
|
|
154
|
+
return new Promise<void>((resolve) => {
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
listenerFiredCount++;
|
|
157
|
+
resolve();
|
|
158
|
+
}, 1000);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
const time = new Date().getTime();
|
|
163
|
+
await emitter.emit("post");
|
|
164
|
+
const delta = new Date().getTime() - time;
|
|
165
|
+
|
|
166
|
+
assert.ok(delta > 900, `Delta was not correct, await may not have paused? Delta was: ${delta}`);
|
|
167
|
+
});
|
|
168
|
+
|
|
126
169
|
it("Supports awaiting async listeners", async () => {
|
|
127
170
|
const emitter = new Emitter();
|
|
128
171
|
let listenerFiredCount = 0;
|
|
@@ -132,7 +175,7 @@ describe("Emitter", () => {
|
|
|
132
175
|
setTimeout(() => {
|
|
133
176
|
listenerFiredCount++;
|
|
134
177
|
resolve();
|
|
135
|
-
},1000);
|
|
178
|
+
}, 1000);
|
|
136
179
|
});
|
|
137
180
|
});
|
|
138
181
|
|
|
@@ -141,7 +184,7 @@ describe("Emitter", () => {
|
|
|
141
184
|
setTimeout(() => {
|
|
142
185
|
listenerFiredCount++;
|
|
143
186
|
resolve();
|
|
144
|
-
},1000);
|
|
187
|
+
}, 1000);
|
|
145
188
|
});
|
|
146
189
|
});
|
|
147
190
|
|
|
@@ -156,12 +199,16 @@ describe("Emitter", () => {
|
|
|
156
199
|
describe("off()", () => {
|
|
157
200
|
it("Cancels all listeners (event)", () => {
|
|
158
201
|
const myClass = new Emitter();
|
|
159
|
-
const listener1 = () => {
|
|
160
|
-
|
|
202
|
+
const listener1 = () => {
|
|
203
|
+
};
|
|
204
|
+
const listener2 = () => {
|
|
205
|
+
};
|
|
161
206
|
|
|
162
|
-
myClass.on("moo", () => {
|
|
163
|
-
|
|
164
|
-
myClass.
|
|
207
|
+
myClass.on("moo", () => {
|
|
208
|
+
});
|
|
209
|
+
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
210
|
+
myClass.on("moo", "testId", () => {
|
|
211
|
+
});
|
|
165
212
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
166
213
|
myClass.on("moo", listener1);
|
|
167
214
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -175,12 +222,16 @@ describe("Emitter", () => {
|
|
|
175
222
|
|
|
176
223
|
it("Cancels id-based listeners (event, id)", () => {
|
|
177
224
|
const myClass = new Emitter();
|
|
178
|
-
const listener1 = () => {
|
|
179
|
-
|
|
225
|
+
const listener1 = () => {
|
|
226
|
+
};
|
|
227
|
+
const listener2 = () => {
|
|
228
|
+
};
|
|
180
229
|
|
|
181
|
-
myClass.on("moo", () => {
|
|
182
|
-
|
|
183
|
-
myClass.
|
|
230
|
+
myClass.on("moo", () => {
|
|
231
|
+
});
|
|
232
|
+
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
233
|
+
myClass.on("moo", "testId", () => {
|
|
234
|
+
});
|
|
184
235
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
185
236
|
myClass.on("moo", listener1);
|
|
186
237
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -195,12 +246,16 @@ describe("Emitter", () => {
|
|
|
195
246
|
|
|
196
247
|
it("Cancels listener-based listeners (event, listener)", () => {
|
|
197
248
|
const myClass = new Emitter();
|
|
198
|
-
const listener1 = () => {
|
|
199
|
-
|
|
249
|
+
const listener1 = () => {
|
|
250
|
+
};
|
|
251
|
+
const listener2 = () => {
|
|
252
|
+
};
|
|
200
253
|
|
|
201
|
-
myClass.on("moo", () => {
|
|
202
|
-
|
|
203
|
-
myClass.
|
|
254
|
+
myClass.on("moo", () => {
|
|
255
|
+
});
|
|
256
|
+
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
257
|
+
myClass.on("moo", "testId", () => {
|
|
258
|
+
});
|
|
204
259
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
205
260
|
myClass.on("moo", listener1);
|
|
206
261
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -215,12 +270,16 @@ describe("Emitter", () => {
|
|
|
215
270
|
|
|
216
271
|
it("Cancels id-based + listener-based listeners (event, id, listener)", () => {
|
|
217
272
|
const myClass = new Emitter();
|
|
218
|
-
const listener1 = () => {
|
|
219
|
-
|
|
273
|
+
const listener1 = () => {
|
|
274
|
+
};
|
|
275
|
+
const listener2 = () => {
|
|
276
|
+
};
|
|
220
277
|
|
|
221
|
-
myClass.on("moo", () => {
|
|
222
|
-
|
|
223
|
-
myClass.
|
|
278
|
+
myClass.on("moo", () => {
|
|
279
|
+
});
|
|
280
|
+
assert.strictEqual(myClass._eventListeners?.moo!["*"].length, 1, "Listeners registered on event");
|
|
281
|
+
myClass.on("moo", "testId", () => {
|
|
282
|
+
});
|
|
224
283
|
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listeners registered on event");
|
|
225
284
|
myClass.on("moo", listener1);
|
|
226
285
|
assert.strictEqual(myClass._eventListeners?.moo["*"].length, 2, "Listeners registered on event");
|
|
@@ -236,7 +295,8 @@ describe("Emitter", () => {
|
|
|
236
295
|
|
|
237
296
|
describe("emitStatic()", () => {
|
|
238
297
|
it("Static emitter will emit when a new listener is added", (resolve) => {
|
|
239
|
-
class MyClass extends Emitter {
|
|
298
|
+
class MyClass extends Emitter {
|
|
299
|
+
}
|
|
240
300
|
|
|
241
301
|
expect(1);
|
|
242
302
|
|
|
@@ -252,7 +312,8 @@ describe("Emitter", () => {
|
|
|
252
312
|
|
|
253
313
|
describe("cancelStatic()", () => {
|
|
254
314
|
it("Removes static emitter", (resolve) => {
|
|
255
|
-
class MyClass extends Emitter {
|
|
315
|
+
class MyClass extends Emitter {
|
|
316
|
+
}
|
|
256
317
|
|
|
257
318
|
expect(1);
|
|
258
319
|
|
|
@@ -277,7 +338,9 @@ describe("Emitter", () => {
|
|
|
277
338
|
|
|
278
339
|
describe("overwrite()", () => {
|
|
279
340
|
it("Only fires the last listener added, cancelling all other listeners before it", (resolve) => {
|
|
280
|
-
class MyClass extends Emitter {
|
|
341
|
+
class MyClass extends Emitter {
|
|
342
|
+
}
|
|
343
|
+
|
|
281
344
|
expect(1);
|
|
282
345
|
|
|
283
346
|
const myClass = new MyClass();
|
|
@@ -299,6 +362,43 @@ describe("Emitter", () => {
|
|
|
299
362
|
resolve();
|
|
300
363
|
}, 10);
|
|
301
364
|
});
|
|
365
|
+
|
|
366
|
+
it("Only fires the last listener added (with id), cancelling all other listeners before it", (resolve) => {
|
|
367
|
+
class MyClass extends Emitter {
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
expect(2);
|
|
371
|
+
|
|
372
|
+
const myClass = new MyClass();
|
|
373
|
+
|
|
374
|
+
// Define a listener without an id, this should not be overwritten
|
|
375
|
+
myClass.on("moo", () => {
|
|
376
|
+
countAssertion();
|
|
377
|
+
assert.ok(true, "Correct callback was fired");
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// Define some listeners WITH ids, these should be overwritten
|
|
381
|
+
myClass.on("moo", "1234", () => {
|
|
382
|
+
countAssertion();
|
|
383
|
+
assert.ok(false, "Correct callback was fired");
|
|
384
|
+
});
|
|
385
|
+
myClass.on("moo", "1234", () => {
|
|
386
|
+
countAssertion();
|
|
387
|
+
assert.ok(false, "Correct callback was fired");
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
// Overwrite the id listeners
|
|
391
|
+
myClass.overwrite("moo", "1234", () => {
|
|
392
|
+
countAssertion();
|
|
393
|
+
assert.ok(true, "Correct callback was fired");
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
myClass.emitId("moo", "1234");
|
|
397
|
+
|
|
398
|
+
setTimeout(() => {
|
|
399
|
+
resolve();
|
|
400
|
+
}, 50);
|
|
401
|
+
});
|
|
302
402
|
});
|
|
303
403
|
|
|
304
404
|
describe("emitId()", () => {
|
|
@@ -316,7 +416,7 @@ describe("Emitter", () => {
|
|
|
316
416
|
emitCount++;
|
|
317
417
|
});
|
|
318
418
|
|
|
319
|
-
assert.strictEqual(myClass._eventListeners?.moo["testId"].length, 1, "Listener registered on event");
|
|
419
|
+
assert.strictEqual(myClass._eventListeners?.moo!["testId"].length, 1, "Listener registered on event");
|
|
320
420
|
|
|
321
421
|
myClass.emitId("moo", "testId", "foo");
|
|
322
422
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
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
|
+
]
|
|
36
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,50 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
+
"extends": "./tsconfig-base.json",
|
|
2
3
|
"compilerOptions": {
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"components/*"
|
|
8
|
-
],
|
|
9
|
-
"@/services/*": [
|
|
10
|
-
"services/*"
|
|
11
|
-
],
|
|
12
|
-
"@/types/*": [
|
|
13
|
-
"types/*"
|
|
14
|
-
],
|
|
15
|
-
"@/styles/*": [
|
|
16
|
-
"styles/*"
|
|
17
|
-
],
|
|
18
|
-
"@/config/*": [
|
|
19
|
-
"config/*"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"target": "es6",
|
|
23
|
-
"lib": [
|
|
24
|
-
"dom",
|
|
25
|
-
"dom.iterable",
|
|
26
|
-
"esnext"
|
|
27
|
-
],
|
|
28
|
-
"allowJs": false,
|
|
29
|
-
"skipLibCheck": false,
|
|
30
|
-
"strict": true,
|
|
31
|
-
"forceConsistentCasingInFileNames": true,
|
|
32
|
-
"noEmit": false,
|
|
33
|
-
"incremental": true,
|
|
34
|
-
"esModuleInterop": true,
|
|
35
|
-
"module": "es2022",
|
|
36
|
-
"moduleResolution": "node",
|
|
37
|
-
"resolveJsonModule": true,
|
|
38
|
-
"isolatedModules": true,
|
|
39
|
-
"declaration": true
|
|
40
|
-
},
|
|
41
|
-
"include": [
|
|
42
|
-
"src/**/*.ts",
|
|
43
|
-
"tests/*.ts",
|
|
44
|
-
"tests/**/*.ts",
|
|
45
|
-
"src/**/*.tsx"
|
|
46
|
-
],
|
|
47
|
-
"exclude": [
|
|
48
|
-
"node_modules"
|
|
49
|
-
]
|
|
4
|
+
"module": "esnext",
|
|
5
|
+
"outDir": "dist/mjs",
|
|
6
|
+
"target": "esnext"
|
|
7
|
+
}
|
|
50
8
|
}
|
package/src/Emitter.d.ts
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
export declare enum EventReturnFlag {
|
|
2
|
-
none = 0,
|
|
3
|
-
cancel = 1
|
|
4
|
-
}
|
|
5
|
-
export declare type EventListenerCallback = (...args: any[]) => any | Promise<any>;
|
|
6
|
-
export interface EventStaticEmitterObject {
|
|
7
|
-
id: string;
|
|
8
|
-
args: any[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new class with the capability to emit events.
|
|
12
|
-
*/
|
|
13
|
-
export declare class Emitter {
|
|
14
|
-
_eventsEmitting: boolean;
|
|
15
|
-
_eventRemovalQueue: any[];
|
|
16
|
-
_eventListeners?: Record<string, Record<string, EventListenerCallback[]>>;
|
|
17
|
-
_eventStaticEmitters: Record<string, EventStaticEmitterObject[]>;
|
|
18
|
-
_eventsAllowDefer: boolean;
|
|
19
|
-
_eventsDeferTimeouts: Record<any, number>;
|
|
20
|
-
/**
|
|
21
|
-
* Attach an event listener to the passed event only if the passed
|
|
22
|
-
* id matches the id for the event being fired.
|
|
23
|
-
* @param {string} eventName The name of the event to listen for.
|
|
24
|
-
* @param {string} id The id to match against.
|
|
25
|
-
* @param {function} listener The method to call when the event is fired.
|
|
26
|
-
* @returns {Emitter} The emitter instance.
|
|
27
|
-
*/
|
|
28
|
-
_on(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
29
|
-
/**
|
|
30
|
-
* Attach an event listener to the passed event only if the passed
|
|
31
|
-
* id matches the document id for the event being fired.
|
|
32
|
-
* @param {String} eventName The name of the event to listen for.
|
|
33
|
-
* @param {*} id The id to match against.
|
|
34
|
-
* @param {Function} listener The method to call when the event is fired.
|
|
35
|
-
* @returns {Emitter} The emitter instance.
|
|
36
|
-
*/
|
|
37
|
-
_once(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
38
|
-
/**
|
|
39
|
-
* Cancels an event listener based on an event name, id and listener function.
|
|
40
|
-
* @param {String} eventName The event to cancel listener for.
|
|
41
|
-
* @param {String} id The ID of the event to cancel listening for.
|
|
42
|
-
* @param {Function} listener The event listener function used in the on()
|
|
43
|
-
* or once() call to cancel.
|
|
44
|
-
* @returns {Emitter} The emitter instance.
|
|
45
|
-
*/
|
|
46
|
-
_off(eventName: string, id: string, listener?: EventListenerCallback): this;
|
|
47
|
-
/**
|
|
48
|
-
* Attach an event listener to the passed event only if the passed
|
|
49
|
-
* id matches the document id for the event being fired.
|
|
50
|
-
* @param {String} eventName The name of the event to listen for.
|
|
51
|
-
* @param {*} id The id to match against.
|
|
52
|
-
* @param {Function} listener The method to call when the event is fired.
|
|
53
|
-
* @returns {Emitter} The emitter instance.
|
|
54
|
-
*/
|
|
55
|
-
on(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
56
|
-
on(eventName: string, listener: EventListenerCallback): this;
|
|
57
|
-
/**
|
|
58
|
-
* Attach an event listener to the passed event only if the passed
|
|
59
|
-
* id matches the document id for the event being fired.
|
|
60
|
-
* @param {String} eventName The name of the event to listen for.
|
|
61
|
-
* @param id The id to match against.
|
|
62
|
-
* @param listener
|
|
63
|
-
* @returns {Emitter} The emitter instance.
|
|
64
|
-
*/
|
|
65
|
-
once(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
66
|
-
once(eventName: string, listener: EventListenerCallback): this;
|
|
67
|
-
/**
|
|
68
|
-
* Overwrites any previous event listeners so that if the event fires, only
|
|
69
|
-
* the listener you pass will be called. If you pass an id along with the
|
|
70
|
-
* listener, only listeners for the id will be overwritten. This is similar
|
|
71
|
-
* to calling `.off(eventName)` then `on(eventName, listener)` since
|
|
72
|
-
* `off(eventName)` will cancel any previous event listeners for the passed
|
|
73
|
-
* event name.
|
|
74
|
-
* @param {String} eventName The name of the event to listen for.
|
|
75
|
-
* @param {*} id The id to match against.
|
|
76
|
-
* @param {Function} listener The method to call when the event is fired.
|
|
77
|
-
* @returns {Emitter} The emitter instance.
|
|
78
|
-
*/
|
|
79
|
-
overwrite(eventName: string, id: string, listener: EventListenerCallback): this;
|
|
80
|
-
overwrite(eventName: string, listener: EventListenerCallback): this;
|
|
81
|
-
/**
|
|
82
|
-
* Cancels an event listener based on an event name, id and listener function.
|
|
83
|
-
* @param {String} eventName The event to cancel listener for.
|
|
84
|
-
* @param {String} id The ID of the event to cancel listening for.
|
|
85
|
-
* @param {Function} listener The event listener function used in the on()
|
|
86
|
-
* or once() call to cancel.
|
|
87
|
-
* @returns {Emitter} The emitter instance.
|
|
88
|
-
*/
|
|
89
|
-
off(eventName: string, id: string, listener?: EventListenerCallback): this;
|
|
90
|
-
off(eventName: string, listener?: EventListenerCallback): this;
|
|
91
|
-
off(eventName: string): this;
|
|
92
|
-
/**
|
|
93
|
-
* Emit an event by name.
|
|
94
|
-
* @param {Object} eventName The name of the event to emit.
|
|
95
|
-
* @param {...any} data The arguments to send to any listening methods.
|
|
96
|
-
* If you are sending multiple arguments, separate them with a comma so
|
|
97
|
-
* that they are received by the function as separate arguments.
|
|
98
|
-
* @return {number}
|
|
99
|
-
* @example #Emit an Event
|
|
100
|
-
* // Emit the event named "hello"
|
|
101
|
-
* myEntity.emit('hello');
|
|
102
|
-
* @example #Emit an Event With Data Object
|
|
103
|
-
* // Emit the event named "hello"
|
|
104
|
-
* myEntity.emit('hello', {moo: true});
|
|
105
|
-
* @example #Emit an Event With Multiple Data Values
|
|
106
|
-
* // Emit the event named "hello"
|
|
107
|
-
* myEntity.emit('hello', {moo: true}, 'someString');
|
|
108
|
-
* @example #Listen for Event Data
|
|
109
|
-
* // Set a listener to listen for the data (multiple values emitted
|
|
110
|
-
* // from an event are passed as function arguments)
|
|
111
|
-
* myEntity.on('hello', function (arg1, arg2) {
|
|
112
|
-
* console.log(arg1, arg2);
|
|
113
|
-
* }
|
|
114
|
-
*
|
|
115
|
-
* // Emit the event named "hello"
|
|
116
|
-
* myEntity.emit('hello', 'data1', 'data2');
|
|
117
|
-
*
|
|
118
|
-
* // The console output is:
|
|
119
|
-
* // data1, data2
|
|
120
|
-
*/
|
|
121
|
-
emit(eventName: string, ...data: any[]): Promise<EventReturnFlag>;
|
|
122
|
-
emitId(eventName: string, id: string, ...data: any[]): EventReturnFlag;
|
|
123
|
-
/**
|
|
124
|
-
* Creates a persistent emitter record that will fire a listener if
|
|
125
|
-
* one is added for this event after the emitStatic() call has been
|
|
126
|
-
* made.
|
|
127
|
-
* @param {String} eventName The name of the event to emit.
|
|
128
|
-
* @param {...any} data Optional arguments to emit with the event.
|
|
129
|
-
* @returns {Emitter} The emitter instance.
|
|
130
|
-
* @private
|
|
131
|
-
*/
|
|
132
|
-
emitStatic(eventName: string, ...data: any[]): this;
|
|
133
|
-
/**
|
|
134
|
-
* Creates a persistent emitter record that will fire a listener if
|
|
135
|
-
* one is added for this event after the emitStatic() call has been
|
|
136
|
-
* made.
|
|
137
|
-
* @param {String} eventName The name of the event to emit.
|
|
138
|
-
* @param {String} id The id of the event to emit.
|
|
139
|
-
* @param {...any} data Optional arguments to emit with the event.
|
|
140
|
-
* @returns {Emitter} The emitter instance.
|
|
141
|
-
* @private
|
|
142
|
-
*/
|
|
143
|
-
emitStaticId(eventName: string, id: string, ...data: any[]): this;
|
|
144
|
-
/**
|
|
145
|
-
* Handles removing emitters, is an internal method not called directly.
|
|
146
|
-
* @param {String} eventName The event to remove static emitter for.
|
|
147
|
-
* @returns {Emitter} The emitter instance.
|
|
148
|
-
* @private
|
|
149
|
-
*/
|
|
150
|
-
cancelStatic(eventName: string): this;
|
|
151
|
-
/**
|
|
152
|
-
* Checks if an event has any event listeners or not.
|
|
153
|
-
* @param {String} eventName The name of the event to check for.
|
|
154
|
-
* @returns {boolean} True if one or more event listeners are registered for
|
|
155
|
-
* the event. False if none are found.
|
|
156
|
-
*/
|
|
157
|
-
willEmit(eventName: string): boolean;
|
|
158
|
-
/**
|
|
159
|
-
* Checks if an event has any event listeners or not based on the passed id.
|
|
160
|
-
* @param {String} eventName The name of the event to check for.
|
|
161
|
-
* @param {String} id The event ID to check for.
|
|
162
|
-
* @returns {boolean} True if one or more event listeners are registered for
|
|
163
|
-
* the event. False if none are found.
|
|
164
|
-
*/
|
|
165
|
-
willEmitId(eventName: string, id: string): boolean;
|
|
166
|
-
/**
|
|
167
|
-
* Queues an event to be fired. This has automatic de-bouncing so that any
|
|
168
|
-
* events of the same type that occur within 100 milliseconds of a previous
|
|
169
|
-
* one will all be wrapped into a single emit rather than emitting tons of
|
|
170
|
-
* events for lots of chained inserts etc. Only the data from the last
|
|
171
|
-
* de-bounced event will be emitted.
|
|
172
|
-
* @param {String} eventName The name of the event to emit.
|
|
173
|
-
* @param {...any} data Optional arguments to emit with the event.
|
|
174
|
-
* @returns {Emitter} The emitter instance.
|
|
175
|
-
*/
|
|
176
|
-
deferEmit(eventName: string, ...data: any[]): this;
|
|
177
|
-
/**
|
|
178
|
-
* If events are cleared with the off() method while the event emitter is
|
|
179
|
-
* actively processing any events then the off() calls get added to a
|
|
180
|
-
* queue to be executed after the event emitter is finished. This stops
|
|
181
|
-
* errors that might occur by potentially modifying the event queue while
|
|
182
|
-
* the emitter is running through them. This method is called after the
|
|
183
|
-
* event emitter is finished processing.
|
|
184
|
-
* @private
|
|
185
|
-
*/
|
|
186
|
-
_processRemovalQueue(): void;
|
|
187
|
-
}
|
|
188
|
-
export declare function makeEmitter(obj: new (...args: any[]) => any, prototypeMode: boolean): Emitter;
|
|
189
|
-
export declare function makeEmitter(obj: boolean): Emitter;
|
|
190
|
-
export declare function makeEmitter(obj: Record<string, unknown>, prototypeMode: boolean): Emitter;
|