@nimbus-cqrs/eventsourcingdb 2.4.0 → 3.0.0-beta.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 (88) hide show
  1. package/README.md +82 -46
  2. package/dist/index.d.ts +8 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +8 -0
  5. package/dist/index.js.map +1 -0
  6. package/{esm → dist}/lib/client.d.ts +28 -17
  7. package/{esm → dist}/lib/client.d.ts.map +1 -1
  8. package/{esm → dist}/lib/client.js +25 -19
  9. package/dist/lib/client.js.map +1 -0
  10. package/dist/lib/consumerRunner.d.ts +62 -0
  11. package/dist/lib/consumerRunner.d.ts.map +1 -0
  12. package/dist/lib/consumerRunner.js +386 -0
  13. package/dist/lib/consumerRunner.js.map +1 -0
  14. package/dist/lib/eventConsumer.d.ts +94 -0
  15. package/dist/lib/eventConsumer.d.ts.map +1 -0
  16. package/dist/lib/eventConsumer.js +2 -0
  17. package/dist/lib/eventConsumer.js.map +1 -0
  18. package/{esm → dist}/lib/eventMapping.d.ts +1 -1
  19. package/dist/lib/eventMapping.d.ts.map +1 -0
  20. package/{esm → dist}/lib/eventMapping.js +2 -1
  21. package/dist/lib/eventMapping.js.map +1 -0
  22. package/dist/lib/eventObserver.d.ts +158 -0
  23. package/dist/lib/eventObserver.d.ts.map +1 -0
  24. package/dist/lib/eventObserver.js +339 -0
  25. package/dist/lib/eventObserver.js.map +1 -0
  26. package/dist/lib/observerRegistry.d.ts +39 -0
  27. package/dist/lib/observerRegistry.d.ts.map +1 -0
  28. package/dist/lib/observerRegistry.js +56 -0
  29. package/dist/lib/observerRegistry.js.map +1 -0
  30. package/{esm → dist}/lib/readEvents.d.ts.map +1 -1
  31. package/{esm → dist}/lib/readEvents.js +3 -2
  32. package/dist/lib/readEvents.js.map +1 -0
  33. package/{esm → dist}/lib/tracing.d.ts +3 -0
  34. package/dist/lib/tracing.d.ts.map +1 -0
  35. package/{esm → dist}/lib/tracing.js +5 -1
  36. package/dist/lib/tracing.js.map +1 -0
  37. package/dist/lib/writeEvents.d.ts +29 -0
  38. package/dist/lib/writeEvents.d.ts.map +1 -0
  39. package/dist/lib/writeEvents.js +47 -0
  40. package/dist/lib/writeEvents.js.map +1 -0
  41. package/package.json +32 -13
  42. package/src/index.ts +7 -0
  43. package/src/lib/client.ts +166 -0
  44. package/src/lib/consumerRunner.ts +592 -0
  45. package/src/lib/eventConsumer.ts +95 -0
  46. package/src/lib/eventMapping.ts +115 -0
  47. package/src/lib/eventObserver.ts +620 -0
  48. package/src/lib/observerRegistry.ts +69 -0
  49. package/src/lib/readEvents.ts +28 -0
  50. package/src/lib/tracing.ts +295 -0
  51. package/src/lib/writeEvents.ts +72 -0
  52. package/esm/_dnt.polyfills.d.ts +0 -7
  53. package/esm/_dnt.polyfills.d.ts.map +0 -1
  54. package/esm/_dnt.polyfills.js +0 -1
  55. package/esm/_dnt.shims.d.ts +0 -2
  56. package/esm/_dnt.shims.d.ts.map +0 -1
  57. package/esm/_dnt.shims.js +0 -57
  58. package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts +0 -700
  59. package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +0 -1
  60. package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.js +0 -903
  61. package/esm/deps/jsr.io/@std/ulid/1.0.0/_util.d.ts +0 -14
  62. package/esm/deps/jsr.io/@std/ulid/1.0.0/_util.d.ts.map +0 -1
  63. package/esm/deps/jsr.io/@std/ulid/1.0.0/_util.js +0 -65
  64. package/esm/deps/jsr.io/@std/ulid/1.0.0/decode_time.d.ts +0 -20
  65. package/esm/deps/jsr.io/@std/ulid/1.0.0/decode_time.d.ts.map +0 -1
  66. package/esm/deps/jsr.io/@std/ulid/1.0.0/decode_time.js +0 -43
  67. package/esm/deps/jsr.io/@std/ulid/1.0.0/mod.d.ts +0 -44
  68. package/esm/deps/jsr.io/@std/ulid/1.0.0/mod.d.ts.map +0 -1
  69. package/esm/deps/jsr.io/@std/ulid/1.0.0/mod.js +0 -47
  70. package/esm/deps/jsr.io/@std/ulid/1.0.0/monotonic_ulid.d.ts +0 -44
  71. package/esm/deps/jsr.io/@std/ulid/1.0.0/monotonic_ulid.d.ts.map +0 -1
  72. package/esm/deps/jsr.io/@std/ulid/1.0.0/monotonic_ulid.js +0 -51
  73. package/esm/deps/jsr.io/@std/ulid/1.0.0/ulid.d.ts +0 -31
  74. package/esm/deps/jsr.io/@std/ulid/1.0.0/ulid.d.ts.map +0 -1
  75. package/esm/deps/jsr.io/@std/ulid/1.0.0/ulid.js +0 -37
  76. package/esm/index.d.ts +0 -7
  77. package/esm/index.d.ts.map +0 -1
  78. package/esm/index.js +0 -6
  79. package/esm/lib/eventMapping.d.ts.map +0 -1
  80. package/esm/lib/eventObserver.d.ts +0 -133
  81. package/esm/lib/eventObserver.d.ts.map +0 -1
  82. package/esm/lib/eventObserver.js +0 -291
  83. package/esm/lib/tracing.d.ts.map +0 -1
  84. package/esm/lib/writeEvents.d.ts +0 -11
  85. package/esm/lib/writeEvents.d.ts.map +0 -1
  86. package/esm/lib/writeEvents.js +0 -31
  87. package/esm/package.json +0 -3
  88. /package/{esm → dist}/lib/readEvents.d.ts +0 -0
