@kronos-ts/axon-server 0.4.0 → 0.6.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.
Files changed (106) hide show
  1. package/dist/axon-server-event-store.d.ts +0 -16
  2. package/dist/axon-server-event-store.d.ts.map +1 -1
  3. package/dist/axon-server-event-store.js +73 -45
  4. package/dist/axon-server-event-store.js.map +1 -1
  5. package/dist/axon-server-snapshotting-event-store.d.ts +30 -0
  6. package/dist/axon-server-snapshotting-event-store.d.ts.map +1 -0
  7. package/dist/axon-server-snapshotting-event-store.js +154 -0
  8. package/dist/axon-server-snapshotting-event-store.js.map +1 -0
  9. package/dist/axon-server.d.ts +46 -65
  10. package/dist/axon-server.d.ts.map +1 -1
  11. package/dist/axon-server.js +490 -317
  12. package/dist/axon-server.js.map +1 -1
  13. package/dist/bounded-read.d.ts +19 -0
  14. package/dist/bounded-read.d.ts.map +1 -0
  15. package/dist/bounded-read.js +39 -0
  16. package/dist/bounded-read.js.map +1 -0
  17. package/dist/connection-manager.d.ts +2 -2
  18. package/dist/connection-manager.d.ts.map +1 -1
  19. package/dist/connection.d.ts +36 -21
  20. package/dist/connection.d.ts.map +1 -1
  21. package/dist/connection.js +84 -45
  22. package/dist/connection.js.map +1 -1
  23. package/dist/context-view.d.ts +2 -2
  24. package/dist/context-view.d.ts.map +1 -1
  25. package/dist/control-plane.d.ts +14 -24
  26. package/dist/control-plane.d.ts.map +1 -1
  27. package/dist/control-plane.js +6 -37
  28. package/dist/control-plane.js.map +1 -1
  29. package/dist/event-processor-info.d.ts +7 -25
  30. package/dist/event-processor-info.d.ts.map +1 -1
  31. package/dist/event-processor-info.js +16 -20
  32. package/dist/event-processor-info.js.map +1 -1
  33. package/dist/flow-controlled-sender.d.ts +2 -2
  34. package/dist/flow-controlled-sender.d.ts.map +1 -1
  35. package/dist/flow-controlled-sender.js +37 -17
  36. package/dist/flow-controlled-sender.js.map +1 -1
  37. package/dist/generated/command.d.ts +20 -20
  38. package/dist/generated/command.d.ts.map +1 -1
  39. package/dist/generated/common.d.ts +20 -20
  40. package/dist/generated/common.d.ts.map +1 -1
  41. package/dist/generated/control.d.ts +36 -40
  42. package/dist/generated/control.d.ts.map +1 -1
  43. package/dist/generated/dcb.d.ts +88 -94
  44. package/dist/generated/dcb.d.ts.map +1 -1
  45. package/dist/generated/event.d.ts +81 -84
  46. package/dist/generated/event.d.ts.map +1 -1
  47. package/dist/generated/google/protobuf/empty.d.ts +3 -4
  48. package/dist/generated/google/protobuf/empty.d.ts.map +1 -1
  49. package/dist/generated/query.d.ts +40 -40
  50. package/dist/generated/query.d.ts.map +1 -1
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/message-size.d.ts +2 -2
  56. package/dist/message-size.d.ts.map +1 -1
  57. package/dist/outbound-stream.d.ts +7 -11
  58. package/dist/outbound-stream.d.ts.map +1 -1
  59. package/dist/outbound-stream.js +65 -16
  60. package/dist/outbound-stream.js.map +1 -1
  61. package/dist/platform-service.d.ts +14 -5
  62. package/dist/platform-service.d.ts.map +1 -1
  63. package/dist/platform-service.js +70 -10
  64. package/dist/platform-service.js.map +1 -1
  65. package/dist/resilience.d.ts +62 -0
  66. package/dist/resilience.d.ts.map +1 -0
  67. package/dist/resilience.js +103 -0
  68. package/dist/resilience.js.map +1 -0
  69. package/dist/shutdown-latch.d.ts +5 -4
  70. package/dist/shutdown-latch.d.ts.map +1 -1
  71. package/dist/shutdown-latch.js +20 -1
  72. package/dist/shutdown-latch.js.map +1 -1
  73. package/dist/stream-recovery.d.ts +9 -0
  74. package/dist/stream-recovery.d.ts.map +1 -0
  75. package/dist/stream-recovery.js +70 -0
  76. package/dist/stream-recovery.js.map +1 -0
  77. package/package.json +3 -3
  78. package/src/axon-server-event-store.ts +77 -47
  79. package/src/axon-server-snapshotting-event-store.ts +194 -0
  80. package/src/axon-server.ts +472 -374
  81. package/src/bounded-read.ts +43 -0
  82. package/src/connection-manager.ts +1 -1
  83. package/src/connection.ts +93 -59
  84. package/src/context-view.ts +1 -1
  85. package/src/control-plane.ts +22 -66
  86. package/src/event-processor-info.ts +23 -44
  87. package/src/flow-controlled-sender.ts +34 -15
  88. package/src/generated/command.ts +10 -10
  89. package/src/generated/common.ts +10 -10
  90. package/src/generated/control.ts +20 -20
  91. package/src/generated/dcb.ts +47 -47
  92. package/src/generated/event.ts +42 -42
  93. package/src/generated/google/protobuf/empty.ts +2 -2
  94. package/src/generated/query.ts +20 -20
  95. package/src/index.ts +1 -2
  96. package/src/message-size.ts +1 -1
  97. package/src/outbound-stream.ts +58 -28
  98. package/src/platform-service.ts +77 -13
  99. package/src/resilience.ts +149 -0
  100. package/src/shutdown-latch.ts +16 -3
  101. package/src/stream-recovery.ts +72 -0
  102. package/dist/axon-server-snapshot-store.d.ts +0 -12
  103. package/dist/axon-server-snapshot-store.d.ts.map +0 -1
  104. package/dist/axon-server-snapshot-store.js +0 -82
  105. package/dist/axon-server-snapshot-store.js.map +0 -1
  106. package/src/axon-server-snapshot-store.ts +0 -110
