@daiso-tech/core 0.13.0 → 0.14.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 (73) hide show
  1. package/dist/cjs/cache/implementations/adapters/_module.js +1 -0
  2. package/dist/cjs/cache/implementations/adapters/_module.js.map +1 -1
  3. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +2 -2
  4. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  5. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  6. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +1 -1
  7. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  8. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/_module.js +18 -0
  9. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/_module.js.map +1 -0
  10. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +28 -0
  11. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -0
  12. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +1 -1
  13. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  14. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +1 -1
  15. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  16. package/dist/cjs/cache/implementations/derivables/base-cache.js.map +1 -1
  17. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  18. package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +1 -1
  19. package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +1 -1
  20. package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js +47 -0
  21. package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js.map +1 -0
  22. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +0 -6
  23. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  24. package/dist/cjs/event-bus/implementations/derivables/event-bus.js +6 -47
  25. package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
  26. package/dist/esm/cache/implementations/adapters/_module.js +1 -0
  27. package/dist/esm/cache/implementations/adapters/_module.js.map +1 -1
  28. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +3 -3
  29. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  30. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  31. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +2 -2
  32. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  33. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/_module.js +2 -0
  34. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/_module.js.map +1 -0
  35. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +24 -0
  36. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -0
  37. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +2 -2
  38. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  39. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +2 -2
  40. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  41. package/dist/esm/cache/implementations/derivables/base-cache.js.map +1 -1
  42. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  43. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +2 -2
  44. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +1 -1
  45. package/dist/esm/event-bus/implementations/derivables/base-event-bus.js +43 -0
  46. package/dist/esm/event-bus/implementations/derivables/base-event-bus.js.map +1 -0
  47. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +0 -6
  48. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  49. package/dist/esm/event-bus/implementations/derivables/event-bus.js +6 -47
  50. package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
  51. package/dist/types/cache/contracts/cache-adapter.contract.d.ts +1 -1
  52. package/dist/types/cache/contracts/cache.contract.d.ts +1 -1
  53. package/dist/types/cache/implementations/adapters/_module.d.ts +1 -0
  54. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +14 -2
  55. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +15 -0
  56. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +16 -2
  57. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/_module.d.ts +1 -0
  58. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +18 -0
  59. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +14 -2
  60. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +13 -1
  61. package/dist/types/cache/implementations/derivables/base-cache.d.ts +1 -1
  62. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +1 -25
  63. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +16 -0
  64. package/dist/types/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.d.ts +16 -1
  65. package/dist/types/event-bus/implementations/derivables/base-event-bus.d.ts +23 -0
  66. package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +0 -3
  67. package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +5 -47
  68. package/package.json +1 -1
  69. package/dist/cjs/event-bus/implementations/derivables/with-validation-event-bus-adapter.js +0 -35
  70. package/dist/cjs/event-bus/implementations/derivables/with-validation-event-bus-adapter.js.map +0 -1
  71. package/dist/esm/event-bus/implementations/derivables/with-validation-event-bus-adapter.js +0 -31
  72. package/dist/esm/event-bus/implementations/derivables/with-validation-event-bus-adapter.js.map +0 -1
  73. package/dist/types/event-bus/implementations/derivables/with-validation-event-bus-adapter.d.ts +0 -17
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { Validator } from "../../utilities/_module";
5
4
  import type { INamespacedEventBus } from "../../event-bus/contracts/event-bus.contract";
6
5
  import type { IBaseEvent } from "../../event-bus/contracts/_shared";
7
6
  /**
@@ -31,34 +30,11 @@ export type IEventBusFactory<TDrivers extends string = string, TEvents extends I
31
30
  * ```
32
31
  */
33
32
  use(driverName?: TDrivers): INamespacedEventBus<TEvents>;
