@photon-grove/evt 0.1.0 → 0.1.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 (65) hide show
  1. package/README.md +50 -9
  2. package/dist/dynamodb/client.d.ts +83 -0
  3. package/dist/dynamodb/client.d.ts.map +1 -0
  4. package/dist/dynamodb/client.js +6 -0
  5. package/dist/dynamodb/client.js.map +1 -0
  6. package/dist/dynamodb/index.d.ts +5 -1
  7. package/dist/dynamodb/index.d.ts.map +1 -1
  8. package/dist/dynamodb/index.js +7 -3
  9. package/dist/dynamodb/index.js.map +1 -1
  10. package/dist/dynamodb/item.d.ts +2 -0
  11. package/dist/dynamodb/item.d.ts.map +1 -1
  12. package/dist/dynamodb/item.js +5 -4
  13. package/dist/dynamodb/item.js.map +1 -1
  14. package/dist/dynamodb/marker.d.ts +11 -0
  15. package/dist/dynamodb/marker.d.ts.map +1 -0
  16. package/dist/dynamodb/marker.js +56 -0
  17. package/dist/dynamodb/marker.js.map +1 -0
  18. package/dist/dynamodb/repository.d.ts +61 -0
  19. package/dist/dynamodb/repository.d.ts.map +1 -0
  20. package/dist/dynamodb/repository.js +731 -0
  21. package/dist/dynamodb/repository.js.map +1 -0
  22. package/dist/dynamodb/requests.d.ts +65 -0
  23. package/dist/dynamodb/requests.d.ts.map +1 -0
  24. package/dist/dynamodb/requests.js +179 -0
  25. package/dist/dynamodb/requests.js.map +1 -0
  26. package/dist/errors.d.ts +96 -2
  27. package/dist/errors.d.ts.map +1 -1
  28. package/dist/errors.js +103 -2
  29. package/dist/errors.js.map +1 -1
  30. package/dist/features.d.ts +55 -0
  31. package/dist/features.d.ts.map +1 -0
  32. package/dist/features.js +126 -0
  33. package/dist/features.js.map +1 -0
  34. package/dist/index.d.ts +3 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/memory/index.d.ts +1 -1
  39. package/dist/memory/index.d.ts.map +1 -1
  40. package/dist/memory/index.js +1 -1
  41. package/dist/memory/index.js.map +1 -1
  42. package/dist/memory/repository.d.ts +38 -2
  43. package/dist/memory/repository.d.ts.map +1 -1
  44. package/dist/memory/repository.js +95 -6
  45. package/dist/memory/repository.js.map +1 -1
  46. package/dist/repository.d.ts +30 -1
  47. package/dist/repository.d.ts.map +1 -1
  48. package/dist/repository.js +3 -4
  49. package/dist/repository.js.map +1 -1
  50. package/dist/store.d.ts +3 -3
  51. package/dist/store.js +3 -3
  52. package/package.json +12 -3
  53. package/src/dynamodb/client.ts +102 -0
  54. package/src/dynamodb/index.ts +26 -2
  55. package/src/dynamodb/item.ts +6 -4
  56. package/src/dynamodb/marker.ts +64 -0
  57. package/src/dynamodb/repository.ts +1030 -0
  58. package/src/dynamodb/requests.ts +256 -0
  59. package/src/errors.ts +153 -2
  60. package/src/features.ts +175 -0
  61. package/src/index.ts +24 -1
  62. package/src/memory/index.ts +9 -1
  63. package/src/memory/repository.ts +156 -6
  64. package/src/repository.ts +34 -6
  65. package/src/store.ts +3 -3
package/README.md CHANGED
@@ -11,8 +11,9 @@ held to the fixtures Go and Rust generate, byte for byte.
11
11
  npm install @photon-grove/evt
