@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.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/eventBus/eventBus.core.d.ts +55 -0
- package/dist/eventBus/eventBus.core.d.ts.map +1 -0
- package/dist/eventBus/eventBus.core.js +175 -0
- package/dist/eventBus/eventBus.core.js.map +1 -0
- package/dist/eventBus/eventBus.factory.d.ts +14 -0
- package/dist/eventBus/eventBus.factory.d.ts.map +1 -0
- package/dist/eventBus/eventBus.factory.js +17 -0
- package/dist/eventBus/eventBus.factory.js.map +1 -0
- package/dist/eventBus/eventBus.publish.d.ts +17 -0
- package/dist/eventBus/eventBus.publish.d.ts.map +1 -0
- package/dist/eventBus/eventBus.publish.js +78 -0
- package/dist/eventBus/eventBus.publish.js.map +1 -0
- package/dist/eventBus/eventBus.registration.d.ts +47 -0
- package/dist/eventBus/eventBus.registration.d.ts.map +1 -0
- package/dist/eventBus/eventBus.registration.js +84 -0
- package/dist/eventBus/eventBus.registration.js.map +1 -0
- package/dist/eventBus/eventBus.type.d.ts +50 -0
- package/dist/eventBus/eventBus.type.d.ts.map +1 -0
- package/dist/eventBus/eventBus.type.js +10 -0
- package/dist/eventBus/eventBus.type.js.map +1 -0
- package/dist/eventBus/index.d.ts +9 -0
- package/dist/eventBus/index.d.ts.map +1 -0
- package/dist/eventBus/index.js +9 -0
- package/dist/eventBus/index.js.map +1 -0
- package/dist/eventEmitter/eventEmitter.abort.d.ts +8 -0
- package/dist/eventEmitter/eventEmitter.abort.d.ts.map +1 -0
- package/dist/eventEmitter/eventEmitter.abort.js +12 -0
- package/dist/eventEmitter/eventEmitter.abort.js.map +1 -0
- package/dist/eventEmitter/eventEmitter.core.d.ts +38 -0
- package/dist/eventEmitter/eventEmitter.core.d.ts.map +1 -0
- package/dist/eventEmitter/eventEmitter.core.js +151 -0
- package/dist/eventEmitter/eventEmitter.core.js.map +1 -0
- package/dist/eventEmitter/eventEmitter.parallel.d.ts +12 -0
- package/dist/eventEmitter/eventEmitter.parallel.d.ts.map +1 -0
- package/dist/eventEmitter/eventEmitter.parallel.js +50 -0
- package/dist/eventEmitter/eventEmitter.parallel.js.map +1 -0
- package/dist/eventEmitter/eventEmitter.sequential.d.ts +12 -0
- package/dist/eventEmitter/eventEmitter.sequential.d.ts.map +1 -0
- package/dist/eventEmitter/eventEmitter.sequential.js +44 -0
- package/dist/eventEmitter/eventEmitter.sequential.js.map +1 -0
- package/dist/eventEmitter/eventEmitter.type.d.ts +43 -0
- package/dist/eventEmitter/eventEmitter.type.d.ts.map +1 -0
- package/dist/eventEmitter/eventEmitter.type.js +14 -0
- package/dist/eventEmitter/eventEmitter.type.js.map +1 -0
- package/dist/eventEmitter/index.d.ts +11 -0
- package/dist/eventEmitter/index.d.ts.map +1 -0
- package/dist/eventEmitter/index.js +11 -0
- package/dist/eventEmitter/index.js.map +1 -0
- package/dist/eventErrors/eventError.base.d.ts +8 -0
- package/dist/eventErrors/eventError.base.d.ts.map +1 -0
- package/dist/eventErrors/eventError.base.js +8 -0
- package/dist/eventErrors/eventError.base.js.map +1 -0
- package/dist/eventErrors/index.d.ts +7 -0
- package/dist/eventErrors/index.d.ts.map +1 -0
- package/dist/eventErrors/index.js +7 -0
- package/dist/eventErrors/index.js.map +1 -0
- package/dist/eventHandler/eventHandler.core.d.ts +204 -0
- package/dist/eventHandler/eventHandler.core.d.ts.map +1 -0
- package/dist/eventHandler/eventHandler.core.js +182 -0
- package/dist/eventHandler/eventHandler.core.js.map +1 -0
- package/dist/eventHandler/index.d.ts +7 -0
- package/dist/eventHandler/index.d.ts.map +1 -0
- package/dist/eventHandler/index.js +7 -0
- package/dist/eventHandler/index.js.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.builder.d.ts +47 -0
- package/dist/eventMiddleware/eventMiddleware.builder.d.ts.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.builder.js +109 -0
- package/dist/eventMiddleware/eventMiddleware.builder.js.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.helper.d.ts +38 -0
- package/dist/eventMiddleware/eventMiddleware.helper.d.ts.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.helper.js +86 -0
- package/dist/eventMiddleware/eventMiddleware.helper.js.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts +18 -0
- package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.pipeline.js +93 -0
- package/dist/eventMiddleware/eventMiddleware.pipeline.js.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.type.d.ts +49 -0
- package/dist/eventMiddleware/eventMiddleware.type.d.ts.map +1 -0
- package/dist/eventMiddleware/eventMiddleware.type.js +5 -0
- package/dist/eventMiddleware/eventMiddleware.type.js.map +1 -0
- package/dist/eventMiddleware/index.d.ts +10 -0
- package/dist/eventMiddleware/index.d.ts.map +1 -0
- package/dist/eventMiddleware/index.js +10 -0
- package/dist/eventMiddleware/index.js.map +1 -0
- package/dist/eventRegistry/eventRegistry.lifecycle.d.ts +19 -0
- package/dist/eventRegistry/eventRegistry.lifecycle.d.ts.map +1 -0
- package/dist/eventRegistry/eventRegistry.lifecycle.js +45 -0
- package/dist/eventRegistry/eventRegistry.lifecycle.js.map +1 -0
- package/dist/eventRegistry/eventRegistry.queries.d.ts +23 -0
- package/dist/eventRegistry/eventRegistry.queries.d.ts.map +1 -0
- package/dist/eventRegistry/eventRegistry.queries.js +35 -0
- package/dist/eventRegistry/eventRegistry.queries.js.map +1 -0
- package/dist/eventRegistry/eventRegistry.registration.d.ts +29 -0
- package/dist/eventRegistry/eventRegistry.registration.d.ts.map +1 -0
- package/dist/eventRegistry/eventRegistry.registration.js +104 -0
- package/dist/eventRegistry/eventRegistry.registration.js.map +1 -0
- package/dist/eventRegistry/eventRegistry.store.d.ts +52 -0
- package/dist/eventRegistry/eventRegistry.store.d.ts.map +1 -0
- package/dist/eventRegistry/eventRegistry.store.js +124 -0
- package/dist/eventRegistry/eventRegistry.store.js.map +1 -0
- package/dist/eventRegistry/eventRegistry.type.d.ts +28 -0
- package/dist/eventRegistry/eventRegistry.type.d.ts.map +1 -0
- package/dist/eventRegistry/eventRegistry.type.js +11 -0
- package/dist/eventRegistry/eventRegistry.type.js.map +1 -0
- package/dist/eventRegistry/index.d.ts +11 -0
- package/dist/eventRegistry/index.d.ts.map +1 -0
- package/dist/eventRegistry/index.js +11 -0
- package/dist/eventRegistry/index.js.map +1 -0
- package/dist/eventSubscription/eventSubscription.core.d.ts +149 -0
- package/dist/eventSubscription/eventSubscription.core.d.ts.map +1 -0
- package/dist/eventSubscription/eventSubscription.core.js +174 -0
- package/dist/eventSubscription/eventSubscription.core.js.map +1 -0
- package/dist/eventSubscription/index.d.ts +7 -0
- package/dist/eventSubscription/index.d.ts.map +1 -0
- package/dist/eventSubscription/index.js +7 -0
- package/dist/eventSubscription/index.js.map +1 -0
- package/dist/eventTypes/eventDefinition.type.d.ts +180 -0
- package/dist/eventTypes/eventDefinition.type.d.ts.map +1 -0
- package/dist/eventTypes/eventDefinition.type.js +140 -0
- package/dist/eventTypes/eventDefinition.type.js.map +1 -0
- package/dist/eventTypes/eventPayload.type.d.ts +126 -0
- package/dist/eventTypes/eventPayload.type.d.ts.map +1 -0
- package/dist/eventTypes/eventPayload.type.js +167 -0
- package/dist/eventTypes/eventPayload.type.js.map +1 -0
- package/dist/eventTypes/eventType.type.d.ts +157 -0
- package/dist/eventTypes/eventType.type.d.ts.map +1 -0
- package/dist/eventTypes/eventType.type.js +244 -0
- package/dist/eventTypes/eventType.type.js.map +1 -0
- package/dist/eventTypes/index.d.ts +9 -0
- package/dist/eventTypes/index.d.ts.map +1 -0
- package/dist/eventTypes/index.js +9 -0
- package/dist/eventTypes/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event middleware core helpers for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import { EventMiddlewareError } from "../eventErrors/eventError.base.js";
|
|
5
|
+
/**
|
|
6
|
+
* Generates a middleware identifier.
|
|
7
|
+
*/
|
|
8
|
+
export function createEventMiddlewareId() {
|
|
9
|
+
if (typeof crypto !== "undefined" &&
|
|
10
|
+
typeof crypto.randomUUID === "function") {
|
|
11
|
+
return `middleware:${crypto.randomUUID()}`;
|
|
12
|
+
}
|
|
13
|
+
return `middleware:${Date.now().toString(36)}:${Math.random()
|
|
14
|
+
.toString(36)
|
|
15
|
+
.slice(2)}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether a value is a function middleware.
|
|
19
|
+
*/
|
|
20
|
+
export function isFunctionEventMiddleware(value) {
|
|
21
|
+
return typeof value === "function";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Determines whether a value is an object middleware.
|
|
25
|
+
*/
|
|
26
|
+
export function isObjectEventMiddleware(value) {
|
|
27
|
+
return (typeof value === "object" &&
|
|
28
|
+
value !== null &&
|
|
29
|
+
typeof value.handle === "function");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether a value is a supported middleware.
|
|
33
|
+
*/
|
|
34
|
+
export function isEventMiddleware(value) {
|
|
35
|
+
return isFunctionEventMiddleware(value) || isObjectEventMiddleware(value);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a registered middleware definition.
|
|
39
|
+
*/
|
|
40
|
+
export function createEventMiddleware(middleware, options = {}) {
|
|
41
|
+
if (!isEventMiddleware(middleware)) {
|
|
42
|
+
throw new TypeError("Invalid event middleware.");
|
|
43
|
+
}
|
|
44
|
+
const priority = options.priority ?? 0;
|
|
45
|
+
if (!Number.isFinite(priority)) {
|
|
46
|
+
throw new RangeError("Event middleware priority must be a finite number.");
|
|
47
|
+
}
|
|
48
|
+
return Object.freeze({
|
|
49
|
+
id: options.id ?? createEventMiddlewareId(),
|
|
50
|
+
description: options.description,
|
|
51
|
+
priority,
|
|
52
|
+
enabled: options.enabled ?? true,
|
|
53
|
+
middleware,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Executes a middleware implementation.
|
|
58
|
+
*/
|
|
59
|
+
export async function executeEventMiddleware(middleware, context, next) {
|
|
60
|
+
if (isFunctionEventMiddleware(middleware)) {
|
|
61
|
+
return middleware(context, next);
|
|
62
|
+
}
|
|
63
|
+
return middleware.handle(context, next);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Sorts middleware by descending priority.
|
|
67
|
+
*/
|
|
68
|
+
export function sortEventMiddleware(middleware) {
|
|
69
|
+
return [...middleware].sort((first, second) => second.priority - first.priority);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Creates a middleware context.
|
|
73
|
+
*/
|
|
74
|
+
export function createEventMiddlewareContext(event, options = {}) {
|
|
75
|
+
return {
|
|
76
|
+
event,
|
|
77
|
+
signal: options.signal ?? new AbortController().signal,
|
|
78
|
+
metadata: Object.freeze({
|
|
79
|
+
...(options.metadata ?? {}),
|
|
80
|
+
}),
|
|
81
|
+
executionId: createEventMiddlewareId(),
|
|
82
|
+
startedAt: new Date(),
|
|
83
|
+
state: options.state ?? new Map(),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=eventMiddleware.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventMiddleware.helper.js","sourceRoot":"","sources":["../../src/eventMiddleware/eventMiddleware.helper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAazE;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EACvC,CAAC;QACD,OAAO,cAAc,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;SAC1D,QAAQ,CAAC,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OACE,KAGD,CAAC,MAAM,KAAK,UAAU,CACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAc;IAEd,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAInC,UAAgD,EAChD,OAAO,GAA2B,EAAE;IAEpC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,uBAAuB,EAAE;QAE3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAEhC,QAAQ;QAER,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAEhC,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAgD,EAChD,OAAuC,EACvC,IAAkC;IAElC,IAAI,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAQ,UAA+C,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,OAAQ,UAAqD,CAAC,MAAM,CAClE,OAAO,EACP,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAiE;IAEjE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CACzB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,OAAO,GAAmC,EAAE;IAE5C,OAAO;QACL,KAAK;QAEL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM;QAEtD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC5B,CAAC;QAEF,WAAW,EAAE,uBAAuB,EAAE;QAEtC,SAAS,EAAE,IAAI,IAAI,EAAE;QAErB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,EAAmB;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event middleware pipeline execution for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import type { Event } from "../eventTypes/eventDefinition.type.js";
|
|
5
|
+
import type { EventMiddlewareContext, EventMiddlewareNext, RegisteredEventMiddleware, EventMiddlewarePipelineResult } from "./eventMiddleware.type.js";
|
|
6
|
+
/**
|
|
7
|
+
* Executes a middleware pipeline.
|
|
8
|
+
*
|
|
9
|
+
* Middleware executes in descending priority order:
|
|
10
|
+
*
|
|
11
|
+
* middleware A
|
|
12
|
+
* → middleware B
|
|
13
|
+
* → handler
|
|
14
|
+
* ← middleware B
|
|
15
|
+
* ← middleware A
|
|
16
|
+
*/
|
|
17
|
+
export declare function executeEventMiddlewarePipeline<TEvent extends Event, TResult>(middleware: readonly RegisteredEventMiddleware<TEvent, TResult>[], context: EventMiddlewareContext<TEvent>, terminal: EventMiddlewareNext<TResult>): Promise<EventMiddlewarePipelineResult<TResult>>;
|
|
18
|
+
//# sourceMappingURL=eventMiddleware.pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventMiddleware.pipeline.d.ts","sourceRoot":"","sources":["../../src/eventMiddleware/eventMiddleware.pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAOnE,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EAEzB,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AAOnC;;;;;;;;;;GAUG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,SAAS,KAAK,EACpB,OAAO,EAEP,UAAU,EAAE,SAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjE,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACvC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,GACrC,OAAO,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CA2GjD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event middleware pipeline execution for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import { EventMiddlewareError, toEventError, } from "../eventErrors/eventError.base.js";
|
|
5
|
+
import { sortEventMiddleware, executeEventMiddleware, } from "./eventMiddleware.helper.js";
|
|
6
|
+
/**
|
|
7
|
+
* Executes a middleware pipeline.
|
|
8
|
+
*
|
|
9
|
+
* Middleware executes in descending priority order:
|
|
10
|
+
*
|
|
11
|
+
* middleware A
|
|
12
|
+
* → middleware B
|
|
13
|
+
* → handler
|
|
14
|
+
* ← middleware B
|
|
15
|
+
* ← middleware A
|
|
16
|
+
*/
|
|
17
|
+
export async function executeEventMiddlewarePipeline(middleware, context, terminal) {
|
|
18
|
+
const started = performance.now();
|
|
19
|
+
const activeMiddleware = sortEventMiddleware(middleware.filter((item) => item.enabled));
|
|
20
|
+
const executions = [];
|
|
21
|
+
let index = -1;
|
|
22
|
+
const dispatch = async (currentIndex) => {
|
|
23
|
+
if (context.signal.aborted) {
|
|
24
|
+
throw createAbortError();
|
|
25
|
+
}
|
|
26
|
+
if (currentIndex === activeMiddleware.length) {
|
|
27
|
+
return terminal();
|
|
28
|
+
}
|
|
29
|
+
if (currentIndex <= index) {
|
|
30
|
+
throw new EventMiddlewareError("Event middleware called next() more than once.", {
|
|
31
|
+
eventType: context.event?.type,
|
|
32
|
+
eventId: context.event?.id,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
index = currentIndex;
|
|
36
|
+
const current = activeMiddleware[currentIndex];
|
|
37
|
+
if (!current) {
|
|
38
|
+
return terminal();
|
|
39
|
+
}
|
|
40
|
+
const middlewareStarted = performance.now();
|
|
41
|
+
let nextCalled = false;
|
|
42
|
+
const next = async () => {
|
|
43
|
+
if (nextCalled) {
|
|
44
|
+
throw new EventMiddlewareError(`Middleware "${current.id}" called next() more than once.`, {
|
|
45
|
+
middlewareId: current.id,
|
|
46
|
+
eventType: context.event?.type,
|
|
47
|
+
eventId: context.event?.id,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
nextCalled = true;
|
|
51
|
+
return dispatch(currentIndex + 1);
|
|
52
|
+
};
|
|
53
|
+
try {
|
|
54
|
+
const result = await executeEventMiddleware(current.middleware, context, next);
|
|
55
|
+
executions.push({
|
|
56
|
+
middlewareId: current.id,
|
|
57
|
+
result,
|
|
58
|
+
duration: performance.now() - middlewareStarted,
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error instanceof EventMiddlewareError) {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
throw new EventMiddlewareError(`Event middleware "${current.id}" failed.`, {
|
|
67
|
+
middlewareId: current.id,
|
|
68
|
+
eventType: context.event?.type,
|
|
69
|
+
eventId: context.event?.id,
|
|
70
|
+
cause: toEventError(error, {
|
|
71
|
+
eventType: context.event?.type,
|
|
72
|
+
eventId: context.event?.id,
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const result = await dispatch(0);
|
|
78
|
+
return {
|
|
79
|
+
result,
|
|
80
|
+
executions,
|
|
81
|
+
duration: performance.now() - started,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates an AbortError without relying on a runtime-specific
|
|
86
|
+
* DOMException implementation.
|
|
87
|
+
*/
|
|
88
|
+
function createAbortError() {
|
|
89
|
+
return new EventMiddlewareError("Event middleware execution was aborted.", {
|
|
90
|
+
cause: new Error("AbortSignal was aborted."),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=eventMiddleware.pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventMiddleware.pipeline.js","sourceRoot":"","sources":["../../src/eventMiddleware/eventMiddleware.pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event middleware type definitions for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import type { Event } from "../eventTypes/eventDefinition.type.js";
|
|
5
|
+
import type { EventHandlerContext } from "../eventHandler/eventHandler.core.js";
|
|
6
|
+
export interface EventMiddlewareContext<TEvent extends Event = Event> {
|
|
7
|
+
readonly event: TEvent;
|
|
8
|
+
readonly handlerContext?: EventHandlerContext<TEvent>;
|
|
9
|
+
readonly signal: AbortSignal;
|
|
10
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
11
|
+
readonly executionId: string;
|
|
12
|
+
readonly startedAt: Date;
|
|
13
|
+
readonly state: Map<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export type EventMiddlewareNext<TResult = unknown> = () => Promise<TResult>;
|
|
16
|
+
export type EventMiddleware<TEvent extends Event = Event, TResult = unknown> = (context: EventMiddlewareContext<TEvent>, next: EventMiddlewareNext<TResult>) => Promise<TResult>;
|
|
17
|
+
export interface EventMiddlewareObject<TEvent extends Event = Event, TResult = unknown> {
|
|
18
|
+
readonly handle: EventMiddleware<TEvent, TResult>;
|
|
19
|
+
}
|
|
20
|
+
export type EventMiddlewareLike<TEvent extends Event = Event, TResult = unknown> = EventMiddleware<TEvent, TResult> | EventMiddlewareObject<TEvent, TResult>;
|
|
21
|
+
export interface EventMiddlewareOptions {
|
|
22
|
+
readonly id?: string;
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
readonly priority?: number;
|
|
25
|
+
readonly enabled?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface RegisteredEventMiddleware<TEvent extends Event = Event, TResult = unknown> {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly description?: string;
|
|
30
|
+
readonly priority: number;
|
|
31
|
+
readonly enabled: boolean;
|
|
32
|
+
readonly middleware: EventMiddlewareLike<TEvent, TResult>;
|
|
33
|
+
}
|
|
34
|
+
export interface EventMiddlewareExecution<TResult = unknown> {
|
|
35
|
+
readonly middlewareId: string;
|
|
36
|
+
readonly result: TResult;
|
|
37
|
+
readonly duration: number;
|
|
38
|
+
}
|
|
39
|
+
export interface EventMiddlewarePipelineResult<TResult = unknown> {
|
|
40
|
+
readonly result: TResult;
|
|
41
|
+
readonly executions: readonly EventMiddlewareExecution[];
|
|
42
|
+
readonly duration: number;
|
|
43
|
+
}
|
|
44
|
+
export interface EventMiddlewarePipelineOptions {
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
47
|
+
readonly state?: Map<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=eventMiddleware.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventMiddleware.type.d.ts","sourceRoot":"","sources":["../../src/eventMiddleware/eventMiddleware.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,MAAM,WAAW,sBAAsB,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5E,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,EAAE,OAAO,GAAG,OAAO,IAAI,CAC7E,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACvC,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,qBAAqB,CACpC,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5B,OAAO,GAAG,OAAO;IAEjB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5B,OAAO,GAAG,OAAO,IACf,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB,CACxC,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5B,OAAO,GAAG,OAAO;IAEjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,GAAG,OAAO;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B,CAAC,OAAO,GAAG,OAAO;IAC9D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,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,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventMiddleware.type.js","sourceRoot":"","sources":["../../src/eventMiddleware/eventMiddleware.type.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/events/eventMiddleware
|
|
3
|
+
*
|
|
4
|
+
* Event middleware pipeline and processing.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./eventMiddleware.type.js";
|
|
7
|
+
export * from "./eventMiddleware.helper.js";
|
|
8
|
+
export * from "./eventMiddleware.builder.js";
|
|
9
|
+
export * from "./eventMiddleware.pipeline.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eventMiddleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/events/eventMiddleware
|
|
3
|
+
*
|
|
4
|
+
* Event middleware pipeline and processing.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./eventMiddleware.type.js";
|
|
7
|
+
export * from "./eventMiddleware.helper.js";
|
|
8
|
+
export * from "./eventMiddleware.builder.js";
|
|
9
|
+
export * from "./eventMiddleware.pipeline.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eventMiddleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry lifecycle methods for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import type { EventType } from "../eventTypes/eventDefinition.type.js";
|
|
5
|
+
import type { RegisteredEventHandler } from "../eventHandler/eventHandler.core.js";
|
|
6
|
+
import type { EventRegistryChange, EventRegistryListener, RegisteredEventDefinition } from "./eventRegistry.type.js";
|
|
7
|
+
/**
|
|
8
|
+
* Clears all handlers and definitions from the registry.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registryClear(definitions: Map<EventType, RegisteredEventDefinition>, handlers: Map<string, RegisteredEventHandler>, ensureActive: () => void, notify: (change: EventRegistryChange) => void): void;
|
|
11
|
+
/**
|
|
12
|
+
* Disposes the registry.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registryDispose(disposed: boolean, definitions: Map<EventType, RegisteredEventDefinition>, handlers: Map<string, RegisteredEventHandler>, listeners: Set<EventRegistryListener>, ensureActive: () => void, notify: (change: EventRegistryChange) => void): void;
|
|
15
|
+
/**
|
|
16
|
+
* Notifies registry listeners.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registryNotify(change: EventRegistryChange, listeners: Set<EventRegistryListener>): void;
|
|
19
|
+
//# sourceMappingURL=eventRegistry.lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.lifecycle.d.ts","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AAOjC;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,EACtD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,IAAI,CAcN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,EACtD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,SAAS,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACrC,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,GAAG,CAAC,qBAAqB,CAAC,GACpC,IAAI,CAWN"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry lifecycle methods for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import { registryUnregister, registryUnregisterHandler, } from "./eventRegistry.registration.js";
|
|
5
|
+
/**
|
|
6
|
+
* Clears all handlers and definitions from the registry.
|
|
7
|
+
*/
|
|
8
|
+
export function registryClear(definitions, handlers, ensureActive, notify) {
|
|
9
|
+
ensureActive();
|
|
10
|
+
const handlerIds = [...handlers.keys()];
|
|
11
|
+
for (const handlerId of handlerIds) {
|
|
12
|
+
registryUnregisterHandler(handlerId, handlers, ensureActive, notify);
|
|
13
|
+
}
|
|
14
|
+
const eventTypes = [...definitions.keys()];
|
|
15
|
+
for (const eventType of eventTypes) {
|
|
16
|
+
registryUnregister(eventType, definitions, ensureActive, notify);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Disposes the registry.
|
|
21
|
+
*/
|
|
22
|
+
export function registryDispose(disposed, definitions, handlers, listeners, ensureActive, notify) {
|
|
23
|
+
if (disposed) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
registryClear(definitions, handlers, ensureActive, notify);
|
|
27
|
+
listeners.clear();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Notifies registry listeners.
|
|
31
|
+
*/
|
|
32
|
+
export function registryNotify(change, listeners) {
|
|
33
|
+
for (const listener of listeners) {
|
|
34
|
+
try {
|
|
35
|
+
listener(change);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
/**
|
|
39
|
+
* Registry observers must not be able to break
|
|
40
|
+
* registry mutations.
|
|
41
|
+
*/
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=eventRegistry.lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.lifecycle.js","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAsD,EACtD,QAA6C,EAC7C,YAAwB,EACxB,MAA6C;IAE7C,YAAY,EAAE,CAAC;IAEf,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAiB,EACjB,WAAsD,EACtD,QAA6C,EAC7C,SAAqC,EACrC,YAAwB,EACxB,MAA6C;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAE3D,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA2B,EAC3B,SAAqC;IAErC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP;;;eAGG;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry query functions for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import type { Event, EventType } from "../eventTypes/eventDefinition.type.js";
|
|
5
|
+
import type { RegisteredEventHandler } from "../eventHandler/eventHandler.core.js";
|
|
6
|
+
import type { RegisteredEventDefinition } from "./eventRegistry.type.js";
|
|
7
|
+
/**
|
|
8
|
+
* Returns handlers matching an event.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getHandlersForEvent(handlers: Map<string, RegisteredEventHandler>, event: Event): readonly RegisteredEventHandler[];
|
|
11
|
+
/**
|
|
12
|
+
* Returns handlers matching an event type.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getHandlersForType(handlers: Map<string, RegisteredEventHandler>, eventType: EventType): readonly RegisteredEventHandler[];
|
|
15
|
+
/**
|
|
16
|
+
* Returns all event definitions as an array.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getAllDefinitions(definitions: Map<EventType, RegisteredEventDefinition>): readonly RegisteredEventDefinition[];
|
|
19
|
+
/**
|
|
20
|
+
* Returns all handlers as an array.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAllHandlers(handlers: Map<string, RegisteredEventHandler>): readonly RegisteredEventHandler[];
|
|
23
|
+
//# sourceMappingURL=eventRegistry.queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.queries.d.ts","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAO9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,KAAK,EAAE,KAAK,GACX,SAAS,sBAAsB,EAAE,CAQnC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,SAAS,EAAE,SAAS,GACnB,SAAS,sBAAsB,EAAE,CAMnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,GACrD,SAAS,yBAAyB,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAC5C,SAAS,sBAAsB,EAAE,CAEnC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry query functions for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import { normalizeEventType, matchesEventType, } from "../eventTypes/eventType.type.js";
|
|
5
|
+
/**
|
|
6
|
+
* Returns handlers matching an event.
|
|
7
|
+
*/
|
|
8
|
+
export function getHandlersForEvent(handlers, event) {
|
|
9
|
+
return [...handlers.values()].filter((handler) => {
|
|
10
|
+
if (!handler.enabled) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return matchesEventType(event.type, handler.eventType);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns handlers matching an event type.
|
|
18
|
+
*/
|
|
19
|
+
export function getHandlersForType(handlers, eventType) {
|
|
20
|
+
const type = normalizeEventType(eventType);
|
|
21
|
+
return [...handlers.values()].filter((handler) => matchesEventType(type, handler.eventType));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns all event definitions as an array.
|
|
25
|
+
*/
|
|
26
|
+
export function getAllDefinitions(definitions) {
|
|
27
|
+
return [...definitions.values()];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns all handlers as an array.
|
|
31
|
+
*/
|
|
32
|
+
export function getAllHandlers(handlers) {
|
|
33
|
+
return [...handlers.values()];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=eventRegistry.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.queries.js","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAMzC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA6C,EAC7C,KAAY;IAEZ,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA6C,EAC7C,SAAoB;IAEpB,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAsD;IAEtD,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA6C;IAE7C,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry registration 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, RegisteredEventHandler } from "../eventHandler/eventHandler.core.js";
|
|
7
|
+
import type { EventSubscription } from "../eventSubscription/eventSubscription.core.js";
|
|
8
|
+
import type { EventRegistryChange, RegisteredEventDefinition } from "./eventRegistry.type.js";
|
|
9
|
+
/**
|
|
10
|
+
* Registers an event definition.
|
|
11
|
+
*/
|
|
12
|
+
export declare function registryRegister<TType extends EventType, TPayload>(definition: EventDefinition<TType, TPayload>, definitions: Map<EventType, RegisteredEventDefinition>, options: {
|
|
13
|
+
allowDuplicateDefinitions: boolean;
|
|
14
|
+
}, ensureActive: () => void, notify: (change: EventRegistryChange) => void): RegisteredEventDefinition<TType, TPayload>;
|
|
15
|
+
/**
|
|
16
|
+
* Registers a handler.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registryRegisterHandler<TEvent extends Event = Event>(eventType: EventTypePattern, handler: EventHandlerLike<TEvent>, handlerOptions: Omit<EventHandlerOptions, "eventType">, handlers: Map<string, RegisteredEventHandler>, options: {
|
|
19
|
+
allowDuplicateHandlerIds: boolean;
|
|
20
|
+
}, ensureActive: () => void, notify: (change: EventRegistryChange) => void): EventSubscription;
|
|
21
|
+
/**
|
|
22
|
+
* Unregisters an event definition.
|
|
23
|
+
*/
|
|
24
|
+
export declare function registryUnregister(eventType: EventType, definitions: Map<EventType, RegisteredEventDefinition>, ensureActive: () => void, notify: (change: EventRegistryChange) => void): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Unregisters a handler.
|
|
27
|
+
*/
|
|
28
|
+
export declare function registryUnregisterHandler(handlerId: string, handlers: Map<string, RegisteredEventHandler>, ensureActive: () => void, notify: (change: EventRegistryChange) => void): boolean;
|
|
29
|
+
//# sourceMappingURL=eventRegistry.registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.registration.d.ts","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.registration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EACf,SAAS,EACV,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAU9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AASxF,OAAO,KAAK,EACV,mBAAmB,EAEnB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AAIjC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,SAAS,EAAE,QAAQ,EAChE,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,EAC5C,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,EACtD,OAAO,EAAE;IACP,yBAAyB,EAAE,OAAO,CAAC;CACpC,EACD,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAgC5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,EAClE,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,EACjC,cAAc,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,EACtD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,OAAO,EAAE;IACP,wBAAwB,EAAE,OAAO,CAAC;CACnC,EACD,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,iBAAiB,CAmDnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,EACtD,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC7C,YAAY,EAAE,MAAM,IAAI,EACxB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC5C,OAAO,CAwBT"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event registry registration methods for Zudojs.
|
|
3
|
+
*/
|
|
4
|
+
import { createEventHandler } from "../eventHandler/eventHandler.core.js";
|
|
5
|
+
import { isValidEventType, isValidEventTypePattern, normalizeEventType, } from "../eventTypes/eventType.type.js";
|
|
6
|
+
import { createEventSubscription } from "../eventSubscription/eventSubscription.core.js";
|
|
7
|
+
import { DuplicateEventDefinitionError, DuplicateEventHandlerError, } from "../eventErrors/eventError.base.js";
|
|
8
|
+
import { EventRegistryChangeType } from "./eventRegistry.type.js";
|
|
9
|
+
/**
|
|
10
|
+
* Registers an event definition.
|
|
11
|
+
*/
|
|
12
|
+
export function registryRegister(definition, definitions, options, ensureActive, notify) {
|
|
13
|
+
ensureActive();
|
|
14
|
+
const type = normalizeEventType(definition.type);
|
|
15
|
+
if (!isValidEventType(type)) {
|
|
16
|
+
throw new TypeError(`Invalid event type "${definition.type}".`);
|
|
17
|
+
}
|
|
18
|
+
if (definitions.has(type) && !options.allowDuplicateDefinitions) {
|
|
19
|
+
throw new DuplicateEventDefinitionError(type);
|
|
20
|
+
}
|
|
21
|
+
const registered = Object.freeze({
|
|
22
|
+
type: type,
|
|
23
|
+
definition,
|
|
24
|
+
registeredAt: new Date(),
|
|
25
|
+
});
|
|
26
|
+
definitions.set(type, registered);
|
|
27
|
+
notify({
|
|
28
|
+
type: EventRegistryChangeType.EVENT_REGISTERED,
|
|
29
|
+
eventType: type,
|
|
30
|
+
timestamp: new Date(),
|
|
31
|
+
});
|
|
32
|
+
return registered;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Registers a handler.
|
|
36
|
+
*/
|
|
37
|
+
export function registryRegisterHandler(eventType, handler, handlerOptions, handlers, options, ensureActive, notify) {
|
|
38
|
+
ensureActive();
|
|
39
|
+
if (!isValidEventTypePattern(eventType)) {
|
|
40
|
+
throw new TypeError(`Invalid event type pattern "${eventType}".`);
|
|
41
|
+
}
|
|
42
|
+
const normalizedPattern = eventType === "*"
|
|
43
|
+
? "*"
|
|
44
|
+
: eventType.endsWith(".*")
|
|
45
|
+
? `${normalizeEventType(eventType.slice(0, -2))}.*`
|
|
46
|
+
: normalizeEventType(eventType);
|
|
47
|
+
const registration = createEventHandler(handler, {
|
|
48
|
+
...handlerOptions,
|
|
49
|
+
eventType: normalizedPattern,
|
|
50
|
+
});
|
|
51
|
+
if (handlers.has(registration.id) && !options.allowDuplicateHandlerIds) {
|
|
52
|
+
throw new DuplicateEventHandlerError(registration.id);
|
|
53
|
+
}
|
|
54
|
+
handlers.set(registration.id, registration);
|
|
55
|
+
notify({
|
|
56
|
+
type: EventRegistryChangeType.HANDLER_REGISTERED,
|
|
57
|
+
eventType: normalizedPattern,
|
|
58
|
+
handler: registration,
|
|
59
|
+
timestamp: new Date(),
|
|
60
|
+
});
|
|
61
|
+
return createEventSubscription(() => {
|
|
62
|
+
registryUnregisterHandler(registration.id, handlers, ensureActive, notify);
|
|
63
|
+
}, {
|
|
64
|
+
id: registration.id,
|
|
65
|
+
description: registration.description,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Unregisters an event definition.
|
|
70
|
+
*/
|
|
71
|
+
export function registryUnregister(eventType, definitions, ensureActive, notify) {
|
|
72
|
+
ensureActive();
|
|
73
|
+
const type = normalizeEventType(eventType);
|
|
74
|
+
const removed = definitions.delete(type);
|
|
75
|
+
if (removed) {
|
|
76
|
+
notify({
|
|
77
|
+
type: EventRegistryChangeType.EVENT_UNREGISTERED,
|
|
78
|
+
eventType: type,
|
|
79
|
+
timestamp: new Date(),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return removed;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Unregisters a handler.
|
|
86
|
+
*/
|
|
87
|
+
export function registryUnregisterHandler(handlerId, handlers, ensureActive, notify) {
|
|
88
|
+
ensureActive();
|
|
89
|
+
const handler = handlers.get(handlerId);
|
|
90
|
+
if (!handler) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const removed = handlers.delete(handlerId);
|
|
94
|
+
if (removed) {
|
|
95
|
+
notify({
|
|
96
|
+
type: EventRegistryChangeType.HANDLER_UNREGISTERED,
|
|
97
|
+
eventType: handler.eventType,
|
|
98
|
+
handler,
|
|
99
|
+
timestamp: new Date(),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return removed;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=eventRegistry.registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventRegistry.registration.js","sourceRoot":"","sources":["../../src/eventRegistry/eventRegistry.registration.ts"],"names":[],"mappings":"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"}
|