@medievalrain/emitter 0.4.0 → 0.7.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/dist/index.d.ts CHANGED
@@ -4,17 +4,18 @@ type CallbackOptions = {
4
4
  once?: boolean;
5
5
  signal?: AbortSignal;
6
6
  };
7
- type Callback<E extends EventMap, K$1 extends keyof E> = (...args: [E[K$1]] extends [void] ? [] : [E[K$1]]) => void;
8
7
  type OnAnyCallback<Events extends EventMap> = (data: Events[keyof Events]) => void;
8
+ type Callback<Events extends EventMap, K extends keyof Events> = undefined extends Events[K] ? () => void : (data: Events[K]) => void;
9
+ type Emit<Events extends EventMap> = <K extends keyof Events>(...args: undefined extends Events[K] ? [eventName: K] : [eventName: K, data: Events[K]]) => void;
9
10
  type Emitter<Events extends EventMap> = {
10
- emit: <EM extends keyof Events>(eventName: EM, ...args: Parameters<Callback<Events, EM>>) => void;
11
- on: <EM extends keyof Events>(eventName: EM, callback: Callback<Events, EM>, options?: CallbackOptions) => void;
11
+ emit: Emit<Events>;
12
+ on: <K extends keyof Events>(eventName: K, callback: Callback<Events, K>, options?: CallbackOptions) => void;
13
+ off: <K extends keyof Events>(eventName: K, callback: Callback<Events, K>) => void;
12
14
  onAny: (callback: OnAnyCallback<Events>, options?: CallbackOptions) => void;
13
15
  offAny: (callback: OnAnyCallback<Events>) => void;
14
- off: <EM extends keyof Events>(eventName: EM, callback: Callback<Events, EM>) => void;
15
16
  };
16
17
  //#endregion
17
18
  //#region src/emitter.d.ts
18
19
  declare const createEmitter: <Events extends EventMap>() => Emitter<Events>;
19
20
  //#endregion
20
- export { type CallbackOptions, type EventMap, createEmitter };
21
+ export { type CallbackOptions, type Emitter, type EventMap, createEmitter };
package/dist/index.js CHANGED
@@ -9,13 +9,13 @@ const createEmitter = () => {
9
9
  callbacks.delete(callback);
10
10
  if (!callbacks.size) delete callbackMap[eventName];
11
11
  };
12
- const emit = (eventName, ...args) => {
12
+ const emit = (...[eventName, callbackArgs]) => {
13
13
  const callbacks = callbackMap[eventName];
14
14
  if (!callbacks?.size) return;
15
15
  Array.from(callbacks.entries()).forEach(([callback, { once }]) => {
16
16
  if (!callbacks.has(callback)) return;
17
17
  try {
18
- callback(...args);
18
+ callback(callbackArgs);
19
19
  } finally {
20
20
  if (once) off(eventName, callback);
21
21
  }
@@ -23,7 +23,7 @@ const createEmitter = () => {
23
23
  Array.from(onAnyCallbacks.entries()).forEach(([callback, options]) => {
24
24
  if (!onAnyCallbacks.has(callback)) return;
25
25
  try {
26
- callback(args);
26
+ callback(callbackArgs);
27
27
  } finally {
28
28
  if (options?.once) offAny(callback);
29
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medievalrain/emitter",
3
- "version": "0.4.0",
3
+ "version": "0.7.0",
4
4
  "description": "A typesafe event emitter",
5
5
  "type": "module",
6
6
  "repository": {