event-emission 0.2.0 → 0.3.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.
Files changed (43) hide show
  1. package/README.md +158 -25
  2. package/dist/event-emission.d.ts +63 -14
  3. package/dist/event-emission.d.ts.map +1 -1
  4. package/dist/factory.d.ts +1 -1
  5. package/dist/factory.d.ts.map +1 -1
  6. package/dist/index.cjs +614 -291
  7. package/dist/index.cjs.map +8 -9
  8. package/dist/index.d.ts +1 -7
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +589 -284
  11. package/dist/index.js.map +8 -9
  12. package/dist/interoperability.cjs +1719 -0
  13. package/dist/interoperability.cjs.map +15 -0
  14. package/dist/{interop.d.ts → interoperability.d.ts} +2 -1
  15. package/dist/interoperability.d.ts.map +1 -0
  16. package/dist/interoperability.js +1669 -0
  17. package/dist/interoperability.js.map +15 -0
  18. package/dist/observable.cjs +286 -0
  19. package/dist/observable.cjs.map +11 -0
  20. package/dist/observable.js +253 -0
  21. package/dist/observable.js.map +11 -0
  22. package/dist/observe.cjs +344 -0
  23. package/dist/observe.cjs.map +10 -0
  24. package/dist/observe.d.ts +6 -1
  25. package/dist/observe.d.ts.map +1 -1
  26. package/dist/observe.js +313 -0
  27. package/dist/observe.js.map +10 -0
  28. package/dist/symbols.d.ts +1 -1
  29. package/dist/types.cjs +35 -0
  30. package/dist/types.cjs.map +9 -0
  31. package/dist/types.d.ts +73 -25
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/types.js +3 -0
  34. package/dist/types.js.map +9 -0
  35. package/package.json +25 -1
  36. package/src/event-emission.ts +140 -21
  37. package/src/factory.ts +686 -230
  38. package/src/index.ts +4 -33
  39. package/src/{interop.ts → interoperability.ts} +34 -6
  40. package/src/observe.ts +54 -17
  41. package/src/symbols.ts +1 -1
  42. package/src/types.ts +115 -33
  43. package/dist/interop.d.ts.map +0 -1
