@adonisjs/events 7.2.0 → 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 -251
- package/build/src/FakeEmitter/index.d.ts +0 -43
- package/build/src/FakeEmitter/index.js +0 -57
- 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
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @adonisjs/events
|
|
3
|
-
*
|
|
4
|
-
* (c) Harminder Virk <virk@adonisjs.com>
|
|
5
|
-
*
|
|
6
|
-
* For the full copyright and license information, please view the LICENSE
|
|
7
|
-
* file that was distributed with this source code.
|
|
8
|
-
*/
|
|
9
|
-
/// <reference path="./container.ts" />
|
|
10
|
-
/// <reference path="./events.ts" />
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
|
|
2
|
-
export default class EventProvider {
|
|
3
|
-
protected app: ApplicationContract;
|
|
4
|
-
constructor(app: ApplicationContract);
|
|
5
|
-
/**
|
|
6
|
-
* Register `Event emitter` to the container.
|
|
7
|
-
*/
|
|
8
|
-
register(): void;
|
|
9
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* @adonisjs/events
|
|
4
|
-
*
|
|
5
|
-
* (c) Harminder Virk <virk@adonisjs.com>
|
|
6
|
-
*
|
|
7
|
-
* For the full copyright and license information, please view the LICENSE
|
|
8
|
-
* file that was distributed with this source code.
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
class EventProvider {
|
|
12
|
-
constructor(app) {
|
|
13
|
-
this.app = app;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Register `Event emitter` to the container.
|
|
17
|
-
*/
|
|
18
|
-
register() {
|
|
19
|
-
this.app.container.singleton('Adonis/Core/Event', () => {
|
|
20
|
-
const { Emitter } = require('../src/Emitter');
|
|
21
|
-
return new Emitter(this.app);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.default = EventProvider;
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/// <reference path="../../adonis-typings/events.d.ts" />
|
|
2
|
-
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
|
|
3
|
-
import { AnyHandler, EventsList, TrapHandler, EventHandler, DataForEvent, ErrorHandler, TrapAllHandler, EmitterContract, EmitterTransportContract } from '@ioc:Adonis/Core/Event';
|
|
4
|
-
import { FakeEmitter } from '../FakeEmitter';
|
|
5
|
-
/**
|
|
6
|
-
* Emitter class exposes the API for async event emitter built on top of
|
|
7
|
-
* Emittery. It also exposes an API to pre-define the Typescript types
|
|
8
|
-
* for different events.
|
|
9
|
-
*/
|
|
10
|
-
export declare class Emitter implements EmitterContract {
|
|
11
|
-
transport: EmitterTransportContract;
|
|
12
|
-
private iocResolver?;
|
|
13
|
-
/**
|
|
14
|
-
* Error handler to report emitter errors
|
|
15
|
-
*/
|
|
16
|
-
private errorHandler?;
|
|
17
|
-
/**
|
|
18
|
-
* Deprecated properties to manage trapping events
|
|
19
|
-
*/
|
|
20
|
-
private trappingEvents;
|
|
21
|
-
private traps;
|
|
22
|
-
private trapAllHandler?;
|
|
23
|
-
/**
|
|
24
|
-
* Fakes
|
|
25
|
-
*/
|
|
26
|
-
private eventsToFake;
|
|
27
|
-
private fakeEmitter?;
|
|
28
|
-
constructor(app?: ApplicationContract);
|
|
29
|
-
/**
|
|
30
|
-
* Returns reference to the IoC resolver. Do not call this method until
|
|
31
|
-
* handler is not a string
|
|
32
|
-
*/
|
|
33
|
-
private getResolver;
|
|
34
|
-
/**
|
|
35
|
-
* Define a custom error handler
|
|
36
|
-
*/
|
|
37
|
-
onError(handler: ErrorHandler): this;
|
|
38
|
-
/**
|
|
39
|
-
* Define event handler for a given event
|
|
40
|
-
*/
|
|
41
|
-
on<K extends keyof EventsList | string>(event: K, handler: EventHandler<DataForEvent<K>> | string): this;
|
|
42
|
-
/**
|
|
43
|
-
* Define event handler for a given event and to be called
|
|
44
|
-
* only once.
|
|
45
|
-
*/
|
|
46
|
-
once<K extends keyof EventsList | string>(event: K, handler: EventHandler<DataForEvent<K>> | string): this;
|
|
47
|
-
/**
|
|
48
|
-
* Define catch all event handler to listen for all events.
|
|
49
|
-
*/
|
|
50
|
-
onAny(handler: AnyHandler | string): this;
|
|
51
|
-
/**
|
|
52
|
-
* Emit event
|
|
53
|
-
*/
|
|
54
|
-
emit<K extends keyof EventsList | string>(event: K, data: DataForEvent<K>): Promise<any>;
|
|
55
|
-
/**
|
|
56
|
-
* Remove existing event listener
|
|
57
|
-
*/
|
|
58
|
-
off<K extends keyof EventsList>(event: K | string, handler: EventHandler | string): void;
|
|
59
|
-
/**
|
|
60
|
-
* Remove existing event listener for catch all handler
|
|
61
|
-
*/
|
|
62
|
-
offAny(handler: AnyHandler | string): void;
|
|
63
|
-
/**
|
|
64
|
-
* Remove existing event listener.
|
|
65
|
-
* @alias off
|
|
66
|
-
*/
|
|
67
|
-
clearListener<K extends keyof EventsList | string>(event: K, handler: EventHandler | string): void;
|
|
68
|
-
/**
|
|
69
|
-
* Clear all listeners for a given event
|
|
70
|
-
*/
|
|
71
|
-
clearListeners<K extends keyof EventsList | string>(event: K): void;
|
|
72
|
-
/**
|
|
73
|
-
* Clear all listeners for all events
|
|
74
|
-
*/
|
|
75
|
-
clearAllListeners(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Returns count of listeners for a given event or all
|
|
78
|
-
* events.
|
|
79
|
-
*/
|
|
80
|
-
listenerCount<K extends keyof EventsList | string>(event?: K): number;
|
|
81
|
-
/**
|
|
82
|
-
* Returns a boolean telling if listeners count for a given
|
|
83
|
-
* event or all events is greater than 0 or not.
|
|
84
|
-
*/
|
|
85
|
-
hasListeners<K extends keyof EventsList | string>(event?: K): boolean;
|
|
86
|
-
/**
|
|
87
|
-
* Define custom namespace for event listeners. It is set to `App/Listeners`
|
|
88
|
-
* by default.
|
|
89
|
-
*/
|
|
90
|
-
namespace(namespace: string): this;
|
|
91
|
-
/**
|
|
92
|
-
* Trap event instead of emitting it
|
|
93
|
-
*/
|
|
94
|
-
trap<K extends keyof EventsList | string>(event: K, handler: TrapHandler<DataForEvent<K>>): this;
|
|
95
|
-
/**
|
|
96
|
-
* Trap all events instead of emitting them
|
|
97
|
-
*/
|
|
98
|
-
trapAll(handler: TrapAllHandler): this;
|
|
99
|
-
/**
|
|
100
|
-
* Fake event emitter to collect events in-memory vs
|
|
101
|
-
* emitting them
|
|
102
|
-
*/
|
|
103
|
-
fake(events?: any[]): FakeEmitter;
|
|
104
|
-
/**
|
|
105
|
-
* Restore trap and fake
|
|
106
|
-
*/
|
|
107
|
-
restore(): this;
|
|
108
|
-
}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* @adonisjs/events
|
|
4
|
-
*
|
|
5
|
-
* (c) Harminder Virk <virk@adonisjs.com>
|
|
6
|
-
*
|
|
7
|
-
* For the full copyright and license information, please view the LICENSE
|
|
8
|
-
* file that was distributed with this source code.
|
|
9
|
-
*/
|
|
10
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.Emitter = void 0;
|
|
15
|
-
/// <reference path="../../adonis-typings/events.ts" />
|
|
16
|
-
const emittery_1 = __importDefault(require("emittery"));
|
|
17
|
-
const FakeEmitter_1 = require("../FakeEmitter");
|
|
18
|
-
const IocResolver_1 = require("../IocResolver");
|
|
19
|
-
/**
|
|
20
|
-
* Emitter class exposes the API for async event emitter built on top of
|
|
21
|
-
* Emittery. It also exposes an API to pre-define the Typescript types
|
|
22
|
-
* for different events.
|
|
23
|
-
*/
|
|
24
|
-
class Emitter {
|
|
25
|
-
constructor(app) {
|
|
26
|
-
this.transport = new emittery_1.default();
|
|
27
|
-
/**
|
|
28
|
-
* Deprecated properties to manage trapping events
|
|
29
|
-
*/
|
|
30
|
-
this.trappingEvents = false;
|
|
31
|
-
this.traps = new Map();
|
|
32
|
-
/**
|
|
33
|
-
* Fakes
|
|
34
|
-
*/
|
|
35
|
-
this.eventsToFake = new Set();
|
|
36
|
-
if (app) {
|
|
37
|
-
this.iocResolver = new IocResolver_1.IocResolver(app);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns reference to the IoC resolver. Do not call this method until
|
|
42
|
-
* handler is not a string
|
|
43
|
-
*/
|
|
44
|
-
getResolver(handler) {
|
|
45
|
-
if (!this.iocResolver) {
|
|
46
|
-
throw new Error(`Cannot resolve string based event handler "${handler}". IoC container is not provided to the event emitter`);
|
|
47
|
-
}
|
|
48
|
-
return this.iocResolver;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Define a custom error handler
|
|
52
|
-
*/
|
|
53
|
-
onError(handler) {
|
|
54
|
-
this.errorHandler = handler;
|
|
55
|
-
return this;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Define event handler for a given event
|
|
59
|
-
*/
|
|
60
|
-
on(event, handler) {
|
|
61
|
-
if (typeof handler === 'string') {
|
|
62
|
-
handler = this.getResolver(handler).getEventHandler(event, handler);
|
|
63
|
-
}
|
|
64
|
-
this.transport.on(event, handler);
|
|
65
|
-
return this;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Define event handler for a given event and to be called
|
|
69
|
-
* only once.
|
|
70
|
-
*/
|
|
71
|
-
once(event, handler) {
|
|
72
|
-
this.transport.once(event).then((data) => {
|
|
73
|
-
if (typeof handler === 'string') {
|
|
74
|
-
this.getResolver(handler).getEventHandler(event, handler)(data);
|
|
75
|
-
this.getResolver(handler).removeEventHandler(event, handler);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
handler(data);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Define catch all event handler to listen for all events.
|
|
85
|
-
*/
|
|
86
|
-
onAny(handler) {
|
|
87
|
-
if (typeof handler === 'string') {
|
|
88
|
-
handler = this.getResolver(handler).getAnyHandler(handler);
|
|
89
|
-
}
|
|
90
|
-
this.transport.onAny(handler);
|
|
91
|
-
return this;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Emit event
|
|
95
|
-
*/
|
|
96
|
-
async emit(event, data) {
|
|
97
|
-
try {
|
|
98
|
-
let shouldEmitEvent = true;
|
|
99
|
-
/**
|
|
100
|
-
* Register event with the fake emitter
|
|
101
|
-
*/
|
|
102
|
-
if (this.fakeEmitter && (this.eventsToFake.has('*') || this.eventsToFake.has(event))) {
|
|
103
|
-
shouldEmitEvent = false;
|
|
104
|
-
this.fakeEmitter.events.push({ name: event, data });
|
|
105
|
-
}
|
|
106
|
-
if (this.trappingEvents) {
|
|
107
|
-
/**
|
|
108
|
-
* Give preference to the handler for a specific event
|
|
109
|
-
*/
|
|
110
|
-
if (this.traps.has(event)) {
|
|
111
|
-
shouldEmitEvent = false;
|
|
112
|
-
await this.traps.get(event)(data);
|
|
113
|
-
}
|
|
114
|
-
else if (this.trapAllHandler) {
|
|
115
|
-
shouldEmitEvent = false;
|
|
116
|
-
await this.trapAllHandler(event, data);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (shouldEmitEvent) {
|
|
120
|
-
return await this.transport.emit(event, data);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
if (this.errorHandler) {
|
|
125
|
-
return this.errorHandler(event, error, data);
|
|
126
|
-
}
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Remove existing event listener
|
|
132
|
-
*/
|
|
133
|
-
off(event, handler) {
|
|
134
|
-
if (typeof handler === 'string') {
|
|
135
|
-
const offHandler = this.getResolver(handler).removeEventHandler(event, handler);
|
|
136
|
-
if (offHandler) {
|
|
137
|
-
this.transport.off(event, offHandler);
|
|
138
|
-
}
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
this.transport.off(event, handler);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Remove existing event listener for catch all handler
|
|
145
|
-
*/
|
|
146
|
-
offAny(handler) {
|
|
147
|
-
if (typeof handler === 'string') {
|
|
148
|
-
const offHandler = this.getResolver(handler).removeAnyHandler(handler);
|
|
149
|
-
if (offHandler) {
|
|
150
|
-
this.transport.offAny(offHandler);
|
|
151
|
-
}
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
this.transport.offAny(handler);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Remove existing event listener.
|
|
158
|
-
* @alias off
|
|
159
|
-
*/
|
|
160
|
-
clearListener(event, handler) {
|
|
161
|
-
this.off(event, handler);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Clear all listeners for a given event
|
|
165
|
-
*/
|
|
166
|
-
clearListeners(event) {
|
|
167
|
-
this.transport.clearListeners(event);
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Clear all listeners for all events
|
|
171
|
-
*/
|
|
172
|
-
clearAllListeners() {
|
|
173
|
-
this.transport.clearListeners();
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Returns count of listeners for a given event or all
|
|
177
|
-
* events.
|
|
178
|
-
*/
|
|
179
|
-
listenerCount(event) {
|
|
180
|
-
return this.transport.listenerCount(event ? event : undefined);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Returns a boolean telling if listeners count for a given
|
|
184
|
-
* event or all events is greater than 0 or not.
|
|
185
|
-
*/
|
|
186
|
-
hasListeners(event) {
|
|
187
|
-
return this.listenerCount(event) > 0;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Define custom namespace for event listeners. It is set to `App/Listeners`
|
|
191
|
-
* by default.
|
|
192
|
-
*/
|
|
193
|
-
namespace(namespace) {
|
|
194
|
-
if (this.iocResolver) {
|
|
195
|
-
this.iocResolver.namespace(namespace);
|
|
196
|
-
}
|
|
197
|
-
return this;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Trap event instead of emitting it
|
|
201
|
-
*/
|
|
202
|
-
trap(event, handler) {
|
|
203
|
-
process.emitWarning('DeprecationWarning', '"Event.trap" is deprecated. Instead use "Event.fake" method');
|
|
204
|
-
this.trappingEvents = true;
|
|
205
|
-
this.traps.set(event, handler);
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Trap all events instead of emitting them
|
|
210
|
-
*/
|
|
211
|
-
trapAll(handler) {
|
|
212
|
-
process.emitWarning('DeprecationWarning', '"Event.trapAll" is deprecated. Instead use "Event.fake" method');
|
|
213
|
-
this.trappingEvents = true;
|
|
214
|
-
this.trapAllHandler = handler;
|
|
215
|
-
return this;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Fake event emitter to collect events in-memory vs
|
|
219
|
-
* emitting them
|
|
220
|
-
*/
|
|
221
|
-
fake(events) {
|
|
222
|
-
this.fakeEmitter = this.fakeEmitter || new FakeEmitter_1.FakeEmitter();
|
|
223
|
-
/**
|
|
224
|
-
* If no events have been mentioned, then fake
|
|
225
|
-
* all the events
|
|
226
|
-
*/
|
|
227
|
-
if (!events) {
|
|
228
|
-
this.eventsToFake.add('*');
|
|
229
|
-
return this.fakeEmitter;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Only track event names when wildcard is not added
|
|
233
|
-
*/
|
|
234
|
-
if (!this.eventsToFake.has('*')) {
|
|
235
|
-
events.forEach((event) => this.eventsToFake.add(event));
|
|
236
|
-
}
|
|
237
|
-
return this.fakeEmitter;
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Restore trap and fake
|
|
241
|
-
*/
|
|
242
|
-
restore() {
|
|
243
|
-
this.trappingEvents = false;
|
|
244
|
-
this.trapAllHandler = undefined;
|
|
245
|
-
this.fakeEmitter = undefined;
|
|
246
|
-
this.traps.clear();
|
|
247
|
-
this.eventsToFake.clear();
|
|
248
|
-
return this;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
exports.Emitter = Emitter;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { FakeEmitterContract } from '@ioc:Adonis/Core/Event';
|
|
2
|
-
/**
|
|
3
|
-
* Fake emitter to be used for finding and asserting
|
|
4
|
-
* faked events
|
|
5
|
-
*/
|
|
6
|
-
export declare class FakeEmitter implements FakeEmitterContract {
|
|
7
|
-
events: {
|
|
8
|
-
name: string;
|
|
9
|
-
data: any;
|
|
10
|
-
}[];
|
|
11
|
-
/**
|
|
12
|
-
* Get all the emitted events
|
|
13
|
-
*/
|
|
14
|
-
all(): {
|
|
15
|
-
name: string;
|
|
16
|
-
data: any;
|
|
17
|
-
}[];
|
|
18
|
-
/**
|
|
19
|
-
* Returns the size of captured events
|
|
20
|
-
*/
|
|
21
|
-
size(): number;
|
|
22
|
-
/**
|
|
23
|
-
* Find if the event has emitted
|
|
24
|
-
*/
|
|
25
|
-
exists(eventOrCallback: string | ((event: {
|
|
26
|
-
name: string;
|
|
27
|
-
data: any;
|
|
28
|
-
}) => boolean)): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Get selected events
|
|
31
|
-
*/
|
|
32
|
-
filter(eventOrCallback: string | ((event: {
|
|
33
|
-
name: string;
|
|
34
|
-
data: any;
|
|
35
|
-
}) => boolean)): any[];
|
|
36
|
-
/**
|
|
37
|
-
* Find a specific event
|
|
38
|
-
*/
|
|
39
|
-
find(eventOrCallback: string | ((event: {
|
|
40
|
-
name: string;
|
|
41
|
-
data: any;
|
|
42
|
-
}) => boolean)): any;
|
|
43
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* @adonisjs/events
|
|
4
|
-
*
|
|
5
|
-
* (c) AdonisJS
|
|
6
|
-
*
|
|
7
|
-
* For the full copyright and license information, please view the LICENSE
|
|
8
|
-
* file that was distributed with this source code.
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.FakeEmitter = void 0;
|
|
12
|
-
/**
|
|
13
|
-
* Fake emitter to be used for finding and asserting
|
|
14
|
-
* faked events
|
|
15
|
-
*/
|
|
16
|
-
class FakeEmitter {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.events = [];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get all the emitted events
|
|
22
|
-
*/
|
|
23
|
-
all() {
|
|
24
|
-
return this.events;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the size of captured events
|
|
28
|
-
*/
|
|
29
|
-
size() {
|
|
30
|
-
return this.events.length;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Find if the event has emitted
|
|
34
|
-
*/
|
|
35
|
-
exists(eventOrCallback) {
|
|
36
|
-
return !!this.find(eventOrCallback);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Get selected events
|
|
40
|
-
*/
|
|
41
|
-
filter(eventOrCallback) {
|
|
42
|
-
if (typeof eventOrCallback === 'function') {
|
|
43
|
-
return this.events.filter(eventOrCallback);
|
|
44
|
-
}
|
|
45
|
-
return this.events.filter((event) => event.name === eventOrCallback);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Find a specific event
|
|
49
|
-
*/
|
|
50
|
-
find(eventOrCallback) {
|
|
51
|
-
if (typeof eventOrCallback === 'function') {
|
|
52
|
-
return this.events.find(eventOrCallback);
|
|
53
|
-
}
|
|
54
|
-
return this.events.find((event) => event.name === eventOrCallback);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.FakeEmitter = FakeEmitter;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/// <reference path="../../adonis-typings/events.d.ts" />
|
|
2
|
-
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
|
|
3
|
-
import { AnyHandler, EventHandler } from '@ioc:Adonis/Core/Event';
|
|
4
|
-
/**
|
|
5
|
-
* Resolves string based event listeners from the IoC container. Also this method wraps
|
|
6
|
-
* the IoC container bindings in a closure. That closure is later used to remove
|
|
7
|
-
* the event listeners properly.
|
|
8
|
-
*/
|
|
9
|
-
export declare class IocResolver {
|
|
10
|
-
/**
|
|
11
|
-
* A reference to the event handlers resolved from the IoC container and
|
|
12
|
-
* cached. It is a map of
|
|
13
|
-
*
|
|
14
|
-
* [event, [namespace, resolvedHandler]]
|
|
15
|
-
*/
|
|
16
|
-
private eventHandlers;
|
|
17
|
-
/**
|
|
18
|
-
* A reference to the catch all event handlers. It is a map of
|
|
19
|
-
*
|
|
20
|
-
* [namespace, resolvedHandler]
|
|
21
|
-
*/
|
|
22
|
-
private anyHandlers;
|
|
23
|
-
/**
|
|
24
|
-
* Reference to AdonisJS IoC container resolver. It looks for listeners inside the
|
|
25
|
-
* `App/Listeners` namespace or the namespace defined inside `eventListeners`
|
|
26
|
-
* property
|
|
27
|
-
*/
|
|
28
|
-
private containerResolver;
|
|
29
|
-
/**
|
|
30
|
-
* A custom base namespace defined directly on the event class.
|
|
31
|
-
*/
|
|
32
|
-
private listenersBaseNamespace?;
|
|
33
|
-
constructor(app: ApplicationContract);
|
|
34
|
-
/**
|
|
35
|
-
* Returns the listener by resolving the namespace from the IoC container
|
|
36
|
-
*/
|
|
37
|
-
private getReferenceListener;
|
|
38
|
-
/**
|
|
39
|
-
* Returns all handlers for a given event.
|
|
40
|
-
*/
|
|
41
|
-
private getHandlersFor;
|
|
42
|
-
/**
|
|
43
|
-
* Define custom namespace for Event listeners
|
|
44
|
-
*/
|
|
45
|
-
namespace(namespace: string): void;
|
|
46
|
-
/**
|
|
47
|
-
* Returns event handler callback for an IoC container string reference.
|
|
48
|
-
* Adding same handler for the same event is noop.
|
|
49
|
-
*/
|
|
50
|
-
getEventHandler(event: string, handler: string): EventHandler;
|
|
51
|
-
/**
|
|
52
|
-
* Removes the event handler from the tracked list and also returns
|
|
53
|
-
* it back.
|
|
54
|
-
*/
|
|
55
|
-
removeEventHandler(event: string, handler: string): EventHandler | null;
|
|
56
|
-
/**
|
|
57
|
-
* Returns Event handler for wildcard events. Adding the same
|
|
58
|
-
* handler for multiple times is a noop.
|
|
59
|
-
*/
|
|
60
|
-
getAnyHandler(handler: string): AnyHandler;
|
|
61
|
-
/**
|
|
62
|
-
* Removes and returns the handler for a string reference.
|
|
63
|
-
*/
|
|
64
|
-
removeAnyHandler(handler: string): AnyHandler | null;
|
|
65
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* @adonisjs/events
|
|
4
|
-
*
|
|
5
|
-
* (c) Harminder Virk <virk@adonisjs.com>
|
|
6
|
-
*
|
|
7
|
-
* For the full copyright and license information, please view the LICENSE
|
|
8
|
-
* file that was distributed with this source code.
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.IocResolver = void 0;
|
|
12
|
-
/**
|
|
13
|
-
* Resolves string based event listeners from the IoC container. Also this method wraps
|
|
14
|
-
* the IoC container bindings in a closure. That closure is later used to remove
|
|
15
|
-
* the event listeners properly.
|
|
16
|
-
*/
|
|
17
|
-
class IocResolver {
|
|
18
|
-
constructor(app) {
|
|
19
|
-
/**
|
|
20
|
-
* A reference to the event handlers resolved from the IoC container and
|
|
21
|
-
* cached. It is a map of
|
|
22
|
-
*
|
|
23
|
-
* [event, [namespace, resolvedHandler]]
|
|
24
|
-
*/
|
|
25
|
-
this.eventHandlers = new Map();
|
|
26
|
-
/**
|
|
27
|
-
* A reference to the catch all event handlers. It is a map of
|
|
28
|
-
*
|
|
29
|
-
* [namespace, resolvedHandler]
|
|
30
|
-
*/
|
|
31
|
-
this.anyHandlers = new Map();
|
|
32
|
-
this.containerResolver = app.container.getResolver(undefined, 'eventListeners', 'App/Listeners');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Returns the listener by resolving the namespace from the IoC container
|
|
36
|
-
*/
|
|
37
|
-
getReferenceListener(handler) {
|
|
38
|
-
return (...args) => {
|
|
39
|
-
return this.containerResolver.call(handler, this.listenersBaseNamespace, args);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Returns all handlers for a given event.
|
|
44
|
-
*/
|
|
45
|
-
getHandlersFor(event) {
|
|
46
|
-
if (!this.eventHandlers.has(event)) {
|
|
47
|
-
this.eventHandlers.set(event, new Map());
|
|
48
|
-
}
|
|
49
|
-
return this.eventHandlers.get(event);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Define custom namespace for Event listeners
|
|
53
|
-
*/
|
|
54
|
-
namespace(namespace) {
|
|
55
|
-
this.listenersBaseNamespace = namespace;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Returns event handler callback for an IoC container string reference.
|
|
59
|
-
* Adding same handler for the same event is noop.
|
|
60
|
-
*/
|
|
61
|
-
getEventHandler(event, handler) {
|
|
62
|
-
const handlers = this.getHandlersFor(event);
|
|
63
|
-
/**
|
|
64
|
-
* Return the existing handler when same handler for the
|
|
65
|
-
* same event already exists.
|
|
66
|
-
*
|
|
67
|
-
* Emittery will also re-use the same handler. So it is a noop
|
|
68
|
-
* everywhere.
|
|
69
|
-
*/
|
|
70
|
-
if (handlers.has(handler)) {
|
|
71
|
-
return handlers.get(handler);
|
|
72
|
-
}
|
|
73
|
-
const eventHandler = this.getReferenceListener(handler);
|
|
74
|
-
/**
|
|
75
|
-
* Store reference to the handler, so that we can clean it off
|
|
76
|
-
* later.
|
|
77
|
-
*/
|
|
78
|
-
handlers.set(handler, eventHandler);
|
|
79
|
-
return eventHandler;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Removes the event handler from the tracked list and also returns
|
|
83
|
-
* it back.
|
|
84
|
-
*/
|
|
85
|
-
removeEventHandler(event, handler) {
|
|
86
|
-
const handlers = this.getHandlersFor(event);
|
|
87
|
-
const eventHandler = handlers.get(handler);
|
|
88
|
-
if (eventHandler) {
|
|
89
|
-
handlers.delete(handler);
|
|
90
|
-
return eventHandler;
|
|
91
|
-
}
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Returns Event handler for wildcard events. Adding the same
|
|
96
|
-
* handler for multiple times is a noop.
|
|
97
|
-
*/
|
|
98
|
-
getAnyHandler(handler) {
|
|
99
|
-
if (this.anyHandlers.has(handler)) {
|
|
100
|
-
return this.anyHandlers.get(handler);
|
|
101
|
-
}
|
|
102
|
-
const eventHandler = this.getReferenceListener(handler);
|
|
103
|
-
this.anyHandlers.set(handler, eventHandler);
|
|
104
|
-
return eventHandler;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Removes and returns the handler for a string reference.
|
|
108
|
-
*/
|
|
109
|
-
removeAnyHandler(handler) {
|
|
110
|
-
const anyHandler = this.anyHandlers.get(handler);
|
|
111
|
-
if (anyHandler) {
|
|
112
|
-
this.anyHandlers.delete(handler);
|
|
113
|
-
return anyHandler;
|
|
114
|
-
}
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.IocResolver = IocResolver;
|
package/build/standalone.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Emitter } from './src/Emitter';
|