@kronos-ts/postgres 0.7.0 → 0.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-event-store.d.ts","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,sBAAsB,CAAA;AAS7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,cAAc,CAAA;AAK/E,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAIlE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,UAAU,CAghBZ"}
1
+ {"version":3,"file":"postgres-event-store.d.ts","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,sBAAsB,CAAA;AAY7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,cAAc,CAAA;AAK/E,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAIlE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,UAAU,CA6hBZ"}
@@ -26,7 +26,7 @@
26
26
  * append transaction (see checkAndInsert), not via a stored procedure.
27
27
  */
28
28
  import { markerAt } from "@kronos-ts/eventsourcing";
29
- import { createMessageStream, globalSequenceToken, FIRST_TOKEN, getOrBeginActiveTransaction, onAfterCommit, } from "@kronos-ts/messaging";
29
+ import { createMessageStream, globalSequenceToken, gapAwareToken, isGapAwareToken, unwrapToken, FIRST_TOKEN, getOrBeginActiveTransaction, onAfterCommit, } from "@kronos-ts/messaging";
30
30
  import { qualifiedNameToString, qualifiedNameFromString } from "@kronos-ts/common";
31
31
  import { IsolationLevel } from "./adapter.js";
32
32
  import { acquireWriteLocks } from "./advisory-locks.js";
@@ -355,11 +355,15 @@ export function createPostgresEventStore(config) {
355
355
  };
356
356
  },
