@bananapus/nana-sdk-core 6.1.0 → 6.2.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.
Files changed (101) hide show
  1. package/dist/cjs/review/heldWrite.d.ts +6 -1
  2. package/dist/cjs/review/heldWrite.d.ts.map +1 -1
  3. package/dist/cjs/review/heldWrite.js +13 -6
  4. package/dist/cjs/review/heldWrite.js.map +1 -1
  5. package/dist/cjs/review/locks.d.ts +61 -2
  6. package/dist/cjs/review/locks.d.ts.map +1 -1
  7. package/dist/cjs/review/locks.js +115 -16
  8. package/dist/cjs/review/locks.js.map +1 -1
  9. package/dist/cjs/review/react/useReviewedRun.d.ts +17 -3
  10. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
  11. package/dist/cjs/review/react/useReviewedRun.js +142 -31
  12. package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
  13. package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -1
  14. package/dist/cjs/review/react/useSavedAttempt.js +12 -0
  15. package/dist/cjs/review/react/useSavedAttempt.js.map +1 -1
  16. package/dist/cjs/review/relayrSend.d.ts +5 -0
  17. package/dist/cjs/review/relayrSend.d.ts.map +1 -1
  18. package/dist/cjs/review/relayrSend.js +126 -104
  19. package/dist/cjs/review/relayrSend.js.map +1 -1
  20. package/dist/cjs/review/runStatus.d.ts +6 -2
  21. package/dist/cjs/review/runStatus.d.ts.map +1 -1
  22. package/dist/cjs/review/runStatus.js +3 -1
  23. package/dist/cjs/review/runStatus.js.map +1 -1
  24. package/dist/cjs/review/safeRelayr.d.ts +11 -2
  25. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  26. package/dist/cjs/review/safeRelayr.js +232 -156
  27. package/dist/cjs/review/safeRelayr.js.map +1 -1
  28. package/dist/cjs/review/savedAttempt.d.ts.map +1 -1
  29. package/dist/cjs/review/savedAttempt.js +7 -2
  30. package/dist/cjs/review/savedAttempt.js.map +1 -1
  31. package/dist/cjs/review/send.d.ts +27 -5
  32. package/dist/cjs/review/send.d.ts.map +1 -1
  33. package/dist/cjs/review/send.js +67 -24
  34. package/dist/cjs/review/send.js.map +1 -1
  35. package/dist/cjs/review/sign.d.ts +6 -1
  36. package/dist/cjs/review/sign.d.ts.map +1 -1
  37. package/dist/cjs/review/sign.js +10 -4
  38. package/dist/cjs/review/sign.js.map +1 -1
  39. package/dist/cjs/review/wallet.d.ts +16 -4
  40. package/dist/cjs/review/wallet.d.ts.map +1 -1
  41. package/dist/cjs/review/wallet.js +60 -17
  42. package/dist/cjs/review/wallet.js.map +1 -1
  43. package/dist/cjs/review/writeHold.d.ts +18 -3
  44. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  45. package/dist/cjs/review/writeHold.js +37 -10
  46. package/dist/cjs/review/writeHold.js.map +1 -1
  47. package/dist/cjs/review/writeRecovery.d.ts +12 -2
  48. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  49. package/dist/cjs/review/writeRecovery.js +64 -15
  50. package/dist/cjs/review/writeRecovery.js.map +1 -1
  51. package/dist/esm/review/heldWrite.d.ts +6 -1
  52. package/dist/esm/review/heldWrite.d.ts.map +1 -1
  53. package/dist/esm/review/heldWrite.js +13 -6
  54. package/dist/esm/review/heldWrite.js.map +1 -1
  55. package/dist/esm/review/locks.d.ts +61 -2
  56. package/dist/esm/review/locks.d.ts.map +1 -1
  57. package/dist/esm/review/locks.js +111 -16
  58. package/dist/esm/review/locks.js.map +1 -1
  59. package/dist/esm/review/react/useReviewedRun.d.ts +17 -3
  60. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
  61. package/dist/esm/review/react/useReviewedRun.js +143 -32
  62. package/dist/esm/review/react/useReviewedRun.js.map +1 -1
  63. package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -1
  64. package/dist/esm/review/react/useSavedAttempt.js +12 -0
  65. package/dist/esm/review/react/useSavedAttempt.js.map +1 -1
  66. package/dist/esm/review/relayrSend.d.ts +5 -0
  67. package/dist/esm/review/relayrSend.d.ts.map +1 -1
  68. package/dist/esm/review/relayrSend.js +127 -105
  69. package/dist/esm/review/relayrSend.js.map +1 -1
  70. package/dist/esm/review/runStatus.d.ts +6 -2
  71. package/dist/esm/review/runStatus.d.ts.map +1 -1
  72. package/dist/esm/review/runStatus.js +3 -1
  73. package/dist/esm/review/runStatus.js.map +1 -1
  74. package/dist/esm/review/safeRelayr.d.ts +11 -2
  75. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  76. package/dist/esm/review/safeRelayr.js +232 -156
  77. package/dist/esm/review/safeRelayr.js.map +1 -1
  78. package/dist/esm/review/savedAttempt.d.ts.map +1 -1
  79. package/dist/esm/review/savedAttempt.js +7 -2
  80. package/dist/esm/review/savedAttempt.js.map +1 -1
  81. package/dist/esm/review/send.d.ts +27 -5
  82. package/dist/esm/review/send.d.ts.map +1 -1
  83. package/dist/esm/review/send.js +67 -24
  84. package/dist/esm/review/send.js.map +1 -1
  85. package/dist/esm/review/sign.d.ts +6 -1
  86. package/dist/esm/review/sign.d.ts.map +1 -1
  87. package/dist/esm/review/sign.js +10 -4
  88. package/dist/esm/review/sign.js.map +1 -1
  89. package/dist/esm/review/wallet.d.ts +16 -4
  90. package/dist/esm/review/wallet.d.ts.map +1 -1
  91. package/dist/esm/review/wallet.js +60 -17
  92. package/dist/esm/review/wallet.js.map +1 -1
  93. package/dist/esm/review/writeHold.d.ts +18 -3
  94. package/dist/esm/review/writeHold.d.ts.map +1 -1
  95. package/dist/esm/review/writeHold.js +37 -10
  96. package/dist/esm/review/writeHold.js.map +1 -1
  97. package/dist/esm/review/writeRecovery.d.ts +12 -2
  98. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  99. package/dist/esm/review/writeRecovery.js +63 -16
  100. package/dist/esm/review/writeRecovery.js.map +1 -1
  101. package/package.json +1 -1
