@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 CHANGED
@@ -1,41 +1,25 @@
1
- <div align="center">
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
- <div align="center">
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
- <br />
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
- <div align="center">
10
+ ## Official Documentation
11
+ The documentation is available on the [AdonisJS website](https://docs.adonisjs.com/guides/events)
15
12
 
16
- [![gh-workflow-image]][gh-workflow-url] [![npm-image]][npm-url] ![][typescript-image] [![license-image]][license-url] [![synk-image]][synk-url]
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
- </div>
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"
@@ -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": "7.2.0",
4
- "description": "Event emitter with asynchronous events",
5
- "main": "build/providers/EventProvider.js",
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/providers",
9
- "build/adonis-typings",
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": "node -r @adonisjs/require-ts/build/register bin/test.ts",
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
- "commit": "git-cz",
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 ./node_modules/@adonisjs/mrm-preset/gh-labels.json adonisjs/events"
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": "^5.1.5",
36
- "@adonisjs/mrm-preset": "^5.0.2",
37
- "@adonisjs/require-ts": "^2.0.7",
38
- "@japa/assert": "^1.2.3",
39
- "@japa/run-failed-tests": "^1.0.3",
40
- "@japa/runner": "^2.0.6",
41
- "@japa/spec-reporter": "^1.1.7",
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
- "@types/node": "^17.0.8",
44
- "commitizen": "^4.2.4",
45
- "cz-conventional-changelog": "^3.3.0",
46
- "del-cli": "^4.0.1",
47
- "eslint": "^8.7.0",
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": "^2.1.0",
50
- "eslint-plugin-prettier": "^4.0.0",
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": "^7.0.1",
53
- "mrm": "^4.0.0",
54
- "np": "^7.5.0",
55
- "prettier": "^2.3.2",
56
- "typescript": "^4.3.5"
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.10.0"
67
+ "emittery": "^1.0.1"
77
68
  },
78
69
  "peerDependencies": {
79
- "@adonisjs/application": "^5.0.0"
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,6 +0,0 @@
1
- declare module '@ioc:Adonis/Core/Application' {
2
- import { EmitterContract } from '@ioc:Adonis/Core/Event';
3
- interface ContainerBindings {
4
- 'Adonis/Core/Event': EmitterContract;
5
- }
6
- }
@@ -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,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(): this;
199
- }
200
- /**
201
- * An interface to define typed events
202
- */
203
- export interface EventsList {
204
- }
205
- const Event: EmitterContract;
206
- export default Event;
207
- }
@@ -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
- */