@photon-grove/evt 0.1.1 → 0.2.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 (86) hide show
  1. package/README.md +51 -4
  2. package/dist/aggregate.d.ts +26 -0
  3. package/dist/aggregate.d.ts.map +1 -1
  4. package/dist/aggregate.js.map +1 -1
  5. package/dist/dynamodb/head.d.ts +6 -0
  6. package/dist/dynamodb/head.d.ts.map +1 -1
  7. package/dist/dynamodb/head.js +11 -0
  8. package/dist/dynamodb/head.js.map +1 -1
  9. package/dist/dynamodb/index.d.ts +2 -1
  10. package/dist/dynamodb/index.d.ts.map +1 -1
  11. package/dist/dynamodb/index.js +2 -1
  12. package/dist/dynamodb/index.js.map +1 -1
  13. package/dist/dynamodb/repository.d.ts +9 -2
  14. package/dist/dynamodb/repository.d.ts.map +1 -1
  15. package/dist/dynamodb/repository.js +123 -27
  16. package/dist/dynamodb/repository.js.map +1 -1
  17. package/dist/dynamodb/requests.d.ts +37 -3
  18. package/dist/dynamodb/requests.d.ts.map +1 -1
  19. package/dist/dynamodb/requests.js +67 -9
  20. package/dist/dynamodb/requests.js.map +1 -1
  21. package/dist/dynamodb/views.d.ts +18 -0
  22. package/dist/dynamodb/views.d.ts.map +1 -0
  23. package/dist/dynamodb/views.js +56 -0
  24. package/dist/dynamodb/views.js.map +1 -0
  25. package/dist/errors.d.ts +51 -4
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +60 -4
  28. package/dist/errors.js.map +1 -1
  29. package/dist/index.d.ts +4 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/memory/repository.d.ts +3 -2
  34. package/dist/memory/repository.d.ts.map +1 -1
  35. package/dist/memory/repository.js +78 -29
  36. package/dist/memory/repository.js.map +1 -1
  37. package/dist/postgres/client.d.ts +32 -0
  38. package/dist/postgres/client.d.ts.map +1 -0
  39. package/dist/postgres/client.js +4 -0
  40. package/dist/postgres/client.js.map +1 -0
  41. package/dist/postgres/index.d.ts +4 -0
  42. package/dist/postgres/index.d.ts.map +1 -0
  43. package/dist/postgres/index.js +6 -0
  44. package/dist/postgres/index.js.map +1 -0
  45. package/dist/postgres/repository.d.ts +62 -0
  46. package/dist/postgres/repository.d.ts.map +1 -0
  47. package/dist/postgres/repository.js +598 -0
  48. package/dist/postgres/repository.js.map +1 -0
  49. package/dist/postgres/schema.d.ts +81 -0
  50. package/dist/postgres/schema.d.ts.map +1 -0
  51. package/dist/postgres/schema.js +249 -0
  52. package/dist/postgres/schema.js.map +1 -0
  53. package/dist/repository.d.ts +101 -6
  54. package/dist/repository.d.ts.map +1 -1
  55. package/dist/repository.js +108 -6
  56. package/dist/repository.js.map +1 -1
  57. package/dist/staging.d.ts +28 -0
  58. package/dist/staging.d.ts.map +1 -0
  59. package/dist/staging.js +89 -0
  60. package/dist/staging.js.map +1 -0
  61. package/dist/store.d.ts +15 -3
  62. package/dist/store.d.ts.map +1 -1
  63. package/dist/store.js +38 -54
  64. package/dist/store.js.map +1 -1
  65. package/dist/transaction.d.ts +113 -0
  66. package/dist/transaction.d.ts.map +1 -0
  67. package/dist/transaction.js +207 -0
  68. package/dist/transaction.js.map +1 -0
  69. package/package.json +5 -1
  70. package/src/aggregate.ts +28 -0
  71. package/src/dynamodb/head.ts +15 -0
  72. package/src/dynamodb/index.ts +2 -0
  73. package/src/dynamodb/repository.ts +177 -33
  74. package/src/dynamodb/requests.ts +114 -10
  75. package/src/dynamodb/views.ts +67 -0
  76. package/src/errors.ts +86 -4
  77. package/src/index.ts +19 -6
  78. package/src/memory/repository.ts +93 -32
  79. package/src/postgres/client.ts +37 -0
  80. package/src/postgres/index.ts +23 -0
  81. package/src/postgres/repository.ts +858 -0
  82. package/src/postgres/schema.ts +302 -0
  83. package/src/repository.ts +220 -8
  84. package/src/staging.ts +138 -0
  85. package/src/store.ts +66 -65
  86. package/src/transaction.ts +322 -0
package/dist/errors.js CHANGED
@@ -174,6 +174,38 @@ export class RebuildInProgressError extends EvtError {
174
174
  super('rebuildInProgress', 'a projection rebuild is in progress');
175
175
  }
176
176
  }