12
12
  ```
13
13
 
14
- So far it has the core, the in-memory backend and the testing helpers. The DynamoDB and
15
- PostgreSQL backends, command outcomes and multi-stream transactions come in later releases, and the
14
+ So far it has the core, the in-memory and DynamoDB backends, and the testing helpers. Views on
15
+ DynamoDB, the PostgreSQL backend, command outcomes and multi-stream transactions come in later
16
+ releases, and the
16
17
  [feature matrix](https://github.com/photon-grove/evt/blob/main/docs/reference/feature-matrix.md)
17
18
  tracks each one. The
18
19
  [getting started guide](https://github.com/photon-grove/evt/blob/main/docs/guide/getting-started.md#the-same-model-in-typescript)
@@ -20,16 +21,47 @@ builds a bank account aggregate with it, end to end.
20
21
 
21
22
  ## Entry points
22
23
 
23
- | Import | Contents |
24
- | ---------------------------- | --------------------------------------------------------------------------- |
25
- | `@photon-grove/evt` | Aggregates, codecs, upcasters, the `Store`, retry, and the wire codecs |
26
- | `@photon-grove/evt/memory` | `MemRepository`, the in-memory backend for tests and local development |
27
- | `@photon-grove/evt/testing` | `scenario` and `Fixture`, the given/when/then helpers over `MemRepository` |
28
- | `@photon-grove/evt/dynamodb` | The DynamoDB item codec, with no SDK. The repository comes with the backend |
24
+ | Import | Contents |
25
+ | ---------------------------- | -------------------------------------------------------------------------- |
26
+ | `@photon-grove/evt` | Aggregates, codecs, upcasters, the `Store`, retry, and the wire codecs |
27
+ | `@photon-grove/evt/memory` | `MemRepository`, the in-memory backend for tests and local development |
28
+ | `@photon-grove/evt/testing` | `scenario` and `Fixture`, the given/when/then helpers over `MemRepository` |
29
+ | `@photon-grove/evt/dynamodb` | `DynamoRepository`, and the DynamoDB item and request codecs |
30
+
31
+ ## DynamoDB
32
+
33
+ `DynamoRepository` takes the AWS SDK's low-level client, `DynamoDB` from `@aws-sdk/client-dynamodb`
34
+ (an optional peer dependency), and the event-log table, laid out as the
35
+ [DynamoDB guide](https://github.com/photon-grove/evt/blob/main/docs/guide/dynamodb.md) describes:
36
+
37
+ ```ts
38
+ import {DynamoDB} from '@aws-sdk/client-dynamodb'
39
+ import {Store} from '@photon-grove/evt'
40
+ import {DynamoRepository} from '@photon-grove/evt/dynamodb'
41
+
42
+ const repository = new DynamoRepository(new DynamoDB({}), 'event-log')
43
+ await repository.initialize() // once, at deploy time
44
+ const store = new Store(repository)
45
+ ```
46
+
47
+ The package imports nothing from the SDK, so any client with the same methods works. A store must
48
+ be initialized before writers start: until then every write fails with a
49
+ `StoreNotInitializedError`, so writers never need `dynamodb:Scan`. `initialize()` scans the table
50
+ to make sure it's fresh, and `{lazyInitialization: true}` makes the first write do it instead, for
51
+ tests and local use. Reads are strongly consistent unless `{consistentRead: false}`. When another
52
+ writer declares a feature, the next write fails once with a retryable
53
+ `FeatureManifestChangedError`, which `executeWithRetry` runs again.
54
+
55
+ `{retention: {scratch_job: 86_400_000}}` stamps a DynamoDB `ttl` on every event, snapshot and head
56
+ item of the entity types it names, their write time plus the retention in milliseconds, as Go's
57
+ `WithRetention` does. A head's `ttl` is never lowered: a writer with a shorter retention that
58
+ hasn't loaded the stream gets a conflict, and its retry passes. TTL deletes items in no order, so
59
+ use retention only for short-lived streams that nothing replays, and declare the retained types in
60
+ the feature manifest from Go or Rust, so that their writers refuse read fences on them.
29
61
 
30
62
  ## Runtimes
31
63
 
32
- The package is ESM only and has no runtime dependencies. CI runs it on Node 24, Node 22.12, Bun and
64
+ The package is ESM only and has no runtime dependencies. CI runs it on Node 26, Node 22.12, Bun and
33
65
  Deno. Its code uses only web-standard globals (`TextEncoder`, `TextDecoder`, Web Crypto,
34
66
  `AbortSignal`, timers), never Node's built-ins, so it should run on edge runtimes and in browsers
35
67
  too, though CI doesn't run them yet. It never uses top-level await, so CommonJS code on Node 22.12
@@ -65,6 +97,15 @@ of `AbortSignal`, which the DOM library, `@types/node`, and Bun's and Deno's typ
65
97
  current one as it's read, in the order they're declared. `jsonUpcaster(from, to, migrate)` does
66
98
  it on the parsed JSON, losslessly. A stored version the upcasters don't bring to the declared one
67
99
  fails the load with a `ReplayError` rather than decoding into the wrong shape.
100
+ - **The feature marker.** A store keeps one manifest of the features it uses. Every write path
101
+ refuses a store that declares a feature this package doesn't model (the journal, journal
102
+ compaction, the PostgreSQL views table) with an `UnsupportedFeatureError`, and compaction
103
+ refuses an entity type the manifest declares history-dependent. `MemRepository` declares the
104
+ required `stream-heads` feature on a fresh store's first write, and `initialize()` declares it
105
+ up front.
106
+ - **Rebuilds.** While a projection rebuild holds the store, every commit fails with a
107
+ `RebuildInProgressError`. It's retryable, so `executeWithRetry` runs the command again after its
108
+ backoff, though a rebuild usually outlasts the default policy's attempts.
68
109
  - **Sequences** are `bigint`s, because Go and Rust store them as 64-bit integers.
69
110
 
70
111
  Errors are `EvtError`s with a `code`. `isConflict` and `isRetryable` tell them apart.
@@ -0,0 +1,83 @@
1
+ import type { Item } from './item.js';
2
+ /** The options the repository passes with every call. */
3
+ export interface RequestOptions {
4
+ abortSignal?: AbortSignal;
5
+ }
6
+ /** One action of a `TransactWriteItems` call. */
7
+ export interface TransactItem {
8
+ ConditionCheck?: ConditionCheckAction;
9
+ Put?: PutAction;
10
+ Update?: UpdateAction;
11
+ Delete?: DeleteAction;
12
+ }
13
+ /** The expression parts an action or a query may carry. */
14
+ export interface Expressions {
15
+ ConditionExpression?: string;
16
+ ExpressionAttributeNames?: Record<string, string>;
17
+ ExpressionAttributeValues?: Item;
18
+ }
19
+ export interface ConditionCheckAction extends Expressions {
20
+ TableName: string;
21
+ Key: Item;
22
+ ConditionExpression: string;
23
+ }
24
+ export interface PutAction extends Expressions {
25
+ TableName: string;
26
+ Item: Item;
27
+ }
28
+ export interface UpdateAction extends Expressions {
29
+ TableName: string;
30
+ Key: Item;
31
+ UpdateExpression: string;
32
+ }
33
+ export interface DeleteAction extends Expressions {
34
+ TableName: string;
35
+ Key: Item;
36
+ }
37
+ export interface GetItemInput {
38
+ TableName: string;
39
+ Key: Item;
40
+ ConsistentRead?: boolean;
41
+ ProjectionExpression?: string;
42
+ ExpressionAttributeNames?: Record<string, string>;
43
+ }
44
+ export interface PutItemInput extends Expressions {
45
+ TableName: string;
46
+ Item: Item;
47
+ }
48
+ export interface QueryInput {
49
+ TableName: string;
50
+ KeyConditionExpression: string;
51
+ ExpressionAttributeNames?: Record<string, string>;
52
+ ExpressionAttributeValues: Item;
53
+ ConsistentRead?: boolean;
54
+ ProjectionExpression?: string;
55
+ ScanIndexForward?: boolean;
56
+ Limit?: number;
57
+ ExclusiveStartKey?: Item;
58
+ }
59
+ export interface ScanInput {
60
+ TableName: string;
61
+ ConsistentRead?: boolean;
62
+ ProjectionExpression?: string;
63
+ Limit?: number;
64
+ ExclusiveStartKey?: Item;
65
+ }
66
+ /** A page of a query or a scan. Items come back as the SDK decodes them. */
67
+ export interface Page {
68
+ Items?: Record<string, unknown>[] | undefined;
69
+ LastEvaluatedKey?: Record<string, unknown> | undefined;
70
+ }
71
+ /** The calls {@link DynamoRepository} makes: the SDK's `DynamoDB` client has them all. */
72
+ export interface DynamoClient {
73
+ getItem(input: GetItemInput, options?: RequestOptions): Promise<{
74
+ Item?: Record<string, unknown> | undefined;
75
+ }>;
76
+ putItem(input: PutItemInput, options?: RequestOptions): Promise<unknown>;
77
+ query(input: QueryInput, options?: RequestOptions): Promise<Page>;
78
+ scan(input: ScanInput, options?: RequestOptions): Promise<Page>;
79
+ transactWriteItems(input: {
80
+ TransactItems: TransactItem[];
81
+ }, options?: RequestOptions): Promise<unknown>;
82
+ }
83
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/dynamodb/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ // The DynamoDB calls the repository makes, as a structural interface. The AWS SDK's aggregated
2
+ // `DynamoDB` client (`@aws-sdk/client-dynamodb`) satisfies it, so this package imports nothing
3
+ // from the SDK. Requests and responses use the low-level `AttributeValue` maps, never the document
4
+ // client's marshalling, because the storage format pins every attribute's type.
5
+ export {};
6
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dynamodb/client.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,+FAA+F;AAC/F,mGAAmG;AACnG,gFAAgF"}
@@ -1,2 +1,6 @@
1
- export { type AttributeValue, type Item, DEFAULT_VIEW_SORT_KEY, HEAD_SORT_KEY, SNAPSHOT_SORT_KEY, eventFromItem, eventItem, expiry, headFromItem, headItem, isSnapshotItem, itemSize, snapshotFromItem, snapshotItem, sortKey, viewItem, } from './item.js';
1
+ export { type AttributeValue, type Item, DEFAULT_VIEW_SORT_KEY, HEAD_SORT_KEY, SNAPSHOT_SORT_KEY, eventFromItem, eventItem, expiry, headFromItem, headItem, isSnapshotItem, itemSize, snapshotFromItem, snapshotItem, sortKey, ttlFromItem, viewItem, } from './item.js';
2
+ export { type ConditionCheckAction, type DeleteAction, type DynamoClient, type Expressions, type GetItemInput, type Page, type PutAction, type PutItemInput, type QueryInput, type RequestOptions, type ScanInput, type TransactItem, type UpdateAction, } from './client.js';
3
+ export { FEATURES_PK, REBUILD_LOCK_PK, manifestFromItem, markerItem } from './marker.js';
4
+ export { DynamoRepository, type DynamoRepositoryOptions } from './repository.js';
5
+ export { type CommitTtl, type SnapshotTtl, commitTransaction, snapshotTransaction, } from './requests.js';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,QAAQ,GACT,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAC,MAAM,aAAa,CAAA;AACtF,OAAO,EAAC,gBAAgB,EAAE,KAAK,uBAAuB,EAAC,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAA"}
@@ -1,4 +1,8 @@
1
- // @photon-grove/evt/dynamodb: the DynamoDB backend. So far it holds the item codec, which imports
2
- // nothing from the AWS SDK.
3
- export { DEFAULT_VIEW_SORT_KEY, HEAD_SORT_KEY, SNAPSHOT_SORT_KEY, eventFromItem, eventItem, expiry, headFromItem, headItem, isSnapshotItem, itemSize, snapshotFromItem, snapshotItem, sortKey, viewItem, } from './item.js';
1
+ // @photon-grove/evt/dynamodb: the DynamoDB backend. It imports nothing from the AWS SDK: the
2
+ // repository takes the SDK's `DynamoDB` client, or anything shaped like it, as a DynamoClient.
3
+ export { DEFAULT_VIEW_SORT_KEY, HEAD_SORT_KEY, SNAPSHOT_SORT_KEY, eventFromItem, eventItem, expiry, headFromItem, headItem, isSnapshotItem, itemSize, snapshotFromItem, snapshotItem, sortKey, ttlFromItem, viewItem, } from './item.js';
4
+ export {} from './client.js';
5
+ export { FEATURES_PK, REBUILD_LOCK_PK, manifestFromItem, markerItem } from './marker.js';
6
+ export { DynamoRepository } from './repository.js';
7
+ export { commitTransaction, snapshotTransaction, } from './requests.js';
4
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,4BAA4B;AAE5B,OAAO,EAGL,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,QAAQ,GACT,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dynamodb/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,+FAA+F;AAE/F,OAAO,EAGL,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAcN,MAAM,aAAa,CAAA;AACpB,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAC,MAAM,aAAa,CAAA;AACtF,OAAO,EAAC,gBAAgB,EAA+B,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAGL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAA"}
@@ -49,6 +49,8 @@ export declare function headFromItem(item: Item): {
49
49
  head: bigint;
50
50
  ttl: number | undefined;
51
51
  };
52
+ /** An item's `ttl` in Unix seconds, or undefined when it has none. */
53
+ export declare function ttlFromItem(item: Item): number | undefined;
52
54
  /** Whether an item is a stream's inline snapshot (`sk = 0`). */
53
55
  export declare function isSnapshotItem(item: Item): boolean;
54
56
  /** An item's numeric sort key, if it has one. */
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/dynamodb/item.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAU,MAAM,aAAa,CAAA;AAalF,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GACtB;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,GACX;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,GACX;IAAC,CAAC,EAAE,UAAU,CAAA;CAAC,GACf;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACf;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACf;IAAC,CAAC,EAAE,IAAI,CAAA;CAAC,GACT;IAAC,CAAC,EAAE,cAAc,EAAE,CAAA;CAAC,GACrB;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,GACd;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,GACd;IAAC,EAAE,EAAE,UAAU,EAAE,CAAA;CAAC,CAAA;AAEtB,uBAAuB;AACvB,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAEjD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,4CAA4C;AAC5C,eAAO,MAAM,aAAa,MAAM,CAAA;AAEhC,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,SAAS,CAAA;AAE3C,iGAAiG;AACjG,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAapE;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7E;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ3E;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAQxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CA0BzD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAQ/D;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,CAOhF;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED,iDAAiD;AACjD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa7E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO3C"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/dynamodb/item.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAU,MAAM,aAAa,CAAA;AAalF,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GACtB;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,GACX;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,GACX;IAAC,CAAC,EAAE,UAAU,CAAA;CAAC,GACf;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACf;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACf;IAAC,CAAC,EAAE,IAAI,CAAA;CAAC,GACT;IAAC,CAAC,EAAE,cAAc,EAAE,CAAA;CAAC,GACrB;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,GACd;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,GACd;IAAC,EAAE,EAAE,UAAU,EAAE,CAAA;CAAC,CAAA;AAEtB,uBAAuB;AACvB,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAEjD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,4CAA4C;AAC5C,eAAO,MAAM,aAAa,MAAM,CAAA;AAEhC,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,SAAS,CAAA;AAE3C,iGAAiG;AACjG,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAapE;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7E;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ3E;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAQxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CA0BzD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAQ/D;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,CAEhF;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAI1D;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED,iDAAiD;AACjD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa7E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO3C"}
@@ -110,11 +110,12 @@ export function snapshotFromItem(item) {
110
110
  }
111
111
  /** Decodes a head item into its head and its `ttl`, if it has one. */
112
112
  export function headFromItem(item) {
113
+ return { head: requiredNumber(item, 'head'), ttl: ttlFromItem(item) };
114
+ }
115
+ /** An item's `ttl` in Unix seconds, or undefined when it has none. */
116
+ export function ttlFromItem(item) {
113
117
  const ttl = optionalNumber(item, 'ttl');
114
- return {
115
- head: requiredNumber(item, 'head'),
116
- ttl: ttl === undefined ? undefined : safeInteger(ttl, 'ttl'),
117
- };
118
+ return ttl === undefined ? undefined : safeInteger(ttl, 'ttl');
118
119
  }
119
120
  /** Whether an item is a stream's inline snapshot (`sk = 0`). */
120
121
  export function isSnapshotItem(item) {
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/dynamodb/item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/dynamodb/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type FeatureManifest } from '../features.js';
2
+ import { type Item } from './item.js';
3
+ /** The partition key of the feature-marker row. */
4
+ export declare const FEATURES_PK = "SYSTEM#FEATURES";
5
+ /** The partition key of the rebuild-lock row, which every commit checks is absent. */
6
+ export declare const REBUILD_LOCK_PK = "SYSTEM#REBUILD";
7
+ /** Encodes a feature manifest as its marker item. Empty entity-type sets are left out. */
8
+ export declare function markerItem(manifest: FeatureManifest): Item;
9
+ /** Decodes a marker item. An absent text attribute is an empty map or set. */
10
+ export declare function manifestFromItem(item: Item): FeatureManifest;
11
+ //# sourceMappingURL=marker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/dynamodb/marker.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,KAAK,eAAe,EAAiC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAC,KAAK,IAAI,EAAoB,MAAM,WAAW,CAAA;AAEtD,mDAAmD;AACnD,eAAO,MAAM,WAAW,oBAAoB,CAAA;AAE5C,sFAAsF;AACtF,eAAO,MAAM,eAAe,mBAAmB,CAAA;AAE/C,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAgB1D;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CAW5D"}
@@ -0,0 +1,56 @@
1
+ // The DynamoDB item of the feature-marker row. The control rows live in the reserved SYSTEM#
2
+ // namespace at sort key 0.
3
+ //
4
+ // | Attribute | Type | Feature-marker item (`pk = SYSTEM#FEATURES`, `sk = 0`) |
5
+ // | ------------------ | ---- | ------------------------------------------------------------ |
6
+ // | `version` | N | bumped on every change to the manifest |
7
+ // | `features` | S | JSON object, feature name → stored-format version, sorted |
8
+ // | `historyDependent` | S | JSON array of entity types, sorted. Absent when empty |
9
+ // | `retention` | S | JSON array of entity types, sorted. Absent when empty |
10
+ import { checkInt64, invalid } from '../fields.js';
11
+ import { decodeManifest, encodeManifest } from '../features.js';
12
+ import { SNAPSHOT_SORT_KEY } from './item.js';
13
+ /** The partition key of the feature-marker row. */
14
+ export const FEATURES_PK = 'SYSTEM#FEATURES';
15
+ /** The partition key of the rebuild-lock row, which every commit checks is absent. */
16
+ export const REBUILD_LOCK_PK = 'SYSTEM#REBUILD';
17
+ /** Encodes a feature manifest as its marker item. Empty entity-type sets are left out. */
18
+ export function markerItem(manifest) {
19
+ const texts = encodeManifest(manifest);
20
+ const item = {
21
+ pk: { S: FEATURES_PK },
22
+ sk: { N: SNAPSHOT_SORT_KEY.toString() },
23
+ version: { N: manifest.version.toString() },
24
+ features: { S: texts.features },
25
+ };
26
+ if (manifest.historyDependent.length > 0) {
27
+ item['historyDependent'] = { S: texts.historyDependent };
28
+ }
29
+ if (manifest.retention.length > 0) {
30
+ item['retention'] = { S: texts.retention };
31
+ }
32
+ return item;
33
+ }
34
+ /** Decodes a marker item. An absent text attribute is an empty map or set. */
35
+ export function manifestFromItem(item) {
36
+ const version = item['version'];
37
+ if (version === undefined || !('N' in version) || !/^\d+$/.test(version.N)) {
38
+ throw invalid('the feature marker has no version');
39
+ }
40
+ return decodeManifest(checkInt64(BigInt(version.N), 'the feature marker version'), {
41
+ features: text(item, 'features'),
42
+ historyDependent: text(item, 'historyDependent'),
43
+ retention: text(item, 'retention'),
44
+ });
45
+ }
46
+ function text(item, name) {
47
+ const value = item[name];
48
+ if (value === undefined) {
49
+ return '';
50
+ }
51
+ if (!('S' in value)) {
52
+ throw invalid(`the feature marker's ${name} attribute is not a string`);
53
+ }
54
+ return value.S;
55
+ }
56
+ //# sourceMappingURL=marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/dynamodb/marker.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,2BAA2B;AAC3B,EAAE;AACF,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAE/F,OAAO,EAAC,UAAU,EAAE,OAAO,EAAC,MAAM,cAAc,CAAA;AAChD,OAAO,EAAuB,cAAc,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAY,iBAAiB,EAAC,MAAM,WAAW,CAAA;AAEtD,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAE5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,EAAC,CAAC,EAAE,WAAW,EAAC;QACpB,EAAE,EAAE,EAAC,CAAC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,EAAC;QACrC,OAAO,EAAE,EAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAC;QACzC,QAAQ,EAAE,EAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAC;KAC9B,CAAA;IACD,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,EAAC,CAAA;IACxD,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAC,CAAA;IAC1C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,CAAC,mCAAmC,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,EAAE;QACjF,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAChC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAChD,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;KACnC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAU,EAAE,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,wBAAwB,IAAI,4BAA4B,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAA;AAChB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { SerializedEvent, SerializedSnapshot } from '../event.js';
2
+ import { type CallOptions, type Commit, type Repository, type StoreInitializer } from '../repository.js';
3
+ import type { DynamoClient } from './client.js';
4
+ /** How a {@link DynamoRepository} reads and initializes its store. */
5
+ export interface DynamoRepositoryOptions {
6
+ /**
7
+ * Whether a write to a store that doesn't declare stream-heads initializes it, scanning the
8
+ * table to make sure it holds no data, instead of refusing with a
9
+ * {@link StoreNotInitializedError}. Off by default, so writers never need `dynamodb:Scan`:
10
+ * initialize a fresh store once, at deploy time, with {@link DynamoRepository.initialize}.
11
+ */
12
+ lazyInitialization?: boolean;
13
+ /**
14
+ * Whether event and snapshot reads are strongly consistent. On by default. Head reads, the
15
+ * failure-path probe, compaction and the feature marker always read consistently.
16
+ */
17
+ consistentRead?: boolean;
18
+ /**
19
+ * How long the items of each entity type live, in whole milliseconds, keyed by entity type.
20
+ * Every event, snapshot and head item of a type with a positive retention carries a DynamoDB
21
+ * `ttl`, the write time plus the retention in Unix seconds, for the table's TTL to delete. A
22
+ * type that isn't listed, or has 0, is kept forever. TTL deletes items in no order, so retain
23
+ * only short-lived streams that nothing replays. Declare the retained types in the store's
24
+ * feature manifest too, from Go or Rust, so that their writers refuse read fences on them.
25
+ */
26
+ retention?: Readonly<Record<string, number>> | ReadonlyMap<string, number>;
27
+ /**
28
+ * The clock that stamps `ttl`s and decides which have passed, in Unix milliseconds as
29
+ * `Date.now` gives them, never seconds. `Date.now` by default.
30
+ */
31
+ clock?: () => number;
32
+ }
33
+ /**
34
+ * A {@link Repository} on a DynamoDB event-log table, through the AWS SDK's low-level `DynamoDB`
35
+ * client or anything shaped like it ({@link DynamoClient}).
36
+ *
37
+ * The repository validates the store's feature manifest at its first write and caches the version
38
+ * it validated. Every commit and snapshot write checks that version, so when another writer
39
+ * declares a feature, the next write fails, validates the manifest again, and either refuses an
40
+ * unsupported feature or fails once with a retryable {@link FeatureManifestChangedError}.
41
+ */
42
+ export declare class DynamoRepository implements Repository, StoreInitializer {
43
+ #private;
44
+ constructor(client: DynamoClient, eventsTable: string, options?: DynamoRepositoryOptions);
45
+ /** The events table this repository writes. */
46
+ get eventsTable(): string;
47
+ /**
48
+ * Declares stream-heads on a store that holds no data, and resolves `true` when this call
49
+ * declared it. It scans the table with strongly consistent reads, so run it once, at deploy
50
+ * time, with a role that may Scan. Concurrent initializations let exactly one declare.
51
+ */
52
+ initialize(options?: CallOptions): Promise<boolean>;
53
+ commit(commit: Commit, options?: CallOptions): Promise<void>;
54
+ events(entityId: string, options?: CallOptions): Promise<SerializedEvent[]>;
55
+ eventsAfter(entityId: string, after: bigint, options?: CallOptions): Promise<SerializedEvent[]>;
56
+ latest(entityId: string, n: number, options?: CallOptions): Promise<SerializedEvent[]>;
57
+ snapshot(entityId: string, options?: CallOptions): Promise<SerializedSnapshot | null>;
58
+ putSnapshot(snapshot: SerializedSnapshot, options?: CallOptions): Promise<boolean>;
59
+ compactBelow(entityId: string, through: bigint, options?: CallOptions): Promise<number>;
60
+ }
61
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/dynamodb/repository.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAA;AASpE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,gBAAgB,EAMtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAC,YAAY,EAAqC,MAAM,aAAa,CAAA;AAoBjF,sEAAsE;AACtE,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1E;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;CACrB;AAoBD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,UAAU,EAAE,gBAAgB;;IAgBnE,YAAY,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,EAO3F;IAED,+CAA+C;IAC/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBxD;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjE;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAEhF;IAEK,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC,CAa5B;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAmB3F;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAI1F;IAEK,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAgEvF;IAEK,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C5F;CAyjBF"}