package/dist/types.d.ts CHANGED
@@ -5,15 +5,17 @@ declare global {
5
5
  * Event structure passed to listeners.
6
6
  * Matches the shape of a DOM CustomEvent to ensure compatibility.
7
7
  */
8
- export interface EmissionEvent<Detail> {
8
+ export interface EmissionEvent<Detail, Type extends string = string> {
9
9
  /** The event type identifier. */
10
- readonly type: string;
10
+ readonly type: Type;
11
11
  /** The event payload data. */
12
12
  readonly detail: Detail;
13
13
  /** DOM Event compatibility: true if the event bubbles. */
14
14
  readonly bubbles: boolean;
15
15
  /** DOM Event compatibility: true if the event can be cancelled. */
16
16
  readonly cancelable: boolean;
17
+ /** DOM Event compatibility: legacy alias for stopPropagation(). */
18
+ cancelBubble: boolean;
17
19
  /** DOM Event compatibility: true if the event can cross Shadow DOM boundaries. */
18
20
  readonly composed: boolean;
19
21
  /** DOM Event compatibility: the object currently processing the event. */
@@ -24,12 +26,18 @@ export interface EmissionEvent<Detail> {
24
26
  readonly eventPhase: number;
25
27
  /** DOM Event compatibility: true if the event was dispatched by the user agent. */
26
28
  readonly isTrusted: boolean;
29
+ /** DOM Event compatibility: legacy alias for defaultPrevented. */
30
+ returnValue: boolean;
31
+ /** DOM Event compatibility: legacy alias for target. */
32
+ readonly srcElement: unknown;
27
33
  /** DOM Event compatibility: the object that originally dispatched the event. */
28
34
  readonly target: unknown;
29
35
  /** DOM Event compatibility: the time at which the event was created. */
30
36
  readonly timeStamp: number;
31
37
  /** DOM Event compatibility: returns the path of nodes the event will travel through. */
32
38
  composedPath(): unknown[];
39
+ /** DOM Event compatibility: legacy initializer. */
40
+ initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
33
41
  /** DOM Event compatibility: cancels the event if it is cancelable. */
34
42
  preventDefault(): void;
35
43
  /** DOM Event compatibility: prevents other listeners from being called. */
@@ -44,10 +52,9 @@ export interface EmissionEvent<Detail> {
44
52
  /**
45
53
  * Event passed to wildcard listeners, includes the original event type.
46
54
  */
47
- export interface WildcardEvent<E extends Record<string, unknown>> extends EmissionEvent<E[keyof E]> {
55
+ export interface WildcardEvent<E extends Record<string, unknown>> extends EmissionEvent<E[keyof E], '*' | `${string}:*`> {
48
56
  readonly type: '*' | `${string}:*`;
49
57
  readonly originalType: keyof E & string;
50
- readonly detail: E[keyof E];
51
58
  }
52
59
  /**
53
60
  * Minimal AbortSignal lookalike so consumers do not need DOM libs.
@@ -61,10 +68,34 @@ export interface MinimalAbortSignal {
61
68
  /**
62
69
  * Options for addEventListener.
63
70
  */
64
- export type AddEventListenerOptionsLike = {
71
+ export interface EventListenerOptionsLike {
72
+ capture?: boolean;
73
+ }
74
+ /**
75
+ * Options for addEventListener.
76
+ */
77
+ export type AddEventListenerOptionsLike = EventListenerOptionsLike & {
65
78
  once?: boolean;
79
+ passive?: boolean;
66
80
  signal?: MinimalAbortSignal;
67
81
  };
82
+ /**
83
+ * EventListener-like callback (function or object with handleEvent).
84
+ */
85
+ export type EventListenerObject<T> = {
86
+ handleEvent: (event: T) => void | Promise<void>;
87
+ };
88
+ export type EventListenerLike<T> = ((event: T) => void | Promise<void>) | EventListenerObject<T>;
89
+ /**
90
+ * Minimal event input accepted by dispatchEvent.
91
+ */
92
+ export type DispatchEventInput<Detail, Type extends string = string> = {
93
+ type: Type;
94
+ detail: Detail;
95
+ bubbles?: boolean;
96
+ cancelable?: boolean;
97
+ composed?: boolean;
98
+ };
68
99
  /**
69
100
  * TC39 Observable observer interface.
70
101
  */
@@ -104,20 +135,24 @@ export interface AsyncIteratorOptions {
104
135
  */
105
136
  export type EventsIteratorOptions = AsyncIteratorOptions;
106
137
  /**
107
- * Options for interop helpers.
138
+ * Options for interoperability helpers.
108
139
  */
109
140
  export interface InteropOptions {
110
141
  signal?: MinimalAbortSignal;
111
142
  }
112
143
  /**
113
- * Minimal DOM Event interface for interop.
144
+ * Minimal DOM Event interface for interoperability.
114
145
  */
115
146
  export interface DOMEventLike {
116
147
  type: string;
117
148
  detail?: unknown;
149
+ bubbles?: boolean;
150
+ cancelable?: boolean;
151
+ composed?: boolean;
152
+ defaultPrevented?: boolean;
118
153
  }
119
154
  /**
120
- * Minimal DOM EventTarget interface for interop.
155
+ * Minimal DOM EventTarget interface for interoperability.
121
156
  */
122
157
  export interface DOMEventTargetLike {
123
158
  addEventListener(type: string, listener: (event: DOMEventLike) => void): void;
@@ -128,9 +163,14 @@ export interface DOMEventTargetLike {
128
163
  * Internal listener record type.
129
164
  */
130
165
  export type Listener<E> = {
131
- fn: (event: EmissionEvent<E>) => void | Promise<void>;
132
- once?: boolean;
133
- signal?: MinimalAbortSignal;
166
+ type: string;
167
+ original: EventListenerLike<EmissionEvent<E>>;
168
+ callback: (event: EmissionEvent<E>) => void | Promise<void>;
169
+ capture: boolean;
170
+ passive: boolean;
171
+ once: boolean;
172
+ signal?: MinimalAbortSignal | null;
173
+ removed: boolean;
134
174
  abortHandler?: () => void;
135
175
  };
136
176
  /**
@@ -149,37 +189,45 @@ export type WildcardListener<E extends Record<string, unknown>> = {
149
189
  export interface OnOptions extends AddEventListenerOptionsLike {
150
190
  /** Listen for an "error" event and send it to the observer's error method. */
151
191
  receiveError?: boolean;
152
- /** Member indicates that the callback will not cancel the event. */
153
- passive?: boolean;
154
192
  /** Handler function called before the event is dispatched to observers. */
155
193
  handler?: (event: EmissionEvent<unknown>) => void;
156
- /** Member indicates that the Observable will complete after one event. */
157
- once?: boolean;
158
194
  }
159
195
  /**
160
196
  * Type-safe event target interface compatible with DOM EventTarget
161
197
  * and TC39 Observable patterns.
162
198
  */
163
199
  export interface EventTargetLike<E extends Record<string, any>> {
164
- addEventListener: <K extends keyof E & string>(type: K, listener: (event: EmissionEvent<E[K]>) => void | Promise<void>, options?: AddEventListenerOptionsLike) => () => void;
165
- removeEventListener: <K extends keyof E & string>(type: K, listener: (event: EmissionEvent<E[K]>) => void | Promise<void>) => void;
166
- dispatchEvent: <K extends keyof E & string>(event: EmissionEvent<E[K]>) => boolean;
200
+ addEventListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>> | null, options?: AddEventListenerOptionsLike | boolean) => () => void;
201
+ removeEventListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>> | null, options?: EventListenerOptionsLike | boolean) => void;
202
+ dispatchEvent: <K extends keyof E & string>(event: DispatchEventInput<E[K], K> | DOMEventLike) => boolean;
167
203
  clear: () => void;
168
- on: <K extends keyof E & string>(type: K, options?: OnOptions | boolean) => ObservableLike<EmissionEvent<E[K]>>;
169
- once: <K extends keyof E & string>(type: K, listener: (event: EmissionEvent<E[K]>) => void | Promise<void>, options?: Omit<AddEventListenerOptionsLike, 'once'>) => () => void;
204
+ on: {
205
+ <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>): () => void;
206
+ <K extends keyof E & string>(type: K, options?: OnOptions | boolean): ObservableLike<EmissionEvent<E[K], K>>;
207
+ };
208
+ once: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>> | null, options?: Omit<AddEventListenerOptionsLike, 'once'> | boolean) => () => void;
170
209
  removeAllListeners: <K extends keyof E & string>(type?: K) => void;
210
+ emit: <K extends keyof E & string>(type: K, detail: E[K]) => boolean;
211
+ off: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>) => void;
212
+ addListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>) => () => void;
213
+ removeListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>) => void;
214
+ prependListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>) => () => void;
215
+ prependOnceListener: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>>) => () => void;
216
+ listeners: <K extends keyof E & string>(type: K) => Array<EventListenerLike<EmissionEvent<E[K], K>>>;
217
+ rawListeners: <K extends keyof E & string>(type: K) => Array<EventListenerLike<EmissionEvent<E[K], K>>>;
218
+ listenerCount: <K extends keyof E & string>(type: K) => number;
219
+ eventNames: () => Array<string>;
171
220
  /**
172
221
  * Pipe events from this emitter to another target.
173
- * Note: Only forwards events for types that have listeners when pipe() is called.
174
- * Events for types registered after piping won't be forwarded automatically.
222
+ * Forwards all events. If mapFn returns null, the event is skipped.
175
223
  */
176
- pipe: <T extends Record<string, any>>(target: EventTargetLike<T>, mapFn?: <K extends keyof E & string>(event: EmissionEvent<E[K]>) => EmissionEvent<T[keyof T & string]> | null) => () => void;
224
+ pipe: <T extends Record<string, any>>(target: EventTargetLike<T>, mapFn?: <K extends keyof E & string>(event: EmissionEvent<E[K], K>) => DispatchEventInput<T[keyof T & string], keyof T & string> | null) => () => void;
177
225
  complete: () => void;
178
226
  readonly completed: boolean;
179
227
  addWildcardListener: (pattern: '*' | `${string}:*`, listener: (event: WildcardEvent<E>) => void | Promise<void>, options?: AddEventListenerOptionsLike) => () => void;
180
228
  removeWildcardListener: (pattern: '*' | `${string}:*`, listener: (event: WildcardEvent<E>) => void | Promise<void>) => void;
181
- subscribe: <K extends keyof E & string>(type: K, observerOrNext?: Observer<EmissionEvent<E[K]>> | ((value: EmissionEvent<E[K]>) => void), error?: (err: unknown) => void, complete?: () => void) => Subscription;
229
+ subscribe: <K extends keyof E & string>(type: K, observerOrNext?: Observer<EmissionEvent<E[K], K>> | ((value: EmissionEvent<E[K], K>) => void), error?: (err: unknown) => void, complete?: () => void) => Subscription;
182
230
  toObservable: () => ObservableLike<EmissionEvent<E[keyof E]>>;
183
- events: <K extends keyof E & string>(type: K, options?: AsyncIteratorOptions) => AsyncIterableIterator<EmissionEvent<E[K]>>;
231
+ events: <K extends keyof E & string>(type: K, options?: AsyncIteratorOptions) => AsyncIterableIterator<EmissionEvent<E[K], K>>;
184
232
  }