@@ -1,291 +0,0 @@
1
- import { calculateBackoffDelay as coreCalculateBackoffDelay, getLogger, withRetry, } from '@nimbus-cqrs/core';
2
- import { SpanStatusCode } from '@opentelemetry/api';
3
- import { getEventSourcingDBClient } from './client.js';
4
- import { isEventData } from './eventMapping.js';
5
- import { observerConnectionReconnectsCounter, observerConnectionRetryAttemptsCounter, observerEventsHandledCounter, observerHandlerRetryAttemptsCounter, observerHandlingDuration, withObserveEventSpan, } from './tracing.js';
6
- const DEFAULT_RETRY_OPTIONS = {
7
- maxRetries: 3,
8
- initialRetryDelayMs: 3000,
9
- };
10
- /**
11
- * Returns a promise that resolves after the given number of milliseconds.
12
- */
13
- const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
14
- /**
15
- * Calculates an exponential backoff delay with jitter for a given
16
- * retry attempt. The jitter adds up to 30% of the base delay to
17
- * avoid thundering-herd effects.
18
- *
19
- * @param initialDelayMs - The base delay in milliseconds before
20
- * exponential scaling.
21
- * @param attempt - The zero-based retry attempt number.
22
- * @returns The backoff delay in milliseconds.
23
- *
24
- * @deprecated Import {@link calculateBackoffDelay} from
25
- * `@nimbus-cqrs/core` instead. This wrapper keeps the historical
26
- * 30% jitter default used by EventSourcingDB observers.
27
- */
28
- export const calculateBackoffDelay = (initialDelayMs, attempt) => coreCalculateBackoffDelay(initialDelayMs, attempt, {
29
- jitterFactor: 0.3,
30
- maxDelayMs: Infinity,
31
- });
32
- /**
33
- * Resolves connection retry options, preferring
34
- * {@link EventObserver.connectionRetryOptions} over the deprecated
35
- * {@link EventObserver.retryOptions}.
36
- */
37
- const resolveConnectionRetryOptions = (eventObserver) => ({
38
- maxRetries: eventObserver.connectionRetryOptions?.maxRetries ??
39
- eventObserver.retryOptions?.maxRetries ??
40
- DEFAULT_RETRY_OPTIONS.maxRetries,
41
- initialRetryDelayMs: eventObserver.connectionRetryOptions?.initialRetryDelayMs ??
42
- eventObserver.retryOptions?.initialRetryDelayMs ??
43
- DEFAULT_RETRY_OPTIONS.initialRetryDelayMs,
44
- });
45
- /**
46
- * Resolves handler retry options from {@link EventObserver.handlerRetryOptions}.
47
- */
48
- const resolveHandlerRetryOptions = (eventObserver) => ({
49
- maxRetries: eventObserver.handlerRetryOptions?.maxRetries ??
50
- DEFAULT_RETRY_OPTIONS.maxRetries,
51
- initialRetryDelayMs: eventObserver.handlerRetryOptions?.initialRetryDelayMs ??
52
- DEFAULT_RETRY_OPTIONS.initialRetryDelayMs,
53
- });
54
- /**
55
- * Logs an informational message when an event observer connects or
56
- * reconnects to EventSourcingDB. When {@link retryCount} is greater
57
- * than zero the message indicates a successful reconnection.
58
- *
59
- * @param subject - The observed subject.
60
- * @param retryCount - The number of retries that preceded this
61
- * connection (0 for the initial connection).
62
- * @param data - Additional context logged alongside the message.
63
- */
64
- const logObserverConnection = (subject, retryCount, data) => {
65
- const retryLabel = retryCount === 1 ? 'retry' : 'retries';
66
- const message = retryCount > 0
67
- ? `Reconnected event observer for subject "${subject}" after ${retryCount} ${retryLabel}`
68
- : `Observing events for subject "${subject}"`;
69
- getLogger().info({ category: 'Nimbus', message, data });
70
- };
71
- /**
72
- * Handles a connection / stream error by logging it and waiting with
73
- * exponential backoff before the next reconnect attempt. When the
74
- * maximum number of retries is exceeded a critical log entry is
75
- * emitted and no further retries are attempted.
76
- *
77
- * @param error - The error that caused the observer to disconnect.
78
- * @param subject - The observed subject.
79
- * @param retryCount - The current (1-based) retry attempt number.
80
- * @param maxRetries - The maximum number of allowed retries.
81
- * @param initialRetryDelayMs - The base delay used for exponential
82
- * backoff calculation.
83
- * @returns `true` if the observer should retry, `false` if retries
84
- * are exhausted.
85
- */
86
- const handleConnectionError = async (error, subject, retryCount, maxRetries, initialRetryDelayMs) => {
87
- if (retryCount > maxRetries) {
88
- getLogger().critical({
89
- category: 'Nimbus',
90
- message: `Failed to observe events for subject "${subject}" after ${maxRetries} ${maxRetries === 1 ? 'retry' : 'retries'}.`,
91
- });
92
- return false;
93
- }
94
- observerConnectionRetryAttemptsCounter.add(1, { subject });
95
- const backoffDelay = calculateBackoffDelay(initialRetryDelayMs, retryCount - 1);
96
- getLogger().error({
97
- category: 'Nimbus',
98
- message: `Error observing events for subject "${subject}" (retry ${retryCount}/${maxRetries}), retrying in ${backoffDelay}ms`,
99
- error: error,
100
- });
101
- await delay(backoffDelay);
102
- return true;
103
- };
104
- const recordHandlerMetrics = (metricLabels, status, startTime) => {
105
- observerEventsHandledCounter.add(1, { ...metricLabels, status });
106
- observerHandlingDuration.record((performance.now() - startTime) / 1000, metricLabels);
107
- };
108
- /**
109
- * Invokes the event handler with in-place retries. Does not reconnect
110
- * the observe stream. When all retries are exhausted, calls
111
- * {@link EventObserver.onHandlerError} or logs critically, then
112
- * returns without throwing so the observer can skip the event.
113
- */
114
- const handleEventWithRetry = async (eventObserver, event, handlerRetryOptions, span, startTime) => {
115
- const { maxRetries, initialRetryDelayMs } = handlerRetryOptions;
116
- const metricLabels = {
117
- subject: eventObserver.subject,
118
- event_type: event.type,
119
- };
120
- try {
121
- await withRetry(() => eventObserver.eventHandler(event), {
122
- maxRetries,
123
- initialDelayMs: initialRetryDelayMs,
124
- maxDelayMs: Infinity,
125
- jitterFactor: 0.3,
126
- onRetry: ({ error, attempt, delayMs }) => {
127
- observerHandlerRetryAttemptsCounter.add(1, metricLabels);
128
- span.addEvent('retry', {
129
- attempt,
130
- delay_ms: delayMs,
131
- });
132
- getLogger().error({
133
- category: 'Nimbus',
134
- message: `Error handling event "${event.id}" (${event.type}) for subject "${eventObserver.subject}" (retry ${attempt}/${maxRetries}), retrying in ${delayMs}ms`,
135
- error,
136
- ...(isEventData(event.data)
137
- ? {
138
- correlationId: event.data.nimbusMeta.correlationid,
139
- }
140
- : {}),
141
- });
142
- },
143
- });
144
- recordHandlerMetrics(metricLabels, 'success', startTime);
145
- }
146
- catch (error) {
147
- const handlerError = error instanceof Error
148
- ? error
149
- : new Error(String(error));
150
- recordHandlerMetrics(metricLabels, 'skipped', startTime);
151
- span.setStatus({
152
- code: SpanStatusCode.ERROR,
153
- message: handlerError.message,
154
- });
155
- span.recordException(handlerError);
156
- await handleHandlerExhausted(eventObserver, event, handlerError, maxRetries);
157
- }
158
- };
159
- /**
160
- * Handles exhausted handler retries by invoking
161
- * {@link EventObserver.onHandlerError} or emitting a critical log.
162
- */
163
- const handleHandlerExhausted = async (eventObserver, event, handlerError, maxRetries) => {
164
- if (eventObserver.onHandlerError) {
165
- try {
166
- await eventObserver.onHandlerError(handlerError, event);
167
- }
168
- catch (err) {
169
- // Isolate user callback failures so the poison
170
- // event is still skipped and observation continues.
171
- const callbackError = err instanceof Error
172
- ? err
173
- : new Error(String(err));
174
- getLogger().critical({
175
- category: 'Nimbus',
176
- message: `onHandlerError failed for event "${event.id}" (${event.type}) for subject "${eventObserver.subject}". Skipping event.`,
177
- error: callbackError,
178
- ...(isEventData(event.data)
179
- ? {
180
- correlationId: event.data.nimbusMeta.correlationid,
181
- }
182
- : {}),
183
- });
184
- }
185
- return;
186
- }
187
- getLogger().critical({
188
- category: 'Nimbus',
189
- message: `Failed to handle event "${event.id}" (${event.type}) for subject "${eventObserver.subject}" after ${maxRetries} ${maxRetries === 1 ? 'retry' : 'retries'}. Skipping event.`,
190
- error: handlerError,
191
- ...(isEventData(event.data)
192
- ? {
193
- correlationId: event.data.nimbusMeta.correlationid,
194
- }
195
- : {}),
196
- });
197
- };
198
- /**
199
- * Starts observing events for the given {@link EventObserver} with
200
- * automatic reconnection on stream failure and separate in-place
201
- * retries for handler failures.
202
- *
203
- * Events are consumed from the stream and each one is passed to the
204
- * observer's event handler inside an OpenTelemetry span. If the event
205
- * carries a `traceparent`, the span is linked to the original writer's
206
- * trace for end-to-end distributed tracing.
207
- *
208
- * Handler failures are retried without reconnecting. After handler
209
- * retries are exhausted the event is skipped (lower bound advanced)
210
- * so observation can continue. When the connection drops, exponential
211
- * backoff with jitter is applied up to the configured maximum number
212
- * of connection retries.
213
- *
214
- * @param eventObserver - The event observer configuration.
215
- * @returns A promise that resolves when the observe stream ends or
216
- * connection retries are exhausted.
217
- */
218
- export const observeWithRetry = async (eventObserver) => {
219
- const connectionRetryOptions = resolveConnectionRetryOptions(eventObserver);
220
- const handlerRetryOptions = resolveHandlerRetryOptions(eventObserver);
221
- let connectionRetryCount = 0;
222
- let lastProcessedEventId;
223
- while (true) {
224
- try {
225
- // Resolve the client on every attempt so a re-initialized
226
- // singleton is picked up after reconnecting to EventSourcingDB.
227
- const eventSourcingDBClient = getEventSourcingDBClient();
228
- // Once we have a concrete position, use it as lower bound and
229
- // drop fromLatestEvent; otherwise fall back to the original options.
230
- const lowerBound = lastProcessedEventId
231
- ? { id: lastProcessedEventId, type: 'exclusive' }
232
- : eventObserver.lowerBound;
233
- const fromLatestEvent = lastProcessedEventId
234
- ? undefined
235
- : eventObserver.fromLatestEvent;
236
- logObserverConnection(eventObserver.subject, connectionRetryCount, {
237
- recursive: eventObserver.recursive ?? false,
238
- lowerBound,
239
- fromLatestEvent,
240
- });
241
- for await (const event of eventSourcingDBClient.observeEvents(eventObserver.subject, {
242
- recursive: eventObserver.recursive ?? false,
243
- ...(lowerBound ? { lowerBound } : {}),
244
- ...(fromLatestEvent ? { fromLatestEvent } : {}),
245
- })) {
246
- // Stream is healthy once events flow again. Count a successful
247
- // reconnect only here so failed reconnect attempts are excluded.
248
- if (connectionRetryCount > 0) {
249
- observerConnectionReconnectsCounter.add(1, {
250
- subject: eventObserver.subject,
251
- });
252
- }
253
- connectionRetryCount = 0;
254
- const traceContext = event.traceparent
255
- ? {
256
- traceparent: event.traceparent,
257
- tracestate: event.tracestate,
258
- }
259
- : undefined;
260
- const startTime = performance.now();
261
- await withObserveEventSpan(event, eventObserver.subject, traceContext, async (span) => {
262
- await handleEventWithRetry(eventObserver, event, handlerRetryOptions, span, startTime);
263
- });
264
- // Advance after success or skip so poison events do not block
265
- // the stream and reconnects resume past the last attempted event.
266
- lastProcessedEventId = event.id;
267
- }
268
- // If the loop completes normally (stream ended), we're done
269
- return;
270
- }
271
- catch (error) {
272
- connectionRetryCount++;
273
- const shouldRetry = await handleConnectionError(error, eventObserver.subject, connectionRetryCount, connectionRetryOptions.maxRetries, connectionRetryOptions.initialRetryDelayMs);
274
- if (!shouldRetry) {
275
- return;
276
- }
277
- }
278
- }
279
- };
280
- /**
281
- * Initializes an event observer by starting the observation loop in
282
- * the background (non-blocking). The observer will keep running and
283
- * reconnecting according to its connection retry options until the
284
- * stream ends or connection retries are exhausted. Handler failures
285
- * are retried separately and do not stop the observer.
286
- *
287
- * @param eventObserver - The event observer configuration.
288
- */
289
- export const initEventObserver = (eventObserver) => {
290
- observeWithRetry(eventObserver);
291
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/lib/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,IAAI,EAIZ,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,MAAM,qCAA4B,CAAC;AAEhD,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAmB3C;;GAEG;AACH,eAAO,MAAM,cAAc,iFAM1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,+EAMxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,iFAOpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mCAAmC,+EAM/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sCAAsC,+EAMlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mCAAmC,+EAM/C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EACtB,WAAW,MAAM,EACjB,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,eAAe,YAAY,KAC5B,OAAO,CAAC,CAAC,CA6DX,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAClC,OAAO;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACpD,iBAAiB,MAAM,EACvB,cAAc,YAAY,GAAG,SAAS,EACtC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,CAAC,CA8BX,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAuB,sBAAsB,CAAC,CAAC,EAC3C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GACxC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CA0C/B"}
@@ -1,11 +0,0 @@
1
- import type { Event } from '@nimbus-cqrs/core';
2
- import type { Precondition } from 'eventsourcingdb';
3
- /**
4
- * Writes one or more Nimbus events to EventSourcingDB. Each event is
5
- * converted into an EventSourcingDB event candidate before being persisted.
6
- *
7
- * @param events - The Nimbus events to write.
8
- * @param preconditions - Optional preconditions that must be met for the write to succeed.
9
- */
10
- export declare const writeEvents: (events: Event[], preconditions?: Precondition[]) => Promise<void>;
11
- //# sourceMappingURL=writeEvents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"writeEvents.d.ts","sourceRoot":"","sources":["../../src/lib/writeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qDAAqD,CAAC;AAEjF,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAapE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACpB,QAAQ,KAAK,EAAE,EACf,gBAAgB,YAAY,EAAE,KAC/B,OAAO,CAAC,IAAI,CAyBd,CAAC"}
@@ -1,31 +0,0 @@
1
- import { context, propagation } from '@opentelemetry/api';
2
- import { getEventSourcingDBClient } from './client.js';
3
- import { nimbusEventToEventSourcingDBEventCandidate } from './eventMapping.js';
4
- import { eventSizeBytes, withSpan } from './tracing.js';
5
- const textEncoder = new TextEncoder();
6
- /**
7
- * Returns the UTF-8 byte length of a serialized Nimbus event.
8
- */
9
- const getEventSizeBytes = (event) => textEncoder.encode(JSON.stringify(event)).length;
10
- /**
11
- * Writes one or more Nimbus events to EventSourcingDB. Each event is
12
- * converted into an EventSourcingDB event candidate before being persisted.
13
- *
14
- * @param events - The Nimbus events to write.
15
- * @param preconditions - Optional preconditions that must be met for the write to succeed.
16
- */
17
- export const writeEvents = (events, preconditions) => {
18
- return withSpan('writeEvents', async () => {
19
- const eventSourcingDBClient = getEventSourcingDBClient();
20
- const carrier = {};
21
- propagation.inject(context.active(), carrier);
22
- const eventCandidates = events.map((event) => {
23
- eventSizeBytes.record(getEventSizeBytes(event), {
24
- subject: event.subject,
25
- event_type: event.type,
26
- });
27
- return nimbusEventToEventSourcingDBEventCandidate(event, carrier['traceparent'], carrier['tracestate']);
28
- });
29
- await eventSourcingDBClient.writeEvents(eventCandidates, preconditions);
30
- });
31
- };
package/esm/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
File without changes