effect-dynamodb 1.10.0 → 1.12.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 (51) hide show
  1. package/dist/DynamoClient.d.ts +88 -5
  2. package/dist/DynamoClient.d.ts.map +1 -1
  3. package/dist/DynamoClient.js +158 -4
  4. package/dist/DynamoClient.js.map +1 -1
  5. package/dist/Entity.d.ts +35 -17
  6. package/dist/Entity.d.ts.map +1 -1
  7. package/dist/Entity.js +499 -9
  8. package/dist/Entity.js.map +1 -1
  9. package/dist/EventStore.d.ts +242 -35
  10. package/dist/EventStore.d.ts.map +1 -1
  11. package/dist/EventStore.js +516 -72
  12. package/dist/EventStore.js.map +1 -1
  13. package/dist/Table.d.ts +78 -0
  14. package/dist/Table.d.ts.map +1 -1
  15. package/dist/Table.js +153 -0
  16. package/dist/Table.js.map +1 -1
  17. package/dist/Transaction.d.ts +3 -18
  18. package/dist/Transaction.d.ts.map +1 -1
  19. package/dist/Transaction.js +13 -74
  20. package/dist/Transaction.js.map +1 -1
  21. package/dist/VectorSearchEmulation.d.ts +101 -0
  22. package/dist/VectorSearchEmulation.d.ts.map +1 -0
  23. package/dist/VectorSearchEmulation.js +290 -0
  24. package/dist/VectorSearchEmulation.js.map +1 -0
  25. package/dist/index.d.ts +9 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/internal/BoundCrud.d.ts +62 -48
  30. package/dist/internal/BoundCrud.d.ts.map +1 -1
  31. package/dist/internal/BoundCrud.js +7 -1
  32. package/dist/internal/BoundCrud.js.map +1 -1
  33. package/dist/internal/BoundVectorQuery.d.ts +130 -0
  34. package/dist/internal/BoundVectorQuery.d.ts.map +1 -0
  35. package/dist/internal/BoundVectorQuery.js +257 -0
  36. package/dist/internal/BoundVectorQuery.js.map +1 -0
  37. package/dist/internal/EntityCombinators.d.ts +16 -0
  38. package/dist/internal/EntityCombinators.d.ts.map +1 -1
  39. package/dist/internal/EntityCombinators.js +25 -1
  40. package/dist/internal/EntityCombinators.js.map +1 -1
  41. package/dist/internal/EntityOps.d.ts +19 -6
  42. package/dist/internal/EntityOps.d.ts.map +1 -1
  43. package/dist/internal/EntityOps.js +5 -2
  44. package/dist/internal/EntityOps.js.map +1 -1
  45. package/dist/internal/TransactWriteOps.d.ts +50 -0
  46. package/dist/internal/TransactWriteOps.d.ts.map +1 -0
  47. package/dist/internal/TransactWriteOps.js +102 -0
  48. package/dist/internal/TransactWriteOps.js.map +1 -0
  49. package/dist/internal/TransactableOps.d.ts +1 -1
  50. package/dist/internal/TransactableOps.d.ts.map +1 -1
  51. package/package.json +3 -3
@@ -5,17 +5,20 @@
5
5
  * - `Decider` type for command-event-state modeling
6
6
  * - `makeStream` factory for creating event streams bound to a Table
7
7
  * - Core operations: `append`, `read`, `readFrom`, `currentVersion`
8
- * - `commandHandler` combinator for read-decide-append cycle
8
+ * - Snapshot primitives: `writeSnapshot`, `readSnapshot`
9
+ * - `commandHandler` combinator for read-decide-append cycle (snapshot-aware,
10
+ * with an optional `VersionConflict` retry policy)
9
11
  * - `fold` / `foldFrom` helpers for state reconstruction
10
12
  *
11
13
  * Built on the existing library primitives (DynamoSchema, KeyComposer, Query,
12
14
  * DynamoClient, Marshaller).
13
15
  */
14
- import { TransactionCancelled, ValidationError, VersionConflict } from "@effect-dynamodb/schema/Errors.js";
15
- import { Effect, Schema } from "effect";
16
+ import { AdditionalItemConditionFailed, AppendTooLarge, DuplicateCommand, TransactionCancelled, ValidationError, VersionConflict } from "@effect-dynamodb/schema/Errors.js";
17
+ import { type Duration, Effect, Option, Pipeable, Schedule, Schema } from "effect";
16
18
  import { DynamoClient, type DynamoClientError } from "./DynamoClient.js";
