@pixotope/event-bus 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.
- package/.turbo/turbo-build.log +10 -10
- package/.turbo/turbo-check-types.log +1 -1
- package/.turbo/turbo-test.log +5 -5
- package/CHANGELOG.md +6 -0
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -6
- package/dist/index.d.ts +4 -6
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/EventBus.test.ts +27 -2
- package/src/EventBus.ts +12 -23
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @pixotope/event-bus@0.
|
|
2
|
+
> @pixotope/event-bus@0.3.0 build /home/circleci/project/packages/event-bus
|
|
3
3
|
> tsup src/index.ts --format cjs,esm --dts --sourcemap
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
[34mCLI[39m Target: es2020
|
|
9
9
|
[34mCJS[39m Build start
|
|
10
10
|
[34mESM[39m Build start
|
|
11
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m2.
|
|
12
|
-
[32mCJS[39m [1mdist/index.cjs.map [22m[32m3.
|
|
13
|
-
[32mCJS[39m ⚡️ Build success in
|
|
14
|
-
[32mESM[39m [1mdist/index.js [22m[32m1.
|
|
15
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m3.
|
|
16
|
-
[32mESM[39m ⚡️ Build success in
|
|
11
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m2.46 KB[39m
|
|
12
|
+
[32mCJS[39m [1mdist/index.cjs.map [22m[32m3.61 KB[39m
|
|
13
|
+
[32mCJS[39m ⚡️ Build success in 502ms
|
|
14
|
+
[32mESM[39m [1mdist/index.js [22m[32m1.46 KB[39m
|
|
15
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m3.51 KB[39m
|
|
16
|
+
[32mESM[39m ⚡️ Build success in 503ms
|
|
17
17
|
[34mDTS[39m Build start
|
|
18
|
-
[32mDTS[39m ⚡️ Build success in
|
|
19
|
-
[32mDTS[39m [1mdist/index.d.cts [22m[32m1.
|
|
20
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.
|
|
18
|
+
[32mDTS[39m ⚡️ Build success in 1794ms
|
|
19
|
+
[32mDTS[39m [1mdist/index.d.cts [22m[32m1.29 KB[39m
|
|
20
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.29 KB[39m
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
|
-
> @pixotope/event-bus@0.
|
|
2
|
+
> @pixotope/event-bus@0.3.0 test /home/circleci/project/packages/event-bus
|
|
3
3
|
> vitest
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/circleci/project/packages/event-bus[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m src/EventBus.test.ts [2m([22m[
|
|
8
|
+
[32m✓[39m src/EventBus.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 177[2mms[22m[39m
|
|
9
9
|
|
|
10
10
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
11
|
-
[2m Tests [22m [1m[
|
|
12
|
-
[2m Start at [22m
|
|
13
|
-
[2m Duration [22m
|
|
11
|
+
[2m Tests [22m [1m[32m9 passed[39m[22m[90m (9)[39m
|
|
12
|
+
[2m Start at [22m 13:10:04
|
|
13
|
+
[2m Duration [22m 3.91s[2m (transform 871ms, setup 0ms, collect 794ms, tests 177ms, environment 0ms, prepare 1.00s)[22m
|
|
14
14
|
|
package/CHANGELOG.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -36,9 +36,9 @@ var EventBus = class {
|
|
|
36
36
|
on(type, handler) {
|
|
37
37
|
const handlers = this.all.get(type);
|
|
38
38
|
if (handlers) {
|
|
39
|
-
handlers.
|
|
39
|
+
handlers.add(handler);
|
|
40
40
|
} else {
|
|
41
|
-
this.all.set(type, [handler]);
|
|
41
|
+
this.all.set(type, /* @__PURE__ */ new Set([handler]));
|
|
42
42
|
}
|
|
43
43
|
return () => this.off(type, handler);
|
|
44
44
|
}
|
|
@@ -46,9 +46,9 @@ var EventBus = class {
|
|
|
46
46
|
const handlers = this.all.get(type);
|
|
47
47
|
if (handlers) {
|
|
48
48
|
if (handler) {
|
|
49
|
-
handlers.
|
|
49
|
+
handlers.delete(handler);
|
|
50
50
|
} else {
|
|
51
|
-
this.all.set(type,
|
|
51
|
+
this.all.set(type, /* @__PURE__ */ new Set());
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -68,10 +68,10 @@ var EventBus = class {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
-
function createEventBus(defaults) {
|
|
71
|
+
function createEventBus(defaults = {}) {
|
|
72
72
|
return new EventBus(
|
|
73
73
|
new Map(
|
|
74
|
-
Object.entries(defaults
|
|
74
|
+
Object.entries(defaults).map(([key, value]) => [key, new Set(value)])
|
|
75
75
|
)
|
|
76
76
|
);
|
|
77
77
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/EventBus.ts"],"sourcesContent":["export * from \"./EventBus\";\n","export type EventType = string | symbol;\n\nexport type EmitArgs<\n Events extends Record<EventType, unknown>,\n Key extends keyof Events,\n> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];\n\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n type: keyof T,\n event: T[keyof T]\n) => void;\n\nexport type
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/EventBus.ts"],"sourcesContent":["export * from \"./EventBus\";\n","export type EventType = string | symbol;\n\nexport type EmitArgs<\n Events extends Record<EventType, unknown>,\n Key extends keyof Events,\n> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];\n\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n type: keyof T,\n event: T[keyof T]\n) => void;\n\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n keyof Events | \"*\",\n Set<GenericEventHandler<Events>>\n>;\n\ntype GenericEventHandler<Events extends Record<EventType, unknown>> =\n | Handler<Events[keyof Events]>\n | WildcardHandler<Events>;\n\nexport class EventBus<Events extends Record<EventType, unknown>> {\n public readonly all: EventHandlerMap<Events> = new Map();\n\n public constructor(all?: EventHandlerMap<Events>) {\n this.all = all || new Map();\n }\n\n public on<Key extends keyof Events | \"*\">(\n type: Key,\n handler: GenericEventHandler<Events>\n ) {\n const handlers: Set<GenericEventHandler<Events>> | undefined =\n this.all.get(type);\n if (handlers) {\n handlers.add(handler);\n } else {\n this.all.set(type, new Set([handler]));\n }\n\n return () => this.off(type, handler);\n }\n\n public off<Key extends keyof Events | \"*\">(\n type: Key,\n handler?: GenericEventHandler<Events>\n ) {\n const handlers: Set<GenericEventHandler<Events>> | undefined =\n this.all.get(type);\n if (handlers) {\n if (handler) {\n handlers.delete(handler);\n } else {\n this.all.set(type, new Set());\n }\n }\n }\n\n public emit<Key extends keyof Events>(\n type: Key,\n ...args: EmitArgs<Events, Key>\n ) {\n const evt = args[0] as Events[Key];\n let handlers = this.all.get(type);\n if (handlers) {\n (handlers as Set<Handler<Events[Key]>>).forEach((h) =>\n h(evt!)\n );\n }\n\n handlers = this.all.get(\"*\");\n if (handlers) {\n (handlers as Set<WildcardHandler<Events>>).forEach((h) =>\n h(type, evt!)\n );\n }\n }\n}\n\nexport function createEventBus<Events extends Record<EventType, unknown>>(\n defaults: Record<keyof Events, GenericEventHandler<Events>[]> = {} as Record<keyof Events, GenericEventHandler<Events>[]>\n) {\n return new EventBus<Events>(\n new Map(\n Object.entries(defaults).map(([key, value]) => [key, new Set(value)])\n )\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACsBO,IAAM,WAAN,MAA0D;AAAA,EAGxD,YAAY,KAA+B;AAFlD,wBAAgB,OAA+B,oBAAI,IAAI;AAGrD,SAAK,MAAM,OAAO,oBAAI,IAAI;AAAA,EAC5B;AAAA,EAEO,GACL,MACA,SACA;AACA,UAAM,WACJ,KAAK,IAAI,IAAI,IAAI;AACnB,QAAI,UAAU;AACZ,eAAS,IAAI,OAAO;AAAA,IACtB,OAAO;AACL,WAAK,IAAI,IAAI,MAAM,oBAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAAA,IACvC;AAEA,WAAO,MAAM,KAAK,IAAI,MAAM,OAAO;AAAA,EACrC;AAAA,EAEO,IACL,MACA,SACA;AACA,UAAM,WACJ,KAAK,IAAI,IAAI,IAAI;AACnB,QAAI,UAAU;AACZ,UAAI,SAAS;AACX,iBAAS,OAAO,OAAO;AAAA,MACzB,OAAO;AACL,aAAK,IAAI,IAAI,MAAM,oBAAI,IAAI,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EAEO,KACL,SACG,MACH;AACA,UAAM,MAAM,KAAK,CAAC;AAClB,QAAI,WAAW,KAAK,IAAI,IAAI,IAAI;AAChC,QAAI,UAAU;AACZ,MAAC,SAAuC;AAAA,QAAQ,CAAC,MAC/C,EAAE,GAAI;AAAA,MACR;AAAA,IACF;AAEA,eAAW,KAAK,IAAI,IAAI,GAAG;AAC3B,QAAI,UAAU;AACZ,MAAC,SAA0C;AAAA,QAAQ,CAAC,MAClD,EAAE,MAAM,GAAI;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eACd,WAAgE,CAAC,GACjE;AACA,SAAO,IAAI;AAAA,IACT,IAAI;AAAA,MACF,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,IACtE;AAAA,EACF;AACF;","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -2,17 +2,15 @@ type EventType = string | symbol;
|
|
|
2
2
|
type EmitArgs<Events extends Record<EventType, unknown>, Key extends keyof Events> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];
|
|
3
3
|
type Handler<T = unknown> = (event: T) => void;
|
|
4
4
|
type WildcardHandler<T = Record<string, unknown>> = (type: keyof T, event: T[keyof T]) => void;
|
|
5
|
-
type
|
|
6
|
-
type WildCardEventHandlerList<T = Record<string, unknown>> = Array<WildcardHandler<T>>;
|
|
7
|
-
type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | "*", EventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>>;
|
|
5
|
+
type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | "*", Set<GenericEventHandler<Events>>>;
|
|
8
6
|
type GenericEventHandler<Events extends Record<EventType, unknown>> = Handler<Events[keyof Events]> | WildcardHandler<Events>;
|
|
9
7
|
declare class EventBus<Events extends Record<EventType, unknown>> {
|
|
10
8
|
readonly all: EventHandlerMap<Events>;
|
|
11
9
|
constructor(all?: EventHandlerMap<Events>);
|
|
12
10
|
on<Key extends keyof Events | "*">(type: Key, handler: GenericEventHandler<Events>): () => void;
|
|
13
11
|
off<Key extends keyof Events | "*">(type: Key, handler?: GenericEventHandler<Events>): void;
|
|
14
|
-
emit<Key extends keyof Events
|
|
12
|
+
emit<Key extends keyof Events>(type: Key, ...args: EmitArgs<Events, Key>): void;
|
|
15
13
|
}
|
|
16
|
-
declare function createEventBus<Events extends Record<EventType, unknown>>(defaults?: Record<keyof Events
|
|
14
|
+
declare function createEventBus<Events extends Record<EventType, unknown>>(defaults?: Record<keyof Events, GenericEventHandler<Events>[]>): EventBus<Events>;
|
|
17
15
|
|
|
18
|
-
export { type EmitArgs, EventBus, type
|
|
16
|
+
export { type EmitArgs, EventBus, type EventHandlerMap, type EventType, type Handler, type WildcardHandler, createEventBus };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,17 +2,15 @@ type EventType = string | symbol;
|
|
|
2
2
|
type EmitArgs<Events extends Record<EventType, unknown>, Key extends keyof Events> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];
|
|
3
3
|
type Handler<T = unknown> = (event: T) => void;
|
|
4
4
|
type WildcardHandler<T = Record<string, unknown>> = (type: keyof T, event: T[keyof T]) => void;
|
|
5
|
-
type
|
|
6
|
-
type WildCardEventHandlerList<T = Record<string, unknown>> = Array<WildcardHandler<T>>;
|
|
7
|
-
type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | "*", EventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>>;
|
|
5
|
+
type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | "*", Set<GenericEventHandler<Events>>>;
|
|
8
6
|
type GenericEventHandler<Events extends Record<EventType, unknown>> = Handler<Events[keyof Events]> | WildcardHandler<Events>;
|
|
9
7
|
declare class EventBus<Events extends Record<EventType, unknown>> {
|
|
10
8
|
readonly all: EventHandlerMap<Events>;
|
|
11
9
|
constructor(all?: EventHandlerMap<Events>);
|
|
12
10
|
on<Key extends keyof Events | "*">(type: Key, handler: GenericEventHandler<Events>): () => void;
|
|
13
11
|
off<Key extends keyof Events | "*">(type: Key, handler?: GenericEventHandler<Events>): void;
|
|
14
|
-
emit<Key extends keyof Events
|
|
12
|
+
emit<Key extends keyof Events>(type: Key, ...args: EmitArgs<Events, Key>): void;
|
|
15
13
|
}
|
|
16
|
-
declare function createEventBus<Events extends Record<EventType, unknown>>(defaults?: Record<keyof Events
|
|
14
|
+
declare function createEventBus<Events extends Record<EventType, unknown>>(defaults?: Record<keyof Events, GenericEventHandler<Events>[]>): EventBus<Events>;
|
|
17
15
|
|
|
18
|
-
export { type EmitArgs, EventBus, type
|
|
16
|
+
export { type EmitArgs, EventBus, type EventHandlerMap, type EventType, type Handler, type WildcardHandler, createEventBus };
|
package/dist/index.js
CHANGED
|
@@ -11,9 +11,9 @@ var EventBus = class {
|
|
|
11
11
|
on(type, handler) {
|
|
12
12
|
const handlers = this.all.get(type);
|
|
13
13
|
if (handlers) {
|
|
14
|
-
handlers.
|
|
14
|
+
handlers.add(handler);
|
|
15
15
|
} else {
|
|
16
|
-
this.all.set(type, [handler]);
|
|
16
|
+
this.all.set(type, /* @__PURE__ */ new Set([handler]));
|
|
17
17
|
}
|
|
18
18
|
return () => this.off(type, handler);
|
|
19
19
|
}
|
|
@@ -21,9 +21,9 @@ var EventBus = class {
|
|
|
21
21
|
const handlers = this.all.get(type);
|
|
22
22
|
if (handlers) {
|
|
23
23
|
if (handler) {
|
|
24
|
-
handlers.
|
|
24
|
+
handlers.delete(handler);
|
|
25
25
|
} else {
|
|
26
|
-
this.all.set(type,
|
|
26
|
+
this.all.set(type, /* @__PURE__ */ new Set());
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -43,10 +43,10 @@ var EventBus = class {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
function createEventBus(defaults) {
|
|
46
|
+
function createEventBus(defaults = {}) {
|
|
47
47
|
return new EventBus(
|
|
48
48
|
new Map(
|
|
49
|
-
Object.entries(defaults
|
|
49
|
+
Object.entries(defaults).map(([key, value]) => [key, new Set(value)])
|
|
50
50
|
)
|
|
51
51
|
);
|
|
52
52
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/EventBus.ts"],"sourcesContent":["export type EventType = string | symbol;\n\nexport type EmitArgs<\n Events extends Record<EventType, unknown>,\n Key extends keyof Events,\n> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];\n\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n type: keyof T,\n event: T[keyof T]\n) => void;\n\nexport type
|
|
1
|
+
{"version":3,"sources":["../src/EventBus.ts"],"sourcesContent":["export type EventType = string | symbol;\n\nexport type EmitArgs<\n Events extends Record<EventType, unknown>,\n Key extends keyof Events,\n> = undefined extends Events[Key] ? [evt?: Events[Key]] : [evt: Events[Key]];\n\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n type: keyof T,\n event: T[keyof T]\n) => void;\n\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n keyof Events | \"*\",\n Set<GenericEventHandler<Events>>\n>;\n\ntype GenericEventHandler<Events extends Record<EventType, unknown>> =\n | Handler<Events[keyof Events]>\n | WildcardHandler<Events>;\n\nexport class EventBus<Events extends Record<EventType, unknown>> {\n public readonly all: EventHandlerMap<Events> = new Map();\n\n public constructor(all?: EventHandlerMap<Events>) {\n this.all = all || new Map();\n }\n\n public on<Key extends keyof Events | \"*\">(\n type: Key,\n handler: GenericEventHandler<Events>\n ) {\n const handlers: Set<GenericEventHandler<Events>> | undefined =\n this.all.get(type);\n if (handlers) {\n handlers.add(handler);\n } else {\n this.all.set(type, new Set([handler]));\n }\n\n return () => this.off(type, handler);\n }\n\n public off<Key extends keyof Events | \"*\">(\n type: Key,\n handler?: GenericEventHandler<Events>\n ) {\n const handlers: Set<GenericEventHandler<Events>> | undefined =\n this.all.get(type);\n if (handlers) {\n if (handler) {\n handlers.delete(handler);\n } else {\n this.all.set(type, new Set());\n }\n }\n }\n\n public emit<Key extends keyof Events>(\n type: Key,\n ...args: EmitArgs<Events, Key>\n ) {\n const evt = args[0] as Events[Key];\n let handlers = this.all.get(type);\n if (handlers) {\n (handlers as Set<Handler<Events[Key]>>).forEach((h) =>\n h(evt!)\n );\n }\n\n handlers = this.all.get(\"*\");\n if (handlers) {\n (handlers as Set<WildcardHandler<Events>>).forEach((h) =>\n h(type, evt!)\n );\n }\n }\n}\n\nexport function createEventBus<Events extends Record<EventType, unknown>>(\n defaults: Record<keyof Events, GenericEventHandler<Events>[]> = {} as Record<keyof Events, GenericEventHandler<Events>[]>\n) {\n return new EventBus<Events>(\n new Map(\n Object.entries(defaults).map(([key, value]) => [key, new Set(value)])\n )\n );\n}\n"],"mappings":";;;;;AAsBO,IAAM,WAAN,MAA0D;AAAA,EAGxD,YAAY,KAA+B;AAFlD,wBAAgB,OAA+B,oBAAI,IAAI;AAGrD,SAAK,MAAM,OAAO,oBAAI,IAAI;AAAA,EAC5B;AAAA,EAEO,GACL,MACA,SACA;AACA,UAAM,WACJ,KAAK,IAAI,IAAI,IAAI;AACnB,QAAI,UAAU;AACZ,eAAS,IAAI,OAAO;AAAA,IACtB,OAAO;AACL,WAAK,IAAI,IAAI,MAAM,oBAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAAA,IACvC;AAEA,WAAO,MAAM,KAAK,IAAI,MAAM,OAAO;AAAA,EACrC;AAAA,EAEO,IACL,MACA,SACA;AACA,UAAM,WACJ,KAAK,IAAI,IAAI,IAAI;AACnB,QAAI,UAAU;AACZ,UAAI,SAAS;AACX,iBAAS,OAAO,OAAO;AAAA,MACzB,OAAO;AACL,aAAK,IAAI,IAAI,MAAM,oBAAI,IAAI,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EAEO,KACL,SACG,MACH;AACA,UAAM,MAAM,KAAK,CAAC;AAClB,QAAI,WAAW,KAAK,IAAI,IAAI,IAAI;AAChC,QAAI,UAAU;AACZ,MAAC,SAAuC;AAAA,QAAQ,CAAC,MAC/C,EAAE,GAAI;AAAA,MACR;AAAA,IACF;AAEA,eAAW,KAAK,IAAI,IAAI,GAAG;AAC3B,QAAI,UAAU;AACZ,MAAC,SAA0C;AAAA,QAAQ,CAAC,MAClD,EAAE,MAAM,GAAI;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eACd,WAAgE,CAAC,GACjE;AACA,SAAO,IAAI;AAAA,IACT,IAAI;AAAA,MACF,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,IACtE;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
package/src/EventBus.test.ts
CHANGED
|
@@ -46,8 +46,8 @@ describe("EventBus", () => {
|
|
|
46
46
|
const bus = new EventBus();
|
|
47
47
|
const handler = vi.fn();
|
|
48
48
|
bus.on("*", handler);
|
|
49
|
-
bus.emit("test");
|
|
50
|
-
expect(handler).
|
|
49
|
+
bus.emit("test", { payload: "test" });
|
|
50
|
+
expect(handler).toHaveBeenCalledWith("test", { payload: "test" });
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
it("should return off function when on is called", () => {
|
|
@@ -65,4 +65,29 @@ describe("createEventBus", () => {
|
|
|
65
65
|
const bus = createEventBus();
|
|
66
66
|
expect(bus).toBeDefined();
|
|
67
67
|
});
|
|
68
|
+
it("should create an event bus with a default handler", () => {
|
|
69
|
+
const handler = vi.fn();
|
|
70
|
+
const handler2 = vi.fn();
|
|
71
|
+
const catchAllHandler = vi.fn();
|
|
72
|
+
const bus = createEventBus<{
|
|
73
|
+
test: { payload: string };
|
|
74
|
+
test2: { payload: string };
|
|
75
|
+
"*": { payload: string };
|
|
76
|
+
}>({
|
|
77
|
+
test: [handler],
|
|
78
|
+
test2: [handler2],
|
|
79
|
+
"*": [catchAllHandler],
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
expect(bus).toBeDefined();
|
|
83
|
+
|
|
84
|
+
bus.emit("test", { payload: "test" });
|
|
85
|
+
expect(handler).toHaveBeenCalledWith({ payload: "test" });
|
|
86
|
+
bus.emit("test2", { payload: "test" });
|
|
87
|
+
expect(handler2).toHaveBeenCalledWith({ payload: "test" });
|
|
88
|
+
|
|
89
|
+
expect(catchAllHandler).toHaveBeenCalledTimes(2);
|
|
90
|
+
expect(catchAllHandler).toHaveBeenCalledWith("test", { payload: "test" });
|
|
91
|
+
expect(catchAllHandler).toHaveBeenCalledWith("test2", { payload: "test" });
|
|
92
|
+
});
|
|
68
93
|
});
|
package/src/EventBus.ts
CHANGED
|
@@ -11,14 +11,9 @@ export type WildcardHandler<T = Record<string, unknown>> = (
|
|
|
11
11
|
event: T[keyof T]
|
|
12
12
|
) => void;
|
|
13
13
|
|
|
14
|
-
export type EventHandlerList<T = unknown> = Array<Handler<T>>;
|
|
15
|
-
export type WildCardEventHandlerList<T = Record<string, unknown>> = Array<
|
|
16
|
-
WildcardHandler<T>
|
|
17
|
-
>;
|
|
18
|
-
|
|
19
14
|
export type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<
|
|
20
15
|
keyof Events | "*",
|
|
21
|
-
|
|
16
|
+
Set<GenericEventHandler<Events>>
|
|
22
17
|
>;
|
|
23
18
|
|
|
24
19
|
type GenericEventHandler<Events extends Record<EventType, unknown>> =
|
|
@@ -36,12 +31,12 @@ export class EventBus<Events extends Record<EventType, unknown>> {
|
|
|
36
31
|
type: Key,
|
|
37
32
|
handler: GenericEventHandler<Events>
|
|
38
33
|
) {
|
|
39
|
-
const handlers:
|
|
34
|
+
const handlers: Set<GenericEventHandler<Events>> | undefined =
|
|
40
35
|
this.all.get(type);
|
|
41
36
|
if (handlers) {
|
|
42
|
-
handlers.
|
|
37
|
+
handlers.add(handler);
|
|
43
38
|
} else {
|
|
44
|
-
this.all.set(type, [handler]
|
|
39
|
+
this.all.set(type, new Set([handler]));
|
|
45
40
|
}
|
|
46
41
|
|
|
47
42
|
return () => this.off(type, handler);
|
|
@@ -51,32 +46,32 @@ export class EventBus<Events extends Record<EventType, unknown>> {
|
|
|
51
46
|
type: Key,
|
|
52
47
|
handler?: GenericEventHandler<Events>
|
|
53
48
|
) {
|
|
54
|
-
const handlers:
|
|
49
|
+
const handlers: Set<GenericEventHandler<Events>> | undefined =
|
|
55
50
|
this.all.get(type);
|
|
56
51
|
if (handlers) {
|
|
57
52
|
if (handler) {
|
|
58
|
-
handlers.
|
|
53
|
+
handlers.delete(handler);
|
|
59
54
|
} else {
|
|
60
|
-
this.all.set(type,
|
|
55
|
+
this.all.set(type, new Set());
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
59
|
|
|
65
|
-
public emit<Key extends keyof Events
|
|
60
|
+
public emit<Key extends keyof Events>(
|
|
66
61
|
type: Key,
|
|
67
62
|
...args: EmitArgs<Events, Key>
|
|
68
63
|
) {
|
|
69
64
|
const evt = args[0] as Events[Key];
|
|
70
65
|
let handlers = this.all.get(type);
|
|
71
66
|
if (handlers) {
|
|
72
|
-
(handlers as
|
|
67
|
+
(handlers as Set<Handler<Events[Key]>>).forEach((h) =>
|
|
73
68
|
h(evt!)
|
|
74
69
|
);
|
|
75
70
|
}
|
|
76
71
|
|
|
77
72
|
handlers = this.all.get("*");
|
|
78
73
|
if (handlers) {
|
|
79
|
-
(handlers as
|
|
74
|
+
(handlers as Set<WildcardHandler<Events>>).forEach((h) =>
|
|
80
75
|
h(type, evt!)
|
|
81
76
|
);
|
|
82
77
|
}
|
|
@@ -84,17 +79,11 @@ export class EventBus<Events extends Record<EventType, unknown>> {
|
|
|
84
79
|
}
|
|
85
80
|
|
|
86
81
|
export function createEventBus<Events extends Record<EventType, unknown>>(
|
|
87
|
-
defaults
|
|
82
|
+
defaults: Record<keyof Events, GenericEventHandler<Events>[]> = {} as Record<keyof Events, GenericEventHandler<Events>[]>
|
|
88
83
|
) {
|
|
89
84
|
return new EventBus<Events>(
|
|
90
85
|
new Map(
|
|
91
|
-
Object.entries(defaults
|
|
92
|
-
keyof Events | "*",
|
|
93
|
-
(
|
|
94
|
-
| EventHandlerList<Events[keyof Events]>
|
|
95
|
-
| WildCardEventHandlerList<Events>
|
|
96
|
-
),
|
|
97
|
-
][]
|
|
86
|
+
Object.entries(defaults).map(([key, value]) => [key, new Set(value)])
|
|
98
87
|
)
|
|
99
88
|
);
|
|
100
89
|
}
|