@adonisjs/events 8.4.8-0 → 8.4.9-1

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,4 +1,4 @@
1
- import { Emitter } from './emitter.js';
1
+ import type { Emitter } from './emitter.js';
2
2
  export declare class BaseEvent {
3
3
  constructor(..._: any[]);
4
4
  static emitter?: Emitter<any>;
@@ -7,7 +7,7 @@ export class BaseEvent {
7
7
  }
8
8
  static async dispatch(...args) {
9
9
  if (!this.emitter) {
10
- throw new RuntimeException(`Cannot dispatch "${this.name}" event. Make sure to pass emitter to the base event for dispatch method to work`);
10
+ throw new RuntimeException(`Cannot dispatch "${this.name}" event. Make sure to pass emitter to the "BaseEvent" class for dispatch method to work`);
11
11
  }
12
12
  return this.emitter.emit(this, new this(...args));
13
13
  }
@@ -7,5 +7,8 @@ export declare class EventsBuffer<EventsList extends Record<string | symbol | nu
7
7
  exists<Event extends keyof EventsList | Constructor<any>>(finder: Event | ((event: BufferedEventsList<EventsList>) => boolean)): boolean;
8
8
  filter(finder: keyof EventsList | Constructor<any> | ((event: BufferedEventsList<EventsList>) => boolean)): BufferedEventsList<EventsList>[];
9
9
  find<Event extends keyof EventsList | Constructor<any>>(finder: Event | ((event: BufferedEventsList<EventsList>) => boolean)): (Event extends keyof EventsList ? BufferedEvent<Event, EventsList[Event]> : Event extends Constructor<infer A> ? BufferedEvent<Event, A> : BufferedEventsList<EventsList>) | null;
10
+ assertEmitted<Event extends keyof EventsList | Constructor<any>>(finder: Event | ((event: BufferedEventsList<EventsList>) => boolean)): void;
11
+ assertNotEmitted<Event extends keyof EventsList | Constructor<any>>(finder: Event | ((event: BufferedEventsList<EventsList>) => boolean)): void;
12
+ assertNoneEmitted(): void;
10
13
  flush(): void;
11
14
  }
@@ -1,4 +1,5 @@
1
1
  import is from '@sindresorhus/is';
2
+ import { AssertionError } from 'node:assert';
2
3
  export class EventsBuffer {
3
4
  #events = [];
4
5
  add(event, data) {
@@ -25,6 +26,56 @@ export class EventsBuffer {
25
26
  }
26
27
  return (this.#events.find((event) => event.event === finder) || null);
27
28
  }
29
+ assertEmitted(finder) {
30
+ const hasEvent = this.exists(finder);
31
+ if (!hasEvent) {
32
+ const isClass = is.class_(finder);
33
+ const message = typeof finder === 'function' && !isClass
34
+ ? `Expected callback to find an emitted event`
35
+ : isClass
36
+ ? `Expected "${finder.name}" event to be emitted`
37
+ : `Expected "${String(finder)}" event to be emitted`;
38
+ throw new AssertionError({
39
+ message: message,
40
+ expected: true,
41
+ actual: false,
42
+ operator: 'strictEqual',
43
+ stackStartFn: this.assertEmitted,
44
+ });
45
+ }
46
+ }
47
+ assertNotEmitted(finder) {
48
+ const hasEvent = this.exists(finder);
49
+ if (hasEvent) {
50
+ const isClass = is.class_(finder);
51
+ const message = typeof finder === 'function' && !isClass
52
+ ? `Expected callback to not find any event`
53
+ : isClass
54
+ ? `Expected "${finder.name}" event to be not emitted`
55
+ : `Expected "${String(finder)}" event to be not emitted`;
56
+ throw new AssertionError({
57
+ message: message,
58
+ expected: false,
59
+ actual: true,
60
+ operator: 'strictEqual',
61
+ stackStartFn: this.assertNotEmitted,
62
+ });
63
+ }
64
+ }
65
+ assertNoneEmitted() {
66
+ const eventsSize = this.size();
67
+ if (eventsSize > 0) {
68
+ throw new AssertionError(Object.assign({
69
+ message: `Expected zero events to be emitted. Instead received "${eventsSize}" event(s)`,
70
+ expected: 0,
71
+ actual: eventsSize,
72
+ operator: 'strictEqual',
73
+ stackStartFn: this.assertNoneEmitted,
74
+ }, {
75
+ showDiff: true,
76
+ }));
77
+ }
78
+ }
28
79
  flush() {
29
80
  this.#events = [];
30
81
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonisjs/events",
3
- "version": "8.4.8-0",
3
+ "version": "8.4.9-1",
4
4
  "description": "An implementation of the event emitter built on top of emittery",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
@@ -39,11 +39,9 @@
39
39
  "author": "virk,adonisjs",
40
40
  "license": "MIT",
41
41
  "devDependencies": {
42
- "@adonisjs/application": "^7.1.1-0",
43
- "@adonisjs/config": "^4.2.0-0",
44
- "@adonisjs/env": "^4.2.0-0",
45
- "@adonisjs/fold": "^9.9.2-0",
46
- "@adonisjs/logger": "^5.4.2-0",
42
+ "@adonisjs/application": "^7.1.2-1",
43
+ "@adonisjs/config": "^4.2.1-0",
44
+ "@adonisjs/fold": "^9.9.3-2",
47
45
  "@commitlint/cli": "^17.4.4",
48
46
  "@commitlint/config-conventional": "^17.4.4",
49
47
  "@japa/assert": "^1.4.1",
@@ -52,17 +50,16 @@
52
50
  "@japa/run-failed-tests": "^1.1.1",
53
51
  "@japa/runner": "^2.5.1",
54
52
  "@japa/spec-reporter": "^1.3.3",
55
- "@poppinss/dev-utils": "^2.0.1",
56
- "@swc/core": "^1.3.37",
57
- "@types/node": "^18.14.4",
53
+ "@swc/core": "^1.3.39",
54
+ "@types/node": "^18.15.0",
58
55
  "c8": "^7.13.0",
59
56
  "cross-env": "^7.0.3",
60
57
  "del-cli": "^5.0.0",
61
- "eslint": "^8.35.0",
62
- "eslint-config-prettier": "^8.6.0",
58
+ "eslint": "^8.36.0",
59
+ "eslint-config-prettier": "^8.7.0",
63
60
  "eslint-plugin-adonis": "^3.0.3",
64
61
  "eslint-plugin-prettier": "^4.2.1",
65
- "github-label-sync": "^2.0.1",
62
+ "github-label-sync": "^2.3.1",
66
63
  "husky": "^8.0.3",
67
64
  "np": "^7.6.3",
68
65
  "prettier": "^2.8.4",
@@ -70,12 +67,13 @@
70
67
  "typescript": "^4.9.5"
71
68
  },
72
69
  "dependencies": {
70
+ "@poppinss/utils": "^6.5.0-1",
73
71
  "@sindresorhus/is": "^5.3.0",
74
72
  "emittery": "^1.0.1"
75
73
  },
76
74
  "peerDependencies": {
77
- "@adonisjs/application": "^7.1.1-0",
78
- "@adonisjs/fold": "^9.9.2-0"
75
+ "@adonisjs/application": "^7.1.2-1",
76
+ "@adonisjs/fold": "^9.9.3-2"
79
77
  },
80
78
  "repository": {
81
79
  "type": "git",