185
233
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,CAAC,MAAM,CAAC;IACb,SAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM;IACjE,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,mEAAmE;IACnE,YAAY,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,wFAAwF;IACxF,YAAY,IAAI,OAAO,EAAE,CAAC;IAC1B,mDAAmD;IACnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACvE,sEAAsE;IACtE,cAAc,IAAI,IAAI,CAAC;IACvB,2EAA2E;IAC3E,wBAAwB,IAAI,IAAI,CAAC;IACjC,0EAA0E;IAC1E,eAAe,IAAI,IAAI,CAAC;IAGxB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,aAAa,CACrF,CAAC,CAAC,MAAM,CAAC,CAAC,EACV,GAAG,GAAG,GAAG,MAAM,IAAI,CACpB;IACC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,GAAG;IACnE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC3B,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACpC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE3B;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI;IACrE,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,SAAS,CACP,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,EACnD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,EAC9B,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,YAAY,CAAC;CAEjB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9E,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAChE,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,2BAA2B;IAC5D,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACnD;AAED;;;GAGG;AAEH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC5D,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC3C,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAC1D,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,KAC5C,MAAM,IAAI,CAAC;IAChB,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC9C,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAC1D,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,KACzC,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACxC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,KAC9C,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;IAGlB,EAAE,EAAE;QACF,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACzB,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAClD,MAAM,IAAI,CAAC;QACd,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACzB,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAC5B,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC3C,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC/B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAC1D,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,GAAG,OAAO,KAC1D,MAAM,IAAI,CAAC;IAChB,kBAAkB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAGnE,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACrE,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC9B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAChD,IAAI,CAAC;IACV,WAAW,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACtC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAChD,MAAM,IAAI,CAAC;IAChB,cAAc,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACzC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAChD,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC1C,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAChD,MAAM,IAAI,CAAC;IAChB,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC9C,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAChD,MAAM,IAAI,CAAC;IAChB,SAAS,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACpC,IAAI,EAAE,CAAC,KACJ,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACvC,IAAI,EAAE,CAAC,KACJ,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/D,UAAU,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC;;;OAGG;IAEH,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAC1B,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,KAClE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAG5B,mBAAmB,EAAE,CACnB,OAAO,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC3D,OAAO,CAAC,EAAE,2BAA2B,KAClC,MAAM,IAAI,CAAC;IAChB,sBAAsB,EAAE,CACtB,OAAO,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KACxD,IAAI,CAAC;IAGV,SAAS,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACpC,IAAI,EAAE,CAAC,EACP,cAAc,CAAC,EACX,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAChC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAC7C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,EAC9B,QAAQ,CAAC,EAAE,MAAM,IAAI,KAClB,YAAY,CAAC;IAClB,YAAY,EAAE,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAG9D,MAAM,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACjC,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,oBAAoB,KAC3B,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACpD"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // @bun
2
+
3
+ //# debugId=9FA4E9E949149CE864756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "9FA4E9E949149CE864756E2164756E21",
8
+ "names": []
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "event-emission",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Lightweight typed event emitter with DOM EventTarget and TC39 Observable compatibility",
5
5
  "keywords": [
6
6
  "event",
@@ -30,6 +30,30 @@
30
30
  "import": "./dist/index.js",
31
31
  "require": "./dist/index.cjs",
32
32
  "default": "./dist/index.js"
33
+ },
34
+ "./observe": {
35
+ "types": "./dist/observe.d.ts",
36
+ "import": "./dist/observe.js",
37
+ "require": "./dist/observe.cjs",
38
+ "default": "./dist/observe.js"
39
+ },
40
+ "./observable": {
41
+ "types": "./dist/observable.d.ts",
42
+ "import": "./dist/observable.js",
43
+ "require": "./dist/observable.cjs",
44
+ "default": "./dist/observable.js"
45
+ },
46
+ "./interoperability": {
47
+ "types": "./dist/interoperability.d.ts",
48
+ "import": "./dist/interoperability.js",
49
+ "require": "./dist/interoperability.cjs",
50
+ "default": "./dist/interoperability.js"
51
+ },
52
+ "./types": {
53
+ "types": "./dist/types.d.ts",
54
+ "import": "./dist/types.js",
55
+ "require": "./dist/types.cjs",
56
+ "default": "./dist/types.js"
33
57
  }
