@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,180 @@
1
+ /**
2
+ * Core event primitives for Zudojs.
3
+ *
4
+ * Events are immutable messages that describe something that
5
+ * happened inside the application or framework.
6
+ *
7
+ * This module intentionally contains no dispatching logic.
8
+ */
9
+ import type { EventId as BaseEventId, CorrelationId as BaseCorrelationId } from "@zudojs/constants";
10
+ /**
11
+ * Unique identifier for an event instance.
12
+ * Re-exported from @zudojs/constants for type safety.
13
+ */
14
+ export type EventId = BaseEventId;
15
+ /**
16
+ * Event type identifier.
17
+ *
18
+ * Examples:
19
+ *
20
+ * "user.created"
21
+ * "module.loaded"
22
+ * "runtime.started"
23
+ */
24
+ export type EventType = string;
25
+ /**
26
+ * Event timestamp.
27
+ */
28
+ export type EventTimestamp = Date;
29
+ /**
30
+ * Event source identifier.
31
+ *
32
+ * Identifies the subsystem that produced the event.
33
+ */
34
+ export type EventSource = string;
35
+ /**
36
+ * Correlation identifier.
37
+ *
38
+ * Useful for connecting multiple events belonging to the
39
+ * same operation/request/workflow.
40
+ * Re-exported from @zudojs/constants for type safety.
41
+ */
42
+ export type EventCorrelationId = BaseCorrelationId;
43
+ /**
44
+ * Causation identifier.
45
+ *
46
+ * Identifies the event or operation that caused this event.
47
+ */
48
+ export type EventCausationId = string;
49
+ /**
50
+ * Generic event payload.
51
+ */
52
+ export type EventPayload = unknown;
53
+ /**
54
+ * Base event contract.
55
+ *
56
+ * Every Zudojs event must contain a type, unique identifier,
57
+ * timestamp, and payload.
58
+ */
59
+ export interface Event<TPayload = EventPayload> {
60
+ /**
61
+ * Unique event identifier.
62
+ */
63
+ readonly id: EventId;
64
+ /**
65
+ * Event type.
66
+ */
67
+ readonly type: EventType;
68
+ /**
69
+ * Event payload.
70
+ */
71
+ readonly payload: TPayload;
72
+ /**
73
+ * Time at which the event was created.
74
+ */
75
+ readonly timestamp: EventTimestamp;
76
+ /**
77
+ * Optional source subsystem.
78
+ */
79
+ readonly source?: EventSource;
80
+ /**
81
+ * Optional correlation identifier.
82
+ */
83
+ readonly correlationId?: EventCorrelationId;
84
+ /**
85
+ * Optional causation identifier.
86
+ */
87
+ readonly causationId?: EventCausationId;
88
+ /**
89
+ * Optional event metadata.
90
+ */
91
+ readonly metadata?: Readonly<Record<string, unknown>>;
92
+ }
93
+ /**
94
+ * Input used to create an event.
95
+ */
96
+ export interface EventInput<TPayload = EventPayload> {
97
+ /**
98
+ * Optional event identifier.
99
+ */
100
+ readonly id?: EventId;
101
+ /**
102
+ * Event type.
103
+ */
104
+ readonly type: EventType;
105
+ /**
106
+ * Event payload.
107
+ */
108
+ readonly payload: TPayload;
109
+ /**
110
+ * Optional timestamp.
111
+ */
112
+ readonly timestamp?: EventTimestamp | number;
113
+ /**
114
+ * Optional source subsystem.
115
+ */
116
+ readonly source?: EventSource;
117
+ /**
118
+ * Optional correlation identifier.
119
+ */
120
+ readonly correlationId?: EventCorrelationId;
121
+ /**
122
+ * Optional causation identifier.
123
+ */
124
+ readonly causationId?: EventCausationId;
125
+ /**
126
+ * Optional event metadata.
127
+ */
128
+ readonly metadata?: Readonly<Record<string, unknown>>;
129
+ }
130
+ /**
131
+ * Typed event definition.
132
+ *
133
+ * Allows a specific event type to declare its payload.
134
+ */
135
+ export interface EventDefinition<TType extends EventType = EventType, TPayload = EventPayload> {
136
+ readonly type: TType;
137
+ readonly create: (payload: TPayload, options?: Omit<EventInput<TPayload>, "type" | "payload">) => Event<TPayload>;
138
+ }
139
+ /**
140
+ * Determines whether an unknown value satisfies the Event
141
+ * contract.
142
+ */
143
+ export declare function isEvent(value: unknown): value is Event;
144
+ /**
145
+ * Creates a unique event identifier.
146
+ * Returns a branded EventId type from @zudojs/constants.
147
+ */
148
+ export declare function createEventId(): EventId;
149
+ /**
150
+ * Creates an immutable event.
151
+ */
152
+ export declare function createEvent<TPayload = EventPayload>(input: EventInput<TPayload>): Event<TPayload>;
153
+ /**
154
+ * Creates a typed event definition.
155
+ */
156
+ export declare function defineEvent<TType extends EventType, TPayload>(type: TType): EventDefinition<TType, TPayload>;
157
+ /**
158
+ * Creates a copy of an event with modified metadata.
159
+ *
160
+ * The original event remains immutable.
161
+ */
162
+ export declare function withEventMetadata<TPayload>(event: Event<TPayload>, metadata: Readonly<Record<string, unknown>>): Event<TPayload>;
163
+ /**
164
+ * Creates a derived event while preserving correlation
165
+ * information from the original event.
166
+ */
167
+ export declare function createDerivedEvent<TPayload>(sourceEvent: Event, input: EventInput<TPayload>): Event<TPayload>;
168
+ /**
169
+ * Returns the event type.
170
+ */
171
+ export declare function getEventType<TPayload>(event: Event<TPayload>): EventType;
172
+ /**
173
+ * Returns the event payload.
174
+ */
175
+ export declare function getEventPayload<TPayload>(event: Event<TPayload>): TPayload;
176
+ /**
177
+ * Returns a human-readable event description.
178
+ */
179
+ export declare function describeEvent(event: Event): string;
180
+ //# sourceMappingURL=eventDefinition.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventDefinition.type.d.ts","sourceRoot":"","sources":["../../src/eventTypes/eventDefinition.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Core event primitives for Zudojs.
3
+ *
4
+ * Events are immutable messages that describe something that
5
+ * happened inside the application or framework.
6
+ *
7
+ * This module intentionally contains no dispatching logic.
8
+ */
9
+ /**
10
+ * Determines whether an unknown value satisfies the Event
11
+ * contract.
12
+ */
13
+ export function isEvent(value) {
14
+ if (typeof value !== "object" || value === null) {
15
+ return false;
16
+ }
17
+ const candidate = value;
18
+ return (typeof candidate.id === "string" &&
19
+ typeof candidate.type === "string" &&
20
+ candidate.timestamp instanceof Date &&
21
+ "payload" in candidate);
22
+ }
23
+ /**
24
+ * Creates a unique event identifier.
25
+ * Returns a branded EventId type from @zudojs/constants.
26
+ */
27
+ export function createEventId() {
28
+ const uuid = crypto.randomUUID();
29
+ return `event:${uuid}`;
30
+ }
31
+ /**
32
+ * Normalizes an event timestamp.
33
+ */
34
+ function normalizeTimestamp(timestamp) {
35
+ if (timestamp instanceof Date) {
36
+ return new Date(timestamp.getTime());
37
+ }
38
+ if (typeof timestamp === "number") {
39
+ const date = new Date(timestamp);
40
+ if (Number.isNaN(date.getTime())) {
41
+ throw new TypeError("Invalid event timestamp.");
42
+ }
43
+ return date;
44
+ }
45
+ return new Date();
46
+ }
47
+ /**
48
+ * Freezes event metadata.
49
+ */
50
+ function normalizeMetadata(metadata) {
51
+ if (metadata === undefined) {
52
+ return undefined;
53
+ }
54
+ return Object.freeze({
55
+ ...metadata,
56
+ });
57
+ }
58
+ /**
59
+ * Creates an immutable event.
60
+ */
61
+ export function createEvent(input) {
62
+ if (typeof input.type !== "string" || input.type.trim().length === 0) {
63
+ throw new TypeError("Event type must be a non-empty string.");
64
+ }
65
+ const event = {
66
+ id: input.id ?? createEventId(),
67
+ type: input.type,
68
+ payload: input.payload,
69
+ timestamp: normalizeTimestamp(input.timestamp),
70
+ source: input.source,
71
+ correlationId: input.correlationId,
72
+ causationId: input.causationId,
73
+ metadata: normalizeMetadata(input.metadata),
74
+ };
75
+ return Object.freeze(event);
76
+ }
77
+ /**
78
+ * Creates a typed event definition.
79
+ */
80
+ export function defineEvent(type) {
81
+ if (type.trim().length === 0) {
82
+ throw new TypeError("Event type must be a non-empty string.");
83
+ }
84
+ return Object.freeze({
85
+ type,
86
+ create(payload, options = {}) {
87
+ return createEvent({
88
+ ...options,
89
+ type,
90
+ payload,
91
+ });
92
+ },
93
+ });
94
+ }
95
+ /**
96
+ * Creates a copy of an event with modified metadata.
97
+ *
98
+ * The original event remains immutable.
99
+ */
100
+ export function withEventMetadata(event, metadata) {
101
+ return createEvent({
102
+ ...event,
103
+ metadata: {
104
+ ...(event.metadata ?? {}),
105
+ ...metadata,
106
+ },
107
+ });
108
+ }
109
+ /**
110
+ * Creates a derived event while preserving correlation
111
+ * information from the original event.
112
+ */
113
+ export function createDerivedEvent(sourceEvent, input) {
114
+ return createEvent({
115
+ ...input,
116
+ correlationId: input.correlationId ??
117
+ sourceEvent.correlationId ??
118
+ sourceEvent.id,
119
+ causationId: input.causationId ?? sourceEvent.id,
120
+ });
121
+ }
122
+ /**
123
+ * Returns the event type.
124
+ */
125
+ export function getEventType(event) {
126
+ return event.type;
127
+ }
128
+ /**
129
+ * Returns the event payload.
130
+ */
131
+ export function getEventPayload(event) {
132
+ return event.payload;
133
+ }
134
+ /**
135
+ * Returns a human-readable event description.
136
+ */
137
+ export function describeEvent(event) {
138
+ return `${event.type} (${event.id})`;
139
+ }
140
+ //# sourceMappingURL=eventDefinition.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventDefinition.type.js","sourceRoot":"","sources":["../../src/eventTypes/eventDefinition.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Event payload primitives for Zudojs.
3
+ *
4
+ * Payloads contain the application data carried by an event.
5
+ * This module provides type-safe payload contracts and helpers
6
+ * without coupling payloads to the event bus.
7
+ */
8
+ /**
9
+ * A generic event payload.
10
+ */
11
+ export type EventPayload = unknown;
12
+ /**
13
+ * A structured event payload.
14
+ */
15
+ export type ObjectEventPayload = Readonly<Record<string, unknown>>;
16
+ /**
17
+ * Primitive values that can safely be used as payload data.
18
+ */
19
+ export type PrimitiveEventPayload = string | number | boolean | bigint | symbol | null | undefined;
20
+ /**
21
+ * JSON-compatible event payload value.
22
+ */
23
+ export type JsonEventPayload = string | number | boolean | null | JsonEventPayload[] | {
24
+ readonly [key: string]: JsonEventPayload;
25
+ };
26
+ /**
27
+ * Payload type map used by strongly typed event systems.
28
+ */
29
+ export type EventPayloadMap = Record<string, unknown>;
30
+ /**
31
+ * Extracts the payload associated with an event type.
32
+ */
33
+ export type PayloadOf<TMap extends EventPayloadMap, TType extends keyof TMap> = TMap[TType];
34
+ /**
35
+ * Creates a payload map from event definitions.
36
+ */
37
+ export type PayloadMap<TTypes extends string, TPayload> = {
38
+ readonly [TType in TTypes]: TPayload;
39
+ };
40
+ /**
41
+ * Event payload factory.
42
+ */
43
+ export type EventPayloadFactory<TPayload = EventPayload, TInput = TPayload> = (input: TInput) => TPayload;
44
+ /**
45
+ * Options used when creating a payload.
46
+ */
47
+ export interface EventPayloadOptions {
48
+ /**
49
+ * Whether the payload should be frozen recursively.
50
+ *
51
+ * Defaults to false.
52
+ */
53
+ readonly deepFreeze?: boolean;
54
+ /**
55
+ * Whether undefined values should be removed from
56
+ * object payloads.
57
+ *
58
+ * Defaults to false.
59
+ */
60
+ readonly stripUndefined?: boolean;
61
+ }
62
+ /**
63
+ * Determines whether a value is a primitive payload.
64
+ */
65
+ export declare function isPrimitiveEventPayload(value: unknown): value is PrimitiveEventPayload;
66
+ /**
67
+ * Determines whether a value is a structured object payload.
68
+ */
69
+ export declare function isObjectEventPayload(value: unknown): value is ObjectEventPayload;
70
+ /**
71
+ * Determines whether a value can be represented as a JSON
72
+ * event payload.
73
+ */
74
+ export declare function isJsonEventPayload(value: unknown): value is JsonEventPayload;
75
+ /**
76
+ * Creates a payload object from an input object.
77
+ */
78
+ export declare function createEventPayload<TPayload extends EventPayload>(payload: TPayload, options?: EventPayloadOptions): TPayload;
79
+ /**
80
+ * Creates a structured object payload.
81
+ */
82
+ export declare function createObjectEventPayload<const TPayload extends ObjectEventPayload>(payload: TPayload, options?: EventPayloadOptions): TPayload;
83
+ /**
84
+ * Creates a JSON-compatible event payload.
85
+ */
86
+ export declare function createJsonEventPayload<const TPayload extends JsonEventPayload>(payload: TPayload, options?: EventPayloadOptions): TPayload;
87
+ /**
88
+ * Clones a payload using structuredClone when available.
89
+ *
90
+ * Falls back to returning the original payload when cloning
91
+ * is not possible.
92
+ */
93
+ export declare function cloneEventPayload<TPayload extends EventPayload>(payload: TPayload): TPayload;
94
+ /**
95
+ * Deeply freezes an event payload.
96
+ */
97
+ export declare function deepFreeze<T>(value: T): T;
98
+ /**
99
+ * Removes undefined properties from an object payload.
100
+ */
101
+ export declare function stripUndefinedValues<T extends ObjectEventPayload>(payload: T): T;
102
+ /**
103
+ * Merges two object payloads.
104
+ *
105
+ * Values from the second payload override values from the
106
+ * first payload.
107
+ */
108
+ export declare function mergeEventPayloads<TFirst extends ObjectEventPayload, TSecond extends ObjectEventPayload>(first: TFirst, second: TSecond): TFirst & TSecond;
109
+ /**
110
+ * Creates a payload factory that always returns the supplied
111
+ * static payload.
112
+ */
113
+ export declare function staticPayload<TPayload>(payload: TPayload): EventPayloadFactory<TPayload, void>;
114
+ /**
115
+ * Creates a payload factory from a transformation function.
116
+ */
117
+ export declare function definePayloadFactory<TInput, TPayload>(factory: EventPayloadFactory<TPayload, TInput>): EventPayloadFactory<TPayload, TInput>;
118
+ /**
119
+ * Validates a payload using a custom predicate.
120
+ */
121
+ export declare function validateEventPayload<TPayload>(payload: unknown, validator: (payload: unknown) => payload is TPayload): TPayload;
122
+ /**
123
+ * Returns a human-readable payload type.
124
+ */
125
+ export declare function describeEventPayload(payload: unknown): string;
126
+ //# sourceMappingURL=eventPayload.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventPayload.type.d.ts","sourceRoot":"","sources":["../../src/eventTypes/eventPayload.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Event payload primitives for Zudojs.
3
+ *
4
+ * Payloads contain the application data carried by an event.
5
+ * This module provides type-safe payload contracts and helpers
6
+ * without coupling payloads to the event bus.
7
+ */
8
+ /**
9
+ * Determines whether a value is a primitive payload.
10
+ */
11
+ export function isPrimitiveEventPayload(value) {
12
+ return (value === null ||
13
+ value === undefined ||
14
+ (typeof value !== "object" && typeof value !== "function"));
15
+ }
16
+ /**
17
+ * Determines whether a value is a structured object payload.
18
+ */
19
+ export function isObjectEventPayload(value) {
20
+ return typeof value === "object" && value !== null && !Array.isArray(value);
21
+ }
22
+ /**
23
+ * Determines whether a value can be represented as a JSON
24
+ * event payload.
25
+ */
26
+ export function isJsonEventPayload(value) {
27
+ if (value === null ||
28
+ typeof value === "string" ||
29
+ typeof value === "boolean") {
30
+ return true;
31
+ }
32
+ if (typeof value === "number") {
33
+ return Number.isFinite(value);
34
+ }
35
+ if (Array.isArray(value)) {
36
+ return value.every((item) => isJsonEventPayload(item));
37
+ }
38
+ if (typeof value === "object") {
39
+ return Object.values(value).every((item) => isJsonEventPayload(item));
40
+ }
41
+ return false;
42
+ }
43
+ /**
44
+ * Creates a payload object from an input object.
45
+ */
46
+ export function createEventPayload(payload, options = {}) {
47
+ let result = payload;
48
+ if (options.stripUndefined && isObjectEventPayload(result)) {
49
+ result = stripUndefinedValues(result);
50
+ }
51
+ if (options.deepFreeze) {
52
+ result = deepFreeze(result);
53
+ }
54
+ return result;
55
+ }
56
+ /**
57
+ * Creates a structured object payload.
58
+ */
59
+ export function createObjectEventPayload(payload, options = {}) {
60
+ return createEventPayload(payload, options);
61
+ }
62
+ /**
63
+ * Creates a JSON-compatible event payload.
64
+ */
65
+ export function createJsonEventPayload(payload, options = {}) {
66
+ if (!isJsonEventPayload(payload)) {
67
+ throw new TypeError("Event payload must contain only JSON-compatible values.");
68
+ }
69
+ return createEventPayload(payload, options);
70
+ }
71
+ /**
72
+ * Clones a payload using structuredClone when available.
73
+ *
74
+ * Falls back to returning the original payload when cloning
75
+ * is not possible.
76
+ */
77
+ export function cloneEventPayload(payload) {
78
+ if (typeof structuredClone === "function") {
79
+ try {
80
+ return structuredClone(payload);
81
+ }
82
+ catch {
83
+ // Fall through to the original payload.
84
+ }
85
+ }
86
+ return payload;
87
+ }
88
+ /**
89
+ * Deeply freezes an event payload.
90
+ */
91
+ export function deepFreeze(value) {
92
+ if (value === null || typeof value !== "object") {
93
+ return value;
94
+ }
95
+ if (Object.isFrozen(value)) {
96
+ return value;
97
+ }
98
+ const object = value;
99
+ for (const key of Reflect.ownKeys(object)) {
100
+ const child = object[key];
101
+ if (child !== null &&
102
+ typeof child === "object" &&
103
+ !Object.isFrozen(child)) {
104
+ deepFreeze(child);
105
+ }
106
+ }
107
+ return Object.freeze(value);
108
+ }
109
+ /**
110
+ * Removes undefined properties from an object payload.
111
+ */
112
+ export function stripUndefinedValues(payload) {
113
+ const result = {};
114
+ for (const [key, value] of Object.entries(payload)) {
115
+ if (value !== undefined) {
116
+ result[key] = value;
117
+ }
118
+ }
119
+ return result;
120
+ }
121
+ /**
122
+ * Merges two object payloads.
123
+ *
124
+ * Values from the second payload override values from the
125
+ * first payload.
126
+ */
127
+ export function mergeEventPayloads(first, second) {
128
+ return {
129
+ ...first,
130
+ ...second,
131
+ };
132
+ }
133
+ /**
134
+ * Creates a payload factory that always returns the supplied
135
+ * static payload.
136
+ */
137
+ export function staticPayload(payload) {
138
+ return () => payload;
139
+ }
140
+ /**
141
+ * Creates a payload factory from a transformation function.
142
+ */
143
+ export function definePayloadFactory(factory) {
144
+ return factory;
145
+ }
146
+ /**
147
+ * Validates a payload using a custom predicate.
148
+ */
149
+ export function validateEventPayload(payload, validator) {
150
+ if (!validator(payload)) {
151
+ throw new TypeError("Event payload validation failed.");
152
+ }
153
+ return payload;
154
+ }
155
+ /**
156
+ * Returns a human-readable payload type.
157
+ */
158
+ export function describeEventPayload(payload) {
159
+ if (payload === null) {
160
+ return "null";
161
+ }
162
+ if (Array.isArray(payload)) {
163
+ return "array";
164
+ }
165
+ return typeof payload;
166
+ }
167
+ //# sourceMappingURL=eventPayload.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventPayload.type.js","sourceRoot":"","sources":["../../src/eventTypes/eventPayload.type.ts"],"names":[],"mappings":"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"}