@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.
- package/dist/cjs/review/heldWrite.d.ts +6 -1
- package/dist/cjs/review/heldWrite.d.ts.map +1 -1
- package/dist/cjs/review/heldWrite.js +13 -6
- package/dist/cjs/review/heldWrite.js.map +1 -1
- package/dist/cjs/review/locks.d.ts +61 -2
- package/dist/cjs/review/locks.d.ts.map +1 -1
- package/dist/cjs/review/locks.js +115 -16
- package/dist/cjs/review/locks.js.map +1 -1
- package/dist/cjs/review/react/useReviewedRun.d.ts +17 -3
- package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
- package/dist/cjs/review/react/useReviewedRun.js +142 -31
- package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
- package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -1
- package/dist/cjs/review/react/useSavedAttempt.js +12 -0
- package/dist/cjs/review/react/useSavedAttempt.js.map +1 -1
- package/dist/cjs/review/relayrSend.d.ts +5 -0
- package/dist/cjs/review/relayrSend.d.ts.map +1 -1
- package/dist/cjs/review/relayrSend.js +126 -104
- package/dist/cjs/review/relayrSend.js.map +1 -1
- package/dist/cjs/review/runStatus.d.ts +6 -2
- package/dist/cjs/review/runStatus.d.ts.map +1 -1
- package/dist/cjs/review/runStatus.js +3 -1
- package/dist/cjs/review/runStatus.js.map +1 -1
- package/dist/cjs/review/safeRelayr.d.ts +11 -2
- package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
- package/dist/cjs/review/safeRelayr.js +232 -156
- package/dist/cjs/review/safeRelayr.js.map +1 -1
- package/dist/cjs/review/savedAttempt.d.ts.map +1 -1
- package/dist/cjs/review/savedAttempt.js +7 -2
- package/dist/cjs/review/savedAttempt.js.map +1 -1
- package/dist/cjs/review/send.d.ts +27 -5
- package/dist/cjs/review/send.d.ts.map +1 -1
- package/dist/cjs/review/send.js +67 -24
- package/dist/cjs/review/send.js.map +1 -1
- package/dist/cjs/review/sign.d.ts +6 -1
- package/dist/cjs/review/sign.d.ts.map +1 -1
- package/dist/cjs/review/sign.js +10 -4
- package/dist/cjs/review/sign.js.map +1 -1
- package/dist/cjs/review/wallet.d.ts +16 -4
- package/dist/cjs/review/wallet.d.ts.map +1 -1
- package/dist/cjs/review/wallet.js +60 -17
- package/dist/cjs/review/wallet.js.map +1 -1
- package/dist/cjs/review/writeHold.d.ts +18 -3
- package/dist/cjs/review/writeHold.d.ts.map +1 -1
- package/dist/cjs/review/writeHold.js +37 -10
- package/dist/cjs/review/writeHold.js.map +1 -1
- package/dist/cjs/review/writeRecovery.d.ts +12 -2
- package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
- package/dist/cjs/review/writeRecovery.js +64 -15
- package/dist/cjs/review/writeRecovery.js.map +1 -1
- package/dist/esm/review/heldWrite.d.ts +6 -1
- package/dist/esm/review/heldWrite.d.ts.map +1 -1
- package/dist/esm/review/heldWrite.js +13 -6
- package/dist/esm/review/heldWrite.js.map +1 -1
- package/dist/esm/review/locks.d.ts +61 -2
- package/dist/esm/review/locks.d.ts.map +1 -1
- package/dist/esm/review/locks.js +111 -16
- package/dist/esm/review/locks.js.map +1 -1
- package/dist/esm/review/react/useReviewedRun.d.ts +17 -3
- package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
- package/dist/esm/review/react/useReviewedRun.js +143 -32
- package/dist/esm/review/react/useReviewedRun.js.map +1 -1
- package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -1
- package/dist/esm/review/react/useSavedAttempt.js +12 -0
- package/dist/esm/review/react/useSavedAttempt.js.map +1 -1
- package/dist/esm/review/relayrSend.d.ts +5 -0
- package/dist/esm/review/relayrSend.d.ts.map +1 -1
- package/dist/esm/review/relayrSend.js +127 -105
- package/dist/esm/review/relayrSend.js.map +1 -1
- package/dist/esm/review/runStatus.d.ts +6 -2
- package/dist/esm/review/runStatus.d.ts.map +1 -1
- package/dist/esm/review/runStatus.js +3 -1
- package/dist/esm/review/runStatus.js.map +1 -1
- package/dist/esm/review/safeRelayr.d.ts +11 -2
- package/dist/esm/review/safeRelayr.d.ts.map +1 -1
- package/dist/esm/review/safeRelayr.js +232 -156
- package/dist/esm/review/safeRelayr.js.map +1 -1
- package/dist/esm/review/savedAttempt.d.ts.map +1 -1
- package/dist/esm/review/savedAttempt.js +7 -2
- package/dist/esm/review/savedAttempt.js.map +1 -1
- package/dist/esm/review/send.d.ts +27 -5
- package/dist/esm/review/send.d.ts.map +1 -1
- package/dist/esm/review/send.js +67 -24
- package/dist/esm/review/send.js.map +1 -1
- package/dist/esm/review/sign.d.ts +6 -1
- package/dist/esm/review/sign.d.ts.map +1 -1
- package/dist/esm/review/sign.js +10 -4
- package/dist/esm/review/sign.js.map +1 -1
- package/dist/esm/review/wallet.d.ts +16 -4
- package/dist/esm/review/wallet.d.ts.map +1 -1
- package/dist/esm/review/wallet.js +60 -17
- package/dist/esm/review/wallet.js.map +1 -1
- package/dist/esm/review/writeHold.d.ts +18 -3
- package/dist/esm/review/writeHold.d.ts.map +1 -1
- package/dist/esm/review/writeHold.js +37 -10
- package/dist/esm/review/writeHold.js.map +1 -1
- package/dist/esm/review/writeRecovery.d.ts +12 -2
- package/dist/esm/review/writeRecovery.d.ts.map +1 -1
- package/dist/esm/review/writeRecovery.js +63 -16
- package/dist/esm/review/writeRecovery.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,6 +32,21 @@ const CONNECTION_CHANGED = "Wallet connection changed. Review the transaction ag
|
|
|
32
32
|
const NETWORK_CHANGED = "Your wallet changed networks. Review again.";
|
|
33
33
|
const UNREACHABLE = "Your wallet could not be reached. Nothing was sent; try again.";
|
|
34
34
|
const RUN_ENDED = "This action was closed. Nothing more was sent.";
|
|
35
|
+
const MOVED = "This action moved to another window. Nothing was sent.";
|
|
36
|
+
/** The connected account, as a request's own was read: a change refuses, unsent. */
|
|
37
|
+
function sameAccount(account, now) {
|
|
38
|
+
if (now?.toLowerCase() !== account.toLowerCase())
|
|
39
|
+
throw new lineError_js_1.WalletNotInvokedError("The connected account changed. Review again.");
|
|
40
|
+
}
|
|
41
|
+
/** Await a call's {@link WalletRequestOptions.fence}: a refusal is unsent. */
|
|
42
|
+
async function fenced(fence) {
|
|
43
|
+
try {
|
|
44
|
+
await fence?.();
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw Object.assign(new lineError_js_1.WalletNotInvokedError(MOVED), { cause: error });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
35
50
|
/** The provider requests that send or sign: each is checked again as it is forwarded. */
|
|
36
51
|
const DISPATCHED = new Set([
|
|
37
52
|
"eth_sendTransaction",
|
|
@@ -50,7 +65,7 @@ const DISPATCHED = new Set([
|
|
|
50
65
|
* A connector that changes while the client loads is fetched again, three
|
|
51
66
|
* times at most.
|
|
52
67
|
*/
|
|
53
|
-
async function withConnection(options, invoke, signal) {
|
|
68
|
+
async function withConnection(options, invoke, { signal, fence } = {}) {
|
|
54
69
|
const account = options.account();
|
|
55
70
|
if (!account)
|
|
56
71
|
throw new lineError_js_1.WalletNotInvokedError("Connect a wallet first.");
|
|
@@ -59,9 +74,7 @@ async function withConnection(options, invoke, signal) {
|
|
|
59
74
|
const current = () => {
|
|
60
75
|
if (signal?.aborted)
|
|
61
76
|
throw new lineError_js_1.WalletNotInvokedError(RUN_ENDED);
|
|
62
|
-
|
|
63
|
-
throw new lineError_js_1.WalletNotInvokedError("The connected account changed. Review again.");
|
|
64
|
-
}
|
|
77
|
+
sameAccount(account, options.account());
|
|
65
78
|
if (options.chainId() !== chainId || options.isSafe() !== safe) {
|
|
66
79
|
throw new lineError_js_1.WalletNotInvokedError(CONNECTION_CHANGED);
|
|
67
80
|
}
|
|
@@ -102,19 +115,22 @@ async function withConnection(options, invoke, signal) {
|
|
|
102
115
|
account: inner.account,
|
|
103
116
|
chain: inner.chain,
|
|
104
117
|
transport: (0, viem_1.custom)({
|
|
105
|
-
request: (args) => {
|
|
118
|
+
request: async (args) => {
|
|
106
119
|
const forwardedNow = DISPATCHED.has(args.method);
|
|
107
120
|
if (forwardedNow) {
|
|
108
121
|
try {
|
|
122
|
+
// The caller's ownership, the last await before the wallet;
|
|
123
|
+
// then the synchronous checks, with no await before the request.
|
|
124
|
+
await fenced(fence);
|
|
109
125
|
if (current() !== connector)
|
|
110
126
|
throw new lineError_js_1.WalletNotInvokedError(CONNECTION_CHANGED);
|
|
111
127
|
}
|
|
112
128
|
catch (error) {
|
|
113
129
|
// Unsent only while none of this call's requests went out.
|
|
114
130
|
if (forwarded)
|
|
115
|
-
|
|
131
|
+
throw new lineError_js_1.ReviewLineError(CONNECTION_CHANGED);
|
|
116
132
|
refusal = error;
|
|
117
|
-
|
|
133
|
+
throw error;
|
|
118
134
|
}
|
|
119
135
|
forwarded = true;
|
|
120
136
|
}
|
|
@@ -175,31 +191,31 @@ function viemWalletAdapter(options) {
|
|
|
175
191
|
switchChain: async (chainId) => {
|
|
176
192
|
await options.switchChain(chainId);
|
|
177
193
|
},
|
|
178
|
-
sendTransaction: ({ chainId, to, data, value, gas, signal }) => withConnection(options, ({ account, client }) => client.sendTransaction({
|
|
194
|
+
sendTransaction: ({ chainId, to, data, value, gas, signal, fence }) => withConnection(options, ({ account, client }) => client.sendTransaction({
|
|
179
195
|
account,
|
|
180
196
|
chain: chainOf(client, chainId),
|
|
181
197
|
to,
|
|
182
198
|
data,
|
|
183
199
|
value,
|
|
184
200
|
...(gas === undefined ? {} : { gas }),
|
|
185
|
-
}), signal),
|
|
186
|
-
signTypedData: async (typedData) => {
|
|
201
|
+
}), { signal, fence }),
|
|
202
|
+
signTypedData: async (typedData, request) => {
|
|
187
203
|
// viem does not check the wallet's chain against the domain's.
|
|
188
204
|
const chainId = typedData.domain?.chainId;
|
|
189
205
|
if (chainId !== undefined && options.chainId() !== Number(chainId)) {
|
|
190
206
|
throw new lineError_js_1.WalletNotInvokedError(NETWORK_CHANGED);
|
|
191
207
|
}
|
|
192
|
-
return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }));
|
|
208
|
+
return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }), request);
|
|
193
209
|
},
|
|
194
|
-
signMessage: (message) => withConnection(options, ({ account, client }) => client.signMessage({ account, message })),
|
|
195
|
-
sendCalls: (chainId, calls) => withConnection(options, async ({ account, client }) => {
|
|
210
|
+
signMessage: (message, request) => withConnection(options, ({ account, client }) => client.signMessage({ account, message }), request),
|
|
211
|
+
sendCalls: (chainId, calls, request) => withConnection(options, async ({ account, client }) => {
|
|
196
212
|
const { id } = await client.sendCalls({
|
|
197
213
|
account,
|
|
198
214
|
chain: chainOf(client, chainId),
|
|
199
215
|
calls: calls.map(({ to, data, value }) => ({ to, data, value })),
|
|
200
216
|
});
|
|
201
217
|
return id;
|
|
202
|
-
}),
|
|
218
|
+
}, request),
|
|
203
219
|
};
|
|
204
220
|
}
|
|
205
221
|
/** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
|
|
@@ -219,6 +235,18 @@ function selfReviewingAdapter(options) {
|
|
|
219
235
|
throw unsupportedWalletRequest();
|
|
220
236
|
};
|
|
221
237
|
const reject = () => Promise.reject(unsupportedWalletRequest());
|
|
238
|
+
const { signTypedData, signMessage } = options;
|
|
239
|
+
/**
|
|
240
|
+
* The account read as the call starts, its fence awaited, then the same
|
|
241
|
+
* account again, synchronously right before the wallet takes the request.
|
|
242
|
+
*/
|
|
243
|
+
const fencedAs = async (fence) => {
|
|
244
|
+
const account = options.account();
|
|
245
|
+
if (!account)
|
|
246
|
+
throw new lineError_js_1.WalletNotInvokedError("Connect a wallet first.");
|
|
247
|
+
await fenced(fence);
|
|
248
|
+
sameAccount(account, options.account());
|
|
249
|
+
};
|
|
222
250
|
return {
|
|
223
251
|
kind: "self-reviewing",
|
|
224
252
|
account: options.account,
|
|
@@ -226,9 +254,24 @@ function selfReviewingAdapter(options) {
|
|
|
226
254
|
isSafe: refuse,
|
|
227
255
|
switchChain: reject,
|
|
228
256
|
sendTransaction: reject,
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
257
|
+
// Each hands the wallet its request right after the call's fence.
|
|
258
|
+
signTypedData: signTypedData
|
|
259
|
+
? async (typedData, request) => {
|
|
260
|
+
await fencedAs(request?.fence);
|
|
261
|
+
return signTypedData(typedData);
|
|
262
|
+
}
|
|
263
|
+
: reject,
|
|
264
|
+
signMessage: signMessage
|
|
265
|
+
? async (message, request) => {
|
|
266
|
+
await fencedAs(request?.fence);
|
|
267
|
+
return signMessage(message);
|
|
268
|
+
}
|
|
269
|
+
: reject,
|
|
270
|
+
submitToReviewer: async (request, call) => {
|
|
271
|
+
await fenced(call?.fence);
|
|
272
|
+
sameAccount(request.account, options.account());
|
|
273
|
+
return options.submit(request);
|
|
274
|
+
},
|
|
232
275
|
};
|
|
233
276
|
}
|
|
234
277
|
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,6 +179,12 @@ export type WriteHoldGate = {
|
|
|
179
179
|
* a reused Safe proposal's exact call.
|
|
180
180
|
*/
|
|
181
181
|
beforeSend(actualCall?: ReviewedWriteRecoveryInput["call"]): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Throws `LockLostError` unless every lock the send reserved under is still
|
|
184
|
+
* this tab's, on a fresh read: the last await of `beforeWrite`, right before
|
|
185
|
+
* the wallet opens. Only after `beforeSend`.
|
|
186
|
+
*/
|
|
187
|
+
assertHeld(): Promise<void>;
|
|
182
188
|
/** The wallet returned this hash (a Safe proposal's safeTxHash): `onWriteSubmitted`. */
|
|
183
189
|
afterSubmit(hash: Hex, proposal?: SafeQueuedTransaction): void;
|
|
184
190
|
/** Nothing reached the wallet, or it refused: `onWriteRejected` and `onBeforeWriteAborted`. */
|
|
@@ -264,7 +270,10 @@ export declare function createWriteHold(options?: {
|
|
|
264
270
|
unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
|
|
265
271
|
/** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
|
|
266
272
|
released(reservation: string): boolean;
|
|
267
|
-
/**
|
|
273
|
+
/**
|
|
274
|
+
* How `reservation` settled, if saved: its latest state, or, once a
|
|
275
|
+
* later reservation replaced it, its own saved settlement.
|
|
276
|
+
*/
|
|
268
277
|
settlementOf(reservation: string): WriteHoldSettled | undefined;
|
|
269
278
|
/**
|
|
270
279
|
* The user acknowledged a success the hold settled while they were
|
|
@@ -338,7 +347,10 @@ export declare function createWriteHold(options?: {
|
|
|
338
347
|
unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
|
|
339
348
|
/** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
|
|
340
349
|
released(reservation: string): boolean;
|
|
341
|
-
/**
|
|
350
|
+
/**
|
|
351
|
+
* How `reservation` settled, if saved: its latest state, or, once a
|
|
352
|
+
* later reservation replaced it, its own saved settlement.
|
|
353
|
+
*/
|
|
342
354
|
settlementOf(reservation: string): WriteHoldSettled | undefined;
|
|
343
355
|
/**
|
|
344
356
|
* The user acknowledged a success the hold settled while they were
|
|
@@ -432,7 +444,10 @@ export declare function openStepHold(hold: WriteHold, account: Address, safe: bo
|
|
|
432
444
|
unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
|
|
433
445
|
/** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
|
|
434
446
|
released(reservation: string): boolean;
|
|
435
|
-
/**
|
|
447
|
+
/**
|
|
448
|
+
* How `reservation` settled, if saved: its latest state, or, once a
|
|
449
|
+
* later reservation replaced it, its own saved settlement.
|
|
450
|
+
*/
|
|
436
451
|
settlementOf(reservation: string): WriteHoldSettled | undefined;
|
|
437
452
|
/**
|
|
438
453
|
* The user acknowledged a success the hold settled while they were
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAC;AACd,OAAO,EAQL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAiB3B,OAAO,EAYL,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA4C9C,wFAAwF;AACxF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,YAAY,EACV,UAAU,GACV,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,qBAAqB,GACrB,uBAAuB,GACvB,SAAS,CACZ,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,gBAAgB;AAC1B;;;;;GAKG;AACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AACH,wDAAwD;GACtD;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,IAAI;IACnC,MAAM,EAAE,CAAC,CAAC;IACV,2EAA2E;IAC3E,MAAM,EAAE,2BAA2B,CAAC;IACpC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,KAAK,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAC9C,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GACjB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAC/C,IAAI,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,GACtD,IAAI,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GACvC,IAAI,CACF,gBAAgB,EAChB;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAC3D,GACD,IAAI,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrE,IAAI,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAAC,YAAY,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACnE,IAAI,CACF,cAAc,EACd;IAAE,aAAa,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CACxD,CAAC;AAaN,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,2EAA2E;AAC3E,qBAAa,cAAe,SAAQ,eAAe;IAErC,QAAQ,CAAC,KAAK,EAAE,cAAc;IAD1C,QAAQ,CAAC,IAAI,oBAAoB;gBACZ,KAAK,EAAE,cAAc;CAG3C;AAED,+GAA+G;AAC/G,qBAAa,mCAAoC,SAAQ,eAAe;IAE1D,QAAQ,CAAC,OAAO,EAAE,qBAAqB;IADnD,QAAQ,CAAC,IAAI,yCAAyC;gBACjC,OAAO,EAAE,qBAAqB;CAGpD;AAED,wEAAwE;AACxE,qBAAa,mBAAoB,SAAQ,eAAe;IAE1C,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,yBAAyB;gBACjB,KAAK,EAAE,OAAO;CAGpC;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,eAAe;IAEhD,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB;IAD/C,QAAQ,CAAC,IAAI,+BAA+B;gBACvB,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAGhD;AAED,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,QAAQ,CAAC,IAAI,wBAAwB;;CAItC;AAED,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,wFAAwF;IACxF,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC/D,+FAA+F;IAC/F,UAAU,IAAI,IAAI,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AA8I1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,sFAAsF;IACtF,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}
|
|
@@ -889,6 +889,8 @@ function createWriteHold(options = {}) {
|
|
|
889
889
|
let released;
|
|
890
890
|
/** Under an intent: removes the reservation's mirrors, never sent. */
|
|
891
891
|
let unsent;
|
|
892
|
+
/** Under an intent: whether every lock it reserved under is still this tab's. */
|
|
893
|
+
let acrossHeld;
|
|
892
894
|
let reviewed = "";
|
|
893
895
|
const gate = {
|
|
894
896
|
async beforeSend(actualCall) {
|
|
@@ -908,12 +910,19 @@ function createWriteHold(options = {}) {
|
|
|
908
910
|
};
|
|
909
911
|
try {
|
|
910
912
|
if (hooks.across)
|
|
911
|
-
({
|
|
913
|
+
({
|
|
914
|
+
released,
|
|
915
|
+
unsent,
|
|
916
|
+
held: acrossHeld,
|
|
917
|
+
} = await hooks.across((work) => recovery.withLock(work), reserve, () => {
|
|
912
918
|
recovery.rejected();
|
|
913
919
|
attempt = undefined;
|
|
914
|
-
}, until, reviewed));
|
|
915
|
-
else
|
|
920
|
+
}, until, reviewed, () => recovery.assertHeld()));
|
|
921
|
+
else {
|
|
922
|
+
// The tab may have slept through the nonce read: its lock first.
|
|
923
|
+
await recovery.assertHeld();
|
|
916
924
|
reserve();
|
|
925
|
+
}
|
|
917
926
|
}
|
|
918
927
|
catch (error) {
|
|
919
928
|
if (error instanceof WriteHeldError ||
|
|
@@ -934,6 +943,9 @@ function createWriteHold(options = {}) {
|
|
|
934
943
|
}
|
|
935
944
|
shown(peek());
|
|
936
945
|
},
|
|
946
|
+
async assertHeld() {
|
|
947
|
+
await (acrossHeld ?? recovery.assertHeld)();
|
|
948
|
+
},
|
|
937
949
|
afterSubmit(hash, proposal) {
|
|
938
950
|
if (!attempt)
|
|
939
951
|
throw new lineError_js_1.ReviewLineError("Hold the write before the wallet opens.");
|
|
@@ -1123,7 +1135,7 @@ function createWriteHold(options = {}) {
|
|
|
1123
1135
|
throw new lineError_js_1.ReviewLineError("Held since the app's read.");
|
|
1124
1136
|
reserve();
|
|
1125
1137
|
adopted = true;
|
|
1126
|
-
}, recovery.rejected, Promise.resolve(), hooks.generations());
|
|
1138
|
+
}, recovery.rejected, Promise.resolve(), hooks.generations(), () => recovery.assertHeld());
|
|
1127
1139
|
await released;
|
|
1128
1140
|
}
|
|
1129
1141
|
catch (error) {
|
|
@@ -1144,6 +1156,7 @@ function createWriteHold(options = {}) {
|
|
|
1144
1156
|
const verdict = hash === undefined ? "yes" : await adoptable(hash, client);
|
|
1145
1157
|
if (verdict !== "yes")
|
|
1146
1158
|
return { ...peek(), declined: verdict };
|
|
1159
|
+
await recovery.assertHeld();
|
|
1147
1160
|
reserve();
|
|
1148
1161
|
return hash && client ? inspect(client) : peek();
|
|
1149
1162
|
}, true);
|
|
@@ -1204,12 +1217,15 @@ function createWriteHold(options = {}) {
|
|
|
1204
1217
|
released(reservation) {
|
|
1205
1218
|
return recovery.released(reservation);
|
|
1206
1219
|
},
|
|
1207
|
-
/**
|
|
1220
|
+
/**
|
|
1221
|
+
* How `reservation` settled, if saved: its latest state, or, once a
|
|
1222
|
+
* later reservation replaced it, its own saved settlement.
|
|
1223
|
+
*/
|
|
1208
1224
|
settlementOf(reservation) {
|
|
1209
1225
|
const now = peek();
|
|
1210
|
-
return now.status === "clear" && now.reservation === reservation
|
|
1226
|
+
return ((now.status === "clear" && now.reservation === reservation
|
|
1211
1227
|
? now.settled
|
|
1212
|
-
: undefined;
|
|
1228
|
+
: undefined) ?? recovery.settledOf(reservation));
|
|
1213
1229
|
},
|
|
1214
1230
|
/**
|
|
1215
1231
|
* The user acknowledged a success the hold settled while they were
|
|
@@ -1507,12 +1523,13 @@ function createWriteHold(options = {}) {
|
|
|
1507
1523
|
* hold refuses; otherwise the intent reserves, and mirrors itself at each
|
|
1508
1524
|
* legacy key so its readers, older versions included, see it held.
|
|
1509
1525
|
*/
|
|
1510
|
-
async function reserveAcross(ownLock, reserve, unreserve, until, reviewed) {
|
|
1526
|
+
async function reserveAcross(ownLock, reserve, unreserve, until, reviewed, ownHeld) {
|
|
1511
1527
|
const locks = [
|
|
1512
|
-
{ scope: scopeOf(call), take: ownLock },
|
|
1528
|
+
{ scope: scopeOf(call), take: ownLock, held: ownHeld },
|
|
1513
1529
|
...journals.map((journal) => ({
|
|
1514
1530
|
scope: journal.scopeKey,
|
|
1515
1531
|
take: (work) => journal.withLock(work),
|
|
1532
|
+
held: () => journal.assertHeld(),
|
|
1516
1533
|
})),
|
|
1517
1534
|
].sort((a, b) => Number(a.scope > b.scope) - Number(a.scope < b.scope));
|
|
1518
1535
|
const deadline = Date.now() + RESERVE_RETRY_MS;
|
|
@@ -1522,6 +1539,9 @@ function createWriteHold(options = {}) {
|
|
|
1522
1539
|
* send never reached the wallet.
|
|
1523
1540
|
*/
|
|
1524
1541
|
let unsent;
|
|
1542
|
+
const stillHeld = async () => {
|
|
1543
|
+
await Promise.all(locks.map((lock) => lock.held()));
|
|
1544
|
+
};
|
|
1525
1545
|
for (;;) {
|
|
1526
1546
|
let entered = 0;
|
|
1527
1547
|
let reserved;
|
|
@@ -1532,6 +1552,9 @@ function createWriteHold(options = {}) {
|
|
|
1532
1552
|
entered += 1;
|
|
1533
1553
|
return acquire(index + 1);
|
|
1534
1554
|
});
|
|
1555
|
+
// Every lock is still this tab's, right before the checks and the
|
|
1556
|
+
// reservation, which nothing then separates.
|
|
1557
|
+
await stillHeld();
|
|
1535
1558
|
const refuse = (held) => new WriteHeldError(noticed({
|
|
1536
1559
|
...ungated(classify(held)),
|
|
1537
1560
|
reservation: held.id,
|
|
@@ -1589,7 +1612,11 @@ function createWriteHold(options = {}) {
|
|
|
1589
1612
|
holding.then(() => null, (error) => ({ error })),
|
|
1590
1613
|
]);
|
|
1591
1614
|
if (!failed)
|
|
1592
|
-
return {
|
|
1615
|
+
return {
|
|
1616
|
+
released: holding.catch(() => { }),
|
|
1617
|
+
unsent,
|
|
1618
|
+
held: stillHeld,
|
|
1619
|
+
};
|
|
1593
1620
|
// Not reserved: every lock, its own included, is let go before any
|
|
1594
1621
|
// retry; the checks run again each time.
|
|
1595
1622
|
const { error } = failed;
|