@rotorsoft/act-tck 1.27.7 → 1.27.9

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":"store-tck.d.ts","sourceRoot":"","sources":["../../src/store-tck.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAQV,KAAK,EAEN,MAAM,sBAAsB,CAAC;AAc9B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,gCAAgC,CAAC,EAAE,OAAO,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,WAAW,YAAa,eAAe,KAAG,IAi7HtD,CAAC"}
1
+ {"version":3,"file":"store-tck.d.ts","sourceRoot":"","sources":["../../src/store-tck.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAQV,KAAK,EAEN,MAAM,sBAAsB,CAAC;AAc9B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,gCAAgC,CAAC,EAAE,OAAO,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,WAAW,YAAa,eAAe,KAAG,IA88HtD,CAAC"}
package/dist/index.cjs CHANGED
@@ -1265,6 +1265,46 @@ var runStoreTck = (options) => {
1265
1265
  });
1266
1266
  (0, import_vitest9.expect)(full).toHaveLength(2);
1267
1267
  });
1268
+ (0, import_vitest9.it)("with_snaps applies the resume floor on a backward scan too", async () => {
1269
+ const s = `q-snap-back-${uid()}`;
1270
+ await store.commit(
1271
+ s,
1272
+ [inc(1), inc(1)],
1273
+ make_meta({ stream: s })
1274
+ );
1275
+ const [snap] = await store.commit(
1276
+ s,
1277
+ [{ name: import_act2.SNAP_EVENT, data: { count: 2 } }],
1278
+ make_meta({ stream: s })
1279
+ );
1280
+ await store.commit(
1281
+ s,
1282
+ [inc(1), inc(1), inc(1)],
1283
+ make_meta({ stream: s })
1284
+ );
1285
+ const backward = await collect(store, {
1286
+ stream: s,
1287
+ stream_exact: true,
1288
+ with_snaps: true,
1289
+ backward: true
1290
+ });
1291
+ (0, import_vitest9.expect)(backward).toHaveLength(4);
1292
+ (0, import_vitest9.expect)(backward[backward.length - 1].name).toBe(import_act2.SNAP_EVENT);
1293
+ (0, import_vitest9.expect)(backward.every((e) => e.id >= snap.id)).toBe(true);
1294
+ const s2 = `q-nosnap-back-${uid()}`;
1295
+ await store.commit(
1296
+ s2,
1297
+ [inc(1), inc(1)],
1298
+ make_meta({ stream: s2 })
1299
+ );
1300
+ const full = await collect(store, {
1301
+ stream: s2,
1302
+ stream_exact: true,
1303
+ with_snaps: true,
1304
+ backward: true
1305
+ });
1306
+ (0, import_vitest9.expect)(full).toHaveLength(2);
1307
+ });
1268
1308
  (0, import_vitest9.it)("supports backward traversal", async () => {
1269
1309
  const s = `q-back-${uid()}`;
1270
1310
  const committed = await store.commit(
@@ -2369,7 +2409,7 @@ var runStoreTck = (options) => {
2369
2409
  (0, import_vitest9.expect)(again.find((l) => l.stream === ctl)).toBeDefined();
2370
2410
  (0, import_vitest9.expect)(again.find((l) => l.stream === s)).toBeUndefined();
2371
2411
  });
2372
- (0, import_vitest9.it)("holds the watermark and resets retry on a due-marked lease", async () => {
2412
+ (0, import_vitest9.it)("holds the watermark and resets retry on an explicit-defer due lease (retry: -1)", async () => {
2373
2413
  const s = `ackdefer-past-${uid()}`;
2374
2414
  await store.subscribe([{ stream: s }]);
2375
2415
  await store.commit(
@@ -2379,7 +2419,7 @@ var runStoreTck = (options) => {
2379
2419
  );
2380
2420
  const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
2381
2421
  const mine = leased.find((l) => l.stream === s);
2382
- await store.ack([{ ...mine, due: Date.now() - 1e3 }]);
2422
+ await store.ack([{ ...mine, due: Date.now() - 1e3, retry: -1 }]);
2383
2423
  const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
2384
2424
  const re = again.find((l) => l.stream === s);
2385
2425
  (0, import_vitest9.expect)(re).toBeDefined();
@@ -2387,6 +2427,24 @@ var runStoreTck = (options) => {
2387
2427
  (0, import_vitest9.expect)(re.retry).toBe(0);
2388
2428
  await store.ack([{ ...re, at: 1e6 }]);
2389
2429
  });
2430
+ (0, import_vitest9.it)("persists the lease's retry on a backoff-style due lease (#1262)", async () => {
2431
+ const s = `ackdefer-retry-${uid()}`;
2432
+ await store.subscribe([{ stream: s }]);
2433
+ await store.commit(
2434
+ s,
2435
+ [inc(1)],
2436
+ make_meta({ stream: s })
2437
+ );
2438
+ const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
2439
+ const mine = leased.find((l) => l.stream === s);
2440
+ await store.ack([{ ...mine, due: Date.now() - 1e3, retry: 3 }]);
2441
+ const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
2442
+ const re = again.find((l) => l.stream === s);
2443
+ (0, import_vitest9.expect)(re).toBeDefined();
2444
+ (0, import_vitest9.expect)(re.at).toBe(mine.at);
2445
+ (0, import_vitest9.expect)(re.retry).toBe(4);
2446
+ await store.ack([{ ...re, at: 1e6 }]);
2447
+ });
2390
2448
  (0, import_vitest9.it)("ignores due-marked entries from a non-holder", async () => {
2391
2449
  const s = `ackdefer-owner-${uid()}`;
2392
2450
  await store.subscribe([{ stream: s }]);
@@ -4032,48 +4090,6 @@ var runStoreTck = (options) => {
4032
4090
  );
4033
4091
  (0, import_vitest9.expect)(bwd).toEqual([10]);
4034
4092
  });
4035
- (0, import_vitest9.it)("time-travel query ignores a snapshot newer than the created cutoff", async () => {
4036
- const s = `restore-tt-snap-${uid()}`;
4037
- const t0 = /* @__PURE__ */ new Date("2020-01-01T00:00:00.000Z");
4038
- const t1 = /* @__PURE__ */ new Date("2020-02-01T00:00:00.000Z");
4039
- const tSnap = /* @__PURE__ */ new Date("2020-03-01T00:00:00.000Z");
4040
- await restore(
4041
- as_source([
4042
- event(1, s, 0, "Incremented", t0, { amount: 1 }),
4043
- event(2, s, 1, "Incremented", t1, { amount: 2 }),
4044
- // Snapshot committed last → highest id and latest `created`.
4045
- event(3, s, 2, import_act2.SNAP_EVENT, tSnap, { count: 3 })
4046
- ])
4047
- );
4048
- const cutoff = /* @__PURE__ */ new Date("2020-01-15T00:00:00.000Z");
4049
- const before = [];
4050
- await store.query(
4051
- (e) => {
4052
- before.push(e.data.amount);
4053
- },
4054
- {
4055
- stream: s,
4056
- stream_exact: true,
4057
- with_snaps: true,
4058
- created_before: cutoff
4059
- }
4060
- );
4061
- (0, import_vitest9.expect)(before).toEqual([1]);
4062
- const after = [];
4063
- await store.query(
4064
- (e) => {
4065
- if (e.name !== import_act2.SNAP_EVENT)
4066
- after.push(e.data.amount);
4067
- },
4068
- {
4069
- stream: s,
4070
- stream_exact: true,
4071
- with_snaps: true,
4072
- created_after: cutoff
4073
- }
4074
- );
4075
- (0, import_vitest9.expect)(after).toEqual([2]);
4076
- });
4077
4093
  import_vitest9.it.skipIf(!caps.pii_isolation)(
4078
4094
  "isolates restored pii so forget_pii erases it",
4079
4095
  async () => {