@@ -1,20 +1,4 @@
1
1
  import type { EventStore } from "@kronos-ts/core";
2
2
  import type { AxonServerStoreSource } from "./connection.js";
3
- /**
4
- * An EventStore over Axon Server's DCB event store, in one context.
5
- *
6
- * This bridges the framework's EventStore interface to the gRPC
7
- * DcbEventStore service, handling conversion between framework types
8
- * and proto messages.
9
- *
10
- * `context` is Axon Server's tenancy boundary and is a per-call header, so
11
- * several contexts share the one channel `conn` holds — see `contextView`. The
12
- * serializer is the connection's: one codec for everything this client puts on
13
- * the wire.
14
- *
15
- * The {@link open} method returns a persistent {@link MessageStream} backed by
16
- * a single gRPC Stream RPC call that stays open indefinitely, aligned with
17
- * Java's infinite {@code ResultStream}.
18
- */
19
3
  export declare function axonServerEventStore(conn: AxonServerStoreSource, context: string): EventStore;
20
4
  //# sourceMappingURL=axon-server-event-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axon-server-event-store.d.ts","sourceRoot":"","sources":["../src/axon-server-event-store.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,UAAU,EAMX,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AA0H5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CA2M7F"}
1
+ {"version":3,"file":"axon-server-event-store.d.ts","sourceRoot":"","sources":["../src/axon-server-event-store.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,UAAU,EAMX,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAwJ5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CA2N7F"}
@@ -1,8 +1,9 @@
1
1
  import { qualifiedNameToString, qualifiedNameFromString, } from "@kronos-ts/core";
2
- import { messageStream, compileQuery } from "@kronos-ts/core";
2
+ import { compileQuery } from "@kronos-ts/core";
3
3
  import { globalSequenceToken, FIRST_TOKEN } from "@kronos-ts/core";
4
4
  import { markerAt, noMarker } from "@kronos-ts/core";
5
5
  import { contextView } from "./context-view.js";
6
+ import { boundedRead } from "./bounded-read.js";
6
7
  // ---------------------------------------------------------------------------
7
8
  // Criteria conversion — framework EventCriteria → proto Criterion[]
8
9
  // ---------------------------------------------------------------------------
@@ -114,33 +115,32 @@ function createEventConverters(serializer) {
114
115
  * a single gRPC Stream RPC call that stays open indefinitely, aligned with
115
116
  * Java's infinite {@code ResultStream}.
116
117
  */
118
+ /**
119
+ * Axon Server's way of saying "there is nothing at or after that position".
120
+ *
121
+ * Matched on the gRPC status code first — `OUT_OF_RANGE` is 11 — with the
122
+ * server's own message as a second, narrower gate, so an unrelated future
123
+ * OUT_OF_RANGE is not swallowed along with it.
124
+ */
125
+ function isStartPastHead(err) {
126
+ const code = err.code;
127
+ const details = String(err.details ?? "");
128
+ return code === 11 && details.includes("Start sequence cannot be larger than end sequence");
129
+ }
117
130
  export function axonServerEventStore(conn, context) {
118
131
  const { connection, serializer, metadata: createAxonMetadata } = contextView(conn, context);
119
132
  const { eventToProto, eventFromProto } = createEventConverters(serializer);
120
- // Push-based subscriber registry (EventBus.subscribe contract). Axon Server's
121
- // own distribution is the server-side Stream RPC (see open()); these in-process
122
- // subscribers are notified best-effort on every successful local append.
123
- const subscribers = new Set();
124
- async function notifySubscribers(events) {
125
- for (const sub of subscribers) {
126
- try {
127
- await sub(events);
128
- }
129
- catch {
130
- /* ignore subscriber errors */
131
- }
132
- }
133
- }
134
- return {
135
- async source(condition) {
136
- const criterions = criteriaToCriterions(compileQuery(condition.query));
137
- const request = {
138
- fromSequence: condition.start ?? 0n,
139
- criterion: criterions,
140
- };
141
- const events = [];
142
- let marker = noMarker();
143
- const stream = connection.eventStore.source(request, { metadata: createAxonMetadata() });
133
+ async function sourceOnce(condition, signal) {
134
+ const criterions = criteriaToCriterions(compileQuery(condition.query));
135
+ const start = condition.start ?? 0n;
136
+ const request = {
137
+ fromSequence: start,
138
+ criterion: criterions,
139
+ };
140
+ const events = [];
141
+ let marker = noMarker();
142
+ try {
143
+ const stream = connection.eventStore.source(request, { metadata: createAxonMetadata(), signal });
144
144
  for await (const response of stream) {
145
145
  if (response.event) {
146
146
  const taggedEvent = response.event;
@@ -156,7 +156,30 @@ export function axonServerEventStore(conn, context) {
156
156
  marker = markerAt(response.consistencyMarker);
157
157
  }
158
158
  }
159
- return { events, marker };
159
+ }
160
+ catch (err) {
161
+ // READING PAST THE HEAD IS AN EMPTY ANSWER, NOT AN ERROR — and Axon
162
+ // Server disagrees, so this is where the two vocabularies are
163
+ // reconciled. `Source` fails OUT_OF_RANGE with "Start sequence cannot
164
+ // be larger than end sequence" whenever `fromSequence` is beyond the
165
+ // global head, which is the ORDINARY STEADY STATE of a snapshotted
166
+ // load: an entry written at the head means the very next read resumes
167
+ // at head + 1 and legitimately finds nothing.
168
+ //
169
+ // The marker is `start - 1`, and it is exact rather than conservative:
170
+ // the caller has already accounted for everything up to there (that is
171
+ // what asking to start later MEANS), and nothing can exist after it or
172
+ // the server would not have refused. So an append conditioned on this
173
+ // read is checked against precisely the range that was read.
174
+ if (!isStartPastHead(err))
175
+ throw err;
176
+ return { events: [], marker: start > 0n ? markerAt(start - 1n) : noMarker() };
177
+ }
178
+ return { events, marker };
179
+ }
180
+ return {
181
+ source(condition) {
182
+ return boundedRead(connection.config.readTimeoutMs, (signal) => sourceOnce(condition, signal));
160
183
  },
161
184
  async appendEvents(newEvents, condition) {
162
185
  const taggedEvents = newEvents.map(eventToProto);
@@ -181,7 +204,6 @@ export function axonServerEventStore(conn, context) {
181
204
  metadata: createAxonMetadata(),
182
205
  });
183
206
  responseMarker = response.consistencyMarker;
184
- await notifySubscribers(newEvents);
185
207
  },
186
208
  async afterCommit() {
187
209
  return markerAt(responseMarker ?? 0n);
@@ -202,7 +224,20 @@ export function axonServerEventStore(conn, context) {
202
224
  fromSequence: condition.position,
203
225
  criterion: criterions,
204
226
  };
205
- const grpcStream = connection.eventStore.stream(request, { metadata: createAxonMetadata() });
227
+ // `close()` must reach the server. This is a server-streaming call: the
228
+ // client sends nothing after the request, so the only way to end it from
229
+ // this side is to cancel it. Abandoning the async iterator does not do
230
+ // that — the `for await` below stays parked on the call until the next
231
+ // event arrives, which at the head of a quiet stream is never, and every
232
+ // closed stream leaves a live call behind on the server. With enough of
233
+ // them open, Axon Server stops answering later `source` reads (a 2-CPU
234
+ // container gets there after a handful): handlers never reply, and
235
+ // commands die at the server's own timeout.
236
+ const cancel = new AbortController();
237
+ const grpcStream = connection.eventStore.stream(request, {
238
+ metadata: createAxonMetadata(),
239
+ signal: cancel.signal,
240
+ });
206
241
  // Internal buffer for events pulled from the gRPC stream
207
242
  const buffer = [];
208
243
  let availableCallback = null;
@@ -232,13 +267,17 @@ export function axonServerEventStore(conn, context) {
232
267
  availableCallback?.();
233
268
  }
234
269
  catch (err) {
235
- streamError = err instanceof Error ? err : new Error(String(err));
270
+ // Our own cancellation surfaces here as an AbortError; that is the
271
+ // stream closing as asked, not a failure to report.
272
+ if (!completed) {
273
+ streamError = err instanceof Error ? err : new Error(String(err));
274
+ }
236
275
  completed = true;
237
276
  availableCallback?.();
238
277
  }
239
278
  }
240
279
  startReading();
241
- return messageStream({
280
+ return {
242
281
  next() {
243
282
  return buffer.shift();
244
283
  },
@@ -260,32 +299,21 @@ export function axonServerEventStore(conn, context) {
260
299
  close() {
261
300
  completed = true;
262
301
  availableCallback = null;
263
- // gRPC stream will be cancelled when the async iterator is abandoned
302
+ cancel.abort();
264
303
  },
265
- });
304
+ };
266
305
  },
267
306
  async getHeadPosition() {
268
- const response = await connection.eventStore.getHead({}, { metadata: createAxonMetadata() });
307
+ const response = await boundedRead(connection.config.readTimeoutMs, (signal) => connection.eventStore.getHead({}, { metadata: createAxonMetadata(), signal }));
269
308
  return response.sequence;
270
309
  },
271
310
  async firstToken() {
272
311
  return FIRST_TOKEN;
273
312
  },
274
313
  async latestToken() {
275
- const response = await connection.eventStore.getHead({}, { metadata: createAxonMetadata() });
314
+ const response = await boundedRead(connection.config.readTimeoutMs, (signal) => connection.eventStore.getHead({}, { metadata: createAxonMetadata(), signal }));
276
315
  return globalSequenceToken(response.sequence);
277
316
  },
278
- // EventBus contract — publish = append without condition, then notify
279
- // in-process subscribers.
280
- async publish(events) {
281
- await this.append(events);
282
- },
283
- subscribe(handler) {
284
- subscribers.add(handler);
285
- return () => {
286
- subscribers.delete(handler);
287
- };
288
- },
289
317
  };
290
318
  }
291
319
  //# sourceMappingURL=axon-server-event-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axon-server-event-store.js","sourceRoot":"","sources":["../src/axon-server-event-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"axon-server-event-store.js","sourceRoot":"","sources":["../src/axon-server-event-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { EventStore, SnapshotStoreCapability } from "@kronos-ts/core";
2
+ import type { AxonServerStoreSource } from "./connection.js";
3
+ /**
4
+ * Add the snapshotting capability to an Axon Server-backed log.
5
+ *
6
+ * ```ts
7
+ * const eventStore = axonServerSnapshottingEventStore(
8
+ * axonServerEventStore(axon, "default"),
9
+ * axon,
10
+ * "default",
11
+ * )
12
+ * ```
13
+ *
14
+ * ADDITIVE, NOT COLLAPSING. It returns `E & SnapshotStoreCapability` — the store you
15
+ * passed in, plus the write — so capabilities stack in either order and nothing
16
+ * the inner store carried is laundered on the way through.
17
+ *
18
+ * `context` is a per-call header, so this shares the one channel `conn` holds
19
+ * with every other context — see `contextView`. Payloads go through the
20
+ * connection's serializer.
21
+ *
22
+ * LATEST-ONLY, over a service that is not. `DcbSnapshotStore` keeps a sequence
23
+ * of snapshots per key; the capability keeps one. `add` therefore sets
24
+ * `prune: true`, so writing an entry retires the ones before it, and `getLast`
25
+ * is the only read. That is the narrowing doing its job: the framework programs
26
+ * against the cache it needs, not against everything the backend happens to
27
+ * offer.
28
+ */
29
+ export declare function axonServerSnapshottingEventStore<E extends EventStore>(next: E, conn: AxonServerStoreSource, context: string): E & SnapshotStoreCapability;
30
+ //# sourceMappingURL=axon-server-snapshotting-event-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axon-server-snapshotting-event-store.d.ts","sourceRoot":"","sources":["../src/axon-server-snapshotting-event-store.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,UAAU,EAEV,uBAAuB,EAGxB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAmD5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,UAAU,EACnE,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,MAAM,GACd,CAAC,GAAG,uBAAuB,CA+E7B"}
@@ -0,0 +1,154 @@
1
+ // ---------------------------------------------------------------------------
2
+ // AXON SERVER SNAPSHOTS — the capability tier, served by `DcbSnapshotStore`.
3
+ //
4
+ // THE PROBE, AND WHAT IT SETTLED. Axon Server's public API defines both a
5
+ // snapshot STORE service (`DcbSnapshotStore`: Add / Delete / List / GetLast)
6
+ // and, on newer API drops, a fused `SnapshottedDcbEventStore.Source` whose
7
+ // stream leads with the snapshot. Only the first of those is actually served:
8
+ //
9
+ // axoniq/axonserver:2025.2.5 DcbSnapshotStore/GetLast → answers
10
+ // SnapshottedDcbEventStore/Source → UNIMPLEMENTED
11
+ // axoniq/axonserver:2026.0.4 same, both ways
12
+ //
13
+ // So there is no server-side fusion to call here — there is nothing on the
14
+ // other end of the wire. The READ is therefore fused CLIENT-SIDE: `GetLast` for
15
+ // the entry, then a source after its position, assembled into the one
16
+ // `SourcingResult` a fold expects. Two round trips, the same answers, correct
17
+ // today.
18
+ //
19
+ // When a server version does serve `SnapshottedDcbEventStore.Source`, the fused
20
+ // call lands INSIDE this function — `source` stops making two calls and starts
21
+ // making one — and no host changes a line, because the capability was never a
22
+ // promise about round trips.
23
+ // ---------------------------------------------------------------------------
24
+ import { withoutSnapshotKey } from "@kronos-ts/core";
25
+ import { contextView } from "./context-view.js";
26
+ import { boundedRead } from "./bounded-read.js";
27
+ // ---------------------------------------------------------------------------
28
+ // Conversion — framework Snapshot ↔ proto Snapshot
29
+ // ---------------------------------------------------------------------------
30
+ const encoder = new TextEncoder();
31
+ /**
32
+ * The proto message carries `name`, `version`, `timestamp` and a metadata map
33
+ * the narrowed seam has no equivalent for. `name` carries the cache key,
34
+ * `timestamp` is filled at write time for operators, and `version` stays EMPTY
35
+ * — snapshots have no versions, and inventing one to fill a proto field would
36
+ * be exactly the bookkeeping this design removed. The metadata map stays empty
37
+ * too: a cache entry carries no cargo.
38
+ */
39
+ function createSnapshotConverters(serializer) {
40
+ return {
41
+ snapshotToProto(name, snapshot) {
42
+ const serialized = serializer.serialize(snapshot.state, name, "");
43
+ return {
44
+ name,
45
+ version: "",
46
+ payload: serialized.data,
47
+ timestamp: BigInt(Date.now()),
48
+ metadata: {},
49
+ };
50
+ },
51
+ snapshotFromProto(name, proto, position) {
52
+ const state = proto.payload.length > 0
53
+ ? serializer.deserialize({ data: proto.payload, type: name, revision: "" })
54
+ : {};
55
+ return { state, position };
56
+ },
57
+ };
58
+ }
59
+ function encodeKey(key) {
60
+ return encoder.encode(key);
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Axon Server snapshot store
64
+ // ---------------------------------------------------------------------------
65
+ /**
66
+ * Add the snapshotting capability to an Axon Server-backed log.
67
+ *
68
+ * ```ts
69
+ * const eventStore = axonServerSnapshottingEventStore(
70
+ * axonServerEventStore(axon, "default"),
71
+ * axon,
72
+ * "default",
73
+ * )
74
+ * ```
75
+ *
76
+ * ADDITIVE, NOT COLLAPSING. It returns `E & SnapshotStoreCapability` — the store you
77
+ * passed in, plus the write — so capabilities stack in either order and nothing
78
+ * the inner store carried is laundered on the way through.
79
+ *
80
+ * `context` is a per-call header, so this shares the one channel `conn` holds
81
+ * with every other context — see `contextView`. Payloads go through the
82
+ * connection's serializer.
83
+ *
84
+ * LATEST-ONLY, over a service that is not. `DcbSnapshotStore` keeps a sequence
85
+ * of snapshots per key; the capability keeps one. `add` therefore sets
86
+ * `prune: true`, so writing an entry retires the ones before it, and `getLast`
87
+ * is the only read. That is the narrowing doing its job: the framework programs
88
+ * against the cache it needs, not against everything the backend happens to
89
+ * offer.
90
+ */
91
+ export function axonServerSnapshottingEventStore(next, conn, context) {
92
+ const { connection, serializer, metadata: createAxonMetadata } = contextView(conn, context);
93
+ const { snapshotToProto, snapshotFromProto } = createSnapshotConverters(serializer);
94
+ /** The cached fold filed under `key`, or nothing — the first of the two calls. */
95
+ async function loadSnapshot(key) {
96
+ try {
97
+ const response = await boundedRead(connection.config.readTimeoutMs, (signal) => connection.snapshotStore.getLast({ key: encodeKey(key) }, { metadata: createAxonMetadata(), signal }));
98
+ if (!response.snapshot) {
99
+ return undefined;
100
+ }
101
+ return snapshotFromProto(key, response.snapshot, response.sequence);
102
+ }
103
+ catch (err) {
104
+ // Axon Server throws rather than answering empty when no snapshot
105
+ // exists — and a cache miss is not an error to anybody upstream.
106
+ if (String(err).includes("No snapshot found") ||
107
+ String(err).includes("not found")) {
108
+ return undefined;
109
+ }
110
+ throw err;
111
+ }
112
+ }
113
+ return {
114
+ ...next,
115
+ async storeSnapshot(key, snapshot) {
116
+ await connection.snapshotStore.add({
117
+ key: encodeKey(key),
118
+ sequence: snapshot.position,
119
+ prune: true,
120
+ snapshot: snapshotToProto(key, snapshot),
121
+ }, { metadata: createAxonMetadata() });
122
+ },
123
+ /**
124
+ * THE CLIENT-SIDE FUSION. Two calls, assembled into the one result a fold
125
+ * expects — and the cache is NEVER LOAD-BEARING, so a miss or an outright
126
+ * throw from the snapshot service both fall through to a full read.
127
+ */
128
+ async source(condition) {
129
+ const key = condition.snapshot;
130
+ if (key === undefined)
131
+ return next.source(condition);
132
+ // The strategy is CONSUMED here; the store below gets a plain condition.
133
+ const plain = withoutSnapshotKey(condition);
134
+ let snapshot;
135
+ try {
136
+ snapshot = await loadSnapshot(key.key);
137
+ }
138
+ catch {
139
+ // A cache you cannot reach is a cache miss. Loads stay correct; they
140
+ // just cost what they always cost.
141
+ return next.source(plain);
142
+ }
143
+ if (snapshot === undefined)
144
+ return next.source(plain);
145
+ // Resume AFTER the position the snapshot already folded; a condition that
146
+ // independently asked to start later keeps its own floor.
147
+ const resumeFrom = snapshot.position + 1n;
148
+ const start = plain.start !== undefined && plain.start > resumeFrom ? plain.start : resumeFrom;
149
+ const result = await next.source({ ...plain, start });
150
+ return { ...result, snapshot };
151
+ },
152
+ };
153
+ }
154
+ //# sourceMappingURL=axon-server-snapshotting-event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axon-server-snapshotting-event-store.js","sourceRoot":"","sources":["../src/axon-server-snapshotting-event-store.ts"],"names":[],"mappings":"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"}