event-emission 0.2.0 → 0.2.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.
Files changed (43) hide show
  1. package/README.md +80 -24
  2. package/dist/event-emission.d.ts +13 -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 +474 -285
  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 +449 -278
  11. package/dist/index.js.map +8 -9
  12. package/dist/interoperability.cjs +1605 -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 +1555 -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 +60 -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 +26 -20
  37. package/src/factory.ts +538 -218
  38. package/src/index.ts +4 -33
  39. package/src/{interop.ts → interoperability.ts} +24 -6
  40. package/src/observe.ts +54 -17
  41. package/src/symbols.ts +1 -1
  42. package/src/types.ts +75 -30
  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,32 @@ 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: <K extends keyof E & string>(type: K, options?: OnOptions | boolean) => ObservableLike<EmissionEvent<E[K], K>>;
205
+ once: <K extends keyof E & string>(type: K, listener: EventListenerLike<EmissionEvent<E[K], K>> | null, options?: Omit<AddEventListenerOptionsLike, 'once'> | boolean) => () => void;
170
206
  removeAllListeners: <K extends keyof E & string>(type?: K) => void;
171
207
  /**
172
208
  * 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.
209
+ * Forwards all events. If mapFn returns null, the event is skipped.
175
210
  */
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;
211
+ 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
212
  complete: () => void;
178
213
  readonly completed: boolean;
179
214
  addWildcardListener: (pattern: '*' | `${string}:*`, listener: (event: WildcardEvent<E>) => void | Promise<void>, options?: AddEventListenerOptionsLike) => () => void;
180
215
  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;
216
+ 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
217
  toObservable: () => ObservableLike<EmissionEvent<E[keyof E]>>;
183
- events: <K extends keyof E & string>(type: K, options?: AsyncIteratorOptions) => AsyncIterableIterator<EmissionEvent<E[K]>>;
218
+ events: <K extends keyof E & string>(type: K, options?: AsyncIteratorOptions) => AsyncIterableIterator<EmissionEvent<E[K], K>>;
184
219
  }
185
220
  //# 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,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC7B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,KAC1B,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,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;IACnE;;;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.2.1",
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
 
@@ -128,7 +135,7 @@ export abstract class EventEmission<E extends Record<string, any>> {
128
135
  on<K extends keyof E & string>(
129
136
  type: K,
130
137
  options?: OnOptions | boolean,
131
- ): ObservableLike<EmissionEvent<E[K]>> {
138
+ ): ObservableLike<EmissionEvent<E[K], K>> {
132
139
  return this.#target.on(type, options);
133
140
  }
134
141
 
@@ -138,8 +145,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
138
145
  */
139
146
  once<K extends keyof E & string>(
140
147
  type: K,
141
- listener: (event: EmissionEvent<E[K]>) => void | Promise<void>,
142
- options?: Omit<AddEventListenerOptionsLike, 'once'>,
148
+ listener: EventListenerLike<EmissionEvent<E[K], K>> | null,
149
+ options?: Omit<AddEventListenerOptionsLike, 'once'> | boolean,
143
150
  ): () => void {
144
151
  return this.#target.once(type, listener, options);
145
152
  }
@@ -160,15 +167,14 @@ export abstract class EventEmission<E extends Record<string, any>> {
160
167
 
161
168
  /**
162
169
  * 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.
170
+ * Forwards all events. If mapFn returns null, the event is skipped.
165
171
  */
166
172
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Generic constraint requires any
167
173
  pipe<T extends Record<string, any>>(
168
174
  target: EventTargetLike<T>,
169
175
  mapFn?: <K extends keyof E & string>(
170
- event: EmissionEvent<E[K]>,
171
- ) => EmissionEvent<T[keyof T & string]> | null,
176
+ event: EmissionEvent<E[K], K>,
177
+ ) => DispatchEventInput<T[keyof T & string], keyof T & string> | null,
172
178
  ): () => void {
173
179
  return this.#target.pipe(target, mapFn);
174
180
  }
@@ -218,8 +224,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
218
224
  subscribe<K extends keyof E & string>(
219
225
  type: K,
220
226
  observerOrNext?:
221
- | Observer<EmissionEvent<E[K]>>
222
- | ((value: EmissionEvent<E[K]>) => void),
227
+ | Observer<EmissionEvent<E[K], K>>
228
+ | ((value: EmissionEvent<E[K], K>) => void),
223
229
  error?: (err: unknown) => void,
224
230
  completeHandler?: () => void,
225
231
  ): Subscription;
@@ -233,8 +239,8 @@ export abstract class EventEmission<E extends Record<string, any>> {
233
239
  | Observer<EmissionEvent<E[keyof E]>>
234
240
  | ((value: EmissionEvent<E[keyof E]>) => void),
235
241
  observerOrNext?:
236
- | Observer<EmissionEvent<E[K]>>
237
- | ((value: EmissionEvent<E[K]>) => void),
242
+ | Observer<EmissionEvent<E[K], K>>
243
+ | ((value: EmissionEvent<E[K], K>) => void),
238
244
  error?: (err: unknown) => void,
239
245
  completeHandler?: () => void,
240
246
  ): Subscription {
@@ -282,7 +288,7 @@ export abstract class EventEmission<E extends Record<string, any>> {
282
288
  }
283
289
 
284
290
  /**
285
- * Returns this observable for Symbol.observable interop.
291
+ * Returns this observable for Symbol.observable interoperability.
286
292
  */
287
293
  [SymbolObservable](): ObservableLike<EmissionEvent<E[keyof E]>> {
288
294
  return this.toObservable();
@@ -328,7 +334,7 @@ export abstract class EventEmission<E extends Record<string, any>> {
328
334
  events<K extends keyof E & string>(
329
335
  type: K,
330
336
  options?: EventsIteratorOptions,
331
- ): AsyncIterableIterator<EmissionEvent<E[K]>> {
337
+ ): AsyncIterableIterator<EmissionEvent<E[K], K>> {
332
338
  return this.#target.events(type, options);
333
339
  }
334
340
  }