@zudojs/events 0.0.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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/eventBus/eventBus.core.d.ts +55 -0
  5. package/dist/eventBus/eventBus.core.d.ts.map +1 -0
  6. package/dist/eventBus/eventBus.core.js +175 -0
  7. package/dist/eventBus/eventBus.core.js.map +1 -0
  8. package/dist/eventBus/eventBus.factory.d.ts +14 -0
  9. package/dist/eventBus/eventBus.factory.d.ts.map +1 -0
  10. package/dist/eventBus/eventBus.factory.js +17 -0
  11. package/dist/eventBus/eventBus.factory.js.map +1 -0
  12. package/dist/eventBus/eventBus.publish.d.ts +17 -0
  13. package/dist/eventBus/eventBus.publish.d.ts.map +1 -0
  14. package/dist/eventBus/eventBus.publish.js +78 -0
  15. package/dist/eventBus/eventBus.publish.js.map +1 -0
  16. package/dist/eventBus/eventBus.registration.d.ts +47 -0
  17. package/dist/eventBus/eventBus.registration.d.ts.map +1 -0
  18. package/dist/eventBus/eventBus.registration.js +84 -0
  19. package/dist/eventBus/eventBus.registration.js.map +1 -0
  20. package/dist/eventBus/eventBus.type.d.ts +50 -0
  21. package/dist/eventBus/eventBus.type.d.ts.map +1 -0
  22. package/dist/eventBus/eventBus.type.js +10 -0
  23. package/dist/eventBus/eventBus.type.js.map +1 -0
  24. package/dist/eventBus/index.d.ts +9 -0
  25. package/dist/eventBus/index.d.ts.map +1 -0
  26. package/dist/eventBus/index.js +9 -0
  27. package/dist/eventBus/index.js.map +1 -0
  28. package/dist/eventEmitter/eventEmitter.abort.d.ts +8 -0
  29. package/dist/eventEmitter/eventEmitter.abort.d.ts.map +1 -0
  30. package/dist/eventEmitter/eventEmitter.abort.js +12 -0
  31. package/dist/eventEmitter/eventEmitter.abort.js.map +1 -0
  32. package/dist/eventEmitter/eventEmitter.core.d.ts +38 -0
  33. package/dist/eventEmitter/eventEmitter.core.d.ts.map +1 -0
  34. package/dist/eventEmitter/eventEmitter.core.js +151 -0
  35. package/dist/eventEmitter/eventEmitter.core.js.map +1 -0
  36. package/dist/eventEmitter/eventEmitter.parallel.d.ts +12 -0
  37. package/dist/eventEmitter/eventEmitter.parallel.d.ts.map +1 -0
  38. package/dist/eventEmitter/eventEmitter.parallel.js +50 -0
  39. package/dist/eventEmitter/eventEmitter.parallel.js.map +1 -0
  40. package/dist/eventEmitter/eventEmitter.sequential.d.ts +12 -0
  41. package/dist/eventEmitter/eventEmitter.sequential.d.ts.map +1 -0
  42. package/dist/eventEmitter/eventEmitter.sequential.js +44 -0
  43. package/dist/eventEmitter/eventEmitter.sequential.js.map +1 -0
  44. package/dist/eventEmitter/eventEmitter.type.d.ts +43 -0
  45. package/dist/eventEmitter/eventEmitter.type.d.ts.map +1 -0
  46. package/dist/eventEmitter/eventEmitter.type.js +14 -0
  47. package/dist/eventEmitter/eventEmitter.type.js.map +1 -0
  48. package/dist/eventEmitter/index.d.ts +11 -0
  49. package/dist/eventEmitter/index.d.ts.map +1 -0
  50. package/dist/eventEmitter/index.js +11 -0
  51. package/dist/eventEmitter/index.js.map +1 -0
  52. package/dist/eventErrors/eventError.base.d.ts +8 -0
  53. package/dist/eventErrors/eventError.base.d.ts.map +1 -0
  54. package/dist/eventErrors/eventError.base.js +8 -0
  55. package/dist/eventErrors/eventError.base.js.map +1 -0
  56. package/dist/eventErrors/index.d.ts +7 -0
  57. package/dist/eventErrors/index.d.ts.map +1 -0
  58. package/dist/eventErrors/index.js +7 -0
  59. package/dist/eventErrors/index.js.map +1 -0
  60. package/dist/eventHandler/eventHandler.core.d.ts +204 -0
  61. package/dist/eventHandler/eventHandler.core.d.ts.map +1 -0
  62. package/dist/eventHandler/eventHandler.core.js +182 -0
  63. package/dist/eventHandler/eventHandler.core.js.map +1 -0
  64. package/dist/eventHandler/index.d.ts +7 -0
  65. package/dist/eventHandler/index.d.ts.map +1 -0
  66. package/dist/eventHandler/index.js +7 -0
  67. package/dist/eventHandler/index.js.map +1 -0
  68. package/dist/eventMiddleware/eventMiddleware.builder.d.ts +47 -0
  69. package/dist/eventMiddleware/eventMiddleware.builder.d.ts.map +1 -0
  70. package/dist/eventMiddleware/eventMiddleware.builder.js +109 -0
  71. package/dist/eventMiddleware/eventMiddleware.builder.js.map +1 -0
  72. package/dist/eventMiddleware/eventMiddleware.helper.d.ts +38 -0
  73. package/dist/eventMiddleware/eventMiddleware.helper.d.ts.map +1 -0
  74. package/dist/eventMiddleware/eventMiddleware.helper.js +86 -0
  75. package/dist/eventMiddleware/eventMiddleware.helper.js.map +1 -0
  76. package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts +18 -0
  77. package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts.map +1 -0
  78. package/dist/eventMiddleware/eventMiddleware.pipeline.js +93 -0
  79. package/dist/eventMiddleware/eventMiddleware.pipeline.js.map +1 -0
  80. package/dist/eventMiddleware/eventMiddleware.type.d.ts +49 -0
  81. package/dist/eventMiddleware/eventMiddleware.type.d.ts.map +1 -0
  82. package/dist/eventMiddleware/eventMiddleware.type.js +5 -0
  83. package/dist/eventMiddleware/eventMiddleware.type.js.map +1 -0
  84. package/dist/eventMiddleware/index.d.ts +10 -0
  85. package/dist/eventMiddleware/index.d.ts.map +1 -0
  86. package/dist/eventMiddleware/index.js +10 -0
  87. package/dist/eventMiddleware/index.js.map +1 -0
  88. package/dist/eventRegistry/eventRegistry.lifecycle.d.ts +19 -0
  89. package/dist/eventRegistry/eventRegistry.lifecycle.d.ts.map +1 -0
  90. package/dist/eventRegistry/eventRegistry.lifecycle.js +45 -0
  91. package/dist/eventRegistry/eventRegistry.lifecycle.js.map +1 -0
  92. package/dist/eventRegistry/eventRegistry.queries.d.ts +23 -0
  93. package/dist/eventRegistry/eventRegistry.queries.d.ts.map +1 -0
  94. package/dist/eventRegistry/eventRegistry.queries.js +35 -0
  95. package/dist/eventRegistry/eventRegistry.queries.js.map +1 -0
  96. package/dist/eventRegistry/eventRegistry.registration.d.ts +29 -0
  97. package/dist/eventRegistry/eventRegistry.registration.d.ts.map +1 -0
  98. package/dist/eventRegistry/eventRegistry.registration.js +104 -0
  99. package/dist/eventRegistry/eventRegistry.registration.js.map +1 -0
  100. package/dist/eventRegistry/eventRegistry.store.d.ts +52 -0
  101. package/dist/eventRegistry/eventRegistry.store.d.ts.map +1 -0
  102. package/dist/eventRegistry/eventRegistry.store.js +124 -0
  103. package/dist/eventRegistry/eventRegistry.store.js.map +1 -0
  104. package/dist/eventRegistry/eventRegistry.type.d.ts +28 -0
  105. package/dist/eventRegistry/eventRegistry.type.d.ts.map +1 -0
  106. package/dist/eventRegistry/eventRegistry.type.js +11 -0
  107. package/dist/eventRegistry/eventRegistry.type.js.map +1 -0
  108. package/dist/eventRegistry/index.d.ts +11 -0
  109. package/dist/eventRegistry/index.d.ts.map +1 -0
  110. package/dist/eventRegistry/index.js +11 -0
  111. package/dist/eventRegistry/index.js.map +1 -0
  112. package/dist/eventSubscription/eventSubscription.core.d.ts +149 -0
  113. package/dist/eventSubscription/eventSubscription.core.d.ts.map +1 -0
  114. package/dist/eventSubscription/eventSubscription.core.js +174 -0
  115. package/dist/eventSubscription/eventSubscription.core.js.map +1 -0
  116. package/dist/eventSubscription/index.d.ts +7 -0
  117. package/dist/eventSubscription/index.d.ts.map +1 -0
  118. package/dist/eventSubscription/index.js +7 -0
  119. package/dist/eventSubscription/index.js.map +1 -0
  120. package/dist/eventTypes/eventDefinition.type.d.ts +180 -0
  121. package/dist/eventTypes/eventDefinition.type.d.ts.map +1 -0
  122. package/dist/eventTypes/eventDefinition.type.js +140 -0
  123. package/dist/eventTypes/eventDefinition.type.js.map +1 -0
  124. package/dist/eventTypes/eventPayload.type.d.ts +126 -0
  125. package/dist/eventTypes/eventPayload.type.d.ts.map +1 -0
  126. package/dist/eventTypes/eventPayload.type.js +167 -0
  127. package/dist/eventTypes/eventPayload.type.js.map +1 -0
  128. package/dist/eventTypes/eventType.type.d.ts +157 -0
  129. package/dist/eventTypes/eventType.type.d.ts.map +1 -0
  130. package/dist/eventTypes/eventType.type.js +244 -0
  131. package/dist/eventTypes/eventType.type.js.map +1 -0
  132. package/dist/eventTypes/index.d.ts +9 -0
  133. package/dist/eventTypes/index.d.ts.map +1 -0
  134. package/dist/eventTypes/index.js +9 -0
  135. package/dist/eventTypes/index.js.map +1 -0
  136. package/dist/index.d.ts +14 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +14 -0
  139. package/dist/index.js.map +1 -0
  140. package/package.json +51 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Event bus core class for Zudojs.