@@ -51,12 +51,17 @@ export declare const FOLLOW_MS = 120000;
51
51
  * (an authenticated settlement or an exit) or `signal` aborts: never on its
52
52
  * own reading of a receipt, a replacement or an expiry. The hold decides.
53
53
  */
54
- export declare function followHeldWrite(handle: WriteHoldHandle, client: WriteHoldClient, { signal, pollMs, fastMs, onRead, }: {
54
+ export declare function followHeldWrite(handle: WriteHoldHandle, client: WriteHoldClient, { signal, pollMs, fastMs, onRead, reservation, }: {
55
55
  signal: AbortSignal;
56
56
  pollMs?: number;
57
57
  fastMs?: number;
58
58
  /** Each read of the hold as it starts, while it holds the call's lock. */
59
59
  onRead?: (read: Promise<unknown>) => void;
60
+ /**
61
+ * Follow this reservation's own write: it ends with its saved
62
+ * settlement, even once a later reservation of the call replaced it.
63
+ */
64
+ reservation?: string;
60
65
  }): Promise<WriteHoldState | null>;
61
66
  /**
62
67
  * Whether `next` would hide an exit `shown` offers without the chain having
@@ -1 +1 @@
1
- {"version":3,"file":"heldWrite.d.ts","sourceRoot":"","sources":["../../../src/review/heldWrite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heldWrite.d.ts","sourceRoot":"","sources":["../../../src/review/heldWrite.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ function pause(ms, signal) {
43
43
  * (an authenticated settlement or an exit) or `signal` aborts: never on its
44
44
  * own reading of a receipt, a replacement or an expiry. The hold decides.
45
45
  */
46
- async function followHeldWrite(handle, client, { signal, pollMs, fastMs = FAST_MS, onRead, }) {
46
+ async function followHeldWrite(handle, client, { signal, pollMs, fastMs = FAST_MS, onRead, reservation, }) {
47
47
  const now = handle.peek();
48
48
  if (now.status !== "clear" &&
49
49
  now.record.safe &&
@@ -62,6 +62,9 @@ async function followHeldWrite(handle, client, { signal, pollMs, fastMs = FAST_M
62
62
  const read = handle.state(client).catch(() => null);
63
63
  onRead?.(read);
64
64
  const state = await read;
65
+ const own = reservation && handle.settlementOf(reservation);
66
+ if (own)
67
+ return { status: "clear", settled: own, reservation };
65
68
  if (state?.status === "clear")
66
69
  return state;
67
70
  await pause(look < FAST_LOOKS ? fastMs : pollOf(pollMs), signal);
@@ -291,21 +294,25 @@ function createHeldWriteView(handle, options) {
291
294
  if (next.status === "clear") {
292
295
  const reservation = next.reservation;
293
296
  const mine = wasHeld && (!reservation || reservation === observed);
297
+ // Its own saved settlement, once a later reservation replaced it.
298
+ const settled = mine
299
+ ? (next.settled ?? handle.settlementOf(observed))
300
+ : undefined;
294
301
  // Whose release it is, only the exit's answer says.
295
- if (exiting && mine && !next.settled)
302
+ if (exiting && mine && !settled)
296
303
  return;
297
304
  stopFollowing();
298
- if (next.settled && mine) {
305
+ if (settled) {
299
306
  seen.delete(observed);
300
- deliver(next.settled, observed);
307
+ deliver(settled, observed);
301
308
  set({
302
309
  phase: "settled",
303
310
  state: next,
304
- line: settledLine(next.settled),
311
+ line: settledLine(settled),
305
312
  warning: undefined,
306
313
  notice: undefined,
307
314
  exit: false,
308
- settled: next.settled,
315
+ settled,
309
316
  releasedBy: undefined,
310
317
  });
311
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heldWrite.js","sourceRoot":"","sources":["../../../src/review/heldWrite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heldWrite.js","sourceRoot":"","sources":["../../../src/review/heldWrite.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,69 @@
1
- /** The Web Locks the SDK's holds take: `navigator.locks`, or its fallback ({@link browserLocks}). */
2
- export type BrowserLocks = Pick<LockManager, "request">;
1
+ /** Thrown by {@link LockHandle.assertHeld} once this tab no longer holds the lock. */
2
+ export declare class LockLostError extends Error {
3
+ readonly lock: string;
4
+ readonly name = "LockLostError";
5
+ readonly code = "LOCK_LOST";
6
+ constructor(lock: string);
7
+ }
8
+ /**
9
+ * The lock {@link browserLocks} hands its work. Native Web Locks never lose
10
+ * it. The IndexedDB lease can: a tab suspended past its lease (as while the
11
+ * user is in a wallet app) may come back after another tab took it.
12
+ *
13
+ * Call `assertHeld()` immediately before every journal write and every wallet
14
+ * submission inside the lock. It narrows the stale-holder window to the time
15
+ * between the check and the write.
16
+ */
17
+ export type LockHandle = {
18
+ readonly name: string;
19
+ readonly mode: LockMode;
20
+ /** Aborted once the lock is known lost. Not the caller's request `signal`. */
21
+ readonly signal: AbortSignal;
22
+ /** A fresh read: whether this tab still holds the lock. */
23
+ held(): Promise<boolean>;
24
+ /** Throws {@link LockLostError} unless `held()`. */
25
+ assertHeld(): Promise<void>;
26
+ };
27
+ /**
28
+ * Throws {@link LockLostError} unless every given lock is still this tab's,
29
+ * on a fresh read; `null` and `undefined` are skipped. One line before a
30
+ * write under several locks: `await assertLocksHeld([a, b]); save()`.
31
+ */
32
+ export declare function assertLocksHeld(locks?: readonly (Pick<LockHandle, "assertHeld"> | null | undefined)[]): Promise<void>;
33
+ /** What {@link BrowserLocks} runs under the lock: `null` when `ifAvailable` found it taken. */
34
+ export type LockWork<T> = (lock: LockHandle | null) => T | PromiseLike<T>;
35
+ /**
36
+ * The Web Locks the SDK's holds take ({@link browserLocks}): `request` as on
37
+ * `navigator.locks`, with or without options, handing a {@link LockHandle}.
38
+ */
39
+ export type BrowserLocks = {
40
+ request<T>(name: string, work: LockWork<T>): Promise<Awaited<T>>;
41
+ request<T>(name: string, options: LockOptions, work: LockWork<T>): Promise<Awaited<T>>;
42
+ };
43
+ type AnyLocks = Pick<LockManager, "request">;
44
+ /**
45
+ * Any Web Locks manager (`navigator.locks`, a test's) handing a
46
+ * {@link LockHandle}: a handle it hands already passes through; any other
47
+ * lock is never lost while its work runs.
48
+ */
49
+ export declare function fencedLocks(locks: AnyLocks | BrowserLocks | RawLocks): BrowserLocks;
50
+ type RawWork<T> = (lock: LockHandle | null) => Promise<T>;
51
+ type RawLocks = {
52
+ request<T>(name: string, options: LockOptions, work: RawWork<T>): Promise<T>;
53
+ };
3
54
  /**
4
55
  * The browser's Web Locks. Where a browser or wallet webview has none, an
5
56
  * IndexedDB lease shared by the origin's tabs (one transaction, no visible
6
57
  * delay; it waits only while another tab holds the action), with a one-time
7
58
  * console note. With neither, a lock within this tab. Never refuses.
59
+ *
60
+ * `request(name, work)` or `request(name, options, work)`, as on
61
+ * `navigator.locks`; `work` gets a {@link LockHandle}. Call its
62
+ * `assertHeld()` immediately before every journal write and every wallet
63
+ * submission inside the lock: a lease can lapse while the tab is suspended
64
+ * (as while the user is in a wallet app) and pass to another tab. The check
65
+ * narrows that window to the time between the check and the write.
8
66
  */
9
67
  export declare function browserLocks(): BrowserLocks;
68
+ export {};
10
69
  //# sourceMappingURL=locks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/review/locks.ts"],"names":[],"mappings":"AAEA,qGAAqG;AACrG,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAkIxD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAa3C"}
1
+ {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/review/locks.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,qBAAa,aAAc,SAAQ,KAAK;IAG1B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,IAAI,eAAe;gBACP,IAAI,EAAE,MAAM;CAGlC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,2DAA2D;IAC3D,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,oDAAoD;IACpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACrE,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,+FAA+F;AAC/F,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC,EACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAiC7C;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,GACxC,YAAY,CAkBd;AAED,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK,QAAQ,GAAG;IACd,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC;AAwKF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAa3C"}
@@ -1,7 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LockLostError = void 0;
4
+ exports.assertLocksHeld = assertLocksHeld;
5
+ exports.fencedLocks = fencedLocks;
3
6
  exports.browserLocks = browserLocks;
4
7
  const tabState_js_1 = require("./tabState.js");
8
+ /** Thrown by {@link LockHandle.assertHeld} once this tab no longer holds the lock. */
9
+ class LockLostError extends Error {
10
+ constructor(lock) {
11
+ super(`The "${lock}" lock was lost. Its work must stop before writing.`);
12
+ this.lock = lock;
13
+ this.name = "LockLostError";
14
+ this.code = "LOCK_LOST";
15
+ }
16
+ }
17
+ exports.LockLostError = LockLostError;
18
+ /**
19
+ * Throws {@link LockLostError} unless every given lock is still this tab's,
20
+ * on a fresh read; `null` and `undefined` are skipped. One line before a
21
+ * write under several locks: `await assertLocksHeld([a, b]); save()`.
22
+ */
23
+ async function assertLocksHeld(locks) {
24
+ await Promise.all((locks ?? []).map((lock) => lock?.assertHeld()));
25
+ }
26
+ const NEVER = new AbortController().signal;
27
+ function handle(name, mode, held, signal = NEVER) {
28
+ return {
29
+ name,
30
+ mode,
31
+ signal,
32
+ held,
33
+ async assertHeld() {
34
+ if (!(await held()))
35
+ throw new LockLostError(name);
36
+ },
37
+ };
38
+ }
39
+ function isHandle(lock) {
40
+ return typeof lock.assertHeld === "function";
41
+ }
42
+ /** `request`'s two shapes, as `navigator.locks` takes them. */
43
+ function shaped(options, work) {
44
+ return typeof options === "function" ? [{}, options] : [options, work];
45
+ }
46
+ /**
47
+ * Any Web Locks manager (`navigator.locks`, a test's) handing a
48
+ * {@link LockHandle}: a handle it hands already passes through; any other
49
+ * lock is never lost while its work runs.
50
+ */
51
+ function fencedLocks(locks) {
52
+ return {
53
+ request(name, options, work) {
54
+ const [opts, run] = shaped(options, work);
55
+ return locks.request(name, opts, (lock) => {
56
+ if (!lock)
57
+ return run(null);
58
+ if (isHandle(lock))
59
+ return run(lock);
60
+ let running = true;
61
+ return Promise.resolve(run(handle(lock.name, lock.mode, async () => running))).finally(() => (running = false));
62
+ });
63
+ },
64
+ };
65
+ }
5
66
  const TAB_QUEUES = tabState_js_1.TAB.queues;
6
67
  // Without Web Locks, writes in this tab still run one at a time per action,
7
68
  // across every copy of this module loaded in the tab.
@@ -17,10 +78,12 @@ const tabLocks = {
17
78
  const queue = (held ?? Promise.resolve()).then(() => mine);
18
79
  tabQueues.set(name, queue);
19
80
  await held;
81
+ let running = true;
20
82
  try {
21
- return await work({ name, mode: "exclusive" });
83
+ return await work(handle(name, "exclusive", async () => running));
22
84
  }
23
85
  finally {
86
+ running = false;
24
87
  release();
25
88
  if (tabQueues.get(name) === queue)
26
89
  tabQueues.delete(name);
@@ -29,39 +92,53 @@ const tabLocks = {
29
92
  };
30
93
  // Without Web Locks, tabs share an IndexedDB lease per action. A readwrite
31
94
  // transaction is atomic across the origin's tabs, so claiming a lease is a
32
- // compare-and-set. The holder renews it while it works; a tab that closed or
33
- // froze loses it once it lapses.
95
+ // compare-and-set. Each acquisition has its own owner token. The holder
96
+ // renews it while it works, only while it is still its own and unexpired; a
97
+ // tab that closed or froze loses it once it lapses, and its handle then
98
+ // reads as lost.
34
99
  const LEASE_DB = "nana-sdk-write-locks";
35
100
  const LEASE_STORE = "leases";
36
101
  const LEASE_MS = 15_000;
37
102
  const LEASE_RENEW_MS = 5_000;
38
103
  const LEASE_POLL_MS = 50;
39
- function leaseTransaction(db, run) {
104
+ function leaseTransaction(db, mode, run) {
40
105
  return new Promise((resolve, reject) => {
41
- const transaction = db.transaction(LEASE_STORE, "readwrite");
106
+ const transaction = db.transaction(LEASE_STORE, mode);
42
107
  let result;
43
108
  run(transaction.objectStore(LEASE_STORE), (value) => (result = value));
44
109
  transaction.oncomplete = () => resolve(result);
45
110
  transaction.onerror = transaction.onabort = () => reject(transaction.error);
46
111
  });
47
112
  }
48
- /** Take or renew `name`'s lease for `owner`; false while another tab holds it. */
49
- function claimLease(db, name, owner) {
50
- return leaseTransaction(db, (store, done) => {
113
+ /** Whether `lease` is `owner`'s and unexpired. */
114
+ const owns = (lease, owner) => lease?.owner === owner && lease.expires > Date.now();
115
+ /**
116
+ * Take `name`'s lease for `owner` (`renew`: only extend it while still
117
+ * `owner`'s); false while another tab holds it, or once a renewal finds it lost.
118
+ */
119
+ function claimLease(db, name, owner, renew = false) {
120
+ return leaseTransaction(db, "readwrite", (store, done) => {
51
121
  done(false);
52
122
  const read = store.get(name);
53
123
  read.onsuccess = () => {
54
124
  const lease = read.result;
55
125
  const now = Date.now();
56
- if (lease && lease.owner !== owner && lease.expires > now)
126
+ if (renew ? !owns(lease, owner) : lease && lease.expires > now)
57
127
  return;
58
128
  store.put({ owner, expires: now + LEASE_MS }, name);
59
129
  done(true);
60
130
  };
61
131
  });
62
132
  }
133
+ function readLease(db, name) {
134
+ return leaseTransaction(db, "readonly", (store, done) => {
135
+ const read = store.get(name);
136
+ read.onsuccess = () => done(read.result);
137
+ });
138
+ }
139
+ /** Drop `name`'s lease only while it is still `owner`'s. */
63
140
  function dropLease(db, name, owner) {
64
- return leaseTransaction(db, (store) => {
141
+ return leaseTransaction(db, "readwrite", (store) => {
65
142
  const read = store.get(name);
66
143
  read.onsuccess = () => {
67
144
  if (read.result?.owner === owner)
@@ -98,28 +175,50 @@ function leaseLocks(factory) {
98
175
  return work(null);
99
176
  await new Promise((resolve) => setTimeout(resolve, LEASE_POLL_MS));
100
177
  }
101
- const renew = setInterval(() => void claimLease(db, name, owner).catch(() => { }), LEASE_RENEW_MS);
178
+ const lost = new AbortController();
179
+ let running = true;
180
+ const held = async () => {
181
+ if (!running || lost.signal.aborted)
182
+ return false;
183
+ // Never cached: a tab back from suspension reads what is there now.
184
+ const mine = owns(await readLease(db, name).catch(() => undefined), owner);
185
+ if (!mine)
186
+ lost.abort(new LockLostError(name));
187
+ return mine && running;
188
+ };
189
+ const renew = setInterval(() => void claimLease(db, name, owner, true)
190
+ .then((kept) => kept || lost.abort(new LockLostError(name)))
191
+ .catch(() => { }), LEASE_RENEW_MS);
102
192
  try {
103
- return await work(tabLock);
193
+ return await work(handle(name, "exclusive", held, lost.signal));
104
194
  }
105
195
  finally {
196
+ running = false;
106
197
  clearInterval(renew);
107
198
  await dropLease(db, name, owner).catch(() => { });
108
199
  }
109
200
  }),
110
201
  };
111
202
  }
112
- let fallbackLocks;
203
+ const inTabLocks = fencedLocks(tabLocks);
204
+ let leasedLocks;
113
205
  /**
114
206
  * The browser's Web Locks. Where a browser or wallet webview has none, an
115
207
  * IndexedDB lease shared by the origin's tabs (one transaction, no visible
116
208
  * delay; it waits only while another tab holds the action), with a one-time
117
209
  * console note. With neither, a lock within this tab. Never refuses.
210
+ *
211
+ * `request(name, work)` or `request(name, options, work)`, as on
212
+ * `navigator.locks`; `work` gets a {@link LockHandle}. Call its
213
+ * `assertHeld()` immediately before every journal write and every wallet
214
+ * submission inside the lock: a lease can lapse while the tab is suspended
215
+ * (as while the user is in a wallet app) and pass to another tab. The check
216
+ * narrows that window to the time between the check and the write.
118
217
  */
119
218
  function browserLocks() {
120
219
  const native = globalThis.navigator?.locks;
121
220
  if (native)
122
- return native;
221
+ return fencedLocks(native);
123
222
  if (!tabLocksNoted) {
124
223
  tabLocksNoted = true;
125
224
  console.info(globalThis.indexedDB
@@ -127,7 +226,7 @@ function browserLocks() {
127
226
  : "Web Locks are unavailable, so wallet writes are coordinated within this tab only.");
128
227
  }
129
228
  if (!globalThis.indexedDB)
130
- return tabLocks;
131
- return (fallbackLocks ??= leaseLocks(globalThis.indexedDB));
229
+ return inTabLocks;
230
+ return (leasedLocks ??= fencedLocks(leaseLocks(globalThis.indexedDB)));
132
231
  }
133
232
  //# sourceMappingURL=locks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/review/locks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/review/locks.ts"],"names":[],"mappings":";;;AAoCA,0CAIC;AAwDD,kCAoBC;AA0LD,oCAaC;AA3TD,+CAAoC;AAEpC,sFAAsF;AACtF,MAAa,aAAc,SAAQ,KAAK;IAGtC,YAAqB,IAAY;QAC/B,KAAK,CAAC,QAAQ,IAAI,qDAAqD,CAAC,CAAC;QADtD,SAAI,GAAJ,IAAI,CAAQ;QAFxB,SAAI,GAAG,eAAe,CAAC;QACvB,SAAI,GAAG,WAAW,CAAC;IAG5B,CAAC;CACF;AAND,sCAMC;AAsBD;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,KAAsE;IAEtE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAoBD,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;AAE3C,SAAS,MAAM,CACb,IAAY,EACZ,IAAc,EACd,IAA4B,EAC5B,MAAM,GAAG,KAAK;IAEd,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,KAAK,CAAC,UAAU;YACd,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB;IACvC,OAAO,OAAQ,IAAmB,CAAC,UAAU,KAAK,UAAU,CAAC;AAC/D,CAAC;AAED,+DAA+D;AAC/D,SAAS,MAAM,CACb,OAAkC,EAClC,IAA6B;IAE7B,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAK,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CACzB,KAAyC;IAEzC,OAAO;QACL,OAAO,CACL,IAAY,EACZ,OAAkC,EAClC,IAAkB;YAElB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAQ,KAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtD,IAAI,CAAC,IAAI;oBAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,QAAQ,CAAC,IAAI,CAAC;oBAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,OAAO,GAAG,IAAI,CAAC;gBACnB,OAAO,OAAO,CAAC,OAAO,CACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CACvD,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;YACrC,CAAC,CAAwB,CAAC;QAC5B,CAAC;KACc,CAAC;AACpB,CAAC;AAOD,MAAM,UAAU,GAAG,iBAAG,CAAC,MAAM,CAAC;AAE9B,4EAA4E;AAC5E,sDAAsD;AACtD,MAAM,SAAS,GAAG,CAChB,UACD,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,EAAyB,CAAC,CAAC;AACpD,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,MAAM,QAAQ,GAAa;IACzB,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAoB,EACpB,IAAgB;QAEhB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,OAAoB,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC;QACX,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,wEAAwE;AACxE,iBAAiB;AACjB,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AACxC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,aAAa,GAAG,EAAE,CAAC;AAGzB,SAAS,gBAAgB,CACvB,EAAe,EACf,IAAwB,EACxB,GAA8D;IAE9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,MAAS,CAAC;QACd,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kDAAkD;AAClD,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,KAAa,EAAE,EAAE,CACvD,KAAK,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAEvD;;;GAGG;AACH,SAAS,UAAU,CACjB,EAAe,EACf,IAAY,EACZ,KAAa,EACb,KAAK,GAAG,KAAK;IAEb,OAAO,gBAAgB,CAAU,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,CAAC;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAA2B,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,GAAG;gBAAE,OAAO;YACvE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,QAAQ,EAAkB,EAAE,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,EAAe,EAAE,IAAY;IAC9C,OAAO,gBAAgB,CAAoB,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAA2B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4DAA4D;AAC5D,SAAS,SAAS,CAAC,EAAe,EAAE,IAAY,EAAE,KAAa;IAC7D,OAAO,gBAAgB,CAAO,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;YACpB,IAAK,IAAI,CAAC,MAA4B,EAAE,KAAK,KAAK,KAAK;gBACrD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAmB;IACrC,IAAI,MAAwC,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,CAAC,MAAM,KAAK,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,eAAe,GAAG,GAAG,EAAE,CAC7B,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC,CAAC;IACN,OAAO;QACL,OAAO,EAAE,CAAI,IAAY,EAAE,OAAoB,EAAE,IAAgB,EAAE,EAAE,CACnE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,EAAe,CAAC;YACpB,IAAI,CAAC;gBACH,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;gBACjE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,WAAW;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,KAAK,CAAC;gBAClD,oEAAoE;gBACpE,MAAM,IAAI,GAAG,IAAI,CACf,MAAM,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAChD,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,OAAO,IAAI,IAAI,OAAO,CAAC;YACzB,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CACvB,GAAG,EAAE,CACH,KAAK,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;iBACnC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC3D,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EACpB,cAAc,CACf,CAAC;YACF,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBACT,OAAO,GAAG,KAAK,CAAC;gBAChB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAI,WAAqC,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY;IAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,IAAI,CACV,UAAU,CAAC,SAAS;YAClB,CAAC,CAAC,4FAA4F;YAC9F,CAAC,CAAC,mFAAmF,CACxF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,SAAS;QAAE,OAAO,UAAU,CAAC;IAC7C,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type HeldWriteView, type ReviewedAction, type ReviewedProgress, type ReviewedResult, type ReviewedRunStatus, type ReviewedSendDeps, type completeReviewedStep, type resumeReviewed, type sendReviewed } from "../index.js";
1
+ import { type HeldWriteView, type ReviewedAction, type ReviewedCall, type ReviewedProgress, type ReviewedResult, type ReviewedRunStatus, type ReviewedSendDeps, type completeReviewedStep, type resumeReviewed, type sendReviewed } from "../index.js";
2
2
  import { type HeldViewActions } from "./heldView.js";
3
3
  import type { Address, Hex, TransactionReceipt } from "viem";
4
4
  /** The send engine: the review model, its decoder and the ABIs it reads. */
@@ -17,6 +17,8 @@ export type UseReviewedRunDeps = ReviewedSendDeps & {
17
17
  * again only after a load failed.
18
18
  */
19
19
  engine: () => Promise<ReviewedEngine>;
20
+ /** A held step `dismiss` closed later succeeded: refresh its reads. */
21
+ onDismissedSettled?: (call: ReviewedCall) => void;
20
22
  };
21
23
  /** A run that failed: `error` is the line to show, `failure` the value thrown. */
22
24
  export type ReviewedRunFailed = {
@@ -59,11 +61,13 @@ export type UseReviewedRunResult = {
59
61
  * `follow.timeoutMs` (2 minutes by default); only then does the run resolve
60
62
  * `receipt`, and the hook follows the hold until it settles.
61
63
  * `onCancelled` runs once when the run ends `cancelled`: nothing sent and
62
- * nothing held.
64
+ * nothing held; `onStopped` once when it ends `stopped`, with the last step
65
+ * sent. Both are told once that state rendered.
63
66
  */
64
67
  run: (action: Omit<ReviewedAction, "account" | "guard"> & {
65
68
  account?: Address;
66
69
  onCancelled?: () => void;
70
+ onStopped?: (step: number) => void;
67
71
  }) => Promise<ReviewedResult | ReviewedRunReceipt | ReviewedRunFailed | null>;
68
72
  /**
69
73
  * The highest step of the action whose hash the wallet returned in the
@@ -73,8 +77,10 @@ export type UseReviewedRunResult = {
73
77
  lastSubmittedStep: number | null;
74
78
  /** The run's status, from `reviewedRunStatus`: the one every app shows. */
75
79
  status: ReviewedRunStatus;
76
- /** Reviewing, simulating, signing or confirming a receipt: the action waits. */
80
+ /** Reviewing, simulating, signing or confirming in place (not `following`). */
77
81
  busy: boolean;
82
+ /** The run only follows a sent step's hold: the confirm can close. */
83
+ following: boolean;
78
84
  phase: ReviewedProgress["phase"] | "idle";
79
85
  step: number;
80
86
  total: number;
@@ -109,6 +115,14 @@ export type UseReviewedRunResult = {
109
115
  */
110
116
  held: HeldWriteView | null;
111
117
  reset: () => void;
118
+ /**
119
+ * Closes the confirm; false while the review or wallet is open. A held
120
+ * earlier step ends the run (nothing more reviewed; its hold followed
121
+ * detached, `onDismissedSettled`). A held last step only ends the wait
122
+ * (`ended()` null) and stays shown. Otherwise it resets, following any hold
123
+ * it showed detached. Never evidence a step can be resent.
124
+ */
125
+ dismiss: () => boolean;
112
126
  /**
113
127
  * Loads the send engine now (on hover, focus or pointerdown of the action),
114
128
  * so the review opens without a wait. Safe to call any number of times: it
@@ -1 +1 @@
1
- {"version":3,"file":"useReviewedRun.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReviewedRun.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}