34
58
  },
35
59
  "main": "./dist/index.js",
@@ -2,7 +2,11 @@ import { createEventTarget } from './factory';
2
2
  import { SymbolObservable } from './symbols';
3
3
  import type {
4
4
  AddEventListenerOptionsLike,
5
+ DispatchEventInput,
6
+ DOMEventLike,
5
7
  EmissionEvent,
8
+ EventListenerLike,
9
+ EventListenerOptionsLike,
6
10
  EventsIteratorOptions,
7
11
  EventTargetLike,
8
12
  ObservableLike,
@@ -19,7 +23,7 @@ import type {
19
23
  * Extend this class to create custom event emitters with typed events.
20
24
  * The class provides:
21
25
  * - DOM EventTarget compatible API (addEventListener, removeEventListener, dispatchEvent)
22
- * - TC39 Observable interop (subscribe, Symbol.observable)
26
+ * - TC39 Observable interoperability (subscribe, Symbol.observable)
23
27
  * - Async iteration support (events() method)
24
28
  * - Wildcard listeners for namespaced events
25
29
  * - Lifecycle management (complete(), completed)
@@ -51,7 +55,7 @@ import type {
51
55
  * });
52
56
  * ```
53
57
  *
54
- * @example TC39 Observable interop
58
+ * @example TC39 Observable interoperability
55
59
  * ```typescript
56
60
  * const service = new UserService();
57
61
  *
@@ -94,8 +98,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
94
98
  */
95
99
  addEventListener<K extends keyof E & string>(
96
100
  type: K,
97
- listener: (event: EmissionEvent<E[K]>) => void | Promise<void>,
98
- options?: AddEventListenerOptionsLike,
101
+ listener: EventListenerLike<EmissionEvent<E[K], K>> | null,
102
+ options?: AddEventListenerOptionsLike | boolean,
99
103
  ): () => void {
100
104
  return this.#target.addEventListener(type, listener, options);
101
105
  }
@@ -105,16 +109,19 @@ export abstract class EventEmission<E extends Record<string, any>> {
105
109
  */
106
110
  removeEventListener<K extends keyof E & string>(
107
111
  type: K,
108
- listener: (event: EmissionEvent<E[K]>) => void | Promise<void>,
112
+ listener: EventListenerLike<EmissionEvent<E[K], K>> | null,
113
+ options?: EventListenerOptionsLike | boolean,
109
114
  ): void {
110
- this.#target.removeEventListener(type, listener);
115
+ this.#target.removeEventListener(type, listener, options);
111
116
  }
112
117
 
113
118
  /**
114
119
  * Dispatches an event to all registered listeners.
115
120
  * Returns false if the emitter has been completed, true otherwise.
116
121
  */
117
- dispatchEvent<K extends keyof E & string>(event: EmissionEvent<E[K]>): boolean {
122
+ dispatchEvent<K extends keyof E & string>(
123
+ event: DispatchEventInput<E[K], K> | DOMEventLike,
124
+ ): boolean {
118
125
  return this.#target.dispatchEvent(event);
119
126
  }
120
127
 
@@ -122,14 +129,29 @@ export abstract class EventEmission<E extends Record<string, any>> {
122
129
  // Convenience Methods
123
130
  // ==========================================================================
124
131
 
132
+ /**
133
+ * Adds a listener for the specified event type (Node.js-style).
134
+ * Returns an unsubscribe function.
135
+ */
136
+ on<K extends keyof E & string>(
137
+ type: K,
138
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
139
+ ): () => void;
140
+
125
141
  /**
126
142
  * Returns an observable for the specified event type.
127
143
  */
128
144
  on<K extends keyof E & string>(
129
145
  type: K,
130
146
  options?: OnOptions | boolean,
131
- ): ObservableLike<EmissionEvent<E[K]>> {
132
- return this.#target.on(type, options);
147
+ ): ObservableLike<EmissionEvent<E[K], K>>;
148
+
149
+ on<K extends keyof E & string>(
150
+ type: K,
151
+ optionsOrListener?: OnOptions | boolean | EventListenerLike<EmissionEvent<E[K], K>>,
152
+ ): ObservableLike<EmissionEvent<E[K], K>> | (() => void) {
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
154
+ return this.#target.on(type, optionsOrListener as any);
133
155
  }
134
156
 
135
157
  /**
@@ -138,8 +160,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
138
160
  */
139
161
  once<K extends keyof E & string>(
140
162
  type: K,
141
- listener: (event: EmissionEvent<E[K]>) => void | Promise<void>,
142
- options?: Omit<AddEventListenerOptionsLike, 'once'>,
163
+ listener: EventListenerLike<EmissionEvent<E[K], K>> | null,
164
+ options?: Omit<AddEventListenerOptionsLike, 'once'> | boolean,
143
165
  ): () => void {
144
166
  return this.#target.once(type, listener, options);
145
167
  }
@@ -160,19 +182,116 @@ export abstract class EventEmission<E extends Record<string, any>> {
160
182
 
161
183
  /**
162
184
  * Pipe events from this emitter to another target.
163
- * Note: Only forwards events for types that have listeners when pipe() is called.
164
- * Events for types registered after piping won't be forwarded automatically.
185
+ * Forwards all events. If mapFn returns null, the event is skipped.
165
186
  */
166
187
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Generic constraint requires any
167
188
  pipe<T extends Record<string, any>>(
168
189
  target: EventTargetLike<T>,
169
190
  mapFn?: <K extends keyof E & string>(
170
- event: EmissionEvent<E[K]>,
171
- ) => EmissionEvent<T[keyof T & string]> | null,
191
+ event: EmissionEvent<E[K], K>,
192
+ ) => DispatchEventInput<T[keyof T & string], keyof T & string> | null,
172
193
  ): () => void {
173
194
  return this.#target.pipe(target, mapFn);
174
195
  }
175
196
 
197
+ // ==========================================================================
198
+ // Node.js EventEmitter Compatibility
199
+ // ==========================================================================
200
+
201
+ /**
202
+ * Emits an event with the given type and detail.
203
+ * Returns true if the event type had registered listeners, false otherwise.
204
+ */
205
+ emit<K extends keyof E & string>(type: K, detail: E[K]): boolean {
206
+ return this.#target.emit(type, detail);
207
+ }
208
+
209
+ /**
210
+ * Removes a listener for the specified event type.
211
+ */
212
+ off<K extends keyof E & string>(
213
+ type: K,
214
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
215
+ ): void {
216
+ this.#target.off(type, listener);
217
+ }
218
+
219
+ /**
220
+ * Adds a listener for the specified event type.
221
+ * Returns an unsubscribe function.
222
+ */
223
+ addListener<K extends keyof E & string>(
224
+ type: K,
225
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
226
+ ): () => void {
227
+ return this.#target.addListener(type, listener);
228
+ }
229
+
230
+ /**
231
+ * Removes a listener for the specified event type.
232
+ */
233
+ removeListener<K extends keyof E & string>(
234
+ type: K,
235
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
236
+ ): void {
237
+ this.#target.removeListener(type, listener);
238
+ }
239
+
240
+ /**
241
+ * Adds a listener at the beginning of the listener list for the specified type.
242
+ * Returns an unsubscribe function.
243
+ */
244
+ prependListener<K extends keyof E & string>(
245
+ type: K,
246
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
247
+ ): () => void {
248
+ return this.#target.prependListener(type, listener);
249
+ }
250
+
251
+ /**
252
+ * Adds a one-time listener at the beginning of the listener list.
253
+ * Returns an unsubscribe function.
254
+ */
255
+ prependOnceListener<K extends keyof E & string>(
256
+ type: K,
257
+ listener: EventListenerLike<EmissionEvent<E[K], K>>,
258
+ ): () => void {
259
+ return this.#target.prependOnceListener(type, listener);
260
+ }
261
+
262
+ /**
263
+ * Returns an array of listener functions for the specified event type.
264
+ */
265
+ listeners<K extends keyof E & string>(
266
+ type: K,
267
+ ): Array<EventListenerLike<EmissionEvent<E[K], K>>> {
268
+ return this.#target.listeners(type);
269
+ }
270
+
271
+ /**
272
+ * Returns an array of listener functions for the specified event type.
273
+ * Once-listeners return a wrapper with a `.listener` property pointing to the original.
274
+ */
275
+ rawListeners<K extends keyof E & string>(
276
+ type: K,
277
+ ): Array<EventListenerLike<EmissionEvent<E[K], K>>> {
278
+ return this.#target.rawListeners(type);
279
+ }
280
+
281
+ /**
282
+ * Returns the number of listeners for the specified event type.
283
+ */
284
+ listenerCount<K extends keyof E & string>(type: K): number {
285
+ return this.#target.listenerCount(type);
286
+ }
287
+
288
+ /**
289
+ * Returns an array of event type names that have registered listeners.
290
+ */
291
+ eventNames(): Array<string> {
292
+ return this.#target.eventNames();
293
+ }
294
+
176
295
  // ==========================================================================
177
296
  // Wildcard Support
178
297
  // ==========================================================================
@@ -218,8 +337,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
218
337
  subscribe<K extends keyof E & string>(
219
338
  type: K,
220
339
  observerOrNext?:
221
- | Observer<EmissionEvent<E[K]>>
222
- | ((value: EmissionEvent<E[K]>) => void),
340
+ | Observer<EmissionEvent<E[K], K>>
341
+ | ((value: EmissionEvent<E[K], K>) => void),
223
342
  error?: (err: unknown) => void,
224
343
  completeHandler?: () => void,
225
344
  ): Subscription;
@@ -233,8 +352,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
233
352
  | Observer<EmissionEvent<E[keyof E]>>
234
353
  | ((value: EmissionEvent<E[keyof E]>) => void),
235
354
  observerOrNext?:
236
- | Observer<EmissionEvent<E[K]>>
237
- | ((value: EmissionEvent<E[K]>) => void),
355
+ | Observer<EmissionEvent<E[K], K>>
356
+ | ((value: EmissionEvent<E[K], K>) => void),
238
357
  error?: (err: unknown) => void,
239
358
  completeHandler?: () => void,
240
359
  ): Subscription {
@@ -282,7 +401,7 @@ export abstract class EventEmission<E extends Record<string, any>> {
282
401
  }
283
402
 
284
403
  /**
285
- * Returns this observable for Symbol.observable interop.
404
+ * Returns this observable for Symbol.observable interoperability.
286
405
  */
287
406
  [SymbolObservable](): ObservableLike<EmissionEvent<E[keyof E]>> {
288
407
  return this.toObservable();
@@ -328,7 +447,7 @@ export abstract class EventEmission<E extends Record<string, any>> {
328
447
  events<K extends keyof E & string>(
329
448
  type: K,
330
449
  options?: EventsIteratorOptions,
331
- ): AsyncIterableIterator<EmissionEvent<E[K]>> {
450
+ ): AsyncIterableIterator<EmissionEvent<E[K], K>> {
332
451
  return this.#target.events(type, options);
333
452
  }
334
453
  }