@bananapus/nana-sdk-core 6.2.0 → 6.3.1

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 (111) hide show
  1. package/dist/cjs/review/confirming.d.ts +8 -0
  2. package/dist/cjs/review/confirming.d.ts.map +1 -0
  3. package/dist/cjs/review/confirming.js +11 -0
  4. package/dist/cjs/review/confirming.js.map +1 -0
  5. package/dist/cjs/review/locks.d.ts +87 -7
  6. package/dist/cjs/review/locks.d.ts.map +1 -1
  7. package/dist/cjs/review/locks.js +328 -79
  8. package/dist/cjs/review/locks.js.map +1 -1
  9. package/dist/cjs/review/messages.d.ts +16 -0
  10. package/dist/cjs/review/messages.d.ts.map +1 -1
  11. package/dist/cjs/review/messages.js +17 -1
  12. package/dist/cjs/review/messages.js.map +1 -1
  13. package/dist/cjs/review/react/ownership.d.ts +30 -0
  14. package/dist/cjs/review/react/ownership.d.ts.map +1 -0
  15. package/dist/cjs/review/react/ownership.js +27 -0
  16. package/dist/cjs/review/react/ownership.js.map +1 -0
  17. package/dist/cjs/review/react/useReviewedRun.d.ts +3 -1
  18. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
  19. package/dist/cjs/review/react/useReviewedRun.js +428 -50
  20. package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
  21. package/dist/cjs/review/relayrSend.d.ts +16 -1
  22. package/dist/cjs/review/relayrSend.d.ts.map +1 -1
  23. package/dist/cjs/review/relayrSend.js +25 -2
  24. package/dist/cjs/review/relayrSend.js.map +1 -1
  25. package/dist/cjs/review/safeRelayr.d.ts +2 -1
  26. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  27. package/dist/cjs/review/safeRelayr.js +23 -29
  28. package/dist/cjs/review/safeRelayr.js.map +1 -1
  29. package/dist/cjs/review/send.d.ts +31 -12
  30. package/dist/cjs/review/send.d.ts.map +1 -1
  31. package/dist/cjs/review/send.js +191 -41
  32. package/dist/cjs/review/send.js.map +1 -1
  33. package/dist/cjs/review/sequence.d.ts +25 -0
  34. package/dist/cjs/review/sequence.d.ts.map +1 -1
  35. package/dist/cjs/review/sequence.js +45 -7
  36. package/dist/cjs/review/sequence.js.map +1 -1
  37. package/dist/cjs/review/tabState.d.ts +4 -0
  38. package/dist/cjs/review/tabState.d.ts.map +1 -1
  39. package/dist/cjs/review/tabState.js +4 -0
  40. package/dist/cjs/review/tabState.js.map +1 -1
  41. package/dist/cjs/review/wallet.d.ts.map +1 -1
  42. package/dist/cjs/review/wallet.js +3 -1
  43. package/dist/cjs/review/wallet.js.map +1 -1
  44. package/dist/cjs/review/writeHold.d.ts +74 -11
  45. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  46. package/dist/cjs/review/writeHold.js +65 -16
  47. package/dist/cjs/review/writeHold.js.map +1 -1
  48. package/dist/cjs/review/writeRecovery.d.ts +31 -6
  49. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  50. package/dist/cjs/review/writeRecovery.js +120 -7
  51. package/dist/cjs/review/writeRecovery.js.map +1 -1
  52. package/dist/cjs/testing.d.ts +13 -0
  53. package/dist/cjs/testing.d.ts.map +1 -1
  54. package/dist/cjs/testing.js +21 -0
  55. package/dist/cjs/testing.js.map +1 -1
  56. package/dist/esm/review/confirming.d.ts +8 -0
  57. package/dist/esm/review/confirming.d.ts.map +1 -0
  58. package/dist/esm/review/confirming.js +8 -0
  59. package/dist/esm/review/confirming.js.map +1 -0
  60. package/dist/esm/review/locks.d.ts +87 -7
  61. package/dist/esm/review/locks.d.ts.map +1 -1
  62. package/dist/esm/review/locks.js +321 -78
  63. package/dist/esm/review/locks.js.map +1 -1
  64. package/dist/esm/review/messages.d.ts +16 -0
  65. package/dist/esm/review/messages.d.ts.map +1 -1
  66. package/dist/esm/review/messages.js +16 -0
  67. package/dist/esm/review/messages.js.map +1 -1
  68. package/dist/esm/review/react/ownership.d.ts +30 -0
  69. package/dist/esm/review/react/ownership.d.ts.map +1 -0
  70. package/dist/esm/review/react/ownership.js +24 -0
  71. package/dist/esm/review/react/ownership.js.map +1 -0
  72. package/dist/esm/review/react/useReviewedRun.d.ts +3 -1
  73. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
  74. package/dist/esm/review/react/useReviewedRun.js +429 -51
  75. package/dist/esm/review/react/useReviewedRun.js.map +1 -1
  76. package/dist/esm/review/relayrSend.d.ts +16 -1
  77. package/dist/esm/review/relayrSend.d.ts.map +1 -1
  78. package/dist/esm/review/relayrSend.js +28 -5
  79. package/dist/esm/review/relayrSend.js.map +1 -1
  80. package/dist/esm/review/safeRelayr.d.ts +2 -1
  81. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  82. package/dist/esm/review/safeRelayr.js +24 -30
  83. package/dist/esm/review/safeRelayr.js.map +1 -1
  84. package/dist/esm/review/send.d.ts +31 -12
  85. package/dist/esm/review/send.d.ts.map +1 -1
  86. package/dist/esm/review/send.js +193 -43
  87. package/dist/esm/review/send.js.map +1 -1
  88. package/dist/esm/review/sequence.d.ts +25 -0
  89. package/dist/esm/review/sequence.d.ts.map +1 -1
  90. package/dist/esm/review/sequence.js +43 -7
  91. package/dist/esm/review/sequence.js.map +1 -1
  92. package/dist/esm/review/tabState.d.ts +4 -0
  93. package/dist/esm/review/tabState.d.ts.map +1 -1
  94. package/dist/esm/review/tabState.js +4 -0
  95. package/dist/esm/review/tabState.js.map +1 -1
  96. package/dist/esm/review/wallet.d.ts.map +1 -1
  97. package/dist/esm/review/wallet.js +3 -1
  98. package/dist/esm/review/wallet.js.map +1 -1
  99. package/dist/esm/review/writeHold.d.ts +74 -11
  100. package/dist/esm/review/writeHold.d.ts.map +1 -1
  101. package/dist/esm/review/writeHold.js +65 -16
  102. package/dist/esm/review/writeHold.js.map +1 -1
  103. package/dist/esm/review/writeRecovery.d.ts +31 -6
  104. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  105. package/dist/esm/review/writeRecovery.js +118 -7
  106. package/dist/esm/review/writeRecovery.js.map +1 -1
  107. package/dist/esm/testing.d.ts +13 -0
  108. package/dist/esm/testing.d.ts.map +1 -1
  109. package/dist/esm/testing.js +20 -0
  110. package/dist/esm/testing.js.map +1 -1
  111. package/package.json +1 -1