19
+ import { type TransactWriteOp } from "./internal/TransactWriteOps.js";
17
20
  import * as Query from "./Query.js";
18
- import type { Table, TableConfig } from "./Table.js";
21
+ import { type Table, type TableConfig } from "./Table.js";
19
22
  /**
20
23
  * A Decider encodes the command-event-state triad for an aggregate.
21
24
  *
@@ -30,15 +33,25 @@ export interface Decider<State, Command, Event, E = never> {
30
33
  }
31
34
  /**
32
35
  * A persisted event read from a stream, enriched with stream metadata.
36
+ *
37
+ * @typeParam A - The decoded event type
38
+ * @typeParam M - The decoded metadata type (defaults to an untyped record for
39
+ * streams without a metadata schema)
33
40
  */
34
- export interface StreamEvent<A> {
41
+ export interface StreamEvent<A, M = Record<string, unknown> | undefined> {
35
42
  readonly streamId: string;
36
43
  readonly version: number;
37
44
  readonly eventType: string;
38
45
  readonly data: A;
39
- readonly metadata: Record<string, unknown> | undefined;
46
+ readonly metadata: M;
40
47
  readonly timestamp: string;
41
48
  }
49
+ /**
50
+ * Metadata type carried on {@link StreamEvent} for a stream: the decoded
51
+ * metadata schema type when the stream declares one, an untyped record
52
+ * otherwise (events may carry metadata written outside the typed API).
53
+ */
54
+ export type StreamMetadata<TMetadata> = [TMetadata] extends [undefined] ? Record<string, unknown> | undefined : TMetadata | undefined;
42
55
  /** Result of appending events to a stream. */
43
56
  export interface AppendResult<A> {
44
57
  readonly version: number;
@@ -48,6 +61,84 @@ export interface AppendResult<A> {
48
61
  export interface CommandHandlerResult<State, Event> extends AppendResult<Event> {
49
62
  readonly state: State;
50
63
  }
64
+ /**
65
+ * A persisted fold of a stream, up to and including `asOfVersion`.
66
+ *
67
+ * Snapshots are a cache, never history — there is exactly one per stream and it
68
+ * is overwritten in place. The event stream remains the source of truth, so a
69
+ * snapshot can always be discarded and rebuilt.
70
+ */
71
+ export interface Snapshot<State> {
72
+ readonly state: State;
73
+ readonly asOfVersion: number;
74
+ readonly timestamp: string;
75
+ }
76
+ /**
77
+ * Snapshot configuration accepted by {@link makeStream}.
78
+ *
79
+ * - `schema` — the state codec. Snapshot state round-trips through it
80
+ * (`Schema.encodeUnknownEffect` on write, `Schema.decodeUnknownEffect` on
81
+ * read), so transforming schemas work.
82
+ * - `every` — optional auto-snapshot cadence for {@link commandHandler}: after a
83
+ * successful append, write a fresh snapshot once at least this many events
84
+ * have accumulated since the last one. Must be a positive integer.
85
+ */
86
+ export interface SnapshotConfig<TSchema extends Schema.Top = Schema.Top> {
87
+ readonly schema: TSchema;
88
+ readonly every?: number | undefined;
89
+ }
90
+ /** The runtime snapshot settings exposed on a stream. */
91
+ export interface SnapshotSettings {
92
+ readonly every: number | undefined;
93
+ }
94
+ /**
95
+ * Command-dedup configuration for a single {@link EventStream.append} call.
96
+ *
97
+ * When present, `append` writes a sentinel item guarded by
98
+ * `attribute_not_exists(pk)` into the same transaction as the events. A replayed
99
+ * `commandId` therefore cancels the whole transaction and surfaces as
100
+ * `DuplicateCommand` — the events are never written twice.
101
+ *
102
+ * The sentinel is co-located in the stream's own partition, so `commandId`
103
+ * uniqueness is scoped to the stream (which is what "have I already applied this
104
+ * command to this aggregate?" asks). It is invisible to `read` / `readFrom` /
105
+ * `currentVersion`, which filter on the event entity type.
106
+ *
107
+ * **Casing:** the sentinel sort key is composed with the schema's casing (default
108
+ * `"lowercase"`), so command ids that differ only in case collide. Use
109
+ * case-insensitively-unique ids (UUID / ULID). The raw id is stored as the
110
+ * `commandId` attribute regardless.
111
+ */
112
+ export interface AppendIdempotency {
113
+ /** Caller-supplied identifier for this command delivery. */
114
+ readonly commandId: string;
115
+ /**
116
+ * Optional expiry for the sentinel, written to the table's TTL attribute
117
+ * (honours `TableConfig.ttlAttributeName`). Set it to the longest window over
118
+ * which your infrastructure can replay a command. Omitted → sentinels are
119
+ * permanent, which is the safe direction.
120
+ */
121
+ readonly ttl?: Duration.Duration | string;
122
+ }
123
+ /** Options accepted by {@link EventStream.append}. */
124
+ export interface AppendOptions<TMetadata> {
125
+ /** Per-append metadata, validated against the stream's metadata schema when configured. */
126
+ readonly metadata?: TMetadata;
127
+ /**
128
+ * Caller-owned transact items committed atomically with the events — the same
129
+ * op union `Transaction.transactWrite` accepts (`EntityPut`, `EntityDelete`,
130
+ * `Transaction.check(...)`).
131
+ *
132
+ * Conditional failures on these items are reported as
133
+ * `AdditionalItemConditionFailed` (carrying the 0-based indices into this
134
+ * array), never as `VersionConflict`.
135
+ */
136
+ readonly additionalItems?: ReadonlyArray<TransactWriteOp>;
137
+ /** Opt in to exactly-once command processing — see {@link AppendIdempotency}. */
138
+ readonly idempotency?: AppendIdempotency;
139
+ }
140
+ /** Error channel of {@link EventStream.append}. */
141
+ export type AppendError = VersionConflict | DuplicateCommand | AdditionalItemConditionFailed | AppendTooLarge | DynamoClientError | ValidationError | TransactionCancelled;
51
142
  type StreamIdInput<T extends ReadonlyArray<string>> = {
52
143
  readonly [K in T[number]]: string;
53
144
  };
@@ -59,30 +150,55 @@ export type EventStreamTypeId = typeof EventStreamTypeId;
59
150
  * Created via {@link makeStream}. Operations are called directly on the stream:
60
151
  * `MatchEvents.append(...)`, `MatchEvents.read(...)`, `MatchEvents.query.events(...)`.
61
152
  */
62
- export interface EventStream<TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata> {
153
+ export interface EventStream<TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState = never> extends Pipeable.Pipeable {
63
154
  readonly [EventStreamTypeId]: EventStreamTypeId;
64
155
  readonly streamName: string;
65
156
  readonly eventSchema: Schema.Top;
66
- readonly append: (streamId: StreamIdInput<TStreamIdFields>, events: ReadonlyArray<TEvent>, expectedVersion: number, options?: {
67
- readonly metadata?: TMetadata;
68
- } | undefined) => Effect.Effect<AppendResult<TEvent>, VersionConflict | DynamoClientError | ValidationError | TransactionCancelled, DynamoClient | TableConfig>;
69
- readonly read: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent>>, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
70
- readonly readFrom: (streamId: StreamIdInput<TStreamIdFields>, afterVersion: number) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent>>, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
157
+ /**
158
+ * Present iff the stream was created with a `snapshot` config. Its presence
159
+ * is what switches {@link commandHandler} onto the snapshot-aware read path.
160
+ */
161
+ readonly snapshotConfig: SnapshotSettings | undefined;
162
+ /**
163
+ * Write (or overwrite) this stream's snapshot.
164
+ *
165
+ * Monotonic: a snapshot at an equal or newer `asOfVersion` already present is
166
+ * left alone and the write reports success. Dies with `[EDD-9026]` on a
167
+ * stream declared without a `snapshot` config (unreachable via the types —
168
+ * `TState` is `never` there, so no value can be supplied).
169
+ */
170
+ readonly writeSnapshot: (streamId: StreamIdInput<TStreamIdFields>, state: TState, asOfVersion: number) => Effect.Effect<void, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
171
+ /**
172
+ * Read this stream's snapshot, if one has been written.
173
+ *
174
+ * A snapshot that fails to decode through the configured state schema fails
175
+ * with `ValidationError` — it is never silently discarded, because that would
176
+ * hide state-schema evolution bugs.
177
+ */
178
+ readonly readSnapshot: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<Option.Option<Snapshot<TState>>, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
179
+ readonly append: (streamId: StreamIdInput<TStreamIdFields>, events: ReadonlyArray<TEvent>, expectedVersion: number, options?: AppendOptions<TMetadata> | undefined) => Effect.Effect<AppendResult<TEvent>, AppendError, DynamoClient | TableConfig>;
180
+ readonly read: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent, StreamMetadata<TMetadata>>>, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
181
+ readonly readFrom: (streamId: StreamIdInput<TStreamIdFields>, afterVersion: number) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent, StreamMetadata<TMetadata>>>, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
71
182
  readonly currentVersion: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<number, DynamoClientError | ValidationError, DynamoClient | TableConfig>;
72
183
  readonly query: {
73
- readonly events: (streamId: StreamIdInput<TStreamIdFields>) => Query.Query<StreamEvent<TEvent>>;
184
+ readonly events: (streamId: StreamIdInput<TStreamIdFields>) => Query.Query<StreamEvent<TEvent, StreamMetadata<TMetadata>>>;
74
185
  };
75
186
  }
76
187
  /**
77
188
  * Create an EventStream bound to a Table.
78
189
  *
190
+ * Define event schemas with `Schema.TaggedClass` (not plain `Schema.Class`):
191
+ * stored events are decoded through a `Schema.Union` of the event schemas, and
192
+ * without a declared `_tag` field the union discriminates structurally — two
193
+ * event types with identical fields would mis-decode as each other.
194
+ *
79
195
  * @example
80
196
  * ```typescript
81
- * class MatchStarted extends Schema.Class<MatchStarted>("MatchStarted")({
197
+ * class MatchStarted extends Schema.TaggedClass<MatchStarted>()("MatchStarted", {
82
198
  * venue: Schema.String,
83
199
  * }) {}
84
200
  *
85
- * class InningsCompleted extends Schema.Class<InningsCompleted>("InningsCompleted")({
201
+ * class InningsCompleted extends Schema.TaggedClass<InningsCompleted>()("InningsCompleted", {
86
202
  * innings: Schema.Number,
87
203
  * runs: Schema.Number,
88
204
  * }) {}
@@ -94,16 +210,32 @@ export interface EventStream<TEvent, TStreamIdFields extends ReadonlyArray<strin
94
210
  * streamId: { composite: ["matchId"] },
95
211
  * })
96
212
  * ```
213
+ *
214
+ * Opt into snapshots by declaring a state schema:
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * const MatchEvents = EventStore.makeStream({
219
+ * table: EventsTable,
220
+ * streamName: "Match",
221
+ * events: [MatchStarted, InningsCompleted],
222
+ * streamId: { composite: ["matchId"] },
223
+ * snapshot: { schema: MatchStateSchema, every: 100 },
224
+ * })
225
+ * ```
226
+ *
227
+ * @throws `[EDD-9027]` when `snapshot.every` is not a positive integer.
97
228
  */
98
229
  export declare const makeStream: <const TEvents extends ReadonlyArray<Schema.Top>, TTable extends Table, const TStreamName extends string, const TStreamId extends {
99
230
  readonly composite: ReadonlyArray<string>;
100
- }, TMetadata extends Schema.Top | undefined = undefined>(config: {
231
+ }, TMetadata extends Schema.Top | undefined = undefined, TSnapshot extends SnapshotConfig | undefined = undefined>(config: {
101
232
  readonly table: TTable;
102
233
  readonly streamName: TStreamName;
103
234
  readonly events: TEvents;
104
235
  readonly streamId: TStreamId;
105
236
  readonly metadata?: TMetadata;
106
- }) => EventStream<Schema.Schema.Type<TEvents[number]>, TStreamId["composite"], TMetadata extends Schema.Top ? Schema.Schema.Type<TMetadata> : undefined>;
237
+ readonly snapshot?: TSnapshot;
238
+ }) => EventStream<Schema.Schema.Type<TEvents[number]>, TStreamId["composite"], TMetadata extends Schema.Top ? Schema.Schema.Type<TMetadata> : undefined, TSnapshot extends SnapshotConfig<infer TStateSchema> ? Schema.Schema.Type<TStateSchema> : never>;
107
239
  /**
108
240
  * An EventStream whose operations have `DynamoClient` and `TableConfig` already
109
241
  * resolved, so all methods return `Effect<A, E, never>`.
@@ -124,18 +256,22 @@ export declare const makeStream: <const TEvents extends ReadonlyArray<Schema.Top
124
256
  * }) {}
125
257
  * ```
126
258
  */
127
- export interface BoundEventStream<TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata> {
259
+ export interface BoundEventStream<TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState = never> extends Pipeable.Pipeable {
128
260
  readonly [EventStreamTypeId]: EventStreamTypeId;
129
261
  readonly streamName: string;
130
262
  readonly eventSchema: Schema.Top;
131
- readonly append: (streamId: StreamIdInput<TStreamIdFields>, events: ReadonlyArray<TEvent>, expectedVersion: number, options?: {
132
- readonly metadata?: TMetadata;
133
- } | undefined) => Effect.Effect<AppendResult<TEvent>, VersionConflict | DynamoClientError | ValidationError | TransactionCancelled, never>;
134
- readonly read: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent>>, DynamoClientError | ValidationError, never>;
135
- readonly readFrom: (streamId: StreamIdInput<TStreamIdFields>, afterVersion: number) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent>>, DynamoClientError | ValidationError, never>;
263
+ /** See {@link EventStream.snapshotConfig}. */
264
+ readonly snapshotConfig: SnapshotSettings | undefined;
265
+ /** See {@link EventStream.writeSnapshot}. */
266
+ readonly writeSnapshot: (streamId: StreamIdInput<TStreamIdFields>, state: TState, asOfVersion: number) => Effect.Effect<void, DynamoClientError | ValidationError, never>;
267
+ /** See {@link EventStream.readSnapshot}. */
268
+ readonly readSnapshot: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<Option.Option<Snapshot<TState>>, DynamoClientError | ValidationError, never>;
269
+ readonly append: (streamId: StreamIdInput<TStreamIdFields>, events: ReadonlyArray<TEvent>, expectedVersion: number, options?: AppendOptions<TMetadata> | undefined) => Effect.Effect<AppendResult<TEvent>, AppendError, never>;
270
+ readonly read: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent, StreamMetadata<TMetadata>>>, DynamoClientError | ValidationError, never>;
271
+ readonly readFrom: (streamId: StreamIdInput<TStreamIdFields>, afterVersion: number) => Effect.Effect<ReadonlyArray<StreamEvent<TEvent, StreamMetadata<TMetadata>>>, DynamoClientError | ValidationError, never>;
136
272
  readonly currentVersion: (streamId: StreamIdInput<TStreamIdFields>) => Effect.Effect<number, DynamoClientError | ValidationError, never>;
137
273
  readonly query: {
138
- readonly events: (streamId: StreamIdInput<TStreamIdFields>) => Query.Query<StreamEvent<TEvent>>;
274
+ readonly events: (streamId: StreamIdInput<TStreamIdFields>) => Query.Query<StreamEvent<TEvent, StreamMetadata<TMetadata>>>;
139
275
  };
140
276
  /** Escape hatch: provide DynamoClient | TableConfig to an arbitrary effect. */
141
277
  readonly provide: <A, E>(effect: Effect.Effect<A, E, DynamoClient | TableConfig>) => Effect.Effect<A, E, never>;
@@ -154,13 +290,60 @@ export interface BoundEventStream<TEvent, TStreamIdFields extends ReadonlyArray<
154
290
  * yield* stream.append({ matchId: "m-1" }, [event], 0) // R = never
155
291
  * ```
156
292
  */
157
- export declare const bind: <TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata>(stream: EventStream<TEvent, TStreamIdFields, TMetadata>) => Effect.Effect<BoundEventStream<TEvent, TStreamIdFields, TMetadata>, never, DynamoClient | TableConfig>;
158
- type CommandHandler<State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata> = (streamId: StreamIdInput<TStreamIdFields>, command: Command, options?: {
159
- readonly metadata?: TMetadata;
160
- } | undefined) => Effect.Effect<CommandHandlerResult<State, TEvent>, E | VersionConflict | DynamoClientError | ValidationError | TransactionCancelled, DynamoClient | TableConfig>;
161
- type BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata> = (streamId: StreamIdInput<TStreamIdFields>, command: Command, options?: {
293
+ export declare const bind: <TEvent, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState>(stream: EventStream<TEvent, TStreamIdFields, TMetadata, TState>) => Effect.Effect<BoundEventStream<TEvent, TStreamIdFields, TMetadata, TState>, never, DynamoClient | TableConfig>;
294
+ /**
295
+ * Handler-level configuration for {@link commandHandler}.
296
+ *
297
+ * `idempotency` carries the policy that is fixed for the handler; the
298
+ * `commandId` that identifies one delivery can only be per-call and lives in the
299
+ * handler's own options.
300
+ */
301
+ export interface CommandHandlerOptions {
302
+ /**
303
+ * Retry policy applied to `VersionConflict` **only**.
304
+ *
305
+ * The retried unit is the entire read–decide–append cycle, so every attempt
306
+ * decides against freshly read state — a blind re-append of stale events is
307
+ * impossible by construction. Snapshot reads participate: a retried attempt
308
+ * re-reads the snapshot and its delta.
309
+ *
310
+ * A number `n` is shorthand for `Schedule.recurs(n)` (n retries *after* the
311
+ * initial attempt). Omit for the default: no retry.
312
+ *
313
+ * `DuplicateCommand` is deliberately NOT retried — it is terminal.
314
+ */
315
+ readonly retry?: number | Schedule.Schedule<unknown, VersionConflict> | undefined;
316
+ /** Opt in to exactly-once command processing — see {@link AppendIdempotency}. */
317
+ readonly idempotency?: {
318
+ readonly ttl?: Duration.Duration | string;
319
+ };
320
+ }
321
+ /** Per-call options accepted by a handler produced by {@link commandHandler}. */
322
+ export interface CommandOptions<TMetadata> {
162
323
  readonly metadata?: TMetadata;
163
- } | undefined) => Effect.Effect<CommandHandlerResult<State, TEvent>, E | VersionConflict | DynamoClientError | ValidationError | TransactionCancelled, never>;
324
+ /**
325
+ * Identifier for this command delivery. Required when the handler was created
326
+ * with `idempotency`; a replayed id fails with `DuplicateCommand`.
327
+ */
328
+ readonly commandId?: string;
329
+ /** Caller-owned transact items committed atomically with the produced events. */
330
+ readonly additionalItems?: ReadonlyArray<TransactWriteOp>;
331
+ }
332
+ /** Per-call options when the handler was created with `idempotency` — `commandId` is required. */
333
+ export interface IdempotentCommandOptions<TMetadata> extends CommandOptions<TMetadata> {
334
+ readonly commandId: string;
335
+ }
336
+ /**
337
+ * Options arity: configuring `idempotency` makes the handler's options parameter
338
+ * required (and `commandId` within it non-optional), so a missing `commandId`
339
+ * is a compile error rather than a silent downgrade to at-least-once.
340
+ */
341
+ type CommandOptionsArgs<TMetadata, TConfig extends CommandHandlerOptions | undefined> = TConfig extends {
342
+ readonly idempotency: object;
343
+ } ? [options: IdempotentCommandOptions<TMetadata>] : [options?: CommandOptions<TMetadata> | undefined];
344
+ type CommandHandlerErrors<E> = E | VersionConflict | DuplicateCommand | AdditionalItemConditionFailed | AppendTooLarge | DynamoClientError | ValidationError | TransactionCancelled;
345
+ type CommandHandler<State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TConfig extends CommandHandlerOptions | undefined = undefined> = (streamId: StreamIdInput<TStreamIdFields>, command: Command, ...options: CommandOptionsArgs<TMetadata, TConfig>) => Effect.Effect<CommandHandlerResult<State, TEvent>, CommandHandlerErrors<E>, DynamoClient | TableConfig>;
346
+ type BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TConfig extends CommandHandlerOptions | undefined = undefined> = (streamId: StreamIdInput<TStreamIdFields>, command: Command, ...options: CommandOptionsArgs<TMetadata, TConfig>) => Effect.Effect<CommandHandlerResult<State, TEvent>, CommandHandlerErrors<E>, never>;
164
347
  /**
165
348
  * Create a command handler that reads, decides, and appends atomically.
166
349
  *
@@ -176,15 +359,39 @@ type BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields extends Read
176
359
  *
177
360
  * // Data-last (pipe)
178
361
  * const handle = stream.pipe(EventStore.commandHandler(decider))
362
+ *
363
+ * // Retry the full read-decide-append cycle on VersionConflict
364
+ * const handle = EventStore.commandHandler(decider, stream, { retry: 3 })
365
+ * const handle2 = stream.pipe(EventStore.commandHandler(decider, { retry: 3 }))
366
+ *
367
+ * // Exactly-once command processing — `commandId` becomes required per call
368
+ * const handle = EventStore.commandHandler(decider, stream, {
369
+ * idempotency: { ttl: Duration.days(1) },
370
+ * })
371
+ * yield* handle({ matchId: "m-1" }, command, { commandId: "cmd-7f3a" })
179
372
  * ```
373
+ *
374
+ * When the stream declares a `snapshot` config, each invocation reads the
375
+ * snapshot and folds only the events after it, instead of replaying the stream
376
+ * from the beginning. With `snapshot.every` set, a fresh snapshot is written
377
+ * (best-effort) after a successful append once the cadence threshold is crossed.
378
+ *
379
+ * Without `idempotency`, command processing is **at-least-once**: a retry after
380
+ * an acked-but-lost response re-runs `decide` and appends again.
381
+ *
382
+ * Note: this is a hand-rolled dual rather than `Function.dual` — the data
383
+ * argument (`stream`) is the *second* parameter, which `Function.dual` cannot
384
+ * express, and its numeric-arity form would silently drop the trailing options
385
+ * (`retry`, `idempotency`) that both forms depend on. Dispatch is on the
386
+ * `EventStreamTypeId` brand of the second argument.
180
387
  */
181
388
  export declare const commandHandler: {
182
- <State, Command, TEvent, E>(decider: Decider<State, Command, TEvent, E>): {
183
- <TStreamIdFields extends ReadonlyArray<string>, TMetadata>(stream: BoundEventStream<TEvent, TStreamIdFields, TMetadata>): BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata>;
184
- <TStreamIdFields extends ReadonlyArray<string>, TMetadata>(stream: EventStream<TEvent, TStreamIdFields, TMetadata>): CommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata>;
389
+ <State, Command, TEvent, E, const TConfig extends CommandHandlerOptions | undefined = undefined>(decider: Decider<State, Command, TEvent, E>, options?: TConfig): {
390
+ <TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState extends State>(stream: BoundEventStream<TEvent, TStreamIdFields, TMetadata, TState>): BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata, TConfig>;
391
+ <TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState extends State>(stream: EventStream<TEvent, TStreamIdFields, TMetadata, TState>): CommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata, TConfig>;
185
392
  };
186
- <State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata>(decider: Decider<State, Command, TEvent, E>, stream: BoundEventStream<TEvent, TStreamIdFields, TMetadata>): BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata>;
187
- <State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata>(decider: Decider<State, Command, TEvent, E>, stream: EventStream<TEvent, TStreamIdFields, TMetadata>): CommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata>;
393
+ <State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState extends State, const TConfig extends CommandHandlerOptions | undefined = undefined>(decider: Decider<State, Command, TEvent, E>, stream: BoundEventStream<TEvent, TStreamIdFields, TMetadata, TState>, options?: TConfig): BoundCommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata, TConfig>;
394
+ <State, Command, TEvent, E, TStreamIdFields extends ReadonlyArray<string>, TMetadata, TState extends State, const TConfig extends CommandHandlerOptions | undefined = undefined>(decider: Decider<State, Command, TEvent, E>, stream: EventStream<TEvent, TStreamIdFields, TMetadata, TState>, options?: TConfig): CommandHandler<State, Command, TEvent, E, TStreamIdFields, TMetadata, TConfig>;
188
395
  };
189
396
  /**
190
397
  * Reconstruct state from events by folding through a decider's `evolve` function.
@@ -1 +1 @@
1
- {"version":3,"file":"EventStore.d.ts","sourceRoot":"","sources":["../src/EventStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAEL,oBAAoB,EACpB,eAAe,EACf,eAAe,EAChB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAY,MAAM,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAExE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAMpD;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK;IACvD,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3F,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAA;IACtD,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAMD,8CAA8C;AAC9C,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAClC;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAE,SAAQ,YAAY,CAAC,KAAK,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB;AAMD,KAAK,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,IAAI;IACpD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM;CAClC,CAAA;AAMD,QAAA,MAAM,iBAAiB,EAAE,OAAO,MAAkD,CAAA;AAClF,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAMxD;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,MAAM,EAAE,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS;IAC3F,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;IAEhC,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,SAAS,KACpD,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,MAAM,CAAC,EACpB,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,EAC5E,YAAY,GAAG,WAAW,CAC3B,CAAA;IAED,QAAQ,CAAC,IAAI,EAAE,CACb,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KACrC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAClC,iBAAiB,GAAG,eAAe,EACnC,YAAY,GAAG,WAAW,CAC3B,CAAA;IAED,QAAQ,CAAC,QAAQ,EAAE,CACjB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAClC,iBAAiB,GAAG,eAAe,EACnC,YAAY,GAAG,WAAW,CAC3B,CAAA;IAED,QAAQ,CAAC,cAAc,EAAE,CACvB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,YAAY,GAAG,WAAW,CAAC,CAAA;IAE3F,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;KAChG,CAAA;CACF;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU,GACrB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAC/C,MAAM,SAAS,KAAK,EACpB,KAAK,CAAC,WAAW,SAAS,MAAM,EAChC,KAAK,CAAC,SAAS,SAAS;IAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE,EACrE,SAAS,SAAS,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,SAAS,EACpD,QAAQ;IACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,KAAG,WAAW,CACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACnC,SAAS,CAAC,WAAW,CAAC,EACtB,SAAS,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CA4QzE,CAAA;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,gBAAgB,CAC/B,MAAM,EACN,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAC7C,SAAS;IAET,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;IAEhC,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,SAAS,KACpD,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,MAAM,CAAC,EACpB,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,EAC5E,KAAK,CACN,CAAA;IAED,QAAQ,CAAC,IAAI,EAAE,CACb,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,eAAe,EAAE,KAAK,CAAC,CAAA;IAElG,QAAQ,CAAC,QAAQ,EAAE,CACjB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,eAAe,EAAE,KAAK,CAAC,CAAA;IAElG,QAAQ,CAAC,cAAc,EAAE,CACvB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,KAAK,CAAC,CAAA;IAEtE,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;KAChG,CAAA;IAED,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,KACpD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;CAChC;AAMD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,EAAE,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EACnF,QAAQ,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,KACtD,MAAM,CAAC,MAAM,CACd,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EACpD,KAAK,EACL,YAAY,GAAG,WAAW,CAoBxB,CAAA;AAMJ,KAAK,cAAc,CACjB,KAAK,EACL,OAAO,EACP,MAAM,EACN,CAAC,EACD,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAC7C,SAAS,IACP,CACF,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,KACpD,MAAM,CAAC,MAAM,CAChB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EACnC,CAAC,GAAG,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,EAChF,YAAY,GAAG,WAAW,CAC3B,CAAA;AAED,KAAK,mBAAmB,CACtB,KAAK,EACL,OAAO,EACP,MAAM,EACN,CAAC,EACD,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAC7C,SAAS,IACP,CACF,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,KACpD,MAAM,CAAC,MAAM,CAChB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EACnC,CAAC,GAAG,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,EAChF,KAAK,CACN,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,EAAE;IAE3B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACxB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,GAC1C;QACD,CAAC,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EACvD,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,GAC3D,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;QAC7E,CAAC,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EACvD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,GACtD,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;KACzE,CAAA;IAGD,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAClF,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAC3C,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,GAC3D,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;IAG7E,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAClF,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAC3C,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,GACtD,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;CAgDzE,CAAA;AAMD;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE;IACjB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IACxF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAUrF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,CAAC,EACA,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACpC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACpC,CAAC,CAAA;CAcL,CAAA"}
1
+ {"version":3,"file":"EventStore.d.ts","sourceRoot":"","sources":["../src/EventStore.ts"],"names":[],"mappings":"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"}