177
+ /**
178
+ * A read fence failed: another writer moved a stream the transaction read but didn't write past
179
+ * the head it observed. A fence the engine filled is retryable, since loading again observes the
180
+ * new head. A caller-stamped one isn't: the caller's input is stale. Nothing was written.
181
+ */
182
+ export class FenceConflictError extends EvtError {
183
+ name = 'FenceConflictError';
184
+ code = 'fenceConflict';
185
+ entityId;
186
+ /** The head the transaction fenced the stream at. */
187
+ head;
188
+ provenance;
189
+ constructor(entityId, head, provenance) {
190
+ super('fenceConflict', `read fence failed for ${entityId} at head ${head} (${provenance})`);
191
+ this.entityId = entityId;
192
+ this.head = head;
193
+ this.provenance = provenance;
194
+ }
195
+ }
196
+ /**
197
+ * A transaction fenced a stream whose entity type has retention: TTL deletes items in no order, so
198
+ * a fence on a retained stream protects nothing. Nothing was written.
199
+ */
200
+ export class RetentionConflictError extends EvtError {
201
+ name = 'RetentionConflictError';
202
+ code = 'retentionConflict';
203
+ entityType;
204
+ constructor(entityType) {
205
+ super('retentionConflict', `read fences refused for retention-enabled entity type ${entityType}`);
206
+ this.entityType = entityType;
207
+ }
208
+ }
177
209
  /**
178
210
  * Compaction was refused because the store declares the entity's type history-dependent: its
179
211
  * projectors' rebuild replays the events compaction would delete. Nothing was deleted.
@@ -190,6 +222,21 @@ export class HistoryDependentProjectionError extends EvtError {
190
222
  this.entityId = entityId;
191
223
  }
192
224
  }
225
+ /**
226
+ * A commit carried projector operations but no events. Views are projections of committed events,
227
+ * so operations with no event behind them are refused on every backend. Nothing was written.
228
+ */
229
+ export class ProjectorOnlyCommitError extends EvtError {
230
+ name = 'ProjectorOnlyCommitError';
231
+ code = 'projectorOnlyCommit';
232
+ /** How many projector operations the commit carried. */
233
+ operations;
234
+ constructor(operations) {
235
+ super('projectorOnlyCommit', `a commit carries ${operations} projector operations but no events; views need a ` +
236
+ 'backing event in the same commit');
237
+ this.operations = operations;
238
+ }
239
+ }
193
240
  /** A load failed closed on a stored event: an upcaster threw, or the payload didn't decode. */
194
241
  export class ReplayError extends EvtError {
195
242
  name = 'ReplayError';
@@ -216,15 +263,24 @@ export class SnapshotError extends EvtError {
216
263
  this.entityId = entityId;
217
264
  }
218
265
  }
219
- /** Whether an error is an optimistic-concurrency conflict: a `conflict` or a `sequenceGap`. */
266
+ /**
267
+ * Whether an error is an optimistic-concurrency conflict: a `conflict`, a `sequenceGap` or a
268
+ * `fenceConflict`.
269
+ */
220
270
  export function isConflict(error) {
221
- return error instanceof EvtError && (error.code === 'conflict' || error.code === 'sequenceGap');
271
+ return (error instanceof EvtError &&
272
+ (error.code === 'conflict' || error.code === 'sequenceGap' || error.code === 'fenceConflict'));
222
273
  }
223
274
  /**
224
- * Whether reloading and running the command again may succeed: after a conflict, while a rebuild
225
- * holds the store, after the feature manifest changed under the writer, or after throttling.
275
+ * Whether reloading and running the command again may succeed: after a conflict (a fence the
276
+ * caller stamped excepted), while a rebuild holds the store, after the feature manifest changed
277
+ * under the writer, or after throttling.
226
278
  */
