@adonisjs/events 8.2.0-0 → 8.4.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/build/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export { Emitter as default } from './src/emitter.js';
1
+ export { Emitter } from './src/emitter.js';
2
+ export { BaseEvent } from './src/base_event.js';
package/build/index.js CHANGED
@@ -1 +1,2 @@
1
- export { Emitter as default } from './src/emitter.js';
1
+ export { Emitter } from './src/emitter.js';
2
+ export { BaseEvent } from './src/base_event.js';
@@ -0,0 +1,7 @@
1
+ import { Emitter } from './emitter.js';
2
+ export declare class BaseEvent {
3
+ constructor(..._: any[]);
4
+ static emitter: Emitter<any>;
5
+ static useEmitter(emitter: Emitter<any>): void;
6
+ static dispatch<T extends typeof BaseEvent>(this: T, ...args: ConstructorParameters<T>): Promise<void>;
7
+ }
@@ -0,0 +1,10 @@
1
+ export class BaseEvent {
2
+ constructor(..._) { }
3
+ static emitter;
4
+ static useEmitter(emitter) {
5
+ this.emitter = emitter;
6
+ }
7
+ static dispatch(...args) {
8
+ return this.emitter.emit(this, new this(...args));
9
+ }
10
+ }
@@ -1,12 +1,13 @@
1
1
  import type { Application } from '@adonisjs/application';
2
2
  import { type UnsubscribeFunction } from 'emittery';
3
3
  import { EventsBuffer } from './events_buffer.js';
