@adonisjs/events 7.2.1 → 8.0.0-0
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/README.md +15 -31
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/src/emitter.d.ts +21 -0
- package/build/src/emitter.js +125 -0
- package/build/src/events_buffer.d.ts +10 -0
- package/build/src/events_buffer.js +27 -0
- package/build/src/types.d.ts +9 -0
- package/build/src/types.js +1 -0
- package/package.json +65 -71
- package/build/adonis-typings/container.d.ts +0 -6
- package/build/adonis-typings/container.js +0 -8
- package/build/adonis-typings/events.d.ts +0 -207
- package/build/adonis-typings/events.js +0 -8
- package/build/adonis-typings/index.d.ts +0 -2
- package/build/adonis-typings/index.js +0 -10
- package/build/providers/EventProvider.d.ts +0 -9
- package/build/providers/EventProvider.js +0 -25
- package/build/src/Emitter/index.d.ts +0 -108
- package/build/src/Emitter/index.js +0 -250
- package/build/src/FakeEmitter/index.d.ts +0 -44
- package/build/src/FakeEmitter/index.js +0 -60
- package/build/src/IocResolver/index.d.ts +0 -65
- package/build/src/IocResolver/index.js +0 -118
- package/build/standalone.d.ts +0 -1
- package/build/standalone.js +0 -13
package/README.md
CHANGED
|
@@ -1,41 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
<img src="https://res.cloudinary.com/adonisjs/image/upload/q_100/v1558612869/adonis-readme_zscycu.jpg" width="600px">
|
|
3
|
-
</div>
|
|
1
|
+
# @adonisjs/events
|
|
4
2
|
|
|
5
3
|
<br />
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
<h3>AdonisJS Event Emitter</h3>
|
|
9
|
-
<p>Asynchronous Event Emitter built on top of <a href="https://github.com/sindresorhus/emittery">emittery</a> with first class for <strong>typed events</strong> and ability to <strong>trap events during tests</strong>.</p>
|
|
10
|
-
</div>
|
|
5
|
+
[![gh-workflow-image]][gh-workflow-url] [![npm-image]][npm-url] ![][typescript-image] [![license-image]][license-url] [![synk-image]][synk-url]
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
## Introduction
|
|
8
|
+
AdonisJS events is an implementation of the event emitter built on top of [emittery](https://github.com/sindresorhus/emittery). Alongside defining event listeners as inline callbacks, you can also bind modules to events and register event subscribers.
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
## Official Documentation
|
|
11
|
+
The documentation is available on the [AdonisJS website](https://docs.adonisjs.com/guides/events)
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
## Contributing
|
|
14
|
+
One of the primary goals of AdonisJS is to have a vibrant community of users and contributors who believes in the principles of the framework.
|
|
15
|
+
|
|
16
|
+
We encourage you to read the [contribution guide](https://github.com/adonisjs/.github/blob/main/docs/CONTRIBUTING.md) before contributing to the framework.
|
|
17
|
+
|
|
18
|
+
## Code of Conduct
|
|
19
|
+
In order to ensure that the AdonisJS community is welcoming to all, please review and abide by the [Code of Conduct](https://github.com/adonisjs/.github/blob/main/docs/CODE_OF_CONDUCT.md).
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<div align="center">
|
|
21
|
-
<h3>
|
|
22
|
-
<a href="https://adonisjs.com">
|
|
23
|
-
Website
|
|
24
|
-
</a>
|
|
25
|
-
<span> | </span>
|
|
26
|
-
<a href="https://docs.adonisjs.com/guides/events">
|
|
27
|
-
Guides
|
|
28
|
-
</a>
|
|
29
|
-
<span> | </span>
|
|
30
|
-
<a href="CONTRIBUTING.md">
|
|
31
|
-
Contributing
|
|
32
|
-
</a>
|
|
33
|
-
</h3>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
<div align="center">
|
|
37
|
-
<sub>Built with ❤︎ by <a href="https://twitter.com/AmanVirk1">Harminder Virk</a>
|
|
38
|
-
</div>
|
|
21
|
+
## License
|
|
22
|
+
AdonisJS events is open-sourced software licensed under the [MIT license](LICENSE.md).
|
|
39
23
|
|
|
40
24
|
[gh-workflow-image]: https://img.shields.io/github/workflow/status/adonisjs/events/test?style=for-the-badge
|
|
41
25
|
[gh-workflow-url]: https://github.com/adonisjs/events/actions/workflows/test.yml "Github action"
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Emitter } from './src/emitter.js';
|
package/build/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Emitter } from './src/emitter.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventsBuffer } from './events_buffer.js';
|
|
2
|
+
import type { EventsListItem } from './types.js';
|
|
3
|
+
import { type Application } from '@adonisjs/application';
|
|
4
|
+
export declare class Emitter<EventsList extends Record<string | symbol | number, any>> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(app: Application);
|
|
7
|
+
onError(callback: (event: keyof EventsList, error: any, data: any) => void): this;
|
|
8
|
+
on<Name extends keyof EventsList>(event: Name, handler: string | ((data: EventsList[Name]) => any | Promise<any>)): this;
|
|
9
|
+
once<Name extends keyof EventsList>(event: Name, handler: string | ((data: EventsList[Name]) => any | Promise<any>)): this;
|
|
10
|
+
onAny(handler: string | ((event: keyof EventsList, data: EventsListItem<EventsList>) => any | Promise<any>)): this;
|
|
11
|
+
emit<Name extends keyof EventsList>(event: Name, data: EventsList[Name]): Promise<void>;
|
|
12
|
+
off<Name extends keyof EventsList>(event: Name, handler: string | ((data: EventsList[Name]) => any | Promise<any>)): this;
|
|
13
|
+
offAny(handler: string | ((event: keyof EventsList, data: EventsListItem<EventsList>) => any | Promise<any>)): this;
|
|
14
|
+
clearListener<Name extends keyof EventsList>(event: Name, handler: string | ((data: EventsList[Name]) => any | Promise<any>)): this;
|
|
15
|
+
clearListeners(event: keyof EventsList): void;
|
|
16
|
+
clearAllListeners(): void;
|
|
17
|
+
listenerCount<Name extends keyof EventsList>(event?: Name): number;
|
|
18
|
+
hasListeners<Name extends keyof EventsList>(event?: Name): boolean;
|
|
19
|
+
fake(events?: (keyof EventsList)[]): EventsBuffer<EventsList>;
|
|
20
|
+
restore(): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import Emittery from 'emittery';
|
|
2
|
+
import { EventsBuffer } from './events_buffer.js';
|
|
3
|
+
import { moduleExpression } from '@adonisjs/application';
|
|
4
|
+
export class Emitter {
|
|
5
|
+
#transport = new Emittery();
|
|
6
|
+
#eventsBuffer;
|
|
7
|
+
#eventsToFake = new Set();
|
|
8
|
+
#errorHandler;
|
|
9
|
+
#moduleListeners = new Map();
|
|
10
|
+
#app;
|
|
11
|
+
constructor(app) {
|
|
12
|
+
this.#app = app;
|
|
13
|
+
}
|
|
14
|
+
#createModuleListener(importExpression) {
|
|
15
|
+
return moduleExpression(importExpression, this.#app.appRoot).toCallable(this.#app.container);
|
|
16
|
+
}
|
|
17
|
+
#getSetModuleListener(importExpression) {
|
|
18
|
+
if (!this.#moduleListeners.has(importExpression)) {
|
|
19
|
+
this.#moduleListeners.set(importExpression, this.#createModuleListener(importExpression));
|
|
20
|
+
}
|
|
21
|
+
return this.#moduleListeners.get(importExpression);
|
|
22
|
+
}
|
|
23
|
+
onError(callback) {
|
|
24
|
+
this.#errorHandler = callback;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
on(event, handler) {
|
|
28
|
+
if (typeof handler === 'string') {
|
|
29
|
+
this.#transport.on(event, this.#getSetModuleListener(handler));
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
this.#transport.on(event, handler);
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
once(event, handler) {
|
|
36
|
+
if (typeof handler === 'string') {
|
|
37
|
+
const off = this.#transport.on(event, async (data) => {
|
|
38
|
+
off();
|
|
39
|
+
await this.#createModuleListener(handler)(data);
|
|
40
|
+
});
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
const off = this.#transport.on(event, async (data) => {
|
|
44
|
+
off();
|
|
45
|
+
await handler(data);
|
|
46
|
+
});
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
onAny(handler) {
|
|
50
|
+
if (typeof handler === 'string') {
|
|
51
|
+
this.#transport.onAny(this.#getSetModuleListener(handler));
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
this.#transport.onAny(handler);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
async emit(event, data) {
|
|
58
|
+
if (this.#eventsToFake.has(event) || this.#eventsToFake.has('*')) {
|
|
59
|
+
this.#eventsBuffer.events.push({ name: event, data });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
await this.#transport.emit(event, data);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (this.#errorHandler) {
|
|
67
|
+
this.#errorHandler(event, error, data);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
off(event, handler) {
|
|
75
|
+
if (typeof handler === 'string') {
|
|
76
|
+
if (this.#moduleListeners.has(handler)) {
|
|
77
|
+
this.#transport.off(event, this.#moduleListeners.get(handler));
|
|
78
|
+
}
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
this.#transport.off(event, handler);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
offAny(handler) {
|
|
85
|
+
if (typeof handler === 'string') {
|
|
86
|
+
if (this.#moduleListeners.has(handler)) {
|
|
87
|
+
this.#transport.offAny(this.#moduleListeners.get(handler));
|
|
88
|
+
}
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
this.#transport.offAny(handler);
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
clearListener(event, handler) {
|
|
95
|
+
return this.off(event, handler);
|
|
96
|
+
}
|
|
97
|
+
clearListeners(event) {
|
|
98
|
+
this.#transport.clearListeners(event);
|
|
99
|
+
}
|
|
100
|
+
clearAllListeners() {
|
|
101
|
+
this.#transport.clearListeners();
|
|
102
|
+
}
|
|
103
|
+
listenerCount(event) {
|
|
104
|
+
return this.#transport.listenerCount(event);
|
|
105
|
+
}
|
|
106
|
+
hasListeners(event) {
|
|
107
|
+
return this.listenerCount(event) > 0;
|
|
108
|
+
}
|
|
109
|
+
fake(events) {
|
|
110
|
+
this.restore();
|
|
111
|
+
this.#eventsBuffer = new EventsBuffer();
|
|
112
|
+
if (!events) {
|
|
113
|
+
this.#eventsToFake.add('*');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
events.forEach((event) => this.#eventsToFake.add(event));
|
|
117
|
+
}
|
|
118
|
+
return this.#eventsBuffer;
|
|
119
|
+
}
|
|
120
|
+
restore() {
|
|
121
|
+
this.#eventsToFake.clear();
|
|
122
|
+
this.#eventsBuffer?.flush();
|
|
123
|
+
this.#eventsBuffer = undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BufferedEventsListItem } from './types.js';
|
|
2
|
+
export declare class EventsBuffer<EventsList extends Record<string | symbol | number, any>> {
|
|
3
|
+
events: BufferedEventsListItem<EventsList>[];
|
|
4
|
+
all(): BufferedEventsListItem<EventsList>[];
|
|
5
|
+
size(): number;
|
|
6
|
+
exists(finder: keyof EventsList | ((event: BufferedEventsListItem<EventsList>) => boolean)): boolean;
|
|
7
|
+
filter(finder: keyof EventsList | ((event: BufferedEventsListItem<EventsList>) => boolean)): BufferedEventsListItem<EventsList>[];
|
|
8
|
+
find(finder: keyof EventsList | ((event: BufferedEventsListItem<EventsList>) => boolean)): BufferedEventsListItem<EventsList> | null;
|
|
9
|
+
flush(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class EventsBuffer {
|
|
2
|
+
events = [];
|
|
3
|
+
all() {
|
|
4
|
+
return this.events;
|
|
5
|
+
}
|
|
6
|
+
size() {
|
|
7
|
+
return this.events.length;
|
|
8
|
+
}
|
|
9
|
+
exists(finder) {
|
|
10
|
+
return !!this.find(finder);
|
|
11
|
+
}
|
|
12
|
+
filter(finder) {
|
|
13
|
+
if (typeof finder === 'function') {
|
|
14
|
+
return this.events.filter(finder);
|
|
15
|
+
}
|
|
16
|
+
return this.events.filter((event) => event.name === finder);
|
|
17
|
+
}
|
|
18
|
+
find(finder) {
|
|
19
|
+
if (typeof finder === 'function') {
|
|
20
|
+
return this.events.find(finder) || null;
|
|
21
|
+
}
|
|
22
|
+
return this.events.find((event) => event.name === finder) || null;
|
|
23
|
+
}
|
|
24
|
+
flush() {
|
|
25
|
+
this.events = [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type BufferedEventsListItem<EventsList> = {
|
|
2
|
+
[Name in keyof EventsList]: {
|
|
3
|
+
name: Name;
|
|
4
|
+
data: EventsList[Name];
|
|
5
|
+
};
|
|
6
|
+
}[keyof EventsList];
|
|
7
|
+
export type EventsListItem<EventsList> = {
|
|
8
|
+
[Name in keyof EventsList]: EventsList[Name];
|
|
9
|
+
}[keyof EventsList];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,29 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonisjs/events",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "build/
|
|
3
|
+
"version": "8.0.0-0",
|
|
4
|
+
"description": "An implementation of the event emitter built on top of emittery",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"files": [
|
|
7
8
|
"build/src",
|
|
8
|
-
"build/
|
|
9
|
-
"build/
|
|
10
|
-
"build/standalone.d.ts",
|
|
11
|
-
"build/standalone.js"
|
|
9
|
+
"build/index.d.ts",
|
|
10
|
+
"build/index.js"
|
|
12
11
|
],
|
|
12
|
+
"imports": {
|
|
13
|
+
"#listeners/*": "./tests/app/listeners/*.js"
|
|
14
|
+
},
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./build/index.js",
|
|
17
|
+
"./types": "./build/src/types.js"
|
|
18
|
+
},
|
|
13
19
|
"scripts": {
|
|
14
|
-
"mrm": "mrm --preset=@adonisjs/mrm-preset",
|
|
15
20
|
"pretest": "npm run lint",
|
|
16
|
-
"test": "
|
|
21
|
+
"test": "c8 npm run vscode:test",
|
|
17
22
|
"clean": "del-cli build",
|
|
18
23
|
"compile": "npm run lint && npm run clean && tsc",
|
|
19
24
|
"build": "npm run compile",
|
|
20
|
-
"
|
|
21
|
-
"release": "np --message=\"chore(release): %s\"",
|
|
25
|
+
"release": "np",
|
|
22
26
|
"version": "npm run build",
|
|
23
27
|
"format": "prettier --write .",
|
|
24
28
|
"prepublishOnly": "npm run build",
|
|
25
29
|
"lint": "eslint . --ext=.ts",
|
|
26
|
-
"sync-labels": "github-label-sync --labels
|
|
30
|
+
"sync-labels": "github-label-sync --labels .github/labels.json adonisjs/events",
|
|
31
|
+
"vscode:test": "node --loader=ts-node/esm --experimental-import-meta-resolve bin/test.ts"
|
|
27
32
|
},
|
|
28
33
|
"keywords": [
|
|
29
34
|
"emitter",
|
|
@@ -32,55 +37,37 @@
|
|
|
32
37
|
"author": "virk,adonisjs",
|
|
33
38
|
"license": "MIT",
|
|
34
39
|
"devDependencies": {
|
|
35
|
-
"@adonisjs/application": "^
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
38
|
-
"@japa/assert": "^1.
|
|
39
|
-
"@japa/
|
|
40
|
-
"@japa/
|
|
41
|
-
"@japa/
|
|
40
|
+
"@adonisjs/application": "^6.0.3-0",
|
|
41
|
+
"@commitlint/cli": "^17.2.0",
|
|
42
|
+
"@commitlint/config-conventional": "^17.2.0",
|
|
43
|
+
"@japa/assert": "^1.3.6",
|
|
44
|
+
"@japa/expect-type": "^1.0.2",
|
|
45
|
+
"@japa/run-failed-tests": "^1.1.0",
|
|
46
|
+
"@japa/runner": "^2.2.2",
|
|
47
|
+
"@japa/spec-reporter": "^1.3.2",
|
|
42
48
|
"@poppinss/dev-utils": "^2.0.1",
|
|
43
|
-
"@
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
49
|
+
"@swc/core": "^1.3.18",
|
|
50
|
+
"@types/fs-extra": "^9.0.13",
|
|
51
|
+
"@types/node": "^18.11.9",
|
|
52
|
+
"c8": "^7.12.0",
|
|
53
|
+
"del-cli": "^5.0.0",
|
|
54
|
+
"eslint": "^8.28.0",
|
|
48
55
|
"eslint-config-prettier": "^8.3.0",
|
|
49
|
-
"eslint-plugin-adonis": "^
|
|
50
|
-
"eslint-plugin-prettier": "^4.
|
|
56
|
+
"eslint-plugin-adonis": "^3.0.3",
|
|
57
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
58
|
+
"fs-extra": "^10.1.0",
|
|
51
59
|
"github-label-sync": "^2.0.1",
|
|
52
|
-
"husky": "^
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"typescript": "^4.3
|
|
57
|
-
},
|
|
58
|
-
"nyc": {
|
|
59
|
-
"exclude": [
|
|
60
|
-
"test"
|
|
61
|
-
],
|
|
62
|
-
"extension": [
|
|
63
|
-
".ts"
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
|
-
"config": {
|
|
67
|
-
"commitizen": {
|
|
68
|
-
"path": "cz-conventional-changelog"
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
"np": {
|
|
72
|
-
"contents": ".",
|
|
73
|
-
"anyBranch": false
|
|
60
|
+
"husky": "^8.0.2",
|
|
61
|
+
"np": "^7.6.2",
|
|
62
|
+
"prettier": "^2.7.1",
|
|
63
|
+
"ts-node": "^10.9.1",
|
|
64
|
+
"typescript": "^4.9.3"
|
|
74
65
|
},
|
|
75
66
|
"dependencies": {
|
|
76
|
-
"emittery": "^0.
|
|
67
|
+
"emittery": "^1.0.1"
|
|
77
68
|
},
|
|
78
69
|
"peerDependencies": {
|
|
79
|
-
"@adonisjs/application": "^
|
|
80
|
-
},
|
|
81
|
-
"directories": {
|
|
82
|
-
"doc": "docs",
|
|
83
|
-
"test": "test"
|
|
70
|
+
"@adonisjs/application": "^6.0.1-0"
|
|
84
71
|
},
|
|
85
72
|
"repository": {
|
|
86
73
|
"type": "git",
|
|
@@ -90,23 +77,6 @@
|
|
|
90
77
|
"url": "https://github.com/adonisjs/events/issues"
|
|
91
78
|
},
|
|
92
79
|
"homepage": "https://github.com/adonisjs/events#readme",
|
|
93
|
-
"publishConfig": {
|
|
94
|
-
"access": "public",
|
|
95
|
-
"tag": "latest"
|
|
96
|
-
},
|
|
97
|
-
"mrmConfig": {
|
|
98
|
-
"core": true,
|
|
99
|
-
"license": "MIT",
|
|
100
|
-
"services": [
|
|
101
|
-
"github-actions"
|
|
102
|
-
],
|
|
103
|
-
"minNodeVersion": "14.15.4",
|
|
104
|
-
"probotApps": [
|
|
105
|
-
"stale",
|
|
106
|
-
"lock"
|
|
107
|
-
],
|
|
108
|
-
"runGhActionsOnWindows": false
|
|
109
|
-
},
|
|
110
80
|
"eslintConfig": {
|
|
111
81
|
"extends": [
|
|
112
82
|
"plugin:adonis/typescriptPackage",
|
|
@@ -136,5 +106,29 @@
|
|
|
136
106
|
"bracketSpacing": true,
|
|
137
107
|
"arrowParens": "always",
|
|
138
108
|
"printWidth": 100
|
|
109
|
+
},
|
|
110
|
+
"commitlint": {
|
|
111
|
+
"extends": [
|
|
112
|
+
"@commitlint/config-conventional"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"publishConfig": {
|
|
116
|
+
"access": "public",
|
|
117
|
+
"tag": "next"
|
|
118
|
+
},
|
|
119
|
+
"np": {
|
|
120
|
+
"message": "chore(release): %s",
|
|
121
|
+
"tag": "next",
|
|
122
|
+
"branch": "main",
|
|
123
|
+
"anyBranch": false
|
|
124
|
+
},
|
|
125
|
+
"c8": {
|
|
126
|
+
"reporter": [
|
|
127
|
+
"text",
|
|
128
|
+
"html"
|
|
129
|
+
],
|
|
130
|
+
"exclude": [
|
|
131
|
+
"tests/**"
|
|
132
|
+
]
|
|
139
133
|
}
|
|
140
134
|
}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
declare module '@ioc:Adonis/Core/Event' {
|
|
2
|
-
/**
|
|
3
|
-
* Returns the data type for a given key
|
|
4
|
-
*/
|
|
5
|
-
export type DataForEvent<K extends string> = K extends keyof EventsList ? EventsList[K] : any;
|
|
6
|
-
/**
|
|
7
|
-
* Shape of event handler
|
|
8
|
-
*/
|
|
9
|
-
export type EventHandler<T extends any = any> = (data: T) => Promise<void> | void;
|
|
10
|
-
/**
|
|
11
|
-
* Shape of catch all events handler
|
|
12
|
-
*/
|
|
13
|
-
export type AnyHandler = (event: keyof EventsList, data: {
|
|
14
|
-
[P in keyof EventsList]: EventsList[P];
|
|
15
|
-
}[keyof EventsList]) => Promise<void> | void;
|
|
16
|
-
/**
|
|
17
|
-
* Shape of event trap handler
|
|
18
|
-
*/
|
|
19
|
-
export type TrapHandler<T extends any = any> = EventHandler<T>;
|
|
20
|
-
/**
|
|
21
|
-
* The error handler for handling events when an emit call fails
|
|
22
|
-
*/
|
|
23
|
-
export type ErrorHandler = (event: string, error: any, data: any) => void;
|
|
24
|
-
/**
|
|
25
|
-
* Shape of trap all events handler
|
|
26
|
-
*/
|
|
27
|
-
export type TrapAllHandler = AnyHandler;
|
|
28
|
-
/**
|
|
29
|
-
* The shape of emitter transport. This has to be same as
|
|
30
|
-
* `emittery`.
|
|
31
|
-
*/
|
|
32
|
-
export interface EmitterTransportContract {
|
|
33
|
-
on(event: string, handler: EventHandler): any;
|
|
34
|
-
once(event: string): Promise<any>;
|
|
35
|
-
onAny(handler: (event: any, data: any) => Promise<void> | void): any;
|
|
36
|
-
emit(event: string, data: any): Promise<any>;
|
|
37
|
-
off(event: string, handler: EventHandler): any;
|
|
38
|
-
offAny(handler: (event: any, data: any) => Promise<void> | void): any;
|
|
39
|
-
off(event: string, handler: EventHandler): any;
|
|
40
|
-
clearListeners(event?: string): any;
|
|
41
|
-
listenerCount(event?: string): number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Fake emitter to be used for finding and asserting
|
|
45
|
-
* faked events
|
|
46
|
-
*/
|
|
47
|
-
export interface FakeEmitterContract {
|
|
48
|
-
/**
|
|
49
|
-
* Returns all the emitted events
|
|
50
|
-
*/
|
|
51
|
-
all(): {
|
|
52
|
-
name: string;
|
|
53
|
-
data: any;
|
|
54
|
-
}[];
|
|
55
|
-
/**
|
|
56
|
-
* Find if the event exists
|
|
57
|
-
*/
|
|
58
|
-
exists<K extends keyof EventsList>(event: K): boolean;
|
|
59
|
-
exists(event: string): boolean;
|
|
60
|
-
exists<Events extends Record<string, any> = EventsList>(matchCallback: (event: {
|
|
61
|
-
[K in keyof Events]: {
|
|
62
|
-
name: K;
|
|
63
|
-
data: Events[K];
|
|
64
|
-
};
|
|
65
|
-
}[keyof Events]) => boolean): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Find an event
|
|
68
|
-
*/
|
|
69
|
-
find<K extends keyof EventsList>(event: K): {
|
|
70
|
-
name: K;
|
|
71
|
-
data: DataForEvent<K>;
|
|
72
|
-
} | null;
|
|
73
|
-
find(event: string): {
|
|
74
|
-
name: string;
|
|
75
|
-
data: any;
|
|
76
|
-
};
|
|
77
|
-
find<Events extends Record<string, any> = EventsList>(matchCallback: (event: {
|
|
78
|
-
[K in keyof Events]: {
|
|
79
|
-
name: K;
|
|
80
|
-
data: Events[K];
|
|
81
|
-
};
|
|
82
|
-
}[keyof Events]) => boolean): {
|
|
83
|
-
[K in keyof Events]: {
|
|
84
|
-
name: K;
|
|
85
|
-
data: Events[K];
|
|
86
|
-
};
|
|
87
|
-
}[keyof Events] | null;
|
|
88
|
-
/**
|
|
89
|
-
* Find multiple events
|
|
90
|
-
*/
|
|
91
|
-
filter<K extends keyof EventsList>(event: K): {
|
|
92
|
-
name: K;
|
|
93
|
-
data: DataForEvent<K>;
|
|
94
|
-
}[];
|
|
95
|
-
filter(event: string): {
|
|
96
|
-
name: string;
|
|
97
|
-
data: any;
|
|
98
|
-
}[];
|
|
99
|
-
filter<Events extends Record<string, any> = EventsList>(matchCallback: (event: {
|
|
100
|
-
[K in keyof Events]: {
|
|
101
|
-
name: K;
|
|
102
|
-
data: Events[K];
|
|
103
|
-
};
|
|
104
|
-
}[keyof Events]) => boolean): {
|
|
105
|
-
[K in keyof Events]: {
|
|
106
|
-
name: K;
|
|
107
|
-
data: Events[K];
|
|
108
|
-
};
|
|
109
|
-
}[keyof Events][];
|
|
110
|
-
/**
|
|
111
|
-
* Get number of events emitted
|
|
112
|
-
*/
|
|
113
|
-
size(): number;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Shape of Event emitter
|
|
117
|
-
*/
|
|
118
|
-
export interface EmitterContract {
|
|
119
|
-
transport: EmitterTransportContract;
|
|
120
|
-
/**
|
|
121
|
-
* Fake the upcoming events
|
|
122
|
-
*/
|
|
123
|
-
fake<K extends keyof EventsList>(events?: K[] | string[]): FakeEmitterContract;
|
|
124
|
-
/**
|
|
125
|
-
* Define a custom error handler
|
|
126
|
-
*/
|
|
127
|
-
onError(handler: ErrorHandler): this;
|
|
128
|
-
/**
|
|
129
|
-
* Define a custom IoC Container base namespace for resolving
|
|
130
|
-
* the listener bindings.
|
|
131
|
-
*/
|
|
132
|
-
namespace(namespace: string): this;
|
|
133
|
-
/**
|
|
134
|
-
* Listen for an event
|
|
135
|
-
*/
|
|
136
|
-
on<K extends keyof EventsList>(event: K, handler: EventHandler<EventsList[K]> | string): this;
|
|
137
|
-
on<K extends string>(event: K, handler: EventHandler<DataForEvent<K>> | string): this;
|
|
138
|
-
/**
|
|
139
|
-
* Listen for an event only once
|
|
140
|
-
*/
|
|
141
|
-
once<K extends keyof EventsList>(event: K, handler: EventHandler<EventsList[K]> | string): this;
|
|
142
|
-
once<K extends string>(event: K, handler: EventHandler<DataForEvent<K>> | string): this;
|
|
143
|
-
/**
|
|
144
|
-
* Listen for all events
|
|
145
|
-
*/
|
|
146
|
-
onAny(handler: AnyHandler | string): this;
|
|
147
|
-
/**
|
|
148
|
-
* Emit an event
|
|
149
|
-
*/
|
|
150
|
-
emit<K extends keyof EventsList>(event: K, data: EventsList[K]): Promise<void>;
|
|
151
|
-
emit<K extends string>(event: K, data: DataForEvent<K>): Promise<void>;
|
|
152
|
-
/**
|
|
153
|
-
* Remove event listener
|
|
154
|
-
*/
|
|
155
|
-
off<K extends keyof EventsList>(event: K, handler: EventHandler | string): void;
|
|
156
|
-
off<K extends string>(event: K, handler: EventHandler | string): void;
|
|
157
|
-
/**
|
|
158
|
-
* Remove event listener listening for all events
|
|
159
|
-
*/
|
|
160
|
-
offAny(handler: AnyHandler | string): void;
|
|
161
|
-
/**
|
|
162
|
-
* Clear a given listener for a given event
|
|
163
|
-
*/
|
|
164
|
-
clearListener<K extends keyof EventsList>(event: K, handler: EventHandler | string): void;
|
|
165
|
-
clearListener<K extends string>(event: K, handler: EventHandler | string): void;
|
|
166
|
-
/**
|
|
167
|
-
* Clear all listeners for a given event
|
|
168
|
-
*/
|
|
169
|
-
clearListeners<K extends keyof EventsList>(event: K): void;
|
|
170
|
-
clearListeners<K extends string>(event: K): void;
|
|
171
|
-
/**
|
|
172
|
-
* Clear all listeners for all events
|
|
173
|
-
*/
|
|
174
|
-
clearAllListeners(): void;
|
|
175
|
-
/**
|
|
176
|
-
* Returns count of listeners listening for a given event
|
|
177
|
-
*/
|
|
178
|
-
listenerCount<K extends keyof EventsList>(event?: K): number;
|
|
179
|
-
listenerCount<K extends string>(event?: K): number;
|
|
180
|
-
/**
|
|
181
|
-
* Returns true when an event has one or more listeners
|
|
182
|
-
*/
|
|
183
|
-
hasListeners<K extends keyof EventsList>(event?: K): boolean;
|
|
184
|
-
hasListeners<K extends string>(event?: K): boolean;
|
|
185
|
-
/**
|
|
186
|
-
* Trap a specific event. The event listener won't be executed during
|
|
187
|
-
* the trap. Call [[this.restore]] to remove traps
|
|
188
|
-
*/
|
|
189
|
-
trap<K extends keyof EventsList>(event: K, handler: TrapHandler<EventsList[K]>): this;
|
|
190
|
-
trap<K extends string>(event: K, handler: TrapHandler<DataForEvent<K>>): this;
|
|
191
|
-
/**
|
|
192
|
-
* Trap all the events, which are not trapped using the [[this.trap]] method
|
|
193
|
-
*/
|
|
194
|
-
trapAll(handler: AnyHandler): this;
|
|
195
|
-
/**
|
|
196
|
-
* Restore traps
|
|
197
|
-
*/
|
|
198
|
-
restore(): void;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* An interface to define typed events
|
|
202
|
-
*/
|
|
203
|
-
export interface EventsList {
|
|
204
|
-
}
|
|
205
|
-
const Event: EmitterContract;
|
|
206
|
-
export default Event;
|
|
207
|
-
}
|