227
279
  export function isRetryable(error) {
280
+ // A caller-stamped fence stays stale however often the command runs again.
281
+ if (error instanceof FenceConflictError) {
282
+ return error.provenance === 'engine';
283
+ }
228
284
  if (isConflict(error)) {
229
285
  return true;
230
286
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,6FAA6F;AAC7F,uEAAuE;AA+DvE,MAAM,OAAO,QAAS,SAAQ,KAAK;IACf,IAAI,GAAW,UAAU,CAAA;IAClC,IAAI,CAAc;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,OAA2B;QAC1E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACvB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,UAAU,CAAA;IAC1B,QAAQ,CAAQ;IAEzB,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,UAAU,EAAE,sBAAsB,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC1B,IAAI,GAAG,kBAAkB,CAAA;IACzB,IAAI,GAAG,aAAa,CAAA;IAC7B,QAAQ,CAAQ;IACzB,wCAAwC;IAC/B,KAAK,CAAQ;IACtB,wDAAwD;IAC/C,KAAK,CAAQ;IAEtB,YAAY,QAAgB,EAAE,KAAa,EAAE,KAAa;QACxD,KAAK,CACH,aAAa,EACb,sBAAsB,QAAQ,oCAAoC,KAAK,OAAO,KAAK,OAAO;YACxF,kDAAkD,CACrD,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAC9B,IAAI,GAAG,sBAAsB,CAAA;IAC7B,IAAI,GAAG,iBAAiB,CAAA;IACjC,QAAQ,CAAQ;IACzB,4DAA4D;IACnD,MAAM,CAAe;IAC9B,qEAAqE;IAC5D,OAAO,CAAQ;IAExB,YAAY,QAAgB,EAAE,MAAqB,EAAE,OAAe;QAClE,KAAK,CACH,iBAAiB,EACjB,+BAA+B,QAAQ,iBAAiB,MAAM,IAAI,QAAQ,IAAI;YAC5E,gBAAgB,OAAO,EAAE,CAC5B,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAED,gGAAgG;AAChG,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC7B,IAAI,GAAG,qBAAqB,CAAA;IAC5B,IAAI,GAAG,gBAAgB,CAAA;IAChC,OAAO,CAAQ;IACf,KAAK,CAAQ;IACb,WAAW,CAAQ;IAE5B,YAAY,OAAe,EAAE,KAAa,EAAE,WAAmB;QAC7D,KAAK,CACH,gBAAgB,EAChB,sCAAsC,OAAO,aAAa,KAAK,UAAU;YACvE,gBAAgB,WAAW,EAAE,CAChC,CAAA;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IAClC,IAAI,GAAG,0BAA0B,CAAA;IACjC,IAAI,GAAG,qBAAqB,CAAA;IACrC,QAAQ,CAAQ;IAChB,OAAO,CAAQ;IACxB,+EAA+E;IACtE,OAAO,CAAe;IAE/B,YAAY,QAAgB,EAAE,OAAe,EAAE,OAAsB;QACnE,KAAK,CACH,qBAAqB,EACrB,qEAAqE;YACnE,WAAW,QAAQ,aAAa,OAAO,qBAAqB,OAAO,IAAI,SAAS,GAAG,CACtF,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAED,uFAAuF;AACvF,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IAC/B,IAAI,GAAG,uBAAuB,CAAA;IAC9B,IAAI,GAAG,kBAAkB,CAAA;IAClC,QAAQ,CAAQ;IAEzB,YAAY,QAAgB;QAC1B,KAAK,CACH,kBAAkB,EAClB,aAAa,QAAQ,yDAAyD,CAC/E,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAQD;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;IACjC,IAAI,GAAG,yBAAyB,CAAA;IAChC,IAAI,GAAG,oBAAoB,CAAA;IAC7C,8CAA8C;IACrC,WAAW,CAAwB;IAE5C,YAAY,WAAmC;QAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClF,KAAK,CAAC,oBAAoB,EAAE,wCAAwC,KAAK,sBAAsB,CAAC,CAAA;QAChG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,2BAA4B,SAAQ,QAAQ;IACrC,IAAI,GAAG,6BAA6B,CAAA;IACpC,IAAI,GAAG,wBAAwB,CAAA;IAEjD;QACE,KAAK,CACH,wBAAwB,EACxB,yFAAyF;YACvF,kCAAkC,CACrC,CAAA;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IAClC,IAAI,GAAG,0BAA0B,CAAA;IACjC,IAAI,GAAG,qBAAqB,CAAA;IAE9C;QACE,KAAK,CACH,qBAAqB,EACrB,2FAA2F;YACzF,2EAA2E,CAC9E,CAAA;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,2BAA4B,SAAQ,QAAQ;IACrC,IAAI,GAAG,6BAA6B,CAAA;IACpC,IAAI,GAAG,wBAAwB,CAAA;IAEjD,YAAY,OAA2B;QACrC,KAAK,CAAC,wBAAwB,EAAE,4CAA4C,EAAE,OAAO,CAAC,CAAA;IACxF,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACxB,IAAI,GAAG,gBAAgB,CAAA;IACvB,IAAI,GAAG,WAAW,CAAA;IAEpC,YAAY,MAAc,EAAE,OAA2B;QACrD,KAAK,CAAC,WAAW,EAAE,sBAAsB,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAChC,IAAI,GAAG,wBAAwB,CAAA;IAC/B,IAAI,GAAG,mBAAmB,CAAA;IAE5C;QACE,KAAK,CAAC,mBAAmB,EAAE,qCAAqC,CAAC,CAAA;IACnE,CAAC;CACF;AAKD;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC5B,IAAI,GAAG,oBAAoB,CAAA;IAC3B,IAAI,GAAG,eAAe,CAAA;IAC/B,QAAQ,CAAQ;IACzB,qDAAqD;IAC5C,IAAI,CAAQ;IACZ,UAAU,CAAiB;IAEpC,YAAY,QAAgB,EAAE,IAAY,EAAE,UAA2B;QACrE,KAAK,CAAC,eAAe,EAAE,yBAAyB,QAAQ,YAAY,IAAI,KAAK,UAAU,GAAG,CAAC,CAAA;QAC3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAChC,IAAI,GAAG,wBAAwB,CAAA;IAC/B,IAAI,GAAG,mBAAmB,CAAA;IACnC,UAAU,CAAQ;IAE3B,YAAY,UAAkB;QAC5B,KAAK,CACH,mBAAmB,EACnB,yDAAyD,UAAU,EAAE,CACtE,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,+BAAgC,SAAQ,QAAQ;IACzC,IAAI,GAAG,iCAAiC,CAAA;IACxC,IAAI,GAAG,4BAA4B,CAAA;IAC5C,UAAU,CAAQ;IAClB,QAAQ,CAAQ;IAEzB,YAAY,UAAkB,EAAE,QAAgB;QAC9C,KAAK,CACH,4BAA4B,EAC5B,eAAe,UAAU,8DAA8D;YACrF,uCAAuC,QAAQ,GAAG,CACrD,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IAClC,IAAI,GAAG,0BAA0B,CAAA;IACjC,IAAI,GAAG,qBAAqB,CAAA;IAC9C,wDAAwD;IAC/C,UAAU,CAAQ;IAE3B,YAAY,UAAkB;QAC5B,KAAK,CACH,qBAAqB,EACrB,oBAAoB,UAAU,oDAAoD;YAChF,kCAAkC,CACrC,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACrB,IAAI,GAAG,aAAa,CAAA;IACpB,IAAI,GAAG,QAAQ,CAAA;IACxB,SAAS,CAAQ;IAC1B,uEAAuE;IAC9D,OAAO,CAAQ;IACf,KAAK,CAAqB;IAEnC,YACE,SAAiB,EACjB,OAAe,EACf,KAA0B,EAC1B,MAAc,EACd,KAAe;QAEf,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;QAC3D,KAAK,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,SAAS,KAAK,OAAO,KAAK,MAAM,EAAE,EAAE,EAAC,KAAK,EAAC,CAAC,CAAA;QAC5F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACvB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,UAAU,CAAA;IAC1B,QAAQ,CAAQ;IAEzB,YAAY,QAAgB,EAAE,KAAc;QAC1C,KAAK,CAAC,UAAU,EAAE,gCAAgC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAC,KAAK,EAAC,CAAC,CAAA;QAC3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,KAAK,YAAY,QAAQ;QACzB,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAC9F,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,2EAA2E;IAC3E,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAA;IACtC,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,KAAK,YAAY,QAAQ;QACzB,CAAC,KAAK,CAAC,IAAI,KAAK,mBAAmB;YACjC,KAAK,CAAC,IAAI,KAAK,wBAAwB;YACvC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAC9B,CAAA;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,16 @@
1
- export { type Aggregate, type AggregateDefinition, type Decision, type EventDefinition, type EventDefinitions, type EventOf, type Rejection, type Upcaster, defineAggregate, defineEvents, jsonUpcaster, } from './aggregate.js';
1
+ export { type Aggregate, type AggregateDefinition, type Decision, type EventDefinition, type EventDefinitions, type EventOf, type Projection, type Projector, type Rejection, type Upcaster, defineAggregate, defineEvents, jsonUpcaster, } from './aggregate.js';
2
2
  export { base64Decode, base64Encode } from './base64.js';
3
3
  export { type Codec, type JsonOptions, type StandardResult, type StandardSchemaV1, json, } from './codec.js';
4
4
  export { encodeEnvelope, decodeEnvelope, messageAttributes } from './envelope.js';
5
- export { CommitTooLargeError, CompactionUncoveredError, ConflictError, EvtError, type EvtErrorCode, FeatureManifestChangedError, HistoryDependentProjectionError, RebuildInProgressError, ReplayError, ReservedEntityIdError, SequenceGapError, SnapshotError, StoreNotInitializedError, StreamHeadDriftError, StreamHeadsNotMigratedError, TransientError, UnsupportedFeatureError, type FeaturePair, isConflict, isRetryable, } from './errors.js';
5
+ export { CommitTooLargeError, CompactionUncoveredError, ConflictError, EvtError, type EvtErrorCode, FeatureManifestChangedError, FenceConflictError, type FenceProvenance, HistoryDependentProjectionError, ProjectorOnlyCommitError, RebuildInProgressError, ReplayError, ReservedEntityIdError, RetentionConflictError, SequenceGapError, SnapshotError, StoreNotInitializedError, StreamHeadDriftError, StreamHeadsNotMigratedError, TransientError, UnsupportedFeatureError, type FeaturePair, isConflict, isRetryable, } from './errors.js';
6
6
  export { type SerializedEvent, type SerializedSnapshot, decodeEvent, decodeSnapshot, encodeEvent, encodeSnapshot, eventId, } from './event.js';
7
7
  export { type FeatureManifest, type ManifestTexts, STREAM_HEADS_FEATURE, STREAM_HEADS_VERSION, SUPPORTED_FEATURES, decodeManifest, encodeManifest, } from './features.js';
8
8
  export { JsonNumber, type JsonValue, parseJson, stringifyJson } from './json.js';
9
9
  export { type Metadata, type Origin, decodeMetadata, effectiveCausationId, emptyMetadata, encodeMetadata, } from './metadata.js';
10
- export type { CallOptions, Commit, NewSnapshot, Repository, StoreInitializer, } from './repository.js';
10
+ export { type CallOptions, type Commit, type NewSnapshot, type NormalizedTransaction, type ProjectorGroup, type ReadFence, type Repository, type StoreInitializer, type TransactionCommit, type TransactionalRepository, normalizeTransaction, } from './repository.js';
11
11
  export { DEFAULT_RETRY_POLICY, type RetryPolicy, retryDelay, } from './retry.js';
12
12
  export { MAX_COMMIT_ITEM_BYTES, snapshotCommitSize, snapshotEventsDue } from './snapshots.js';
13
13
  export { compareUtf8, utf8Length } from './utf8.js';
14
+ export { type CallerFence, StreamRead, Transaction, type TransactionResult } from './transaction.js';
14
15
  export { DEFAULT_SNAPSHOT_INTERVAL, type ExecuteOptions, type ExecuteResult, type Loaded, type RetryOptions, Store, type StoreOptions, } from './store.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,IAAI,GACL,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,KAAK,YAAY,EACjB,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,uBAAuB,EACvB,KAAK,WAAW,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,UAAU,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,WAAW,CAAA;AAC9E,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,WAAW,EACX,MAAM,EACN,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAChB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACjD,OAAO,EACL,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,EACL,KAAK,YAAY,GAClB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,IAAI,GACL,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,KAAK,YAAY,EACjB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,eAAe,EACpB,+BAA+B,EAC/B,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,uBAAuB,EACvB,KAAK,WAAW,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,UAAU,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,WAAW,CAAA;AAC9E,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAChB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACjD,OAAO,EAAC,KAAK,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAC,MAAM,kBAAkB,CAAA;AAClG,OAAO,EACL,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,EACL,KAAK,YAAY,GAClB,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -5,13 +5,15 @@ export { defineAggregate, defineEvents, jsonUpcaster, } from './aggregate.js';
5
5
  export { base64Decode, base64Encode } from './base64.js';
6
6
  export { json, } from './codec.js';
7
7
  export { encodeEnvelope, decodeEnvelope, messageAttributes } from './envelope.js';
8
- export { CommitTooLargeError, CompactionUncoveredError, ConflictError, EvtError, FeatureManifestChangedError, HistoryDependentProjectionError, RebuildInProgressError, ReplayError, ReservedEntityIdError, SequenceGapError, SnapshotError, StoreNotInitializedError, StreamHeadDriftError, StreamHeadsNotMigratedError, TransientError, UnsupportedFeatureError, isConflict, isRetryable, } from './errors.js';
8
+ export { CommitTooLargeError, CompactionUncoveredError, ConflictError, EvtError, FeatureManifestChangedError, FenceConflictError, HistoryDependentProjectionError, ProjectorOnlyCommitError, RebuildInProgressError, ReplayError, ReservedEntityIdError, RetentionConflictError, SequenceGapError, SnapshotError, StoreNotInitializedError, StreamHeadDriftError, StreamHeadsNotMigratedError, TransientError, UnsupportedFeatureError, isConflict, isRetryable, } from './errors.js';
9
9
  export { decodeEvent, decodeSnapshot, encodeEvent, encodeSnapshot, eventId, } from './event.js';
10
10
  export { STREAM_HEADS_FEATURE, STREAM_HEADS_VERSION, SUPPORTED_FEATURES, decodeManifest, encodeManifest, } from './features.js';
11
11
  export { JsonNumber, parseJson, stringifyJson } from './json.js';
12
12
  export { decodeMetadata, effectiveCausationId, emptyMetadata, encodeMetadata, } from './metadata.js';
13
+ export { normalizeTransaction, } from './repository.js';
13
14
  export { DEFAULT_RETRY_POLICY, retryDelay, } from './retry.js';
14
15
  export { MAX_COMMIT_ITEM_BYTES, snapshotCommitSize, snapshotEventsDue } from './snapshots.js';
15
16
  export { compareUtf8, utf8Length } from './utf8.js';
17
+ export { StreamRead, Transaction } from './transaction.js';
16
18
  export { DEFAULT_SNAPSHOT_INTERVAL, Store, } from './store.js';
17
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wFAAwF;AACxF,mFAAmF;AAEnF,OAAO,EASL,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EAKL,IAAI,GACL,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EAER,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,uBAAuB,EAEvB,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAGL,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,UAAU,EAAkB,SAAS,EAAE,aAAa,EAAC,MAAM,WAAW,CAAA;AAC9E,OAAO,EAGL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AAQtB,OAAO,EACL,oBAAoB,EAEpB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACjD,OAAO,EACL,yBAAyB,EAKzB,KAAK,GAEN,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wFAAwF;AACxF,mFAAmF;AAEnF,OAAO,EAWL,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EAKL,IAAI,GACL,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EAER,2BAA2B,EAC3B,kBAAkB,EAElB,+BAA+B,EAC/B,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,uBAAuB,EAEvB,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAGL,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,UAAU,EAAkB,SAAS,EAAE,aAAa,EAAC,MAAM,WAAW,CAAA;AAC9E,OAAO,EAGL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAWL,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EAEpB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACjD,OAAO,EAAmB,UAAU,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA;AAClG,OAAO,EACL,yBAAyB,EAKzB,KAAK,GAEN,MAAM,YAAY,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { SerializedEvent, SerializedSnapshot } from '../event.js';
2
2
  import { type FeatureManifest } from '../features.js';
3
- import { type CallOptions, type Commit, type Repository, type StoreInitializer } from '../repository.js';
3
+ import { type CallOptions, type Commit, type StoreInitializer, type TransactionCommit, type TransactionalRepository } from '../repository.js';
4
4
  /** The state of the rebuild fence's two rows that a commit's lock check reads. */
5
5
  export interface RebuildState {
6
6
  /** The generation counter: odd while a rebuild holds the store or after a force-release. */
@@ -22,10 +22,11 @@ export interface RebuildState {
22
22
  * on its feature manifest, so {@link initialize} is needed only where code treats every backend
23
23
  * alike.
24
24
  */
25
- export declare class MemRepository implements Repository, StoreInitializer {
25
+ export declare class MemRepository implements TransactionalRepository, StoreInitializer {
26
26
  #private;
27
27
  initialize(options?: CallOptions): Promise<boolean>;
28
28
  commit(commit: Commit, options?: CallOptions): Promise<void>;
29
+ commitTransaction(transaction: TransactionCommit, options?: CallOptions): Promise<void>;
29
30
  events(entityId: string, options?: CallOptions): Promise<SerializedEvent[]>;
30
31
  eventsAfter(entityId: string, after: bigint, options?: CallOptions): Promise<SerializedEvent[]>;
31
32
  latest(entityId: string, n: number, options?: CallOptions): Promise<SerializedEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/memory/repository.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAA;AACpE,OAAO,EACL,KAAK,eAAe,EAMrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,gBAAgB,EAKtB,MAAM,kBAAkB,CAAA;AAUzB,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAA;CACtC;AAYD;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,UAAU,EAAE,gBAAgB;;IAI1D,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAUxD;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CjE;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,CAO5B;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAU3F;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAK1F;IAEK,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BvF;IAEK,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC5F;CAmCF;AA+DD,8FAA8F;AAC9F,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IACjD,gEAAgE;IAChE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wDAAwD;IACxD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAC5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAqB9D;AAED,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,QAAQ,IAAI,eAAe,GAAG,IAAI,CAAA;IAClC,2FAA2F;IAC3F,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,eAAe,CAAA;IAChE,qEAAqE;IACrE,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,CA8BpE"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/memory/repository.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  // per stream that every commit raises, optimistic concurrency against it, the feature marker and
3
3
  // the rebuild-lock check, and the same failure classification and transaction budget. It's for
4
4
  // tests and local development.
5
- import { ConflictError, CompactionUncoveredError, EvtError, HistoryDependentProjectionError, RebuildInProgressError, SequenceGapError, StreamHeadDriftError, StreamHeadsNotMigratedError, } from '../errors.js';
5
+ import { ConflictError, CompactionUncoveredError, EvtError, FenceConflictError, HistoryDependentProjectionError, RebuildInProgressError, SequenceGapError, StreamHeadDriftError, StreamHeadsNotMigratedError, } from '../errors.js';
6
6
  import { checkSupported, checkWritable, declaresStreamHeads, entityTypeSet, withStreamHeads, } from '../features.js';
7
7
  import { int64Argument } from '../fields.js';
8
- import { checkBudget, checkNotReserved, commitSizes, validateCommit, } from '../repository.js';
8
+ import { checkBudget, checkFenceRetention, checkNotReserved, normalizeTransaction, rankFailures, transactionSizes, validateCommit, } from '../repository.js';
9
9
  // Read a repository's private state, for the fixtures. The class's static block sets them.
10
10
  let streamsOf;
11
11
  let controlsOf;
@@ -36,38 +36,73 @@ export class MemRepository {
36
36
  options?.signal?.throwIfAborted();
37
37
  validateCommit(commit);
38
38
  checkNotReserved(commit.entityId);
39
- if (commit.events.length === 0) {
40
- return;
39
+ if (commit.events.length > 0) {
40
+ this.#write(normalizeTransaction({ streams: [commit] }));
41
41
  }
42
+ }
43
+ async commitTransaction(transaction, options) {
44
+ options?.signal?.throwIfAborted();
45
+ const normalized = normalizeTransaction(transaction);
46
+ if (normalized.streams.length > 0 || normalized.fences.length > 0) {
47
+ this.#write(normalized);
48
+ }
49
+ }
50
+ // Writes a transaction, or refuses it with nothing written, in the order the live backends
51
+ // check: the budget, the marker and the fences' retention, the rebuild lock, then every stream
52
+ // and fence, ranked.
53
+ #write(transaction) {
42
54
  // Every backend budgets a commit the same way, so an oversized one fails before any write.
43
- checkBudget(commitSizes(commit, () => undefined));
55
+ checkBudget(transactionSizes(transaction, () => undefined));
44
56
  // The control rows come first, as the two checks that open every live commit: the marker,
45
57
  // then the rebuild lock, which an unsettled generation fails, a force-released one included.
46
58
  this.#checkManifest();
59
+ const retention = this.#controls.manifest?.retention ?? [];
60
+ checkFenceRetention(transaction, (entityType) => retention.includes(entityType));
47
61
  const { rebuild } = this.#controls;
48
62
  if (rebuild.lock !== null || rebuild.generation % 2n !== 0n) {
49
63
  throw new RebuildInProgressError();
50
64
  }
51
- const held = this.#streams.get(commit.entityId) ?? emptyStream();
52
- checkWrite(commit, held);
53
- // Copy everything before the first write, so a copy that throws leaves the stream as it was.
54
- const events = commit.events.map(cloneEvent);
55
- const last = events.at(-1).sequence;
56
- const snapshot = commit.snapshot && {
57
- entityType: commit.snapshot.entityType,
58
- entityId: commit.entityId,
59
- sequence: commit.snapshot.sequence,
60
- eventSequence: last,
61
- payload: copy(commit.snapshot.payload),
62
- };
63
- for (const event of events) {
64
- held.events.set(event.sequence, event);
65
+ const failures = [];
66
+ for (const stream of transaction.streams) {
67
+ const failure = checkWrite(stream, this.#streams.get(stream.entityId) ?? emptyStream());
68
+ if (failure !== null) {
69
+ failures.push(failure);
70
+ }
71
+ }
72
+ for (const fence of transaction.fences) {
73
+ const failure = checkFence(fence, this.#streams.get(fence.entityId) ?? emptyStream());
74
+ if (failure !== null) {
75
+ failures.push(failure);
76
+ }
77
+ }
78
+ const failure = rankFailures(failures);
79
+ if (failure !== undefined) {
80
+ throw failure;
65
81
  }
66
- held.head = held.head > last ? held.head : last;
67
- if (snapshot) {
68
- held.snapshot = snapshot;
82
+ // Copy everything before the first write, so a copy that throws leaves every stream as it was.
83
+ const writes = transaction.streams.map((commit) => {
84
+ const events = commit.events.map(cloneEvent);
85
+ const last = events.at(-1).sequence;
86
+ const snapshot = commit.snapshot && {
87
+ entityType: commit.snapshot.entityType,
88
+ entityId: commit.entityId,
89
+ sequence: commit.snapshot.sequence,
90
+ eventSequence: last,
91
+ payload: copy(commit.snapshot.payload),
92
+ };
93
+ return { entityId: commit.entityId, events, last, snapshot };
94
+ });
95
+ for (const { entityId, events, last, snapshot } of writes) {
96
+ const held = this.#streams.get(entityId) ?? emptyStream();
97
+ for (const event of events) {
98
+ held.events.set(event.sequence, event);
99
+ }
100
+ held.head = held.head > last ? held.head : last;
101
+ if (snapshot) {
102
+ held.snapshot = snapshot;
103
+ }
104
+ this.#streams.set(entityId, held);
69
105
  }
70
- this.#streams.set(commit.entityId, held);
71
106
  }
72
107
  async events(entityId, options) {
73
108
  return this.eventsAfter(entityId, 0n, options);
@@ -169,24 +204,38 @@ export class MemRepository {
169
204
  return events;
170
205
  }
171
206
  }
172
- // Refuses a commit the stored stream doesn't accept, as the live backends' conditions do. The
173
- // head update needs no head for a create and the head to be the sequence before the first event
174
- // for an append. Then no event may exist already, and a snapshot must follow the stored one.
207
+ // The failure of a commit the stored stream doesn't accept, as the live backends' conditions find
208
+ // it, or null. The head update needs no head for a create and the head to be the sequence before
209
+ // the first event for an append. Then no event may exist already, and a snapshot must follow the
210
+ // stored one.
175
211
  function checkWrite(commit, held) {
176
212
  const first = commit.events[0].sequence;
177
213
  const headPasses = first <= 1n ? held.head === 0n : held.head === first - 1n;
178
214
  if (!headPasses) {
179
- throw probe(commit.entityId, held, first);
215
+ return probe(commit.entityId, held, first);
180
216
  }
181
217
  // The head update passed and an event put would fail: an event sits above the head.
182
218
  if (commit.events.some((event) => held.events.has(event.sequence))) {
183
- throw drift(commit.entityId, held.head, derivedHead(held));
219
+ return drift(commit.entityId, held.head, derivedHead(held));
184
220
  }
185
221
  const snapshot = commit.snapshot;
186
222
  const stored = held.snapshot?.sequence ?? 0n;
187
223
  if (snapshot && snapshot.sequence !== stored + 1n) {
188
- throw new ConflictError(commit.entityId, `snapshot sequence moved: stored ${stored}, commit writes ${snapshot.sequence}`);
224
+ return new ConflictError(commit.entityId, `snapshot sequence moved: stored ${stored}, commit writes ${snapshot.sequence}`);
225
+ }
226
+ return null;
227
+ }
228
+ // The failure of a fence whose stream's head moved, or null: drift when the head disagrees with
229
+ // the log, and otherwise a fence conflict.
230
+ function checkFence(fence, held) {
231
+ if (held.head === fence.head) {
232
+ return null;
233
+ }
234
+ const derived = derivedHead(held);
235
+ if (held.head !== derived) {
236
+ return drift(fence.entityId, held.head, derived);
189
237
  }
238
+ return new FenceConflictError(fence.entityId, fence.head, fence.provenance);
190
239
  }
191
240
  // Classifies a failed head update the way the live backends' failure-path probe does: a stored
192
241
  // head that disagrees with the head derived from the log is drift. Memory has no concurrent
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/memory/repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/memory/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /** The result of one statement: its rows, as the driver returns them. */
2
+ export interface PgResult {
3
+ readonly rows: readonly unknown[];
4
+ }
5
+ /** Something that runs one statement: `$1`, `$2` and so on in `text` take `values` in order. */
6
+ export interface PgQueryable {
7
+ query(text: string, values?: unknown[]): Promise<PgResult>;
8
+ }
9
+ /**
10
+ * A connection held for one transaction, as a pool lends it. `release` returns it to the pool, and
11
+ * gets the error when the connection may be unusable, so the pool can discard it.
12
+ */
13
+ export interface PgConnection extends PgQueryable {
14
+ release(error?: Error): void;
15
+ }
16
+ /**
17
+ * The client a {@link PgRepository} runs on.
18
+ *
19
+ * - A pool, such as `pg`'s `Pool` or Neon's serverless `Pool`, has `connect`, which lends one
20
+ * connection for each transaction. Single statements outside a transaction go to `query`.
21
+ * - A single connection without `connect`, such as PGlite, runs everything itself, so every
22
+ * repository on it runs one operation at a time on it. Nothing else may use the connection
23
+ * meanwhile: a statement sent inside a repository's transaction would join it.
24
+ *
25
+ * Every value the repository sends is a string or null, with casts in the SQL, and every column it
26
+ * reads is text, so no driver's type parsing touches a stored value. A `pg` `Client` has a
27
+ * `connect` that opens the client rather than lending a connection, so pass a `Pool` instead.
28
+ */
29
+ export interface PgClient extends PgQueryable {
30
+ connect?(): Promise<PgConnection>;
31
+ }
32
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/postgres/client.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;CAClC;AAED,gGAAgG;AAChG,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC3D;AAED;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC3C,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;CAClC"}
@@ -0,0 +1,4 @@
1
+ // The PostgreSQL client a PgRepository takes: a structural interface that `pg`'s Pool, Neon's
2
+ // serverless Pool and PGlite satisfy without an adapter, so this package imports no driver.
3
+ export {};
4
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/postgres/client.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,4FAA4F"}
@@ -0,0 +1,4 @@
1
+ export { type PgClient, type PgConnection, type PgQueryable, type PgResult } from './client.js';
2
+ export { POSTGRES_BACKEND, PgRepository, type PgRepositoryOptions } from './repository.js';
3
+ export { DEFAULT_EVENTS_TABLE, DEFAULT_SNAPSHOTS_TABLE, MAX_EVENTS_TABLE_NAME_BYTES, MAX_SNAPSHOTS_TABLE_NAME_BYTES, type PgTables, RESERVED_INFIX, SCHEMA_LOCK, entityTypeIndex, featuresTable, outcomesTable, pgTables, rebuildGenerationTable, rebuildLockTable, schemaDdl, streamHeadsTable, } from './schema.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAC,MAAM,iBAAiB,CAAA;AAExF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,KAAK,QAAQ,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,6 @@
1
+ // @photon-grove/evt/postgres: the PostgreSQL backend. It imports no driver: the repository takes
2
+ // `pg`'s Pool, or anything shaped like it, as a PgClient.
3
+ export {} from './client.js';
4
+ export { POSTGRES_BACKEND, PgRepository } from './repository.js';
5
+ export { DEFAULT_EVENTS_TABLE, DEFAULT_SNAPSHOTS_TABLE, MAX_EVENTS_TABLE_NAME_BYTES, MAX_SNAPSHOTS_TABLE_NAME_BYTES, RESERVED_INFIX, SCHEMA_LOCK, entityTypeIndex, featuresTable, outcomesTable, pgTables, rebuildGenerationTable, rebuildLockTable, schemaDdl, streamHeadsTable, } from './schema.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,0DAA0D;AAE1D,OAAO,EAAmE,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAA2B,MAAM,iBAAiB,CAAA;AAExF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAE9B,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,62 @@
1
+ import type { SerializedEvent, SerializedSnapshot } from '../event.js';
2
+ import { type CallOptions, type Commit, type StoreInitializer, type TransactionCommit, type TransactionalRepository } from '../repository.js';
3
+ import type { PgClient } from './client.js';
4
+ import { type PgTables } from './schema.js';
5
+ /** The tables a {@link PgRepository} stores its event log in. */
6
+ export interface PgRepositoryOptions {
7
+ /** The events table, `evt_events` by default. The engine tables derive their names from it. */
8
+ eventsTable?: string;
9
+ /** The snapshots table, `evt_snapshots` by default. */
10
+ snapshotsTable?: string;
11
+ }
12
+ /** The backend name a projector group for the PostgreSQL repository would carry. */
13
+ export declare const POSTGRES_BACKEND = "postgres";
14
+ /**
15
+ * A {@link Repository} on PostgreSQL, through any client shaped like `pg`'s `Pool`
16
+ * ({@link PgClient}).
17
+ *
18
+ * Run {@link PgRepository.ensureSchema} once before the first write. A writer initializes a fresh
19
+ * store itself on its first write, as Go's and Rust's do: the check is two `EXISTS` probes under
20
+ * the lock it takes anyway. {@link PgRepository.initialize} is for a deploy step that treats every
21
+ * backend alike.
22
+ *
23
+ * The repository validates the store's feature manifest at its first write and caches the version
24
+ * it validated. Every commit and snapshot write reads the manifest again under a shared lock that
25
+ * no declaration can take while the write is open, and validates it again when it changed.
26
+ */
27
+ export declare class PgRepository implements TransactionalRepository, StoreInitializer {
28
+ #private;
29
+ /**
30
+ * Takes the client and the table names, which must be plain identifiers that fit their limits
31
+ * ({@link pgTables}), or the constructor fails with `invalidArgument`.
32
+ */
33
+ constructor(client: PgClient, options?: PgRepositoryOptions);
34
+ /** The tables this repository reads and writes, folded to lower case. */
35
+ get tables(): PgTables;
36
+ /**
37
+ * Creates the event log's tables if they don't exist, with the DDL Go and Rust run
38
+ * ({@link schemaDdl}), under the schema lock they take. Safe to call on every start.
39
+ */
40
+ ensureSchema(options?: CallOptions): Promise<void>;
41
+ /**
42
+ * Declares stream-heads on a store whose events and snapshots tables are empty, under the
43
+ * manifest's exclusive lock, and resolves `true` when this call declared it. A store that
44
+ * already declares it is left alone. Run {@link PgRepository.ensureSchema} first.
45
+ */
46
+ initialize(options?: CallOptions): Promise<boolean>;
47
+ commit(commit: Commit, options?: CallOptions): Promise<void>;
48
+ /**
49
+ * Commits every stream and checks every fence in one transaction, in the order Go and Rust run
50
+ * it: every stream's entity lock, written and fenced, in ascending entity-ID byte order; the
51
+ * marker check, the fences' retention and the rebuild-lock assertion; every head statement and
52
+ * fence read, ranked; the event inserts; then the snapshot upserts.
53
+ */
54
+ commitTransaction(transaction: TransactionCommit, options?: CallOptions): Promise<void>;
55
+ events(entityId: string, options?: CallOptions): Promise<SerializedEvent[]>;
56
+ eventsAfter(entityId: string, after: bigint, options?: CallOptions): Promise<SerializedEvent[]>;
57
+ latest(entityId: string, n: number, options?: CallOptions): Promise<SerializedEvent[]>;
58
+ snapshot(entityId: string, options?: CallOptions): Promise<SerializedSnapshot | null>;
59
+ putSnapshot(snapshot: SerializedSnapshot, options?: CallOptions): Promise<boolean>;
60
+ compactBelow(entityId: string, through: bigint, options?: CallOptions): Promise<number>;
61
+ }
62
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/postgres/repository.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAYpE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,MAAM,EAEX,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAQ7B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAC,QAAQ,EAA4B,MAAM,aAAa,CAAA;AACpE,OAAO,EAIL,KAAK,QAAQ,EAUd,MAAM,aAAa,CAAA;AAEpB,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAClC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAkB1C;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,YAAW,uBAAuB,EAAE,gBAAgB;;IAS5E;;;OAGG;IACH,YAAY,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAE,mBAAwB,EAG9D;IAED,yEAAyE;IACzE,IAAI,MAAM,IAAI,QAAQ,CAErB;IAED;;;OAGG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvD;IAED;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BxD;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjE;IAED;;;;;OAKG;IACG,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5F;IAsHK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAShF;IAEK,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC,CAW5B;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB3F;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAU1F;IAEK,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBvF;IAEK,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC5F;CAoRF"}