@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/store-tck.d.ts.map +1 -1
- package/dist/index.cjs +60 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +60 -44
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -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,
|
|
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
|
|
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 () => {
|