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/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 { hiddenFromSeq: hiddenFromSeq(events), hiddenFromTurn: hiddenFromTurn(events) };
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',