dsh-session-rewind 1.2.7 → 1.3.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.
- package/README.md +163 -163
- package/lib/client.js +36 -12
- package/package.json +1 -1
- package/src/lib/inplace.js +18 -2
- package/src/lib/route.js +72 -0
- package/src/lib/surface.js +35 -0
- package/src/plugin.js +20 -3
- package/test/client-smoke.mjs +440 -440
- package/test/find-markers.mjs +42 -0
- package/test/route-smoke.mjs +272 -272
- package/test/selftest.mjs +283 -262
package/src/plugin.js
CHANGED
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
CUTS_PATH,
|
|
30
30
|
DIAGNOSE_PATH,
|
|
31
31
|
INPLACE_PATH,
|
|
32
|
+
TAIL_PATH,
|
|
32
33
|
PLAN_PATH,
|
|
33
34
|
RESTORE_PATH,
|
|
34
35
|
SELFCHECK_PATH,
|
|
@@ -36,12 +37,13 @@ import {
|
|
|
36
37
|
createCutsHandler,
|
|
37
38
|
createDiagnoseHandler,
|
|
38
39
|
createInplaceHandler,
|
|
40
|
+
createTailHandler,
|
|
39
41
|
createPlanHandler,
|
|
40
42
|
createRestoreHandler,
|
|
41
43
|
createSelfcheckHandler,
|
|
42
44
|
} from './lib/route.js';
|
|
43
45
|
import { describeInPlace, executeInPlace, liveAgentOf } from './lib/inplace.js';
|
|
44
|
-
import { hiddenFromSeq, hiddenFromTurn } from './lib/surface.js';
|
|
46
|
+
import { hiddenFromSeq, hiddenFromTurn, withdrawnTurns } from './lib/surface.js';
|
|
45
47
|
|
|
46
48
|
export const name = 'session-rewind';
|
|
47
49
|
|
|
@@ -473,12 +475,17 @@ export function apply(ctx) {
|
|
|
473
475
|
restoreTurns: restoreFiles === true
|
|
474
476
|
? async (fromTurn) => restoreTurns(sessionId, fromTurn)
|
|
475
477
|
: undefined,
|
|
478
|
+
readEvents: (id) => readEvents(ctx, id),
|
|
476
479
|
});
|
|
477
480
|
|
|
478
481
|
const cutsOf = async (sessionId) => {
|
|
479
482
|
// Read the durable log: the client needs the cut after a page reload too.
|
|
480
483
|
const events = await readEvents(ctx, sessionId);
|
|
481
|
-
return {
|
|
484
|
+
return {
|
|
485
|
+
hiddenFromSeq: hiddenFromSeq(events),
|
|
486
|
+
hiddenFromTurn: hiddenFromTurn(events),
|
|
487
|
+
hiddenTurns: withdrawnTurns(events),
|
|
488
|
+
};
|
|
482
489
|
};
|
|
483
490
|
|
|
484
491
|
/**
|
|
@@ -588,7 +595,7 @@ export function apply(ctx) {
|
|
|
588
595
|
plugin: 'dsh-session-rewind',
|
|
589
596
|
archive: { directory: archive.directory, ...archiveStats },
|
|
590
597
|
client: { discovered: clientPath !== null, path: clientPath },
|
|
591
|
-
routes: [SELFCHECK_PATH, DIAGNOSE_PATH, CANDIDATES_PATH, INPLACE_PATH, CUTS_PATH, PLAN_PATH, RESTORE_PATH],
|
|
598
|
+
routes: [SELFCHECK_PATH, DIAGNOSE_PATH, TAIL_PATH, CANDIDATES_PATH, INPLACE_PATH, CUTS_PATH, PLAN_PATH, RESTORE_PATH],
|
|
592
599
|
};
|
|
593
600
|
},
|
|
594
601
|
trustedHosts,
|
|
@@ -622,6 +629,12 @@ export function apply(ctx) {
|
|
|
622
629
|
onError,
|
|
623
630
|
});
|
|
624
631
|
|
|
632
|
+
const tailHandler = createTailHandler({
|
|
633
|
+
events: async (sessionId) => readEvents(ctx, sessionId),
|
|
634
|
+
trustedHosts,
|
|
635
|
+
onError,
|
|
636
|
+
});
|
|
637
|
+
|
|
625
638
|
const cutsHandler = createCutsHandler({
|
|
626
639
|
cutsOf,
|
|
627
640
|
trustedHosts,
|
|
@@ -637,6 +650,10 @@ export function apply(ctx) {
|
|
|
637
650
|
() => scope.webServer.register({ kind: 'exact', path: SELFCHECK_PATH, handler: statusHandler }),
|
|
638
651
|
'session-rewind: selfcheck route',
|
|
639
652
|
);
|
|
653
|
+
scope.effect(
|
|
654
|
+
() => scope.webServer.register({ kind: 'exact', path: TAIL_PATH, handler: tailHandler }),
|
|
655
|
+
'session-rewind: tail route',
|
|
656
|
+
);
|
|
640
657
|
scope.effect(
|
|
641
658
|
() => scope.webServer.register({ kind: 'exact', path: CANDIDATES_PATH, handler: candidatesHandler }),
|
|
642
659
|
'session-rewind: candidates route',
|