@nimbus-cqrs/eventsourcingdb 2.3.0 → 2.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"eventObserver.d.ts","sourceRoot":"","sources":["../../src/lib/eventObserver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAarE,KAAK,KAAK,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;CACnC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAOF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;;;OAKG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,YAAY,CAAC;IACtC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CACb,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,oBAAoB,KAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7B,CAAC;AAQF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAC9B,gBAAgB,MAAM,EACtB,SAAS,MAAM,KAChB,MAIG,CAAC;AAgPP;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,GACzB,eAAe,aAAa,KAC7B,OAAO,CAAC,IAAI,CAiGd,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,eAAe,aAAa,KAAG,IAEhE,CAAC"}
1
+ {"version":3,"file":"eventObserver.d.ts","sourceRoot":"","sources":["../../src/lib/eventObserver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAarE,KAAK,KAAK,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;CACnC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAOF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;;;OAKG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,YAAY,CAAC;IACtC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CACb,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,oBAAoB,KAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7B,CAAC;AAaF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAC9B,gBAAgB,MAAM,EACtB,SAAS,MAAM,KAChB,MAKE,CAAC;AA4PN;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,GACzB,eAAe,aAAa,KAC7B,OAAO,CAAC,IAAI,CAiGd,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,eAAe,aAAa,KAAG,IAEhE,CAAC"}
@@ -11,6 +11,10 @@ const DEFAULT_RETRY_OPTIONS = {
11
11
  * Returns a promise that resolves after the given number of milliseconds.
12
12
  */
13
13
  const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
14
+ const OBSERVER_BACKOFF_OPTIONS = {
15
+ jitterFactor: 0.3,
16
+ maxDelayMs: Infinity,
17
+ };
14
18
  /**
15
19
  * Calculates an exponential backoff delay with jitter for a given
16
20
  * retry attempt. The jitter adds up to 30% of the base delay to
@@ -25,23 +29,27 @@ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
25
29
  * `@nimbus-cqrs/core` instead. This wrapper keeps the historical
26
30
  * 30% jitter default used by EventSourcingDB observers.
27
31
  */
28
- export const calculateBackoffDelay = (initialDelayMs, attempt) => coreCalculateBackoffDelay(initialDelayMs, attempt, {
29
- jitterFactor: 0.3,
30
- maxDelayMs: Infinity,
31
- });
32
+ export const calculateBackoffDelay = (initialDelayMs, attempt) => coreCalculateBackoffDelay(initialDelayMs, attempt, OBSERVER_BACKOFF_OPTIONS);
33
+ /**
34
+ * Reads the legacy connection-retry alias accepted on an event observer.
35
+ */
36
+ const readLegacyRetryOptions = (eventObserver) => eventObserver.retryOptions;
32
37
  /**
33
38
  * Resolves connection retry options, preferring
34
- * {@link EventObserver.connectionRetryOptions} over the deprecated
35
- * {@link EventObserver.retryOptions}.
39
+ * {@link EventObserver.connectionRetryOptions} and falling back to the
40
+ * legacy retryOptions alias.
36
41
  */
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
- });
42
+ const resolveConnectionRetryOptions = (eventObserver) => {
43
+ const legacyRetryOptions = readLegacyRetryOptions(eventObserver);
44
+ return {
45
+ maxRetries: eventObserver.connectionRetryOptions?.maxRetries ??
46
+ legacyRetryOptions?.maxRetries ??
47
+ DEFAULT_RETRY_OPTIONS.maxRetries,
48
+ initialRetryDelayMs: eventObserver.connectionRetryOptions?.initialRetryDelayMs ??
49
+ legacyRetryOptions?.initialRetryDelayMs ??
50
+ DEFAULT_RETRY_OPTIONS.initialRetryDelayMs,
51
+ };
52
+ };
45
53
  /**
46
54
  * Resolves handler retry options from {@link EventObserver.handlerRetryOptions}.
47
55
  */
@@ -92,7 +100,7 @@ const handleConnectionError = async (error, subject, retryCount, maxRetries, ini
92
100
  return false;
93
101
  }
94
102
  observerConnectionRetryAttemptsCounter.add(1, { subject });
95
- const backoffDelay = calculateBackoffDelay(initialRetryDelayMs, retryCount - 1);
103
+ const backoffDelay = coreCalculateBackoffDelay(initialRetryDelayMs, retryCount - 1, OBSERVER_BACKOFF_OPTIONS);
96
104
  getLogger().error({
97
105
  category: 'Nimbus',
98
106
  message: `Error observing events for subject "${subject}" (retry ${retryCount}/${maxRetries}), retrying in ${backoffDelay}ms`,
@@ -287,5 +295,5 @@ export const observeWithRetry = async (eventObserver) => {
287
295
  * @param eventObserver - The event observer configuration.
288
296
  */
289
297
  export const initEventObserver = (eventObserver) => {
290
- observeWithRetry(eventObserver);
298
+ void observeWithRetry(eventObserver);
291
299
  };
@@ -3,6 +3,9 @@ export declare const tracer: import("@opentelemetry/api").Tracer;
3
3
  export declare const DB_SYSTEM = "eventsourcingdb";
4
4
  /**
5
5
  * Histogram of serialized Nimbus event sizes written via writeEvents.
6
+ *
7
+ * Recorded without attributes so the series count does not grow with
8
+ * streams or event types.
6
9
  */
7
10
  export declare const eventSizeBytes: import("@opentelemetry/api").Histogram<import("@opentelemetry/api").Attributes>;
8
11
  /**
@@ -1 +1 @@
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
+ {"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;;;;;GAKG;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"}
@@ -11,6 +11,9 @@ const operationDuration = meter.createHistogram('eventsourcingdb_operation_durat
11
11
  });
12
12
  /**
13
13
  * Histogram of serialized Nimbus event sizes written via writeEvents.
14
+ *
15
+ * Recorded without attributes so the series count does not grow with
16
+ * streams or event types.
14
17
  */
15
18
  export const eventSizeBytes = meter.createHistogram('eventsourcingdb_event_size_bytes', {
16
19
  description: 'Size of events written to EventSourcingDB in bytes',
@@ -1 +1 @@
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
+ {"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,CAsBd,CAAC"}
@@ -20,10 +20,7 @@ export const writeEvents = (events, preconditions) => {
20
20
  const carrier = {};
21
21
  propagation.inject(context.active(), carrier);
22
22
  const eventCandidates = events.map((event) => {
23
- eventSizeBytes.record(getEventSizeBytes(event), {
24
- subject: event.subject,
25
- event_type: event.type,
26
- });
23
+ eventSizeBytes.record(getEventSizeBytes(event));
27
24
  return nimbusEventToEventSourcingDBEventCandidate(event, carrier['traceparent'], carrier['tracestate']);
28
25
  });
29
26
  await eventSourcingDBClient.writeEvents(eventCandidates, preconditions);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nimbus-cqrs/eventsourcingdb",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Simplify Event-Driven Applications - EventSourcingDB integration for the Nimbus framework.",
5
5
  "keywords": [
6
6
  "nimbus",
@@ -35,9 +35,9 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@opentelemetry/api": "^1.9.1",
38
- "eventsourcingdb": "^1.8.2",
38
+ "eventsourcingdb": "^1.9.1",
39
39
  "zod": "^4.4.3",
40
- "@nimbus-cqrs/core": "^2.3.0"
40
+ "@nimbus-cqrs/core": "^2.5.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^22.0.0"