34
- /**
35
- * The <i>withValidation</i> method is used to set a <i>validator</i>, which validates the event during runtime.
36
- * The type is inferred from the provided <i>validator</i>.
37
- * @example
38
- * ```ts
39
- * import { type IEventBusFactory, zodValidator } from "@daiso-tech/core";
40
- * import { z } from "zod"
41
- *
42
- * async function main(eventBusFactory: IEventBusFactory): Promise<void> {
43
- * const addEventSchema = z.zod({
44
- * type: z.literal("add"),
45
- * a: z.number(),
46
- * b: z.number(),
47
- * });
48
- * await eventBusFactory
49
- * .withValidation(zodValidator(addEventSchema))
50
- * .use()
51
- * // You will se an typescript error and get runtime erorr
52
- * .dispatch({ type: "add" });
53
- * }
54
- * ```
55
- */
56
- withValidation<TOutput extends TEvents = TEvents>(validator: Validator<TOutput>): IEventBusFactory<TDrivers, TOutput>;
57
33
  /**
58
34
  * The <i>withTypes</i> method is used to set the event types of the <i>{@link IEventBus}</i>.
59
35
  * @example
60
36
  * ```ts
61
- * import { type IEventBusFactory, zodValidator } from "@daiso-tech/core";
37
+ * import { type IEventBusFactory } from "@daiso-tech/core";
62
38
  *
63
39
  * async function main(eventBusFactory: IEventBusFactory): Promise<void> {
64
40
  * type AddEvent = {
@@ -4,7 +4,23 @@
4
4
  import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
5
5
  import { EventEmitter } from "node:events";
6
6
  /**
7
+ * To utilize the <i>MemoryEventBusAdapter</i>, you must create instance of it.
7
8
  * @group Adapters
9
+ * @example
10
+ * ```ts
11
+ * import { MemoryEventBusAdapter } from "@daiso-tech/core";
12
+ *
13
+ * const eventBusAdapter = new MemoryEventBusAdapter(client);
14
+ * ```
15
+ * You can also provide an <i>EVentEmitter</i>.
16
+ * @example
17
+ * ```ts
18
+ * import { MemoryCacheAdapter } from "@daiso-tech/core";
19
+ * import { EventEmitter } from "node:events";
20
+ *
21
+ * const eventEmitter = new EventEmitter();
22
+ * const eventBusAdapter = new MemoryCacheAdapter(eventEmitter);
23
+ * ```
8
24
  */