3
+ */
4
+ import { EventEmitter } from "../eventEmitter/eventEmitter.core.js";
5
+ import { EventErrorMode } from "../eventEmitter/eventEmitter.type.js";
6
+ import { EventRegistry } from "../eventRegistry/eventRegistry.store.js";
7
+ import { EventError, toEventError } from "../eventErrors/eventError.base.js";
8
+ import { EventBusState } from "./eventBus.type.js";
9
+ export { EventBusState } from "./eventBus.type.js";
10
+ import { busOn, busOnce, busOnAny, busOff, busUse, registerMiddlewareItem, } from "./eventBus.registration.js";
11
+ import { busPublish, busPublishEvent } from "./eventBus.publish.js";
12
+ /**
13
+ * High-level event bus.
14
+ */
15
+ export class EventBus {
16
+ emitter;
17
+ registry;
18
+ options;
19
+ busMiddleware;
20
+ listeners = new Set();
21
+ state = EventBusState.CREATED;
22
+ constructor(options = {}) {
23
+ this.options = {
24
+ requireRegistration: options.requireRegistration ?? false,
25
+ };
26
+ this.registry = new EventRegistry(options.registry);
27
+ this.emitter = new EventEmitter({
28
+ ...options.emitter,
29
+ errorMode: options.emitter?.errorMode ?? EventErrorMode.CONTINUE,
30
+ });
31
+ this.busMiddleware = (options.middleware ?? []).map((m, index) => registerMiddlewareItem(m, index));
32
+ }
33
+ start() {
34
+ this.ensureNotDisposed();
35
+ if (this.state === EventBusState.ACTIVE) {
36
+ return this;
37
+ }
38
+ this.state = EventBusState.ACTIVE;
39
+ this.notify({
40
+ type: "started",
41
+ timestamp: new Date(),
42
+ });
43
+ return this;
44
+ }
45
+ stop() {
46
+ this.ensureNotDisposed();
47
+ if (this.state !== EventBusState.ACTIVE) {
48
+ return this;
49
+ }
50
+ this.state = EventBusState.CREATED;
51
+ this.notify({
52
+ type: "stopped",
53
+ timestamp: new Date(),
54
+ });
55
+ return this;
56
+ }
57
+ register(definition) {
58
+ this.ensureUsable();
59
+ return this.registry.register(definition);
60
+ }
61
+ on(eventType, handler, options = {}) {
62
+ return busOn(this.emitter, eventType, handler, options, () => this.ensureUsable());
63
+ }
64
+ once(eventType, handler, options = {}) {
65
+ return busOnce(this.emitter, eventType, handler, options, () => this.ensureUsable());
66
+ }
67
+ onAny(handler, options = {}) {
68
+ return busOnAny(this.emitter, handler, options, () => this.ensureUsable());
69
+ }
70
+ off(subscription) {
71
+ return busOff(this.emitter, subscription, () => this.ensureNotDisposed());
72
+ }
73
+ use(middleware, options = {}) {
74
+ this.ensureNotDisposed();
75
+ return busUse(this.busMiddleware, middleware, options);
76
+ }
77
+ async publish(event, options = {}) {
78
+ return busPublish(event, options, this.emitter, this.registry, this.busMiddleware, this.options.requireRegistration, () => this.ensureUsable(), (e) => this.notify(e));
79
+ }
80
+ async publishEvent(input, options = {}) {
81
+ return busPublishEvent(input, options, this.emitter, this.registry, this.busMiddleware, this.options.requireRegistration, () => this.ensureUsable(), (e) => this.notify(e));
82
+ }
83
+ async emit(event, options = {}) {
84
+ return this.publish(event, options);
85
+ }
86
+ getDefinition(eventType) {
87
+ this.ensureUsable();
88
+ return this.registry.get(eventType);
89
+ }
90
+ hasEvent(eventType) {
91
+ this.ensureUsable();
92
+ return this.registry.has(eventType);
93
+ }
94
+ unregister(eventType) {
95
+ this.ensureUsable();
96
+ return this.registry.unregister(eventType);
97
+ }
98
+ getRegistry() {
99
+ this.ensureUsable();
100
+ return this.registry;
101
+ }
102
+ getEmitter() {
103
+ this.ensureUsable();
104
+ return this.emitter;
105
+ }
106
+ getDefinitions() {
107
+ this.ensureUsable();
108
+ return this.registry.getDefinitions();
109
+ }
110
+ getHandlers() {
111
+ this.ensureUsable();
112
+ return this.emitter.getRegistrations();
113
+ }
114
+ getState() {
115
+ return this.state;
116
+ }
117
+ isActive() {
118
+ return this.state === EventBusState.ACTIVE;
119
+ }
120
+ get eventCount() {
121
+ return this.registry.eventCount;
122
+ }
123
+ get handlerCount() {
124
+ return this.emitter.listenerCount;
125
+ }
126
+ subscribe(listener) {
127
+ this.ensureNotDisposed();
128
+ this.listeners.add(listener);
129
+ return () => {
130
+ this.listeners.delete(listener);
131
+ };
132
+ }
133
+ dispose() {
134
+ if (this.state === EventBusState.DISPOSED) {
135
+ return;
136
+ }
137
+ this.emitter.dispose();
138
+ this.registry.dispose();
139
+ this.listeners.clear();
140
+ this.state = EventBusState.DISPOSED;
141
+ }
142
+ toError(error, event) {
143
+ return toEventError(error, {
144
+ eventType: event?.type,
145
+ eventId: event?.id,
146
+ });
147
+ }
148
+ ensureUsable() {
149
+ this.ensureNotDisposed();
150
+ if (this.state === EventBusState.CREATED) {
151
+ this.start();
152
+ }
153
+ }
154
+ ensureNotDisposed() {
155
+ if (this.state === EventBusState.DISPOSED) {
156
+ throw new EventError("Event bus has already been disposed.", {
157
+ code: "EVENT_BUS_DISPOSED",
158
+ });
159
+ }
160
+ }
161
+ notify(event) {
162
+ for (const listener of this.listeners) {
163
+ try {
164
+ listener(event);
165
+ }
166
+ catch {
167
+ /**
168
+ * Observers must never be able to break
169
+ * event bus operations.
170
+ */
171
+ }
172
+ }
173
+ }
174
+ }
175
+ //# sourceMappingURL=eventBus.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.core.js","sourceRoot":"","sources":["../../src/eventBus/eventBus.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Event bus factory functions for Zudojs.
3
+ */
4
+ import type { EventBusOptions } from "./eventBus.type.js";
5
+ import { EventBus } from "./eventBus.core.js";
6
+ /**
7
+ * Creates an EventBus.
8
+ */
9
+ export declare function createEventBus(options?: EventBusOptions): EventBus;
10
+ /**
11
+ * Creates and starts an EventBus.
12
+ */
13
+ export declare function createStartedEventBus(options?: EventBusOptions): EventBus;
14
+ //# sourceMappingURL=eventBus.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.factory.d.ts","sourceRoot":"","sources":["../../src/eventBus/eventBus.factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAEtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAE7E"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Event bus factory functions for Zudojs.
3
+ */
4
+ import { EventBus } from "./eventBus.core.js";
5
+ /**
6
+ * Creates an EventBus.
7
+ */
8
+ export function createEventBus(options = {}) {
9
+ return new EventBus(options);
10
+ }
11
+ /**
12
+ * Creates and starts an EventBus.
13
+ */
14
+ export function createStartedEventBus(options = {}) {
15
+ return new EventBus(options).start();
16
+ }
17
+ //# sourceMappingURL=eventBus.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.factory.js","sourceRoot":"","sources":["../../src/eventBus/eventBus.factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAoB,EAAE;IAC1D,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAO,GAAoB,EAAE;IACjE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Event bus publish methods for Zudojs.
3
+ */
4
+ import type { Event, EventInput } from "../eventTypes/eventDefinition.type.js";
5
+ import { EventEmitter } from "../eventEmitter/eventEmitter.core.js";
6
+ import { EventRegistry } from "../eventRegistry/eventRegistry.store.js";
7
+ import type { RegisteredEventMiddleware } from "../eventMiddleware/eventMiddleware.type.js";
8
+ import type { PublishOptions, EventPublishResult, EventBusEvent } from "./eventBus.type.js";
9
+ /**
10
+ * Publishes an event through the bus.
11
+ */
12
+ export declare function busPublish<TEvent extends Event>(event: TEvent, options: PublishOptions, emitter: EventEmitter, registry: EventRegistry, busMiddleware: RegisteredEventMiddleware[], requireRegistration: boolean, ensureUsable: () => void, notify: (e: EventBusEvent) => void): Promise<EventPublishResult<TEvent>>;
13
+ /**
14
+ * Creates and publishes an event from input data.
15
+ */
16
+ export declare function busPublishEvent<TPayload>(input: EventInput<TPayload>, options: PublishOptions, emitter: EventEmitter, registry: EventRegistry, busMiddleware: RegisteredEventMiddleware[], requireRegistration: boolean, ensureUsable: () => void, notify: (e: EventBusEvent) => void): Promise<EventPublishResult<Event<TPayload>>>;
17
+ //# sourceMappingURL=eventBus.publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.publish.d.ts","sourceRoot":"","sources":["../../src/eventBus/eventBus.publish.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EAEX,MAAM,uCAAuC,CAAC;AAM/C,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAQxE,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,4CAA4C,CAAC;AAMpD,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,SAAS,KAAK,EACnD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,yBAAyB,EAAE,EAC1C,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GACjC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CA4FrC;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAC5C,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,yBAAyB,EAAE,EAC1C,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GACjC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAa9C"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Event bus publish methods for Zudojs.
3
+ */
4
+ import { createEvent } from "../eventTypes/eventDefinition.type.js";
5
+ import { EventEmitter } from "../eventEmitter/eventEmitter.core.js";
6
+ import { EventRegistry } from "../eventRegistry/eventRegistry.store.js";
7
+ import { EventDispatchAbortedError, EventError, toEventError, } from "../eventErrors/eventError.base.js";
8
+ import { createEventMiddlewareContext } from "../eventMiddleware/eventMiddleware.helper.js";
9
+ import { executeEventMiddlewarePipeline } from "../eventMiddleware/eventMiddleware.pipeline.js";
10
+ import { registerMiddlewareItem } from "./eventBus.registration.js";
11
+ /**
12
+ * Publishes an event through the bus.
13
+ */
14
+ export async function busPublish(event, options, emitter, registry, busMiddleware, requireRegistration, ensureUsable, notify) {
15
+ ensureUsable();
16
+ if (options.signal?.aborted) {
17
+ throw new EventDispatchAbortedError("Event dispatch was aborted.", {
18
+ eventType: event?.type,
19
+ eventId: event?.id,
20
+ });
21
+ }
22
+ if (requireRegistration && !registry.has(event.type)) {
23
+ throw new EventError(`Event type "${event.type}" is not registered.`, {
24
+ eventType: event.type,
25
+ eventId: event.id,
26
+ });
27
+ }
28
+ const allMiddleware = [
29
+ ...busMiddleware,
30
+ ...(options.middleware ?? []).map((m, index) => registerMiddlewareItem(m, index + busMiddleware.length)),
31
+ ];
32
+ const middlewareContext = createEventMiddlewareContext(event, {
33
+ signal: options.signal,
34
+ metadata: options.metadata,
35
+ });
36
+ const terminal = async () => {
37
+ return emitter.emit(event, {
38
+ mode: options.mode,
39
+ errorMode: options.errorMode,
40
+ signal: options.signal,
41
+ metadata: options.metadata,
42
+ });
43
+ };
44
+ let result;
45
+ let middlewareResult;
46
+ if (allMiddleware.length > 0) {
47
+ const pipelineResult = await executeEventMiddlewarePipeline(allMiddleware, middlewareContext, terminal);
48
+ result = pipelineResult.result;
49
+ middlewareResult = {
50
+ result: pipelineResult.result,
51
+ executions: pipelineResult.executions,
52
+ };
53
+ }
54
+ else {
55
+ result = await terminal();
56
+ }
57
+ notify({
58
+ type: "published",
59
+ event,
60
+ timestamp: new Date(),
61
+ });
62
+ return {
63
+ event,
64
+ handled: result.handled,
65
+ handlerCount: result.results.length,
66
+ results: result.results.map((execution) => execution.result),
67
+ errors: result.errors,
68
+ middlewareExecutions: middlewareResult?.executions,
69
+ };
70
+ }
71
+ /**
72
+ * Creates and publishes an event from input data.
73
+ */
74
+ export async function busPublishEvent(input, options, emitter, registry, busMiddleware, requireRegistration, ensureUsable, notify) {
75
+ const event = createEvent(input);
76
+ return busPublish(event, options, emitter, registry, busMiddleware, requireRegistration, ensureUsable, notify);
77
+ }
78
+ //# sourceMappingURL=eventBus.publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.publish.js","sourceRoot":"","sources":["../../src/eventBus/eventBus.publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Event bus registration and subscription methods for Zudojs.
3
+ */
4
+ import type { Event, EventDefinition, EventType } from "../eventTypes/eventDefinition.type.js";
5
+ import type { EventTypePattern } from "../eventTypes/eventType.type.js";
6
+ import type { EventHandlerLike, EventHandlerOptions } from "../eventHandler/eventHandler.core.js";
7
+ import type { EventSubscription } from "../eventSubscription/eventSubscription.core.js";
8
+ import type { EventMiddlewareLike, EventMiddlewareOptions, RegisteredEventMiddleware } from "../eventMiddleware/eventMiddleware.type.js";
9
+ /**
10
+ * Registers an event definition on the given registry.
11
+ */
12
+ export declare function busRegister<TType extends EventType, TPayload>(registry: {
13
+ register: Function;
14
+ }, definition: EventDefinition<TType, TPayload>, ensureUsable: () => void): any;
15
+ /**
16
+ * Registers a handler on the emitter.
17
+ */
18
+ export declare function busOn<TEvent extends Event = Event>(emitter: {
19
+ on: (eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType">) => EventSubscription;
20
+ }, eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType"> | undefined, ensureUsable: () => void): EventSubscription;
21
+ /**
22
+ * Registers a one-time handler.
23
+ */
24
+ export declare function busOnce<TEvent extends Event = Event>(emitter: {
25
+ on: (eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType">) => EventSubscription;
26
+ }, eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType" | "once"> | undefined, ensureUsable: () => void): EventSubscription;
27
+ /**
28
+ * Registers a wildcard handler.
29
+ */
30
+ export declare function busOnAny<TEvent extends Event = Event>(emitter: {
31
+ on: (eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType">) => EventSubscription;
32
+ }, handler: EventHandlerLike<TEvent>, options: Omit<EventHandlerOptions, "eventType"> | undefined, ensureUsable: () => void): EventSubscription;
33
+ /**
34
+ * Removes a handler.
35
+ */
36
+ export declare function busOff(emitter: {
37
+ off: (subscription: EventSubscription) => boolean;
38
+ }, subscription: EventSubscription, ensureNotDisposed: () => void): boolean;
39
+ /**
40
+ * Adds middleware to the bus.
41
+ */
42
+ export declare function busUse(busMiddleware: RegisteredEventMiddleware[], middleware: EventMiddlewareLike, options?: EventMiddlewareOptions): () => void;
43
+ /**
44
+ * Normalizes a middleware item into a RegisteredEventMiddleware.
45
+ */
46
+ export declare function registerMiddlewareItem(item: EventMiddlewareLike, index: number): RegisteredEventMiddleware;
47
+ //# sourceMappingURL=eventBus.registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.registration.d.ts","sourceRoot":"","sources":["../../src/eventBus/eventBus.registration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Event bus registration and subscription methods for Zudojs.
3
+ */
4
+ import { createEventMiddlewareId, isFunctionEventMiddleware, isObjectEventMiddleware, } from "../eventMiddleware/eventMiddleware.helper.js";
5
+ /**
6
+ * Registers an event definition on the given registry.
7
+ */
8
+ export function busRegister(registry, definition, ensureUsable) {
9
+ ensureUsable();
10
+ return registry.register(definition);
11
+ }
12
+ /**
13
+ * Registers a handler on the emitter.
14
+ */
15
+ export function busOn(emitter, eventType, handler, options = {}, ensureUsable) {
16
+ ensureUsable();
17
+ return emitter.on(eventType, handler, options);
18
+ }
19
+ /**
20
+ * Registers a one-time handler.
21
+ */
22
+ export function busOnce(emitter, eventType, handler, options = {}, ensureUsable) {
23
+ return busOn(emitter, eventType, handler, {
24
+ ...options,
25
+ once: true,
26
+ }, ensureUsable);
27
+ }
28
+ /**
29
+ * Registers a wildcard handler.
30
+ */
31
+ export function busOnAny(emitter, handler, options = {}, ensureUsable) {
32
+ return busOn(emitter, "*", handler, options, ensureUsable);
33
+ }
34
+ /**
35
+ * Removes a handler.
36
+ */
37
+ export function busOff(emitter, subscription, ensureNotDisposed) {
38
+ ensureNotDisposed();
39
+ return emitter.off(subscription);
40
+ }
41
+ /**
42
+ * Adds middleware to the bus.
43
+ */
44
+ export function busUse(busMiddleware, middleware, options = {}) {
45
+ const id = options.id ?? createEventMiddlewareId();
46
+ const registered = {
47
+ id,
48
+ description: options.description,
49
+ priority: options.priority ?? 0,
50
+ enabled: options.enabled ?? true,
51
+ middleware,
52
+ };
53
+ busMiddleware.push(registered);
54
+ return () => {
55
+ const idx = busMiddleware.indexOf(registered);
56
+ if (idx >= 0) {
57
+ busMiddleware.splice(idx, 1);
58
+ }
59
+ };
60
+ }
61
+ /**
62
+ * Normalizes a middleware item into a RegisteredEventMiddleware.
63
+ */
64
+ export function registerMiddlewareItem(item, index) {
65
+ const id = `bus-mw-${index}`;
66
+ if (isFunctionEventMiddleware(item)) {
67
+ return {
68
+ id,
69
+ priority: 0,
70
+ enabled: true,
71
+ middleware: item,
72
+ };
73
+ }
74
+ if (isObjectEventMiddleware(item)) {
75
+ return {
76
+ id,
77
+ priority: 0,
78
+ enabled: true,
79
+ middleware: item,
80
+ };
81
+ }
82
+ return item;
83
+ }
84
+ //# sourceMappingURL=eventBus.registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.registration.js","sourceRoot":"","sources":["../../src/eventBus/eventBus.registration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,8CAA8C,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgC,EAChC,UAA4C,EAC5C,YAAwB;IAExB,YAAY,EAAE,CAAC;IAEf,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,OAMC,EACD,SAA2B,EAC3B,OAAiC,EACjC,OAAO,GAA2C,EAAE,EACpD,YAAwB;IAExB,YAAY,EAAE,CAAC;IAEf,OAAO,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,OAMC,EACD,SAA2B,EAC3B,OAAiC,EACjC,OAAO,GAAoD,EAAE,EAC7D,YAAwB;IAExB,OAAO,KAAK,CACV,OAAO,EACP,SAAS,EACT,OAAO,EACP;QACE,GAAG,OAAO;QACV,IAAI,EAAE,IAAI;KACX,EACD,YAAY,CACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,OAMC,EACD,OAAiC,EACjC,OAAO,GAA2C,EAAE,EACpD,YAAwB;IAExB,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CACpB,OAEC,EACD,YAA+B,EAC/B,iBAA6B;IAE7B,iBAAiB,EAAE,CAAC;IAEpB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CACpB,aAA0C,EAC1C,UAA+B,EAC/B,OAAO,GAA2B,EAAE;IAEpC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,uBAAuB,EAAE,CAAC;IAEnD,MAAM,UAAU,GAA8B;QAC5C,EAAE;QACF,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAChC,UAAU;KACX,CAAC;IAEF,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/B,OAAO,GAAG,EAAE;QACV,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAyB,EACzB,KAAa;IAEb,MAAM,EAAE,GAAG,UAAU,KAAK,EAAE,CAAC;IAE7B,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,OAAO,IAAiC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Event bus type definitions for Zudojs.
3
+ */
4
+ import type { Event } from "../eventTypes/eventDefinition.type.js";
5
+ import type { EventEmitterMode, EventErrorMode } from "../eventEmitter/eventEmitter.type.js";
6
+ import type { EventMiddlewareLike } from "../eventMiddleware/eventMiddleware.type.js";
7
+ export interface EventBusOptions {
8
+ readonly emitter?: {
9
+ readonly mode?: EventEmitterMode;
10
+ readonly errorMode?: EventErrorMode;
11
+ readonly freezeEvents?: boolean;
12
+ };
13
+ readonly registry?: {
14
+ readonly allowDuplicateDefinitions?: boolean;
15
+ readonly allowDuplicateHandlerIds?: boolean;
16
+ };
17
+ readonly requireRegistration?: boolean;
18
+ readonly middleware?: readonly EventMiddlewareLike[];
19
+ }
20
+ export interface PublishOptions {
21
+ readonly mode?: EventEmitterMode;
22
+ readonly errorMode?: EventErrorMode;
23
+ readonly signal?: AbortSignal;
24
+ readonly metadata?: Readonly<Record<string, unknown>>;
25
+ readonly middleware?: readonly EventMiddlewareLike[];
26
+ }
27
+ export interface EventPublishResult<TEvent extends Event = Event> {
28
+ readonly event: TEvent;
29
+ readonly handled: boolean;
30
+ readonly handlerCount: number;
31
+ readonly results: readonly unknown[];
32
+ readonly errors: readonly unknown[];
33
+ readonly middlewareExecutions?: readonly {
34
+ readonly middlewareId: string;
35
+ readonly result: unknown;
36
+ readonly duration: number;
37
+ }[];
38
+ }
39
+ export declare enum EventBusState {
40
+ CREATED = "created",
41
+ ACTIVE = "active",
42
+ DISPOSED = "disposed"
43
+ }
44
+ export interface EventBusEvent {
45
+ readonly type: "started" | "stopped" | "published";
46
+ readonly event?: Event;
47
+ readonly timestamp: Date;
48
+ }
49
+ export type EventBusListener = (event: EventBusEvent) => void;
50
+ //# sourceMappingURL=eventBus.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.type.d.ts","sourceRoot":"","sources":["../../src/eventBus/eventBus.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;QACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QAC7C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS;QACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,EAAE,CAAC;CACL;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Event bus type definitions for Zudojs.
3
+ */
4
+ export var EventBusState;
5
+ (function (EventBusState) {
6
+ EventBusState["CREATED"] = "created";
7
+ EventBusState["ACTIVE"] = "active";
8
+ EventBusState["DISPOSED"] = "disposed";
9
+ })(EventBusState || (EventBusState = {}));
10
+ //# sourceMappingURL=eventBus.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBus.type.js","sourceRoot":"","sources":["../../src/eventBus/eventBus.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8CH,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @zudojs/events/eventBus
3
+ *
4
+ * Event bus for publishing and subscribing to events.
5
+ */
6
+ export * from "./eventBus.type.js";
7
+ export * from "./eventBus.core.js";
8
+ export * from "./eventBus.factory.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eventBus/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @zudojs/events/eventBus
3
+ *
4
+ * Event bus for publishing and subscribing to events.
5
+ */
6
+ export * from "./eventBus.type.js";
7
+ export * from "./eventBus.core.js";
8
+ export * from "./eventBus.factory.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eventBus/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Event emitter abort error helper for Zudojs.
3
+ */
4
+ /**
5
+ * Creates an AbortError consistently across runtimes.
6
+ */
7
+ export declare function createAbortError(): Error;
8
+ //# sourceMappingURL=eventEmitter.abort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventEmitter.abort.d.ts","sourceRoot":"","sources":["../../src/eventEmitter/eventEmitter.abort.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAMxC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Event emitter abort error helper for Zudojs.
3
+ */
4
+ /**
5
+ * Creates an AbortError consistently across runtimes.
6
+ */
7
+ export function createAbortError() {
8
+ const error = new Error("Event dispatch was aborted.");
9
+ error.name = "AbortError";
10
+ return error;
11
+ }
12
+ //# sourceMappingURL=eventEmitter.abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventEmitter.abort.js","sourceRoot":"","sources":["../../src/eventEmitter/eventEmitter.abort.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEvD,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;IAE1B,OAAO,KAAK,CAAC;AACf,CAAC"}