357
357
  open(condition) {
358
- let cursorPosition = condition.position;
359
- // The (xid8, position) tuple bookmark. We start with xid8 = '0' which is
360
- // less than any real xid8 so the (xid8, position) > ($1, $2) predicate
361
- // collapses to effectively position > $2 on first read.
362
- let cursorXid = "0";
358
+ // Resume the (xid8, position) tuple cursor exactly when the caller hands
359
+ // back a gap-aware token (the durable cursor minted by this engine). A
360
+ // bare position (fresh start or an explicit reset) seeds xid8 = '0', a
361
+ // sentinel below any real xid8 (pg_current_xact_id() never returns < 3),
362
+ // so the first fetch uses the position-only catch-up branch.
363
+ const resume = condition.token ? unwrapToken(condition.token) : undefined;
364
+ const gapResume = resume && isGapAwareToken(resume) ? resume : undefined;
365
+ let cursorPosition = gapResume ? gapResume.sequence : condition.position;
366
+ let cursorXid = gapResume ? gapResume.gapKey : "0";
363
367
  const criteria = condition.criteria;
364
368
  let closed = false;
365
369
  let onAvailable = null;
@@ -376,7 +380,12 @@ export function createPostgresEventStore(config) {
376
380
  let sql;
377
381
  let queryParams;
378
382
  if (cursorXid === "0") {
379
- // Initial fetch: simple position filter all committed events after cursorPosition.
383
+ // Initial fetch (no tuple cursor yet): position-only filter for all
384
+ // committed events strictly after cursorPosition. Only reached on a
385
+ // fresh start (position 0) or an explicit reset — once the first row
386
+ // is read the cursor switches to the gap-free (xid8, position) tuple
387
+ // branch below, which is what a live processor resumes from (it
388
+ // persists the gap-aware token, never a bare position).
380
389
  // $1 = position, criteria starts at $2
381
390
  const builtInitial = criteria
382
391
  ? buildCriteriaWhere(criteria, 2)
@@ -390,7 +399,7 @@ export function createPostgresEventStore(config) {
390
399
  WHERE sequence_position > $1::bigint
391
400
  AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())
392
401
  AND (${builtInitial.where})
393
- ORDER BY transaction_id ASC, sequence_position ASC
402
+ ORDER BY ${tables.events}.transaction_id ASC, ${tables.events}.sequence_position ASC
394
403
  LIMIT $${limitParam}
395
404
  `;
396
405
  queryParams = [String(cursorPosition), ...builtInitial.params, limit];
@@ -410,7 +419,7 @@ export function createPostgresEventStore(config) {
410
419
  WHERE (transaction_id, sequence_position) > ($1::xid8, $2::bigint)
411
420
  AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())
412
421
  AND (${builtTuple.where})
413
- ORDER BY transaction_id ASC, sequence_position ASC
422
+ ORDER BY ${tables.events}.transaction_id ASC, ${tables.events}.sequence_position ASC
414
423
  LIMIT $${limitParam}
415
424
  `;
416
425
  queryParams = [cursorXid, String(cursorPosition), ...builtTuple.params, limit];
@@ -419,7 +428,11 @@ export function createPostgresEventStore(config) {
419
428
  for (const r of rows) {
420
429
  const event = decodeEvent(r);
421
430
  const seq = BigInt(r.sequence_position);
422
- buffer.push({ sequence: seq, event });
431
+ // The durable cursor positioned AFTER this event: the (xid8, position)
432
+ // tuple. Persisting it lets a reopened stream resume the gap-free
433
+ // tuple comparison instead of a lossy position-only filter that would
434
+ // skip an event with a lower sequence_position but higher xid8.
435
+ buffer.push({ sequence: seq, event, token: gapAwareToken(seq, r.transaction_id) });
423
436
  cursorXid = r.transaction_id;
424
437
  cursorPosition = seq;
425
438
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-event-store.js","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAanD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,2BAA2B,EAC3B,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAIlF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAmB,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACjG,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAelE,MAAM,UAAU,wBAAwB,CACtC,MAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAA;IAEvD,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0D,CAAA;IAE1F,sEAAsE;IACtE,MAAM,aAAa,GAAG,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAA;IAEtD,SAAS,WAAW,CAAC,CAAe;QAClC,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,uBAAuB,CAAC,SAAsC;QACrE,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAA;QACzB,OAAO,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,SAAS,mBAAmB,CAAC,QAAuB;QAClD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAC5D,KAAK,SAAS;gBACZ,gEAAgE;gBAChE,OAAO,EAAE,CAAA;YACX,KAAK,iBAAiB;gBACpB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC5C,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CAAC,CAAe;QACpC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,cAAc,CAC3B,EAA8B,EAC9B,MAAmC,EACnC,SAAsC;QAEtC,yBAAyB;QACzB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAA;YAC3C,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA,CAAC,iBAAiB;YACzE,MAAM,GAAG,GAAG,uCAAuC,MAAM,CAAC,MAAM;uDACf,KAAK,CAAC,KAAK,GAAG,CAAA;YAC/D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAA2B,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YACxF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;YACrC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;gBACb,gEAAgE;gBAChE,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAClC,8BAA8B,GAAG,wCAAwC,SAAS,EAAE,CACrF,CACA;gBAAC,GAAmC,CAAC,IAAI,GAAG,6BAA6B,CAAA;gBAC1E,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAA;QACtB,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YACpC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;YAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAA;YAEjC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB,eAAe,MAAM,CAAC,MAAM;;qDAEiB,EAC7C;gBACE,CAAC,CAAC,UAAU;gBACZ,IAAI;gBACJ,WAAW;gBACX,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS;aACZ,CACF,CAAA;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;YACpD,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAC5C,OAAO,GAAG,GAAG,CAAC,cAAc,CAAA;QAC9B,CAAC;QAED,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;IACjD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,SAA4B;YACvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,CAAA;YACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA,CAAC,aAAa;YACrE,MAAM,GAAG,GAAG;;eAEH,MAAM,CAAC,MAAM;6CACiB,KAAK,CAAC,KAAK;;OAEjD,CAAA;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAS7B,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAEjC,MAAM,MAAM,GAAmB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CACpC,oDAAoD,MAAM,CAAC,MAAM,EAAE,CACpE,CAAA;YACD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACxF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QAC3B,CAAC;QAED,KAAK,CAAC,YAAY,CAChB,MAAmC,EACnC,SAA2B;YAE3B,uEAAuE;YACvE,sEAAsE;YACtE,2EAA2E;YAC3E,MAAM,OAAO,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAA;YAElD,IAAI,YAA6D,CAAA;YACjE,IAAI,WAAkC,CAAA;YACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAoC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACxE,YAAY,GAAG,GAAG,CAAA;gBAClB,WAAW,GAAG,GAAG,CAAA;YACnB,CAAC,CAAC,CAAA;YAEF,IAAI,OAAoB,CAAA;YACxB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE;gBACzC,OAAO,GAAG,GAAG,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,IAAI,gBAAuD,CAAA;YAC3D,MAAM,SAAS,GAAG,IAAI,OAAO,CAAwB,CAAC,GAAG,EAAE,EAAE;gBAC3D,gBAAgB,GAAG,GAAG,CAAA;YACxB,CAAC,CAAC,CAAA;YAEF,8CAA8C;YAC9C,MAAM,SAAS,GAAG,OAAO;iBACtB,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;gBACpC,IAAI,QAA2C,CAAA;gBAC/C,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBACxD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,kDAAkD;wBAClD,MAAM,GAAG,CAAA;oBACX,CAAC;oBACD,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChD,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAA;oBACpF,CAAC;oBACD,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,OAAO,EAAE,CAAA;gBACT,MAAM,GAAG,GAAG,MAAM,SAAS,CAAA;gBAC3B,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBACxC,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,CAAC,CAAC;iBACD,IAAI,CACH,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EACtB,CAAC,CAAC,EAAE,EAAE;gBACJ,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;oBAC9D,WAAW,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,CAAC,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC,CACF,CAAA;YACH,KAAK,SAAS,CAAA;YAEd,wEAAwE;YACxE,mDAAmD;YACnD,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,QAAQ;gBACR,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;oBACf,OAAM;gBACR,CAAC,CAAC;aACH,CAAC,CAAA;YAEF,kDAAkD;YAClD,IAAI,aAAa,GAAG,KAAK,CAAA;YACzB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACf,aAAa,GAAG,IAAI,CAAA;YACtB,CAAC,CAAC,CAAA;YACF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACvB,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,CAAA;YACb,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,MAAM,WAAW,GAAsB;gBACrC,KAAK,CAAC,MAAM;oBACV,SAAS,GAAG,IAAI,CAAA;oBAChB,gBAAgB,CAAC,QAAQ,CAAC,CAAA;oBAC1B,MAAM,KAAK,CAAA;oBACX,uEAAuE;oBACvE,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,aAAa,EAAE,CAAC,CAAA;oBAC9C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;wBACnC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,WAAW;oBACf,MAAM,MAAM,GAAG,MAAM,KAAK,CAAA;oBAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAClC,CAAC;gBACD,QAAQ;oBACN,IAAI,SAAS;wBAAE,OAAM;oBACrB,gBAAgB,CAAC,UAAU,CAAC,CAAA;oBAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;wBACf,yDAAyD;oBAC3D,CAAC,CAAC,CAAA;gBACJ,CAAC;aACF,CAAA;YACD,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,KAAK,CAAC,MAAM,CACV,MAAmC,EACnC,SAA2B;YAE3B,kEAAkE;YAClE,wEAAwE;YACxE,mEAAmE;YACnE,uEAAuE;YACvE,gEAAgE;YAChE,MAAM,OAAO,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,2BAA2B,EAA8B,CAAA;YAE9E,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;gBACjC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,aAAa,EAAE,CAAC,CAAA;gBAC9C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACnC,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC,CAAA;YAED,MAAM,SAAS,GAAG,KAAK,EAAE,EAA8B,EAA8B,EAAE;gBACrF,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;gBACpC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBAC5D,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACpC,CAAC,CAAA;YAED,MAAM,cAAc,GAAG,CAAC,GAAY,EAAS,EAAE;gBAC7C,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAA;gBAClC,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChD,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpF,CAAC;gBACD,MAAM,GAAG,CAAA;YACX,CAAC,CAAA;YAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,MAAyB,CAAA;gBAC7B,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;gBAClC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,cAAc,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;gBACD,aAAa,CAAC,eAAe,CAAC,CAAA;gBAC9B,OAAO,MAAO,CAAA;YAChB,CAAC;YAED,IAAI,MAAyB,CAAA;YAC7B,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;YAC9E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,cAAc,CAAC,GAAG,CAAC,CAAA;YACrB,CAAC;YACD,MAAM,eAAe,EAAE,CAAA;YACvB,OAAO,MAAO,CAAA;QAChB,CAAC;QAED,KAAK,CAAC,eAAe;YACnB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAChC,iEAAiE,MAAM,CAAC,MAAM,EAAE,CACjF,CAAA;YACD,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1C,CAAC;QAED,KAAK,CAAC,UAAU;YACd,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,KAAK,CAAC,WAAW;YACf,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAChC,iEAAiE,MAAM,CAAC,MAAM,EAAE,CACjF,CAAA;YACD,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,MAAmC;YAC/C,4EAA4E;YAC5E,MAAM,OAAO,GAAiB,EAAE,CAAA;YAChC,MAAM,MAAM,GAAG,MAAM,2BAA2B,EAA8B,CAAA;YAE9E,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;gBACjC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,aAAa,EAAE,CAAC,CAAA;gBAC9C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACnC,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC,CAAA;YAED,MAAM,UAAU,GAAG,KAAK,EAAE,EAA8B,EAAiB,EAAE;gBACzE,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;gBACpC,MAAM,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YAC7C,CAAC,CAAA;YAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;gBAC1B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChD,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;oBACtD,CAAC;oBACD,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,aAAa,CAAC,eAAe,CAAC,CAAA;gBAC9B,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChD,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACtD,CAAC;gBACD,MAAM,GAAG,CAAA;YACX,CAAC;YACD,MAAM,eAAe,EAAE,CAAA;QACzB,CAAC;QAED,SAAS,CACP,OAA+D;YAE/D,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC7B,OAAO,GAAG,EAAE;gBACV,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAClC,CAAC,CAAA;QACH,CAAC;QAED,IAAI,CAAC,SAA6B;YAChC,IAAI,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAA;YACvC,yEAAyE;YACzE,yEAAyE;YACzE,wDAAwD;YACxD,IAAI,SAAS,GAAG,GAAG,CAAA;YACnB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;YACnC,IAAI,MAAM,GAAG,KAAK,CAAA;YAClB,IAAI,WAAW,GAAwB,IAAI,CAAA;YAC3C,MAAM,MAAM,GAAqB,EAAE,CAAA;YACnC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,IAAI,SAAwD,CAAA;YAE5D,KAAK,UAAU,UAAU,CAAC,KAAK,GAAG,GAAG;gBACnC,IAAI,MAAM;oBAAE,OAAM;gBAClB,4EAA4E;gBAC5E,yEAAyE;gBACzE,gFAAgF;gBAChF,kFAAkF;gBAClF,IAAI,GAAW,CAAA;gBACf,IAAI,WAAsB,CAAA;gBAE1B,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;oBACtB,qFAAqF;oBACrF,uCAAuC;oBACvC,MAAM,YAAY,GAAG,QAAQ;wBAC3B,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACjC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAe,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;oBACjE,MAAM,UAAU,GAAG,YAAY,CAAC,cAAc,CAAA;oBAC9C,GAAG,GAAG;;;;mBAIG,MAAM,CAAC,MAAM;;;qBAGX,YAAY,CAAC,KAAK;;qBAElB,UAAU;WACpB,CAAA;oBACD,WAAW,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBACvE,CAAC;qBAAM,CAAC;oBACN,6EAA6E;oBAC7E,iDAAiD;oBACjD,MAAM,UAAU,GAAG,QAAQ;wBACzB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACjC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAe,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;oBACjE,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAA;oBAC5C,GAAG,GAAG;;;;mBAIG,MAAM,CAAC,MAAM;;;qBAGX,UAAU,CAAC,KAAK;;qBAEhB,UAAU;WACpB,CAAA;oBACD,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBAChF,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAU7B,GAAG,EAAE,WAAW,CAAC,CAAA;gBAEpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;oBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;oBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;oBACrC,SAAS,GAAG,CAAC,CAAC,cAAc,CAAA;oBAC5B,cAAc,GAAG,GAAG,CAAA;gBACtB,CAAC;YACH,CAAC;YAED,KAAK,UAAU,IAAI;gBACjB,IAAI,OAAO,IAAI,MAAM;oBAAE,OAAM;gBAC7B,OAAO,GAAG,IAAI,CAAA;gBACd,IAAI,CAAC;oBACH,MAAM,UAAU,EAAE,CAAA;oBAClB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW;wBAAE,WAAW,EAAE,CAAA;gBACrD,CAAC;wBAAS,CAAC;oBACT,OAAO,GAAG,KAAK,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,wEAAwE;YACxE,sEAAsE;YACtE,qDAAqD;YACrD,IAAI,YAAY,GAA+C,WAAW,CAAC,GAAG,EAAE;gBAC9E,IAAI,MAAM,EAAE,CAAC;oBACX,aAAa,CAAC,YAAY,CAAC,CAAA;oBAC3B,YAAY,GAAG,SAAS,CAAA;oBACxB,OAAM;gBACR,CAAC;gBACD,KAAK,IAAI,EAAE,CAAA;YACb,CAAC,EAAE,GAAG,CAAC,CAAA;YAEP,wEAAwE;YACxE,KAAK,OAAO;iBACT,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE;gBAC1B,KAAK,IAAI,EAAE,CAAA;YACb,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACZ,SAAS,GAAG,GAAG,CAAA;gBACf,wDAAwD;gBACxD,0DAA0D;YAC5D,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,gEAAgE;YAClE,CAAC,CAAC,CAAA;YAEJ,iEAAiE;YACjE,KAAK,IAAI,EAAE,CAAA;YAEX,OAAO,mBAAmB,CAAiB;gBACzC,IAAI;oBACF,OAAO,MAAM,CAAC,KAAK,EAAE,CAAA;gBACvB,CAAC;gBACD,IAAI;oBACF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;gBAClB,CAAC;gBACD,gBAAgB;oBACd,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;gBAC1B,CAAC;gBACD,WAAW,CAAC,EAAc;oBACxB,WAAW,GAAG,EAAE,CAAA;gBAClB,CAAC;gBACD,WAAW;oBACT,OAAO,MAAM,CAAA;gBACf,CAAC;gBACD,KAAK;oBACH,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,KAAK;oBACH,MAAM,GAAG,IAAI,CAAA;oBACb,WAAW,GAAG,IAAI,CAAA;oBAClB,IAAI,YAAY,EAAE,CAAC;wBACjB,aAAa,CAAC,YAAY,CAAC,CAAA;wBAC3B,YAAY,GAAG,SAAS,CAAA;oBAC1B,CAAC;oBACD,IAAI,SAAS;wBAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAC1C,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GASpB;IACC,MAAM,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1B,OAAO,GAAG,IAAI,CAAC;YACb,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;YACnD,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,GAAG,CAAC,QAAQ;QACxB,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI;QACJ,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAA6B;QAC/D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;KACjC,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,gFAAgF;AAChF,0CAA0C;AAC1C,SAAS,WAAW,CAAC,CAAU;IAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAA;QACV,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"postgres-event-store.js","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kronos-ts/postgres",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "PostgreSQL extension for Kronos — event store and snapshot store adapters.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -68,9 +68,9 @@
68
68
  },
69
69
  "dependencies": {
70
70
  "@kronos-ts/common": "0.1.1",
71
- "@kronos-ts/app": "0.5.0",
72
- "@kronos-ts/eventsourcing": "0.3.0",
73
- "@kronos-ts/messaging": "0.8.0"
71
+ "@kronos-ts/app": "0.5.1",
72
+ "@kronos-ts/eventsourcing": "0.3.1",
73
+ "@kronos-ts/messaging": "0.9.0"
74
74
  },
75
75
  "peerDependencies": {
76
76
  "pg": ">=8.0.0",
@@ -47,6 +47,9 @@ import type {
47
47
  import {
48
48
  createMessageStream,
49
49
  globalSequenceToken,
50
+ gapAwareToken,
51
+ isGapAwareToken,
52
+ unwrapToken,
50
53
  FIRST_TOKEN,
51
54
  getOrBeginActiveTransaction,
52
55
  onAfterCommit,
@@ -451,11 +454,15 @@ export function createPostgresEventStore(
451
454
  },
452
455
 
453
456
  open(condition: StreamingCondition): MessageStream<SequencedEvent> {
454
- let cursorPosition = condition.position
455
- // The (xid8, position) tuple bookmark. We start with xid8 = '0' which is
456
- // less than any real xid8 so the (xid8, position) > ($1, $2) predicate
457
- // collapses to effectively position > $2 on first read.
458
- let cursorXid = "0"
457
+ // Resume the (xid8, position) tuple cursor exactly when the caller hands
458
+ // back a gap-aware token (the durable cursor minted by this engine). A
459
+ // bare position (fresh start or an explicit reset) seeds xid8 = '0', a
460
+ // sentinel below any real xid8 (pg_current_xact_id() never returns < 3),
461
+ // so the first fetch uses the position-only catch-up branch.
462
+ const resume = condition.token ? unwrapToken(condition.token) : undefined
463
+ const gapResume = resume && isGapAwareToken(resume) ? resume : undefined
464
+ let cursorPosition = gapResume ? gapResume.sequence : condition.position
465
+ let cursorXid = gapResume ? gapResume.gapKey : "0"
459
466
  const criteria = condition.criteria
460
467
  let closed = false
461
468
  let onAvailable: (() => void) | null = null
@@ -473,7 +480,12 @@ export function createPostgresEventStore(
473
480
  let queryParams: unknown[]
474
481
 
475
482
  if (cursorXid === "0") {
476
- // Initial fetch: simple position filter all committed events after cursorPosition.
483
+ // Initial fetch (no tuple cursor yet): position-only filter for all
484
+ // committed events strictly after cursorPosition. Only reached on a
485
+ // fresh start (position 0) or an explicit reset — once the first row
486
+ // is read the cursor switches to the gap-free (xid8, position) tuple
487
+ // branch below, which is what a live processor resumes from (it
488
+ // persists the gap-aware token, never a bare position).
477
489
  // $1 = position, criteria starts at $2
478
490
  const builtInitial = criteria
479
491
  ? buildCriteriaWhere(criteria, 2)
@@ -487,7 +499,7 @@ export function createPostgresEventStore(
487
499
  WHERE sequence_position > $1::bigint
488
500
  AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())
489
501
  AND (${builtInitial.where})
490
- ORDER BY transaction_id ASC, sequence_position ASC
502
+ ORDER BY ${tables.events}.transaction_id ASC, ${tables.events}.sequence_position ASC
491
503
  LIMIT $${limitParam}
492
504
  `
493
505
  queryParams = [String(cursorPosition), ...builtInitial.params, limit]
@@ -506,7 +518,7 @@ export function createPostgresEventStore(
506
518
  WHERE (transaction_id, sequence_position) > ($1::xid8, $2::bigint)
507
519
  AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())
508
520
  AND (${builtTuple.where})
509
- ORDER BY transaction_id ASC, sequence_position ASC
521
+ ORDER BY ${tables.events}.transaction_id ASC, ${tables.events}.sequence_position ASC
510
522
  LIMIT $${limitParam}
511
523
  `
512
524
  queryParams = [cursorXid, String(cursorPosition), ...builtTuple.params, limit]
@@ -527,7 +539,11 @@ export function createPostgresEventStore(
527
539
  for (const r of rows) {
528
540
  const event = decodeEvent(r)
529
541
  const seq = BigInt(r.sequence_position)
530
- buffer.push({ sequence: seq, event })
542
+ // The durable cursor positioned AFTER this event: the (xid8, position)
543
+ // tuple. Persisting it lets a reopened stream resume the gap-free
544
+ // tuple comparison instead of a lossy position-only filter that would
545
+ // skip an event with a lower sequence_position but higher xid8.
546
+ buffer.push({ sequence: seq, event, token: gapAwareToken(seq, r.transaction_id) })
531
547
  cursorXid = r.transaction_id
532
548
  cursorPosition = seq
533
549
  }