9
25
  export declare class MemoryEventBusAdapter implements IEventBusAdapter {
10
26
  private readonly eventEmiter;
@@ -10,10 +10,25 @@ import type Redis from "ioredis";
10
10
  export type RedisEventBusAdapterSettings = {
11
11
  dispatcherClient: Redis;
12
12
  listenerClient: Redis;
13
- serializer?: ISerializer<string>;
13
+ serializer: ISerializer<string>;
14
14
  };
15
15
  /**
16
+ * To utilize the <i>RedisEventBusAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerializer | string serializer}</i>, such as <i>{@link SuperJsonSerializer}</i>.
16
17
  * @group Adapters
18
+ * @example
19
+ * ```ts
20
+ * import { RedisEventBusAdapter, SuperJsonSerializer } from "@daiso-tech/core";
21
+ * import Redis from "ioredis";
22
+ *
23
+ * const dispatcherClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
24
+ * const listenerClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
25
+ * const serializer = new SuperJsonSerializer();
26
+ * const eventBusAdapter = new RedisEventBusAdapter({
27
+ * dispatcherClient,
28
+ * listenerClient,
29
+ * serializer,
30
+ * });
31
+ * ```
17
32
  */
18
33
  export declare class RedisEventBusAdapter implements IEventBusAdapter {
19
34
  private readonly serializer;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { LazyPromise } from "../../../utilities/_module";
5
+ import type { SelectEvent, Unsubscribe } from "../../../event-bus/contracts/_module";
6
+ import { type IEventBus, type INamespacedEventBus, type Listener, type IBaseEvent } from "../../../event-bus/contracts/_module";
7
+ import type { OneOrMore } from "../../../_shared/types";
8
+ /**
9
+ * The BaseEventBus class serves as an abstract base class that provides implementations for redundant methods.
10
+ * It simplifies implementing the {@link INamespacedEventBus} interface without using an {@link IEventBusAdapter}.
11
+ * @group Derivables
12
+ */
13
+ export declare abstract class BaseEventBus<TEvents extends IBaseEvent> implements INamespacedEventBus<TEvents> {
14
+ abstract withNamespace(namespace: OneOrMore<string>): IEventBus<TEvents>;
15
+ abstract getNamespace(): string;
16
+ abstract addListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
17
+ addListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
18
+ abstract removeListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
19
+ removeListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
20
+ subscribe<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<Unsubscribe>;
21
+ subscribeMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<Unsubscribe>;
22
+ abstract dispatch(events: OneOrMore<TEvents>): LazyPromise<void>;
23
+ }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { Validator } from "../../../utilities/_module";
5
4
  import type { INamespacedEventBus, IEventBusAdapter, IBaseEvent, IEventBusFactory } from "../../../event-bus/contracts/_module";
6
5
  /**
7
6
  * @group Derivables
@@ -39,9 +38,7 @@ export declare class EventBusFactory<TAdapters extends string = string, TEvent e
39
38
  private readonly drivers;
40
39
  private readonly defaultDriver?;
41
40
  private readonly rootNamespace?;
42
- private validator;
43
41
  constructor(settings: EventBusFactorySettings<TAdapters>);
44
42
  use(driverName?: TAdapters | undefined): INamespacedEventBus<TEvent>;
45
- withValidation<TOutput extends IBaseEvent = IBaseEvent>(validator: Validator<TOutput>): IEventBusFactory<TAdapters, TOutput>;
46
43
  withType<TOutput extends IBaseEvent = IBaseEvent>(): IEventBusFactory<TAdapters, TOutput>;
47
44
  }
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { Validator } from "../../../utilities/_module";
5
4
  import { LazyPromise } from "../../../utilities/_module";
6
- import type { SelectEvent, Unsubscribe } from "../../../event-bus/contracts/_module";
5
+ import type { SelectEvent } from "../../../event-bus/contracts/_module";
7
6
  import { type IEventBus, type INamespacedEventBus, type IEventBusAdapter, type Listener, type IBaseEvent } from "../../../event-bus/contracts/_module";
8
7
  import type { OneOrMore } from "../../../_shared/types";
8
+ import { BaseEventBus } from "../../../event-bus/implementations/derivables/base-event-bus";
9
9
  /**
10
10
  * @group Derivables
11
11
  */
12
- export type EventBusSettings<TEvents extends IBaseEvent> = {
12
+ export type EventBusSettings = {
13
13
  /**
14
14
  * You can prefix all keys with a given <i>namespace</i>.
15
15
  * This useful if you want to add multitenancy but still use the same database.
@@ -44,60 +44,18 @@ export type EventBusSettings<TEvents extends IBaseEvent> = {
44
44
  * ```
45
45
  */
46
46
  rootNamespace?: OneOrMore<string>;
47
- /**
48
- * You can pass a custom <i>{@link Validator}</i> to validate, transform and sanitize your data.
49
- * You could also use <i>{@link zodValidator}</i> which enables you to use zod for validating, transforming, and sanitizing.
50
- * @example
51
- * ```ts
52
- * import { EventBus, MemoryEventBusAdapter, zodValidator } from "@daiso-tech/core";
53
- * import { z } from "zod";
54
- *
55
- * const addEventSchema = z.object({
56
- * type: z.literal("add"),
57
- * a: z.number(),
58
- * b: z.number(),
59
- * });
60
- *
61
- * const subEventSchema = z.object({
62
- * type: z.literal("sub"),
63
- * c: z.number(),
64
- * d: z.number(),
65
- * });
66
- *
67
- * const eventBus = new EventBus(new MemoryEventBusAdapter(), {
68
- * // Event type will be infered from validator
69
- * validator: zodValidator(addEventSchema.or(subEventSchema))
70
- * });
71
- *
72
- * (async () => {
73
- * // An Typescript error will be seen and ValidationError will be thrown during runtime.
74
- * await eventBus.dispatch([
75
- * {
76
- * type: "none existing",
77
- * noneExistingField: 20
78
- * }
79
- * ]);
80
- * })();
81
- * ```
82
- */
83
- validator?: Validator<TEvents>;
84
47
  };
85
48
  /**
86
49
  * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
87
50
  * @group Derivables
88
51
  */
89
- export declare class EventBus<TEvents extends IBaseEvent = IBaseEvent> implements INamespacedEventBus<TEvents> {
52
+ export declare class EventBus<TEvents extends IBaseEvent = IBaseEvent> extends BaseEventBus<TEvents> implements INamespacedEventBus<TEvents> {
90
53
  private readonly eventBusAdapter;
91
54
  private readonly namespace;
92
- private readonly validator;
93
- constructor(eventBusAdapter: IEventBusAdapter, settings?: EventBusSettings<TEvents>);
55
+ constructor(eventBusAdapter: IEventBusAdapter, settings?: EventBusSettings);
94
56
  withNamespace(namespace: OneOrMore<string>): IEventBus<TEvents>;
95
57
  getNamespace(): string;
96
58
  addListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
97
- addListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
98
59
  removeListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
99
- removeListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
100
- subscribe<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<Unsubscribe>;
101
- subscribeMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<Unsubscribe>;
102
60
  dispatch(events: OneOrMore<TEvents>): LazyPromise<void>;
103
61
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@daiso-tech/core",
3
3
  "private": false,
4
- "version": "0.13.0",
4
+ "version": "0.14.0",
5
5
  "author": "Yousif Abdulkarim",
6
6
  "license": "Apache-2.0",
7
7
  "main": "./dist/cjs/_module.js",
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WithValidationEventBusAdapter = void 0;
4
- class WithValidationEventBusAdapter {
5
- eventBusAdapter;
6
- validator;
7
- listenerMap = new Map();
8
- constructor(eventBusAdapter, validator) {
9
- this.eventBusAdapter = eventBusAdapter;
10
- this.validator = validator;
11
- }
12
- async addListener(event, listener) {
13
- let wrappedListener = this.listenerMap.get(listener);
14
- if (wrappedListener === undefined) {
15
- wrappedListener = async (event) => {
16
- await listener(this.validator(event));
17
- };
18
- this.listenerMap.set(listener, wrappedListener);
19
- }
20
- await this.eventBusAdapter.addListener(event, wrappedListener);
21
- }
22
- async removeListener(event, listener) {
23
- const wrappedListener = this.listenerMap.get(listener);
24
- if (wrappedListener === undefined) {
25
- return;
26
- }
27
- await this.eventBusAdapter.removeListener(event, wrappedListener);
28
- this.listenerMap.delete(listener);
29
- }
30
- async dispatch(events) {
31
- await this.eventBusAdapter.dispatch(events.map(this.validator));
32
- }
33
- }
34
- exports.WithValidationEventBusAdapter = WithValidationEventBusAdapter;
35
- //# sourceMappingURL=with-validation-event-bus-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"with-validation-event-bus-adapter.js","sourceRoot":"","sources":["../../../../../src/event-bus/implementations/derivables/with-validation-event-bus-adapter.ts"],"names":[],"mappings":";;;AAcA,MAAa,6BAA6B;IAOjB;IACA;IAPJ,WAAW,GAAG,IAAI,GAAG,EAGnC,CAAC;IAEJ,YACqB,eAAiC,EACjC,SAAgC;QADhC,oBAAe,GAAf,eAAe,CAAkB;QACjC,cAAS,GAAT,SAAS,CAAuB;IAClD,CAAC;IAEJ,KAAK,CAAC,WAAW,CACb,KAAa,EACb,QAA8B;QAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,eAAe,GAAG,KAAK,EAAE,KAAiB,EAAE,EAAE;gBAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,KAAa,EACb,QAA8B;QAE9B,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ;AA1CD,sEA0CC"}
@@ -1,31 +0,0 @@
1
- export class WithValidationEventBusAdapter {
2
- eventBusAdapter;
3
- validator;
4
- listenerMap = new Map();
5
- constructor(eventBusAdapter, validator) {
6
- this.eventBusAdapter = eventBusAdapter;
7
- this.validator = validator;
8
- }
9
- async addListener(event, listener) {
10
- let wrappedListener = this.listenerMap.get(listener);
11
- if (wrappedListener === undefined) {
12
- wrappedListener = async (event) => {
13
- await listener(this.validator(event));
14
- };
15
- this.listenerMap.set(listener, wrappedListener);
16
- }
17
- await this.eventBusAdapter.addListener(event, wrappedListener);
18
- }
19
- async removeListener(event, listener) {
20
- const wrappedListener = this.listenerMap.get(listener);
21
- if (wrappedListener === undefined) {
22
- return;
23
- }
24
- await this.eventBusAdapter.removeListener(event, wrappedListener);
25
- this.listenerMap.delete(listener);
26
- }
27
- async dispatch(events) {
28
- await this.eventBusAdapter.dispatch(events.map(this.validator));
29
- }
30
- }
31
- //# sourceMappingURL=with-validation-event-bus-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"with-validation-event-bus-adapter.js","sourceRoot":"","sources":["../../../../../src/event-bus/implementations/derivables/with-validation-event-bus-adapter.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,6BAA6B;IAOjB;IACA;IAPJ,WAAW,GAAG,IAAI,GAAG,EAGnC,CAAC;IAEJ,YACqB,eAAiC,EACjC,SAAgC;QADhC,oBAAe,GAAf,eAAe,CAAkB;QACjC,cAAS,GAAT,SAAS,CAAuB;IAClD,CAAC;IAEJ,KAAK,CAAC,WAAW,CACb,KAAa,EACb,QAA8B;QAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,eAAe,GAAG,KAAK,EAAE,KAAiB,EAAE,EAAE;gBAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,KAAa,EACb,QAA8B;QAE9B,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ"}
@@ -1,17 +0,0 @@
1
- /**
2
- * @module EventBus
3
- */
4
- import type { Validator } from "../../../utilities/_module";
5
- import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../event-bus/contracts/_module";
6
- /**
7
- * @internal
8
- */
9
- export declare class WithValidationEventBusAdapter implements IEventBusAdapter {
10
- private readonly eventBusAdapter;
11
- private readonly validator;
12
- private readonly listenerMap;
13
- constructor(eventBusAdapter: IEventBusAdapter, validator: Validator<IBaseEvent>);
14
- addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
15
- removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
16
- dispatch(events: IBaseEvent[]): Promise<void>;
17
- }