@zudojs/events 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +70 -11
- package/dist/eventBus/eventBus.core.d.ts +28 -2
- package/dist/eventBus/eventBus.core.js +104 -31
- package/dist/eventBus/eventBus.publish.d.ts +23 -5
- package/dist/eventBus/eventBus.publish.js +72 -32
- package/dist/eventBus/eventBus.registration.d.ts +24 -13
- package/dist/eventBus/eventBus.registration.js +31 -28
- package/dist/eventBus/eventBus.type.d.ts +75 -3
- package/dist/eventBus/eventBus.type.js +9 -0
- package/dist/eventBus/index.d.ts +2 -0
- package/dist/eventBus/index.js +2 -0
- package/dist/eventEmitter/eventEmitter.abort.d.ts +11 -2
- package/dist/eventEmitter/eventEmitter.abort.js +20 -5
- package/dist/eventEmitter/eventEmitter.core.d.ts +14 -3
- package/dist/eventEmitter/eventEmitter.core.js +63 -55
- package/dist/eventEmitter/eventEmitter.parallel.d.ts +7 -1
- package/dist/eventEmitter/eventEmitter.parallel.js +31 -13
- package/dist/eventEmitter/eventEmitter.sequential.d.ts +17 -1
- package/dist/eventEmitter/eventEmitter.sequential.js +19 -12
- package/dist/eventEmitter/eventEmitter.type.d.ts +60 -0
- package/dist/eventErrors/eventError.base.d.ts +50 -3
- package/dist/eventErrors/eventError.base.js +64 -3
- package/dist/eventHandler/eventHandler.core.d.ts +19 -0
- package/dist/eventHandler/eventHandler.core.js +67 -4
- package/dist/eventMiddleware/eventMiddleware.builder.js +5 -11
- package/dist/eventMiddleware/eventMiddleware.helper.js +0 -1
- package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts +5 -0
- package/dist/eventMiddleware/eventMiddleware.pipeline.js +33 -9
- package/dist/eventRegistry/eventRegistry.lifecycle.d.ts +10 -5
- package/dist/eventRegistry/eventRegistry.lifecycle.js +23 -10
- package/dist/eventRegistry/eventRegistry.queries.d.ts +16 -7
- package/dist/eventRegistry/eventRegistry.queries.js +22 -13
- package/dist/eventRegistry/eventRegistry.registration.d.ts +14 -7
- package/dist/eventRegistry/eventRegistry.registration.js +120 -41
- package/dist/eventRegistry/eventRegistry.store.d.ts +12 -5
- package/dist/eventRegistry/eventRegistry.store.js +37 -12
- package/dist/eventRegistry/eventRegistry.type.d.ts +87 -2
- package/dist/eventRegistry/eventRegistry.type.js +5 -0
- package/dist/eventSubscription/eventSubscription.core.d.ts +5 -0
- package/dist/eventSubscription/eventSubscription.core.js +17 -3
- package/dist/eventTypes/eventDefinition.type.d.ts +11 -4
- package/dist/eventTypes/eventDefinition.type.js +49 -17
- package/dist/eventTypes/eventPayload.type.d.ts +5 -0
- package/dist/eventTypes/eventPayload.type.js +56 -15
- package/dist/eventTypes/eventType.type.d.ts +22 -5
- package/dist/eventTypes/eventType.type.js +33 -11
- package/dist/eventTypes/index.d.ts +2 -2
- package/dist/eventTypes/index.js +2 -2
- package/package.json +22 -14
- package/dist/.tsbuildinfo +0 -1
- package/dist/eventBus/eventBus.core.d.ts.map +0 -1
- package/dist/eventBus/eventBus.core.js.map +0 -1
- package/dist/eventBus/eventBus.factory.d.ts.map +0 -1
- package/dist/eventBus/eventBus.factory.js.map +0 -1
- package/dist/eventBus/eventBus.publish.d.ts.map +0 -1
- package/dist/eventBus/eventBus.publish.js.map +0 -1
- package/dist/eventBus/eventBus.registration.d.ts.map +0 -1
- package/dist/eventBus/eventBus.registration.js.map +0 -1
- package/dist/eventBus/eventBus.type.d.ts.map +0 -1
- package/dist/eventBus/eventBus.type.js.map +0 -1
- package/dist/eventBus/index.d.ts.map +0 -1
- package/dist/eventBus/index.js.map +0 -1
- package/dist/eventEmitter/eventEmitter.abort.d.ts.map +0 -1
- package/dist/eventEmitter/eventEmitter.abort.js.map +0 -1
- package/dist/eventEmitter/eventEmitter.core.d.ts.map +0 -1
- package/dist/eventEmitter/eventEmitter.core.js.map +0 -1
- package/dist/eventEmitter/eventEmitter.parallel.d.ts.map +0 -1
- package/dist/eventEmitter/eventEmitter.parallel.js.map +0 -1
- package/dist/eventEmitter/eventEmitter.sequential.d.ts.map +0 -1
- package/dist/eventEmitter/eventEmitter.sequential.js.map +0 -1
- package/dist/eventEmitter/eventEmitter.type.d.ts.map +0 -1
- package/dist/eventEmitter/eventEmitter.type.js.map +0 -1
- package/dist/eventEmitter/index.d.ts.map +0 -1
- package/dist/eventEmitter/index.js.map +0 -1
- package/dist/eventErrors/eventError.base.d.ts.map +0 -1
- package/dist/eventErrors/eventError.base.js.map +0 -1
- package/dist/eventErrors/index.d.ts.map +0 -1
- package/dist/eventErrors/index.js.map +0 -1
- package/dist/eventHandler/eventHandler.core.d.ts.map +0 -1
- package/dist/eventHandler/eventHandler.core.js.map +0 -1
- package/dist/eventHandler/index.d.ts.map +0 -1
- package/dist/eventHandler/index.js.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.builder.d.ts.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.builder.js.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.helper.d.ts.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.helper.js.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.pipeline.d.ts.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.pipeline.js.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.type.d.ts.map +0 -1
- package/dist/eventMiddleware/eventMiddleware.type.js.map +0 -1
- package/dist/eventMiddleware/index.d.ts.map +0 -1
- package/dist/eventMiddleware/index.js.map +0 -1
- package/dist/eventRegistry/eventRegistry.lifecycle.d.ts.map +0 -1
- package/dist/eventRegistry/eventRegistry.lifecycle.js.map +0 -1
- package/dist/eventRegistry/eventRegistry.queries.d.ts.map +0 -1
- package/dist/eventRegistry/eventRegistry.queries.js.map +0 -1
- package/dist/eventRegistry/eventRegistry.registration.d.ts.map +0 -1
- package/dist/eventRegistry/eventRegistry.registration.js.map +0 -1
- package/dist/eventRegistry/eventRegistry.store.d.ts.map +0 -1
- package/dist/eventRegistry/eventRegistry.store.js.map +0 -1
- package/dist/eventRegistry/eventRegistry.type.d.ts.map +0 -1
- package/dist/eventRegistry/eventRegistry.type.js.map +0 -1
- package/dist/eventRegistry/index.d.ts.map +0 -1
- package/dist/eventRegistry/index.js.map +0 -1
- package/dist/eventSubscription/eventSubscription.core.d.ts.map +0 -1
- package/dist/eventSubscription/eventSubscription.core.js.map +0 -1
- package/dist/eventSubscription/index.d.ts.map +0 -1
- package/dist/eventSubscription/index.js.map +0 -1
- package/dist/eventTypes/eventDefinition.type.d.ts.map +0 -1
- package/dist/eventTypes/eventDefinition.type.js.map +0 -1
- package/dist/eventTypes/eventPayload.type.d.ts.map +0 -1
- package/dist/eventTypes/eventPayload.type.js.map +0 -1
- package/dist/eventTypes/eventType.type.d.ts.map +0 -1
- package/dist/eventTypes/eventType.type.js.map +0 -1
- package/dist/eventTypes/index.d.ts.map +0 -1
- package/dist/eventTypes/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
/**
|
|
9
9
|
* Validates an event type string.
|
|
10
10
|
*
|
|
11
|
-
* Zudojs event types use dot-separated lowercase names.
|
|
11
|
+
* Zudojs event types use dot-separated lowercase names. Wildcards
|
|
12
|
+
* are not part of an event type; they are only valid in patterns
|
|
13
|
+
* (see isValidEventTypePattern).
|
|
12
14
|
*
|
|
13
15
|
* Examples:
|
|
14
16
|
*
|
|
@@ -28,10 +30,14 @@ export function isValidEventType(value) {
|
|
|
28
30
|
if (normalized.length > 255) {
|
|
29
31
|
return false;
|
|
30
32
|
}
|
|
31
|
-
return /^[a-z0-9_]+(?:[.-][a-z0-9_
|
|
33
|
+
return /^[a-z0-9_]+(?:[.-][a-z0-9_]+)*$/.test(normalized);
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Validates an event type pattern.
|
|
37
|
+
*
|
|
38
|
+
* Supported forms are an exact event type, a namespace wildcard
|
|
39
|
+
* ("user.*") and the catch-all "*". Wildcards in any other
|
|
40
|
+
* position ("user.*.created", "user.cre*") are rejected.
|
|
35
41
|
*/
|
|
36
42
|
export function isValidEventTypePattern(value) {
|
|
37
43
|
if (value === "*") {
|
|
@@ -56,26 +62,21 @@ export function isValidEventTypePattern(value) {
|
|
|
56
62
|
* 4. Removes leading/trailing separators
|
|
57
63
|
*/
|
|
58
64
|
export function normalizeEventType(type) {
|
|
65
|
+
if (typeof type !== "string") {
|
|
66
|
+
throw new TypeError(`Invalid event type: "${String(type)}".`);
|
|
67
|
+
}
|
|
59
68
|
const lower = type.trim().toLowerCase();
|
|
60
69
|
let result = "";
|
|
61
70
|
let lastWasDot = false;
|
|
62
|
-
let leadingDots = true;
|
|
63
71
|
for (let i = 0; i < lower.length; i++) {
|
|
64
72
|
const ch = lower[i];
|
|
65
|
-
if (ch === "/" || ch === "\\" || ch === ":") {
|
|
66
|
-
if (!lastWasDot) {
|
|
67
|
-
result += ".";
|
|
68
|
-
lastWasDot = true;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else if (ch === ".") {
|
|
73
|
+
if (ch === "/" || ch === "\\" || ch === ":" || ch === ".") {
|
|
72
74
|
if (!lastWasDot) {
|
|
73
75
|
result += ".";
|
|
74
76
|
lastWasDot = true;
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
else {
|
|
78
|
-
leadingDots = false;
|
|
79
80
|
result += ch;
|
|
80
81
|
lastWasDot = false;
|
|
81
82
|
}
|
|
@@ -139,6 +140,21 @@ export function getEventAction(type) {
|
|
|
139
140
|
export function getEventTypeSegments(type) {
|
|
140
141
|
return type.split(".");
|
|
141
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Normalizes an event type pattern.
|
|
145
|
+
*
|
|
146
|
+
* "*" is returned unchanged, "User.*" becomes "user.*" and any
|
|
147
|
+
* other value is normalized as an event type.
|
|
148
|
+
*/
|
|
149
|
+
export function normalizeEventTypePattern(pattern) {
|
|
150
|
+
if (pattern === "*") {
|
|
151
|
+
return "*";
|
|
152
|
+
}
|
|
153
|
+
if (typeof pattern === "string" && pattern.trim().endsWith(".*")) {
|
|
154
|
+
return `${normalizeEventType(pattern.trim().slice(0, -2))}.*`;
|
|
155
|
+
}
|
|
156
|
+
return normalizeEventType(pattern);
|
|
157
|
+
}
|
|
142
158
|
/**
|
|
143
159
|
* Checks whether an event type matches a pattern.
|
|
144
160
|
*
|
|
@@ -146,8 +162,14 @@ export function getEventTypeSegments(type) {
|
|
|
146
162
|
*
|
|
147
163
|
* "user.created" matches "user.created"
|
|
148
164
|
* "user.created" matches "user.*"
|
|
165
|
+
* "user" matches "user.*" (a namespace pattern also
|
|
166
|
+
* matches the bare namespace event)
|
|
149
167
|
* "user.created" matches "*"
|
|
150
168
|
* "order.created" does not match "user.*"
|
|
169
|
+
*
|
|
170
|
+
* Both arguments are expected to be normalized (see
|
|
171
|
+
* normalizeEventType / normalizeEventTypePattern); no
|
|
172
|
+
* normalization happens here.
|
|
151
173
|
*/
|
|
152
174
|
export function matchesEventType(type, pattern) {
|
|
153
175
|
if (pattern === "*") {
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Event type definitions and payload types.
|
|
5
5
|
*/
|
|
6
6
|
export { type EventId, type EventType, type EventTimestamp, type EventSource, type EventCorrelationId, type EventCausationId, type EventPayload, type Event, type EventInput, type EventDefinition, isEvent, createEventId, createEvent, defineEvent, withEventMetadata, createDerivedEvent, getEventType, getEventPayload, describeEvent, } from "./eventDefinition.type.js";
|
|
7
|
-
export { type ObjectEventPayload, type PrimitiveEventPayload, type JsonEventPayload, type PayloadOf, type PayloadMap, type EventPayloadFactory, type EventPayloadOptions, isPrimitiveEventPayload, isObjectEventPayload, isJsonEventPayload, createEventPayload, validateEventPayload, } from "./eventPayload.type.js";
|
|
8
|
-
export { type EventTypeList, type EventTypePattern, type EventTypeOf, type EventUnion, isValidEventType, isValidEventTypePattern, normalizeEventType, createEventType, getEventNamespace, } from "./eventType.type.js";
|
|
7
|
+
export { type ObjectEventPayload, type PrimitiveEventPayload, type JsonEventPayload, type EventPayloadMap, type PayloadOf, type PayloadMap, type EventPayloadFactory, type EventPayloadOptions, isPrimitiveEventPayload, isObjectEventPayload, isJsonEventPayload, createEventPayload, createObjectEventPayload, createJsonEventPayload, cloneEventPayload, deepFreeze, stripUndefinedValues, mergeEventPayloads, staticPayload, definePayloadFactory, validateEventPayload, describeEventPayload, } from "./eventPayload.type.js";
|
|
8
|
+
export { type EventTypeList, type EventTypePattern, type EventTypeOf, type EventUnion, isValidEventType, isValidEventTypePattern, normalizeEventType, normalizeEventTypePattern, tryNormalizeEventType, assertEventType, createEventType, createEventTypePattern, getEventNamespace, getEventAction, getEventTypeSegments, matchesEventType, isSameEventNamespace, isChildEventType, eventMatchesType, filterEventsByType, defineEventTypes, defineEventType, } from "./eventType.type.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/eventTypes/index.js
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Event type definitions and payload types.
|
|
5
5
|
*/
|
|
6
6
|
export { isEvent, createEventId, createEvent, defineEvent, withEventMetadata, createDerivedEvent, getEventType, getEventPayload, describeEvent, } from "./eventDefinition.type.js";
|
|
7
|
-
export { isPrimitiveEventPayload, isObjectEventPayload, isJsonEventPayload, createEventPayload, validateEventPayload, } from "./eventPayload.type.js";
|
|
8
|
-
export { isValidEventType, isValidEventTypePattern, normalizeEventType, createEventType, getEventNamespace, } from "./eventType.type.js";
|
|
7
|
+
export { isPrimitiveEventPayload, isObjectEventPayload, isJsonEventPayload, createEventPayload, createObjectEventPayload, createJsonEventPayload, cloneEventPayload, deepFreeze, stripUndefinedValues, mergeEventPayloads, staticPayload, definePayloadFactory, validateEventPayload, describeEventPayload, } from "./eventPayload.type.js";
|
|
8
|
+
export { isValidEventType, isValidEventTypePattern, normalizeEventType, normalizeEventTypePattern, tryNormalizeEventType, assertEventType, createEventType, createEventTypePattern, getEventNamespace, getEventAction, getEventTypeSegments, matchesEventType, isSameEventNamespace, isChildEventType, eventMatchesType, filterEventsByType, defineEventTypes, defineEventType, } from "./eventType.type.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zudojs/events",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Event-driven architecture with event bus, emitter, middleware, and registry for decoupled communication.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,25 +13,22 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"dist"
|
|
16
|
+
"dist",
|
|
17
|
+
"!dist/**/*.map",
|
|
18
|
+
"!dist/**/*.tsbuildinfo",
|
|
19
|
+
"!dist/.tsbuildinfo"
|
|
17
20
|
],
|
|
18
|
-
"
|
|
19
|
-
"build": "tsc -p tsconfig.json",
|
|
20
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
21
|
-
"test": "vitest run",
|
|
22
|
-
"test:watch": "vitest",
|
|
23
|
-
"clean": "rm -rf dist"
|
|
24
|
-
},
|
|
21
|
+
"sideEffects": false,
|
|
25
22
|
"dependencies": {
|
|
26
|
-
"@zudojs/errors": "
|
|
27
|
-
"@zudojs/constants": "
|
|
23
|
+
"@zudojs/errors": "1.0.0",
|
|
24
|
+
"@zudojs/constants": "1.0.0"
|
|
28
25
|
},
|
|
29
26
|
"engines": {
|
|
30
27
|
"node": ">=24.0.0"
|
|
31
28
|
},
|
|
32
29
|
"devDependencies": {
|
|
33
30
|
"vitest": "^4.1.11",
|
|
34
|
-
"typescript": "
|
|
31
|
+
"typescript": "7.0.2"
|
|
35
32
|
},
|
|
36
33
|
"license": "MIT",
|
|
37
34
|
"publishConfig": {
|
|
@@ -44,8 +41,19 @@
|
|
|
44
41
|
"pubsub"
|
|
45
42
|
],
|
|
46
43
|
"homepage": "https://github.com/oyinlola-tech/zudo#readme",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/oyinlola-tech/zudo/issues"
|
|
46
|
+
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|
|
49
|
-
"url": "https://github.com/oyinlola-tech/zudo"
|
|
49
|
+
"url": "https://github.com/oyinlola-tech/zudo",
|
|
50
|
+
"directory": "packages/events"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsc -p tsconfig.json",
|
|
54
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
|
|
55
|
+
"test": "vitest run",
|
|
56
|
+
"test:watch": "vitest",
|
|
57
|
+
"clean": "rm -rf dist"
|
|
50
58
|
}
|
|
51
|
-
}
|
|
59
|
+
}
|