@adonisjs/events 7.2.1 → 8.1.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.
@@ -1,8 +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
- */
@@ -1,2 +0,0 @@
1
- /// <reference path="container.d.ts" />
2
- /// <reference path="events.d.ts" />
@@ -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 fakes
106
- */
107
- restore(): void;
108
- }
@@ -1,250 +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
- this.fakeEmitter = new FakeEmitter_1.FakeEmitter();
37
- if (app) {
38
- this.iocResolver = new IocResolver_1.IocResolver(app);
39
- }
40
- }
41
- /**
42
- * Returns reference to the IoC resolver. Do not call this method until
43
- * handler is not a string
44
- */
45
- getResolver(handler) {
46
- if (!this.iocResolver) {
47
- throw new Error(`Cannot resolve string based event handler "${handler}". IoC container is not provided to the event emitter`);
48
- }
49
- return this.iocResolver;
50
- }
51
- /**
52
- * Define a custom error handler
53
- */
54
- onError(handler) {
55
- this.errorHandler = handler;
56
- return this;
57
- }
58
- /**
59
- * Define event handler for a given event
60
- */
61
- on(event, handler) {
62
- if (typeof handler === 'string') {
63
- handler = this.getResolver(handler).getEventHandler(event, handler);
64
- }
65
- this.transport.on(event, handler);
66
- return this;
67
- }
68
- /**
69
- * Define event handler for a given event and to be called
70
- * only once.
71
- */
72
- once(event, handler) {
73
- this.transport.once(event).then((data) => {
74
- if (typeof handler === 'string') {
75
- this.getResolver(handler).getEventHandler(event, handler)(data);
76
- this.getResolver(handler).removeEventHandler(event, handler);
77
- }
78
- else {
79
- handler(data);
80
- }
81
- });
82
- return this;
83
- }
84
- /**
85
- * Define catch all event handler to listen for all events.
86
- */
87
- onAny(handler) {
88
- if (typeof handler === 'string') {
89
- handler = this.getResolver(handler).getAnyHandler(handler);
90
- }
91
- this.transport.onAny(handler);
92
- return this;
93
- }
94
- /**
95
- * Emit event
96
- */
97
- async emit(event, data) {
98
- try {
99
- let shouldEmitEvent = true;
100
- /**
101
- * Register event with the fake emitter
102
- */
103
- if (this.eventsToFake.has('*') || this.eventsToFake.has(event)) {
104
- shouldEmitEvent = false;
105
- this.fakeEmitter.events.push({ name: event, data });
106
- }
107
- if (this.trappingEvents) {
108
- /**
109
- * Give preference to the handler for a specific event
110
- */
111
- if (this.traps.has(event)) {
112
- shouldEmitEvent = false;
113
- await this.traps.get(event)(data);
114
- }
115
- else if (this.trapAllHandler) {
116
- shouldEmitEvent = false;
117
- await this.trapAllHandler(event, data);
118
- }
119
- }
120
- if (shouldEmitEvent) {
121
- return await this.transport.emit(event, data);
122
- }
123
- }
124
- catch (error) {
125
- if (this.errorHandler) {
126
- return this.errorHandler(event, error, data);
127
- }
128
- throw error;
129
- }
130
- }
131
- /**
132
- * Remove existing event listener
133
- */
134
- off(event, handler) {
135
- if (typeof handler === 'string') {
136
- const offHandler = this.getResolver(handler).removeEventHandler(event, handler);
137
- if (offHandler) {
138
- this.transport.off(event, offHandler);
139
- }
140
- return;
141
- }
142
- this.transport.off(event, handler);
143
- }
144
- /**
145
- * Remove existing event listener for catch all handler
146
- */
147
- offAny(handler) {
148
- if (typeof handler === 'string') {
149
- const offHandler = this.getResolver(handler).removeAnyHandler(handler);
150
- if (offHandler) {
151
- this.transport.offAny(offHandler);
152
- }
153
- return;
154
- }
155
- this.transport.offAny(handler);
156
- }
157
- /**
158
- * Remove existing event listener.
159
- * @alias off
160
- */
161
- clearListener(event, handler) {
162
- this.off(event, handler);
163
- }
164
- /**
165
- * Clear all listeners for a given event
166
- */
167
- clearListeners(event) {
168
- this.transport.clearListeners(event);
169
- }
170
- /**
171
- * Clear all listeners for all events
172
- */
173
- clearAllListeners() {
174
- this.transport.clearListeners();
175
- }
176
- /**
177
- * Returns count of listeners for a given event or all
178
- * events.
179
- */
180
- listenerCount(event) {
181
- return this.transport.listenerCount(event ? event : undefined);
182
- }
183
- /**
184
- * Returns a boolean telling if listeners count for a given
185
- * event or all events is greater than 0 or not.
186
- */
187
- hasListeners(event) {
188
- return this.listenerCount(event) > 0;
189
- }
190
- /**
191
- * Define custom namespace for event listeners. It is set to `App/Listeners`
192
- * by default.
193
- */
194
- namespace(namespace) {
195
- if (this.iocResolver) {
196
- this.iocResolver.namespace(namespace);
197
- }
198
- return this;
199
- }
200
- /**
201
- * Trap event instead of emitting it
202
- */
203
- trap(event, handler) {
204
- process.emitWarning('DeprecationWarning', '"Event.trap" is deprecated. Instead use "Event.fake" method');
205
- this.trappingEvents = true;
206
- this.traps.set(event, handler);
207
- return this;
208
- }
209
- /**
210
- * Trap all events instead of emitting them
211
- */
212
- trapAll(handler) {
213
- process.emitWarning('DeprecationWarning', '"Event.trapAll" is deprecated. Instead use "Event.fake" method');
214
- this.trappingEvents = true;
215
- this.trapAllHandler = handler;
216
- return this;
217
- }
218
- /**
219
- * Fake event emitter to collect events in-memory vs
220
- * emitting them
221
- */
222
- fake(events) {
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 fakes
241
- */
242
- restore() {
243
- this.trappingEvents = false;
244
- this.trapAllHandler = undefined;
245
- this.traps.clear();
246
- this.eventsToFake.clear();
247
- this.fakeEmitter.restore();
248
- }
249
- }
250
- exports.Emitter = Emitter;
@@ -1,44 +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
- restore(): void;
44
- }
@@ -1,60 +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
- restore() {
57
- this.events = [];
58
- }
59
- }
60
- 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
- }