4
- import type { Listener, Constructor, ListenerMethod, AllowedEventTypes } from './types.js';
4
+ import type { Listener, LazyImport, Constructor, ListenerMethod, AllowedEventTypes, ListenerClassWithHandleMethod } from './types.js';
5
5
  export declare class Emitter<EventsList extends Record<string | symbol | number, any>> {
6
6
  #private;
7
7
  get eventsListeners(): Map<AllowedEventTypes, Map<Listener<any, Constructor<any>>, ListenerMethod<any>>>;
8
8
  constructor(app: Application<any, any>);
9
9
  onError(callback: (event: keyof EventsList | Constructor<any>, error: any, data: any) => void): this;
10
+ listen<Event extends Constructor<any>>(event: Event, listeners: (ListenerClassWithHandleMethod<InstanceType<Event>> | LazyImport<ListenerClassWithHandleMethod<InstanceType<Event>>>)[]): void;
10
11
  on<Event extends Constructor<any>, ListenerClass extends Constructor<any>>(event: Event, listener: Listener<InstanceType<Event>, ListenerClass>): UnsubscribeFunction;
11
12
  on<Name extends keyof EventsList, ListenerClass extends Constructor<any>>(event: Name, listener: Listener<EventsList[Name], ListenerClass>): UnsubscribeFunction;
12
13
  once<Event extends Constructor<any>, ListenerClass extends Constructor<any>>(event: Event, listener: Listener<InstanceType<Event>, ListenerClass>): void;
@@ -60,6 +60,9 @@ export class Emitter {
60
60
  this.#errorHandler = callback;
61
61
  return this;
62
62
  }
63
+ listen(event, listeners) {
64
+ listeners.forEach((listener) => this.on(event, [listener, 'handle']));
65
+ }
63
66
  on(event, listener) {
64
67
  if (debug.enabled) {
65
68
  debug('registering event listener, event: %O, listener: %O', event, listener);
@@ -15,4 +15,7 @@ export type ListenerFn<Data> = (data: Data) => any | Promise<any>;
15
15
  export type GetListenersMethods<Listener extends Constructor<any>, Data> = {
16
16
  [K in keyof InstanceType<Listener>]: InstanceType<Listener>[K] extends ListenerMethod<Data> ? K : never;
17
17
  }[keyof InstanceType<Listener>];
18
+ export type ListenerClassWithHandleMethod<Data> = Constructor<{
19
+ handle: ListenerMethod<Data>;
20
+ }>;
18
21
  export type Listener<Data, ListenerClass extends Constructor<any>> = ListenerFn<Data> | string | [LazyImport<ListenerClass> | ListenerClass, GetListenersMethods<ListenerClass, Data>?];
@@ -0,0 +1,11 @@
1
+ import { Application } from '@adonisjs/application';
2
+ import { Emitter } from '../src/emitter.js';
3
+ type FactoryParameters = {
4
+ app: Application<any, any>;
5
+ };
6
+ export declare class EmitterFactory {
7
+ #private;
8
+ merge(params: Partial<FactoryParameters>): this;
9
+ create(): Emitter<Record<string | number | symbol, any>>;
10
+ }
11
+ export {};
@@ -0,0 +1,15 @@
1
+ import { AppFactory } from '@adonisjs/application/test_factories/app';
2
+ import { Emitter } from '../src/emitter.js';
3
+ export class EmitterFactory {
4
+ #parameters = {};
5
+ #getApp() {
6
+ return this.#parameters.app || new AppFactory().create(new URL('./app/', import.meta.url));
7
+ }
8
+ merge(params) {
9
+ Object.assign(this.#parameters, params);
10
+ return this;
11
+ }
12
+ create() {
13
+ return new Emitter(this.#getApp());
14
+ }
15
+ }
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@adonisjs/events",
3
- "version": "8.2.0-0",
3
+ "version": "8.4.0-0",
4
4
  "description": "An implementation of the event emitter built on top of emittery",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
7
7
  "files": [
8
8
  "build/src",
9
+ "build/test_factories",
9
10
  "build/index.d.ts",
10
11
  "build/index.js"
11
12
  ],
@@ -14,6 +15,7 @@
14
15
  },
15
16
  "exports": {
16
17
  ".": "./build/index.js",
18
+ "./test_factories/*": "./build/test_factories/*.js",
17
19
  "./types": "./build/src/types.js"
18
20
  },
19
21
  "scripts": {
@@ -37,12 +39,12 @@
37
39
  "author": "virk,adonisjs",
38
40
  "license": "MIT",
39
41
  "devDependencies": {
40
- "@adonisjs/application": "^6.5.1-0",
42
+ "@adonisjs/application": "^6.6.0-0",
41
43
  "@adonisjs/config": "^4.1.3-0",
42
44
  "@adonisjs/env": "^4.1.2-0",
43
45
  "@adonisjs/fold": "^9.9.0-0",
44
- "@adonisjs/logger": "^5.1.1-0",
45
- "@commitlint/cli": "^17.4.0",
46
+ "@adonisjs/logger": "^5.2.0-0",
47
+ "@commitlint/cli": "^17.4.1",
46
48
  "@commitlint/config-conventional": "^17.4.0",
47
49
  "@japa/assert": "^1.3.6",
48
50
  "@japa/expect-type": "^1.0.2",
@@ -50,8 +52,8 @@
50
52
  "@japa/runner": "^2.2.2",
51
53
  "@japa/spec-reporter": "^1.3.2",
52
54
  "@poppinss/dev-utils": "^2.0.1",
53
- "@swc/core": "^1.3.24",
54
- "@types/fs-extra": "^9.0.13",
55
+ "@swc/core": "^1.3.26",
56
+ "@types/fs-extra": "^11.0.1",
55
57
  "@types/node": "^18.11.18",
56
58
  "c8": "^7.12.0",
57
59
  "cross-env": "^7.0.3",
@@ -64,7 +66,7 @@
64
66
  "github-label-sync": "^2.0.1",
65
67
  "husky": "^8.0.3",
66
68
  "np": "^7.6.3",
67
- "prettier": "^2.8.1",
69
+ "prettier": "^2.8.2",
68
70
  "ts-node": "^10.9.1",
69
71
  "typescript": "^4.9.4"
70
72
  },
@@ -72,7 +74,7 @@
72
74
  "emittery": "^1.0.1"
73
75
  },
74
76
  "peerDependencies": {
75
- "@adonisjs/application": "^6.5.1-0",
77
+ "@adonisjs/application": "^6.6.0-0",
76
78
  "@adonisjs/fold": "^9.9.0-0"
77
79
  },
78
80
  "repository": {