@@ -1,12 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LockLostError = void 0;
3
+ exports.LEASE_MS = exports.lockWorkRunning = exports.ConfirmationQueuedError = exports.LockLostError = void 0;
4
4
  exports.assertLocksHeld = assertLocksHeld;
5
+ exports.keepOutcome = keepOutcome;
5
6
  exports.fencedLocks = fencedLocks;
7
+ exports.idbLeases = idbLeases;
8
+ exports.memoryLeases = memoryLeases;
9
+ exports.leaseLocks = leaseLocks;
10
+ exports.tabLocksOn = tabLocksOn;
6
11
  exports.browserLocks = browserLocks;
12
+ const lineError_js_1 = require("./lineError.js");
13
+ const messages_js_1 = require("./messages.js");
7
14
  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 {
15
+ /**
16
+ * Thrown by {@link LockHandle.assertHeld} once this tab no longer holds the
17
+ * lock. Its message is for logs; `errorLine` shows {@link LOCK_LOST_LINE}.
18
+ */
19
+ class LockLostError extends lineError_js_1.ReviewFixedLineError {
20
+ get line() {
21
+ return messages_js_1.LOCK_LOST_LINE;
22
+ }
10
23
  constructor(lock) {
11
24
  super(`The "${lock}" lock was lost. Its work must stop before writing.`);
12
25
  this.lock = lock;
@@ -15,6 +28,25 @@ class LockLostError extends Error {
15
28
  }
16
29
  }
17
30
  exports.LockLostError = LockLostError;
31
+ /**
32
+ * How a receipt's `ended()` ends while its step's `onConfirmed` is queued
33
+ * behind the run's own locks (kept for one it lost, or another
34
+ * completion's claim waiting for one): it is told once that work ends,
35
+ * and only then acknowledged, so the wait never holds it up. Retry later;
36
+ * nothing is sent again. `errorLine` shows {@link CONFIRMATION_QUEUED_LINE}.
37
+ */
38
+ class ConfirmationQueuedError extends lineError_js_1.ReviewFixedLineError {
39
+ get line() {
40
+ return messages_js_1.CONFIRMATION_QUEUED_LINE;
41
+ }
42
+ constructor(step) {
43
+ super(`Step ${step}'s confirmation waits for the run's locks to be released.`);
44
+ this.step = step;
45
+ this.name = "ConfirmationQueuedError";
46
+ this.code = "CONFIRMATION_QUEUED";
47
+ }
48
+ }
49
+ exports.ConfirmationQueuedError = ConfirmationQueuedError;
18
50
  /**
19
51
  * Throws {@link LockLostError} unless every given lock is still this tab's,
20
52
  * on a fresh read; `null` and `undefined` are skipped. One line before a
@@ -23,6 +55,139 @@ exports.LockLostError = LockLostError;
23
55
  async function assertLocksHeld(locks) {
24
56
  await Promise.all((locks ?? []).map((lock) => lock?.assertHeld()));
25
57
  }
58
+ /** Whether `error` is a lock's {@link LockLostError} (by `code`, so any copy's counts). */
59
+ const isLockLost = (error) => error?.code === "LOCK_LOST";
60
+ const keeperOf = (lock) => lock[tabState_js_1.TAB.keeper];
61
+ /**
62
+ * Whether the work `lock` was handed may still be running: anything kept
63
+ * for its name (an outcome refused for it, or another's queued behind it)
64
+ * waits until it ends. Only a fenced handle can say it ended.
65
+ */
66
+ const lockWorkRunning = (lock) => !keeperOf(lock)?.ended;
67
+ exports.lockWorkRunning = lockWorkRunning;
68
+ /**
69
+ * Who took each lock last, origin-wide: every fenced acquisition stamps it
70
+ * under the lock, so a kept outcome can tell nobody took it since.
71
+ */
72
+ const stamps = (() => {
73
+ const memory = (globalThis[tabState_js_1.TAB.stamps] ??= new Map());
74
+ const key = (name) => `nana-sdk:lock-holder:${name}`;
75
+ return {
76
+ get(name) {
77
+ try {
78
+ const saved = globalThis.localStorage?.getItem(key(name));
79
+ if (saved != null)
80
+ return saved;
81
+ }
82
+ catch {
83
+ /* Unreadable: this tab's own memory. */
84
+ }
85
+ return memory.get(name);
86
+ },
87
+ set(name, owner) {
88
+ memory.set(name, owner);
89
+ try {
90
+ globalThis.localStorage?.setItem(key(name), owner);
91
+ }
92
+ catch {
93
+ // ponytail: in-tab memory only where storage is refused; another
94
+ // tab's take then goes unseen, so a whole-record replay may land.
95
+ }
96
+ },
97
+ };
98
+ })();
99
+ /**
100
+ * `later()` under every lock requested afresh, one acquisition each, so
101
+ * the backend serializes it with any other work or outcome under the same
102
+ * name; any failure leaves things as they were. `settled` is told which.
103
+ */
104
+ async function reconcile(entry) {
105
+ for (const keeper of entry.keepers)
106
+ keeper.kept.delete(entry);
107
+ const under = async (at) => {
108
+ if (at === entry.keepers.length) {
109
+ await assertLocksHeld(entry.locks);
110
+ await entry.later();
111
+ return true;
112
+ }
113
+ const keeper = entry.keepers[at];
114
+ return keeper.request(async (fresh) => {
115
+ if (!fresh)
116
+ return false;
117
+ if (entry.untouched && stamps.get(keeper.name) !== keeper.owner)
118
+ return false;
119
+ keeper.revived = fresh;
120
+ try {
121
+ return await under(at + 1);
122
+ }
123
+ finally {
124
+ keeper.revived = null;
125
+ }
126
+ });
127
+ };
128
+ // Unreconciled, the record stays as the lost lock left it.
129
+ const applied = await under(0).catch(() => false);
130
+ await Promise.resolve(entry.settled?.(applied)).catch(() => { });
131
+ }
132
+ /**
133
+ * Saves an outcome the work already has from outside (a wallet's hash, a
134
+ * definite rejection) under `locks`: `write()` runs now, and resolves true
135
+ * (once any lock's work ended, it is kept straight away, so it never runs
136
+ * ahead of an outcome kept before it).
137
+ * Its own writes check the locks right before writing. Refused for a lost
138
+ * lock (`LockLostError`), it resolves false and the outcome is kept: once
139
+ * the work under every one of `locks` has ended, each lock is taken again
140
+ * (the same handles read as held again) and, after a fresh check:
141
+ *
142
+ * - with `later`, it runs whenever the locks are free. `later` re-reads the
143
+ * saved record, matches this attempt by its identity (its attempt or
144
+ * reservation id, never the whole record) and merges the outcome into the
145
+ * latest record, so another tab's unrelated update meanwhile stays;
146
+ * - without, `write()` runs again only if no other tab took the locks since,
147
+ * so it can't touch a newer attempt's record.
148
+ *
149
+ * If any lock can't be taken back, or the write fails, the record stays as
150
+ * the lost lock left it and its recovery shows. `settled` is told once
151
+ * whether a kept outcome was applied in the end (a claim it consumed is
152
+ * then made for good, or given back so it stays retryable); one written
153
+ * at once resolves true without it.
154
+ *
155
+ * Any lock {@link fencedLocks} or {@link browserLocks} handed out is kept
156
+ * this way: a native one once its work ended, a lease also once it lapsed.
157
+ * Any other failure of `write` throws, as does a lost lock that isn't one.
158
+ */
159
+ async function keepOutcome(locks, write, later, settled) {
160
+ const keepers = (locks ?? []).map(keeperOf);
161
+ const keepable = keepers.length > 0 && keepers.every((keeper) => keeper);
162
+ const keep = async () => {
163
+ const entry = {
164
+ locks: locks,
165
+ later: later ?? write,
166
+ untouched: !later,
167
+ keepers: keepers,
168
+ ...(settled ? { settled } : {}),
169
+ };
170
+ for (const keeper of entry.keepers)
171
+ keeper.kept.add(entry);
172
+ // Kept after its work already ended: reconciled now.
173
+ if (entry.keepers.every((keeper) => keeper.ended))
174
+ await reconcile(entry);
175
+ return false;
176
+ };
177
+ // A lock whose work ended is written only in its queue, behind any
178
+ // outcome kept before (its handle may read as held while one runs).
179
+ if (keepable && keepers.some((keeper) => keeper.ended))
180
+ return keep();
181
+ try {
182
+ await write();
183
+ return true;
184
+ }
185
+ catch (error) {
186
+ if (!isLockLost(error) || !keepable)
187
+ throw error;
188
+ return keep();
189
+ }
190
+ }
26
191
  const NEVER = new AbortController().signal;
27
192
  function handle(name, mode, held, signal = NEVER) {
28
193
  return {
@@ -44,52 +209,94 @@ function shaped(options, work) {
44
209
  return typeof options === "function" ? [{}, options] : [options, work];
45
210
  }
46
211
  /**
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.
212
+ * Any Web Locks manager (`navigator.locks`, a test's, the SDK's own) handing
213
+ * a {@link LockHandle}: one it hands already is read through; any other
214
+ * lock is never lost while its work runs. Each handle keeps the outcomes
215
+ * {@link keepOutcome} refused for it, the same for every backend, and
216
+ * stamps who took the lock last.
50
217
  */
51
218
  function fencedLocks(locks) {
219
+ /** `locks.request`, its lock as a handle. */
220
+ const acquire = (name, options, work) => locks.request(name, options, async (lock) => {
221
+ if (!lock)
222
+ return work(null);
223
+ if (isHandle(lock))
224
+ return work(lock);
225
+ let running = true;
226
+ try {
227
+ return await work(handle(lock.name, lock.mode, async () => running));
228
+ }
229
+ finally {
230
+ running = false;
231
+ }
232
+ });
52
233
  return {
53
234
  request(name, options, work) {
54
235
  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));
236
+ let keeper;
237
+ return acquire(name, opts, async (inner) => {
238
+ // Already fenced (a BrowserLocks passed in): its own keeper keeps.
239
+ if (!inner || keeperOf(inner))
240
+ return run(inner);
241
+ keeper = {
242
+ name,
243
+ owner: globalThis.crypto.randomUUID(),
244
+ ended: false,
245
+ kept: new Set(),
246
+ revived: null,
247
+ request: (again) => acquire(name, {}, again),
248
+ };
249
+ stamps.set(name, keeper.owner);
250
+ const own = keeper;
251
+ const lock = handle(name, inner.mode, () => (own.revived ? own.revived.held() : inner.held()), inner.signal);
252
+ Object.defineProperty(lock, tabState_js_1.TAB.keeper, { value: keeper });
253
+ return run(lock);
254
+ }).finally(async () => {
255
+ if (!keeper)
256
+ return;
257
+ // Released: each kept outcome whose locks all ended queues for the
258
+ // lock now, as any request would, and lands before this one resolves.
259
+ keeper.ended = true;
260
+ // All queued for the lock in the order they were kept, before any
261
+ // runs: one kept later always goes behind them.
262
+ await Promise.all([...keeper.kept]
263
+ .filter((entry) => entry.keepers.every((other) => other.ended))
264
+ .map(reconcile));
62
265
  });
63
266
  },
64
267
  };
65
268
  }
66
269
  const TAB_QUEUES = tabState_js_1.TAB.queues;
270
+ /** Writes one at a time per name within one tab, queued in `queues`. */
271
+ function tabLocksOn(queues) {
272
+ return {
273
+ async request(name, options, work) {
274
+ const held = queues.get(name);
275
+ if (held && options.ifAvailable)
276
+ return work(null);
277
+ let release;
278
+ const mine = new Promise((resolve) => (release = resolve));
279
+ const queue = (held ?? Promise.resolve()).then(() => mine);
280
+ queues.set(name, queue);
281
+ await held;
282
+ let running = true;
283
+ try {
284
+ return await work(handle(name, "exclusive", async () => running));
285
+ }
286
+ finally {
287
+ running = false;
288
+ release();
289
+ if (queues.get(name) === queue)
290
+ queues.delete(name);
291
+ }
292
+ },
293
+ };
294
+ }
67
295
  // Without Web Locks, writes in this tab still run one at a time per action,
68
296
  // across every copy of this module loaded in the tab.
69
- const tabQueues = (globalThis[TAB_QUEUES] ??= new Map());
297
+ const tabLocks = tabLocksOn((globalThis[TAB_QUEUES] ??=
298
+ new Map()));
70
299
  let tabLocksNoted = false;
71
- const tabLocks = {
72
- async request(name, options, work) {
73
- const held = tabQueues.get(name);
74
- if (held && options.ifAvailable)
75
- return work(null);
76
- let release;
77
- const mine = new Promise((resolve) => (release = resolve));
78
- const queue = (held ?? Promise.resolve()).then(() => mine);
79
- tabQueues.set(name, queue);
80
- await held;
81
- let running = true;
82
- try {
83
- return await work(handle(name, "exclusive", async () => running));
84
- }
85
- finally {
86
- running = false;
87
- release();
88
- if (tabQueues.get(name) === queue)
89
- tabQueues.delete(name);
90
- }
91
- },
92
- };
93
300
  // Without Web Locks, tabs share an IndexedDB lease per action. A readwrite
94
301
  // transaction is atomic across the origin's tabs, so claiming a lease is a
95
302
  // compare-and-set. Each acquisition has its own owner token. The holder
@@ -98,9 +305,24 @@ const tabLocks = {
98
305
  // reads as lost.
99
306
  const LEASE_DB = "nana-sdk-write-locks";
100
307
  const LEASE_STORE = "leases";
101
- const LEASE_MS = 15_000;
308
+ exports.LEASE_MS = 15_000;
102
309
  const LEASE_RENEW_MS = 5_000;
103
310
  const LEASE_POLL_MS = 50;
311
+ /**
312
+ * The lease `owner` gets by `claim` over `lease`, or undefined while it
313
+ * can't: `take` while nobody holds it; `renew` only while still `owner`'s
314
+ * and unexpired.
315
+ */
316
+ function claimed(lease, owner, claim, now) {
317
+ const refused = claim === "renew"
318
+ ? !(lease?.owner === owner && lease.expires > now)
319
+ : lease && lease.expires > now;
320
+ return refused ? undefined : { owner, expires: now + exports.LEASE_MS };
321
+ }
322
+ /**
323
+ * Letting go of `lease` for `owner`: expired; another owner's stays.
324
+ */
325
+ const dropped = (lease, owner) => lease?.owner === owner ? { owner, expires: 0 } : undefined;
104
326
  function leaseTransaction(db, mode, run) {
105
327
  return new Promise((resolve, reject) => {
106
328
  const transaction = db.transaction(LEASE_STORE, mode);
@@ -110,67 +332,93 @@ function leaseTransaction(db, mode, run) {
110
332
  transaction.onerror = transaction.onabort = () => reject(transaction.error);
111
333
  });
112
334
  }
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) {
335
+ /** One read-and-write of `name`'s lease in a readwrite transaction. */
336
+ function changeLease(db, name, change) {
120
337
  return leaseTransaction(db, "readwrite", (store, done) => {
121
- done(false);
122
- const read = store.get(name);
123
- read.onsuccess = () => {
124
- const lease = read.result;
125
- const now = Date.now();
126
- if (renew ? !owns(lease, owner) : lease && lease.expires > now)
127
- return;
128
- store.put({ owner, expires: now + LEASE_MS }, name);
129
- done(true);
130
- };
131
- });
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. */
140
- function dropLease(db, name, owner) {
141
- return leaseTransaction(db, "readwrite", (store) => {
142
338
  const read = store.get(name);
143
339
  read.onsuccess = () => {
144
- if (read.result?.owner === owner)
145
- store.delete(name);
340
+ const { next, value } = change(read.result);
341
+ if (next)
342
+ store.put(next, name);
343
+ done(value);
146
344
  };
147
345
  });
148
346
  }
149
- function leaseLocks(factory) {
347
+ function idbLeases(factory, now) {
150
348
  let opened;
151
- const database = () => (opened ??= new Promise((resolve, reject) => {
349
+ return () => (opened ??= new Promise((resolve, reject) => {
152
350
  const request = factory.open(LEASE_DB, 1);
153
351
  request.onupgradeneeded = () => request.result.createObjectStore(LEASE_STORE);
154
352
  request.onsuccess = () => resolve(request.result);
155
353
  request.onerror = () => reject(request.error);
156
- }).catch((error) => {
354
+ })
355
+ .then((db) => ({
356
+ claim: (name, owner, claim) => changeLease(db, name, (lease) => {
357
+ const next = claimed(lease, owner, claim, now());
358
+ return { next, value: !!next };
359
+ }),
360
+ read: (name) => leaseTransaction(db, "readonly", (store, done) => {
361
+ const read = store.get(name);
362
+ read.onsuccess = () => done(read.result);
363
+ }),
364
+ drop: (name, owner) => changeLease(db, name, (lease) => ({
365
+ next: dropped(lease, owner),
366
+ value: undefined,
367
+ })),
368
+ }))
369
+ .catch((error) => {
157
370
  opened = undefined;
158
371
  throw error;
159
372
  }));
373
+ }
374
+ /**
375
+ * The origin's leases in memory, for tests: each call answers a task later,
376
+ * as IndexedDB's transactions do.
377
+ */
378
+ function memoryLeases(now) {
379
+ const leases = new Map();
380
+ const later = () => new Promise((resolve) => setTimeout(resolve, 0));
381
+ return {
382
+ async claim(name, owner, claim) {
383
+ await later();
384
+ const next = claimed(leases.get(name), owner, claim, now());
385
+ if (next)
386
+ leases.set(name, next);
387
+ return !!next;
388
+ },
389
+ async read(name) {
390
+ await later();
391
+ return leases.get(name);
392
+ },
393
+ async drop(name, owner) {
394
+ await later();
395
+ const next = dropped(leases.get(name), owner);
396
+ if (next)
397
+ leases.set(name, next);
398
+ },
399
+ };
400
+ }
401
+ /**
402
+ * Locks over the origin's `leases`, one at a time per name within the tab
403
+ * (`tab`), its clock `now`.
404
+ */
405
+ function leaseLocks(leases, tab = tabLocks, now = () => Date.now()) {
406
+ /** Whether `lease` is `owner`'s and unexpired. */
407
+ const owns = (lease, owner) => lease?.owner === owner && lease.expires > now();
160
408
  return {
161
- request: (name, options, work) => tabLocks.request(name, options, async (tabLock) => {
409
+ request: (name, options, work) => tab.request(name, options, async (tabLock) => {
162
410
  if (!tabLock)
163
411
  return work(null);
164
- let db;
412
+ let store;
165
413
  try {
166
- db = await database();
414
+ store = await leases();
167
415
  }
168
416
  catch {
169
417
  // IndexedDB refused (as in some private windows): this tab only.
170
418
  return work(tabLock);
171
419
  }
172
420
  const owner = globalThis.crypto.randomUUID();
173
- while (!(await claimLease(db, name, owner))) {
421
+ while (!(await store.claim(name, owner, "take"))) {
174
422
  if (options.ifAvailable)
175
423
  return work(null);
176
424
  await new Promise((resolve) => setTimeout(resolve, LEASE_POLL_MS));
@@ -181,12 +429,13 @@ function leaseLocks(factory) {
181
429
  if (!running || lost.signal.aborted)
182
430
  return false;
183
431
  // 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)
432
+ const mine = owns(await store.read(name).catch(() => undefined), owner);
433
+ if (!mine && running)
186
434
  lost.abort(new LockLostError(name));
187
435
  return mine && running;
188
436
  };
189
- const renew = setInterval(() => void claimLease(db, name, owner, true)
437
+ const renew = setInterval(() => void store
438
+ .claim(name, owner, "renew")
190
439
  .then((kept) => kept || lost.abort(new LockLostError(name)))
191
440
  .catch(() => { }), LEASE_RENEW_MS);
192
441
  try {
@@ -195,7 +444,7 @@ function leaseLocks(factory) {
195
444
  finally {
196
445
  running = false;
197
446
  clearInterval(renew);
198
- await dropLease(db, name, owner).catch(() => { });
447
+ await store.drop(name, owner).catch(() => { });
199
448
  }
200
449
  }),
201
450
  };
@@ -227,6 +476,6 @@ function browserLocks() {
227
476
  }
228
477
  if (!globalThis.indexedDB)
229
478
  return inTabLocks;
230
- return (leasedLocks ??= fencedLocks(leaseLocks(globalThis.indexedDB)));
479
+ return (leasedLocks ??= fencedLocks(leaseLocks(idbLeases(globalThis.indexedDB, () => Date.now()))));
231
480
  }
232
481
  //# 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":"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"}
@@ -67,8 +67,24 @@ export declare const WRITE_HOLD_MINED_LINE = "Your transaction is onchain, but i
67
67
  export declare const WRITE_HOLD_STALE_REVIEW_LINE = "This was just sent from another window. Review it again to send another.";
68
68
  /** The one line while a sent write, direct or through a Safe, is being confirmed. */
69
69
  export declare const HELD_CONFIRMING_LINE = "Confirming your transaction.";
70
+ /** A run closed after an earlier step was sent (`stopped`): the rest can be reviewed again. */
71
+ export declare const REVIEW_STOPPED_LINE = "The rest was not sent. Review it again when you are ready.";
72
+ /**
73
+ * Another window took over this action's lock (a lease that lapsed while the
74
+ * tab slept, as in a wallet app): `errorLine` of a `LockLostError`.
75
+ */
76
+ export declare const LOCK_LOST_LINE = "This action moved to another window. Nothing more was sent.";
77
+ /**
78
+ * A sent step's confirmation is recorded only once the site's current work
79
+ * ends: `errorLine` of a `ConfirmationQueuedError`. Nothing is sent again.
80
+ */
81
+ export declare const CONFIRMATION_QUEUED_LINE = "Confirmed. It is recorded here once this step finishes. Nothing more was sent.";
70
82
  /** A held write the user released with their exit: they can send it again. */
71
83
  export declare const HELD_RELEASED_LINE = "Released. You can send it again.";
84
+ /** A hash the user gave for a held write is another transaction. */
85
+ export declare const HELD_HASH_MISMATCH_LINE = "This hash is not that transaction. Check it in your wallet.";
86
+ /** A hash the user gave for a held write could not be read yet: retryable. */
87
+ export declare const HELD_HASH_UNVERIFIED_LINE = "Couldn't verify this transaction yet. Try again shortly.";
72
88
  /** A held write another window released: neutral, never a result. */
73
89
  export declare const HELD_RELEASED_ELSEWHERE_LINE = "This was released in another window.";
74
90
  /** The exit button where the review follows on its own. */
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/review/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4FAA4F;AAC5F,KAAK,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,EACE,MAAiB,EACjB,KAAkB,EAClB,UAA0D,GAC3D,GAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC,GACL,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,EACE,MAAiB,EACjB,OAAmB,EACnB,gBAAwB,GACzB,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACxE,MAAM,CAOR;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,MAAM,SAAgB,GAAG,MAAM,CAE/D;AAED,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACjC,MAAM,SAAgB,GACrB,MAAM,CAIR;AAED,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,0EACiC,CAAC;AAE1E,gDAAgD;AAChD,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,2EACiC,CAAC;AAE3E,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,8FAC0D,CAAC;AAE9F,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,kEAC6B,CAAC;AAElE,uIAAuI;AACvI,eAAO,MAAM,wBAAwB,yEACmC,CAAC;AAEzE,+FAA+F;AAC/F,eAAO,MAAM,gCAAgC,iHACmE,CAAC;AAEjH,qGAAqG;AACrG,eAAO,MAAM,2BAA2B,qGAC4D,CAAC;AAErG,gGAAgG;AAChG,eAAO,MAAM,yBAAyB,uFACgD,CAAC;AAEvF,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,6FAC0D,CAAC;AAE7F,+DAA+D;AAC/D,eAAO,MAAM,2BAA2B,iFACwC,CAAC;AAEjF,wFAAwF;AACxF,eAAO,MAAM,6BAA6B,gFACqC,CAAC;AAEhF,6GAA6G;AAC7G,eAAO,MAAM,0BAA0B,uDACe,CAAC;AAEvD,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,wFAC6C,CAAC;AAExF,+FAA+F;AAC/F,eAAO,MAAM,qBAAqB,2GACwE,CAAC;AAE3G,yGAAyG;AACzG,eAAO,MAAM,4BAA4B,6EACmC,CAAC;AAE7E,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAErE,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,yCACD,CAAC;AAEzC,2DAA2D;AAC3D,eAAO,MAAM,eAAe,wBAAwB,CAAC;AAErD,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,8DACgC,CAAC;AAE9D,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,mCAAmC,CAAC;AAElE,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,gEACiC,CAAC;AAEhE,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,2CAA2C,CAAC;AAE/E,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,iGAAiG;AACjG,eAAO,MAAM,wBAAwB,4FACsD,CAAC;AAE5F,4BAA4B;AAC5B,eAAO,MAAM,2BAA2B,4EACmC,CAAC;AAE5E,+GAA+G;AAC/G,wBAAgB,cAAc,CAAC,IAAI,SAAoB,GAAG,MAAM,CAE/D;AAED,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAE5E,8EAA8E;AAC9E,eAAO,MAAM,6BAA6B,4FACiD,CAAC;AAE5F,2FAA2F;AAC3F,eAAO,MAAM,mCAAmC,yCACR,CAAC;AAEzC,qFAAqF;AACrF,eAAO,MAAM,6BAA6B,iDACM,CAAC;AAEjD,4GAA4G;AAC5G,eAAO,MAAM,yBAAyB,0FACmD,CAAC;AAE1F,wGAAwG;AACxG,eAAO,MAAM,+BAA+B,iFACoC,CAAC;AAEjF,mEAAmE;AACnE,eAAO,MAAM,oCAAoC,4FAC0C,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/review/messages.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * `action` is a noun such as "action", "launch" or "payment".
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.REVIEWED_SIMULATION_UNEXPLAINED_LINE = exports.REVIEWED_SIMULATION_FAILED_LINE = exports.REVIEWED_ENGINE_LOAD_LINE = exports.REVIEWED_ACCOUNT_CHANGED_LINE = exports.SAVED_ATTEMPT_CONTINUE_ANYWAY_LABEL = exports.SAVED_ATTEMPT_UNREADABLE_LINE = exports.SAVED_ATTEMPT_TAB_ONLY_LINE = exports.SAVED_ATTEMPT_CHECK_WARNING = exports.SAVED_ATTEMPT_CHECK_LINE = exports.HELD_SEND_AGAIN_LABEL = exports.HELD_AWAY_SUCCESS_LINE = exports.HELD_EXPIRED_LINE = exports.HELD_SUCCESS_LINE = exports.HELD_FAILED_LINE = exports.HELD_RELEASE_LABEL = exports.HELD_EXIT_LABEL = exports.HELD_RELEASED_ELSEWHERE_LINE = exports.HELD_RELEASED_LINE = exports.HELD_CONFIRMING_LINE = exports.WRITE_HOLD_STALE_REVIEW_LINE = exports.WRITE_HOLD_MINED_LINE = exports.WRITE_HOLD_SAFE_UNPROVEN_LINE = exports.WRITE_HOLD_LOOKS_DONE_LINE = exports.WRITE_HOLD_SAFE_REPLACED_LINE = exports.WRITE_HOLD_HASHED_EXIT_LINE = exports.WRITE_HOLD_NONCE_LINE = exports.WRITE_HOLD_UNCHECKED_LINE = exports.WRITE_HOLD_CALL_FAILED_LINE = exports.WRITE_HOLD_SAFE_UNCONFIRMED_LINE = exports.WRITE_HOLD_REVERTED_LINE = exports.WRITE_HOLD_PENDING_LINE = exports.WRITE_HOLD_IN_TAB_LINE = exports.RELAYR_PAYMENT_RELEASED_LINE = exports.SAFE_PROPOSAL_EXECUTED_LINE = exports.SAFE_PROPOSAL_REPLACED_LINE = exports.WRITE_EXIT_LABEL = void 0;
8
+ exports.REVIEWED_SIMULATION_UNEXPLAINED_LINE = exports.REVIEWED_SIMULATION_FAILED_LINE = exports.REVIEWED_ENGINE_LOAD_LINE = exports.REVIEWED_ACCOUNT_CHANGED_LINE = exports.SAVED_ATTEMPT_CONTINUE_ANYWAY_LABEL = exports.SAVED_ATTEMPT_UNREADABLE_LINE = exports.SAVED_ATTEMPT_TAB_ONLY_LINE = exports.SAVED_ATTEMPT_CHECK_WARNING = exports.SAVED_ATTEMPT_CHECK_LINE = exports.HELD_SEND_AGAIN_LABEL = exports.HELD_AWAY_SUCCESS_LINE = exports.HELD_EXPIRED_LINE = exports.HELD_SUCCESS_LINE = exports.HELD_FAILED_LINE = exports.HELD_RELEASE_LABEL = exports.HELD_EXIT_LABEL = exports.HELD_RELEASED_ELSEWHERE_LINE = exports.HELD_HASH_UNVERIFIED_LINE = exports.HELD_HASH_MISMATCH_LINE = exports.HELD_RELEASED_LINE = exports.CONFIRMATION_QUEUED_LINE = exports.LOCK_LOST_LINE = exports.REVIEW_STOPPED_LINE = exports.HELD_CONFIRMING_LINE = exports.WRITE_HOLD_STALE_REVIEW_LINE = exports.WRITE_HOLD_MINED_LINE = exports.WRITE_HOLD_SAFE_UNPROVEN_LINE = exports.WRITE_HOLD_LOOKS_DONE_LINE = exports.WRITE_HOLD_SAFE_REPLACED_LINE = exports.WRITE_HOLD_HASHED_EXIT_LINE = exports.WRITE_HOLD_NONCE_LINE = exports.WRITE_HOLD_UNCHECKED_LINE = exports.WRITE_HOLD_CALL_FAILED_LINE = exports.WRITE_HOLD_SAFE_UNCONFIRMED_LINE = exports.WRITE_HOLD_REVERTED_LINE = exports.WRITE_HOLD_PENDING_LINE = exports.WRITE_HOLD_IN_TAB_LINE = exports.RELAYR_PAYMENT_RELEASED_LINE = exports.SAFE_PROPOSAL_EXECUTED_LINE = exports.SAFE_PROPOSAL_REPLACED_LINE = exports.WRITE_EXIT_LABEL = void 0;
9
9
  exports.relayrHeldMessage = relayrHeldMessage;
10
10
  exports.relayrDiscardLine = relayrDiscardLine;
11
11
  exports.writeHeldMessage = writeHeldMessage;
@@ -81,8 +81,24 @@ exports.WRITE_HOLD_MINED_LINE = "Your transaction is onchain, but its result can
81
81
  exports.WRITE_HOLD_STALE_REVIEW_LINE = "This was just sent from another window. Review it again to send another.";
82
82
  /** The one line while a sent write, direct or through a Safe, is being confirmed. */
83
83
  exports.HELD_CONFIRMING_LINE = "Confirming your transaction.";
84
+ /** A run closed after an earlier step was sent (`stopped`): the rest can be reviewed again. */
85
+ exports.REVIEW_STOPPED_LINE = "The rest was not sent. Review it again when you are ready.";
86
+ /**
87
+ * Another window took over this action's lock (a lease that lapsed while the
88
+ * tab slept, as in a wallet app): `errorLine` of a `LockLostError`.
89
+ */
90
+ exports.LOCK_LOST_LINE = "This action moved to another window. Nothing more was sent.";
91
+ /**
92
+ * A sent step's confirmation is recorded only once the site's current work
93
+ * ends: `errorLine` of a `ConfirmationQueuedError`. Nothing is sent again.
94
+ */
95
+ exports.CONFIRMATION_QUEUED_LINE = "Confirmed. It is recorded here once this step finishes. Nothing more was sent.";
84
96
  /** A held write the user released with their exit: they can send it again. */
85
97
  exports.HELD_RELEASED_LINE = "Released. You can send it again.";
98
+ /** A hash the user gave for a held write is another transaction. */
99
+ exports.HELD_HASH_MISMATCH_LINE = "This hash is not that transaction. Check it in your wallet.";
100
+ /** A hash the user gave for a held write could not be read yet: retryable. */
101
+ exports.HELD_HASH_UNVERIFIED_LINE = "Couldn't verify this transaction yet. Try again shortly.";
86
102
  /** A held write another window released: neutral, never a result. */
87
103
  exports.HELD_RELEASED_ELSEWHERE_LINE = "This was released in another window.";
88
104
  /** The exit button where the review follows on its own. */
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/review/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/review/messages.ts"],"names":[],"mappings":"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"}