@bananapus/nana-sdk-core 6.0.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/jbcenter/ensureDeployed.d.ts +2 -2
- package/dist/cjs/jbcenter/ensureDeployed.d.ts.map +1 -1
- package/dist/cjs/jbcenter/ensureDeployed.js.map +1 -1
- package/dist/cjs/jbcenter.d.ts +4 -1
- package/dist/cjs/jbcenter.d.ts.map +1 -1
- package/dist/cjs/jbcenter.js +6 -6
- package/dist/cjs/jbcenter.js.map +1 -1
- package/dist/cjs/review/gas.d.ts +5 -2
- package/dist/cjs/review/gas.d.ts.map +1 -1
- package/dist/cjs/review/gas.js +8 -3
- package/dist/cjs/review/gas.js.map +1 -1
- 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 +21 -16
- package/dist/cjs/review/heldWrite.js.map +1 -1
- package/dist/cjs/review/index.d.ts +2 -0
- package/dist/cjs/review/index.d.ts.map +1 -1
- package/dist/cjs/review/index.js +2 -0
- package/dist/cjs/review/index.js.map +1 -1
- package/dist/cjs/review/locks.d.ts +69 -0
- package/dist/cjs/review/locks.d.ts.map +1 -0
- package/dist/cjs/review/locks.js +232 -0
- package/dist/cjs/review/locks.js.map +1 -0
- package/dist/cjs/review/machines.d.ts +9 -0
- package/dist/cjs/review/machines.d.ts.map +1 -0
- package/dist/cjs/review/machines.js +25 -0
- package/dist/cjs/review/machines.js.map +1 -0
- package/dist/cjs/review/react/index.d.ts +3 -0
- package/dist/cjs/review/react/index.d.ts.map +1 -1
- package/dist/cjs/review/react/index.js +3 -0
- package/dist/cjs/review/react/index.js.map +1 -1
- package/dist/cjs/review/react/useFeeBuybackReview.d.ts +6 -0
- package/dist/cjs/review/react/useFeeBuybackReview.d.ts.map +1 -0
- package/dist/cjs/review/react/useFeeBuybackReview.js +53 -0
- package/dist/cjs/review/react/useFeeBuybackReview.js.map +1 -0
- package/dist/cjs/review/react/useMobileWallet.d.ts +15 -0
- package/dist/cjs/review/react/useMobileWallet.d.ts.map +1 -0
- package/dist/cjs/review/react/useMobileWallet.js +50 -0
- package/dist/cjs/review/react/useMobileWallet.js.map +1 -0
- package/dist/cjs/review/react/useReviewedRun.d.ts +28 -1
- package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
- package/dist/cjs/review/react/useReviewedRun.js +251 -39
- package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
- package/dist/cjs/review/react/useSavedAttempt.d.ts +23 -0
- package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -1
- package/dist/cjs/review/react/useSavedAttempt.js +101 -11
- package/dist/cjs/review/react/useSavedAttempt.js.map +1 -1
- package/dist/cjs/review/react/useStartOnce.d.ts +8 -0
- package/dist/cjs/review/react/useStartOnce.d.ts.map +1 -0
- package/dist/cjs/review/react/useStartOnce.js +27 -0
- package/dist/cjs/review/react/useStartOnce.js.map +1 -0
- package/dist/cjs/review/relayr.d.ts +1 -1
- package/dist/cjs/review/relayr.d.ts.map +1 -1
- package/dist/cjs/review/relayr.js +15 -0
- package/dist/cjs/review/relayr.js.map +1 -1
- package/dist/cjs/review/relayrLaunch.d.ts +90 -0
- package/dist/cjs/review/relayrLaunch.d.ts.map +1 -0
- package/dist/cjs/review/relayrLaunch.js +106 -0
- package/dist/cjs/review/relayrLaunch.js.map +1 -0
- 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 +133 -107
- package/dist/cjs/review/relayrSend.js.map +1 -1
- package/dist/cjs/review/reviewDialogQueue.d.ts +47 -0
- package/dist/cjs/review/reviewDialogQueue.d.ts.map +1 -0
- package/dist/cjs/review/reviewDialogQueue.js +120 -0
- package/dist/cjs/review/reviewDialogQueue.js.map +1 -0
- package/dist/cjs/review/runStatus.d.ts +51 -0
- package/dist/cjs/review/runStatus.d.ts.map +1 -0
- package/dist/cjs/review/runStatus.js +54 -0
- package/dist/cjs/review/runStatus.js.map +1 -0
- package/dist/cjs/review/safeRelayr.d.ts +60 -16
- package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
- package/dist/cjs/review/safeRelayr.js +358 -161
- 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 +13 -8
- package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
- package/dist/cjs/review/writeRecovery.js +67 -144
- package/dist/cjs/review/writeRecovery.js.map +1 -1
- package/dist/cjs/v6/feeBuyback.d.ts +49 -0
- package/dist/cjs/v6/feeBuyback.d.ts.map +1 -1
- package/dist/cjs/v6/feeBuyback.js +151 -0
- package/dist/cjs/v6/feeBuyback.js.map +1 -1
- package/dist/cjs/v6/suckers.d.ts +24 -2
- package/dist/cjs/v6/suckers.d.ts.map +1 -1
- package/dist/cjs/v6/suckers.js +5 -5
- package/dist/cjs/v6/suckers.js.map +1 -1
- package/dist/esm/jbcenter/ensureDeployed.d.ts +2 -2
- package/dist/esm/jbcenter/ensureDeployed.d.ts.map +1 -1
- package/dist/esm/jbcenter/ensureDeployed.js.map +1 -1
- package/dist/esm/jbcenter.d.ts +4 -1
- package/dist/esm/jbcenter.d.ts.map +1 -1
- package/dist/esm/jbcenter.js +6 -6
- package/dist/esm/jbcenter.js.map +1 -1
- package/dist/esm/review/gas.d.ts +5 -2
- package/dist/esm/review/gas.d.ts.map +1 -1
- package/dist/esm/review/gas.js +7 -3
- package/dist/esm/review/gas.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 +21 -16
- package/dist/esm/review/heldWrite.js.map +1 -1
- package/dist/esm/review/index.d.ts +2 -0
- package/dist/esm/review/index.d.ts.map +1 -1
- package/dist/esm/review/index.js +2 -0
- package/dist/esm/review/index.js.map +1 -1
- package/dist/esm/review/locks.d.ts +69 -0
- package/dist/esm/review/locks.d.ts.map +1 -0
- package/dist/esm/review/locks.js +225 -0
- package/dist/esm/review/locks.js.map +1 -0
- package/dist/esm/review/machines.d.ts +9 -0
- package/dist/esm/review/machines.d.ts.map +1 -0
- package/dist/esm/review/machines.js +9 -0
- package/dist/esm/review/machines.js.map +1 -0
- package/dist/esm/review/react/index.d.ts +3 -0
- package/dist/esm/review/react/index.d.ts.map +1 -1
- package/dist/esm/review/react/index.js +3 -0
- package/dist/esm/review/react/index.js.map +1 -1
- package/dist/esm/review/react/useFeeBuybackReview.d.ts +6 -0
- package/dist/esm/review/react/useFeeBuybackReview.d.ts.map +1 -0
- package/dist/esm/review/react/useFeeBuybackReview.js +50 -0
- package/dist/esm/review/react/useFeeBuybackReview.js.map +1 -0
- package/dist/esm/review/react/useMobileWallet.d.ts +15 -0
- package/dist/esm/review/react/useMobileWallet.d.ts.map +1 -0
- package/dist/esm/review/react/useMobileWallet.js +46 -0
- package/dist/esm/review/react/useMobileWallet.js.map +1 -0
- package/dist/esm/review/react/useReviewedRun.d.ts +28 -1
- package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
- package/dist/esm/review/react/useReviewedRun.js +252 -40
- package/dist/esm/review/react/useReviewedRun.js.map +1 -1
- package/dist/esm/review/react/useSavedAttempt.d.ts +23 -0
- package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -1
- package/dist/esm/review/react/useSavedAttempt.js +101 -11
- package/dist/esm/review/react/useSavedAttempt.js.map +1 -1
- package/dist/esm/review/react/useStartOnce.d.ts +8 -0
- package/dist/esm/review/react/useStartOnce.d.ts.map +1 -0
- package/dist/esm/review/react/useStartOnce.js +24 -0
- package/dist/esm/review/react/useStartOnce.js.map +1 -0
- package/dist/esm/review/relayr.d.ts +1 -1
- package/dist/esm/review/relayr.d.ts.map +1 -1
- package/dist/esm/review/relayr.js +1 -0
- package/dist/esm/review/relayr.js.map +1 -1
- package/dist/esm/review/relayrLaunch.d.ts +90 -0
- package/dist/esm/review/relayrLaunch.d.ts.map +1 -0
- package/dist/esm/review/relayrLaunch.js +97 -0
- package/dist/esm/review/relayrLaunch.js.map +1 -0
- 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 +134 -108
- package/dist/esm/review/relayrSend.js.map +1 -1
- package/dist/esm/review/reviewDialogQueue.d.ts +47 -0
- package/dist/esm/review/reviewDialogQueue.d.ts.map +1 -0
- package/dist/esm/review/reviewDialogQueue.js +117 -0
- package/dist/esm/review/reviewDialogQueue.js.map +1 -0
- package/dist/esm/review/runStatus.d.ts +51 -0
- package/dist/esm/review/runStatus.d.ts.map +1 -0
- package/dist/esm/review/runStatus.js +51 -0
- package/dist/esm/review/runStatus.js.map +1 -0
- package/dist/esm/review/safeRelayr.d.ts +60 -16
- package/dist/esm/review/safeRelayr.d.ts.map +1 -1
- package/dist/esm/review/safeRelayr.js +358 -161
- 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 +13 -8
- package/dist/esm/review/writeRecovery.d.ts.map +1 -1
- package/dist/esm/review/writeRecovery.js +63 -142
- package/dist/esm/review/writeRecovery.js.map +1 -1
- package/dist/esm/v6/feeBuyback.d.ts +49 -0
- package/dist/esm/v6/feeBuyback.d.ts.map +1 -1
- package/dist/esm/v6/feeBuyback.js +150 -0
- package/dist/esm/v6/feeBuyback.js.map +1 -1
- package/dist/esm/v6/suckers.d.ts +24 -2
- package/dist/esm/v6/suckers.d.ts.map +1 -1
- package/dist/esm/v6/suckers.js +5 -5
- package/dist/esm/v6/suckers.js.map +1 -1
- package/package.json +11 -1
|
@@ -25,6 +25,21 @@ const CONNECTION_CHANGED = "Wallet connection changed. Review the transaction ag
|
|
|
25
25
|
const NETWORK_CHANGED = "Your wallet changed networks. Review again.";
|
|
26
26
|
const UNREACHABLE = "Your wallet could not be reached. Nothing was sent; try again.";
|
|
27
27
|
const RUN_ENDED = "This action was closed. Nothing more was sent.";
|
|
28
|
+
const MOVED = "This action moved to another window. Nothing was sent.";
|
|
29
|
+
/** The connected account, as a request's own was read: a change refuses, unsent. */
|
|
30
|
+
function sameAccount(account, now) {
|
|
31
|
+
if (now?.toLowerCase() !== account.toLowerCase())
|
|
32
|
+
throw new WalletNotInvokedError("The connected account changed. Review again.");
|
|
33
|
+
}
|
|
34
|
+
/** Await a call's {@link WalletRequestOptions.fence}: a refusal is unsent. */
|
|
35
|
+
async function fenced(fence) {
|
|
36
|
+
try {
|
|
37
|
+
await fence?.();
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
throw Object.assign(new WalletNotInvokedError(MOVED), { cause: error });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
28
43
|
/** The provider requests that send or sign: each is checked again as it is forwarded. */
|
|
29
44
|
const DISPATCHED = new Set([
|
|
30
45
|
"eth_sendTransaction",
|
|
@@ -43,7 +58,7 @@ const DISPATCHED = new Set([
|
|
|
43
58
|
* A connector that changes while the client loads is fetched again, three
|
|
44
59
|
* times at most.
|
|
45
60
|
*/
|
|
46
|
-
async function withConnection(options, invoke, signal) {
|
|
61
|
+
async function withConnection(options, invoke, { signal, fence } = {}) {
|
|
47
62
|
const account = options.account();
|
|
48
63
|
if (!account)
|
|
49
64
|
throw new WalletNotInvokedError("Connect a wallet first.");
|
|
@@ -52,9 +67,7 @@ async function withConnection(options, invoke, signal) {
|
|
|
52
67
|
const current = () => {
|
|
53
68
|
if (signal?.aborted)
|
|
54
69
|
throw new WalletNotInvokedError(RUN_ENDED);
|
|
55
|
-
|
|
56
|
-
throw new WalletNotInvokedError("The connected account changed. Review again.");
|
|
57
|
-
}
|
|
70
|
+
sameAccount(account, options.account());
|
|
58
71
|
if (options.chainId() !== chainId || options.isSafe() !== safe) {
|
|
59
72
|
throw new WalletNotInvokedError(CONNECTION_CHANGED);
|
|
60
73
|
}
|
|
@@ -95,19 +108,22 @@ async function withConnection(options, invoke, signal) {
|
|
|
95
108
|
account: inner.account,
|
|
96
109
|
chain: inner.chain,
|
|
97
110
|
transport: custom({
|
|
98
|
-
request: (args) => {
|
|
111
|
+
request: async (args) => {
|
|
99
112
|
const forwardedNow = DISPATCHED.has(args.method);
|
|
100
113
|
if (forwardedNow) {
|
|
101
114
|
try {
|
|
115
|
+
// The caller's ownership, the last await before the wallet;
|
|
116
|
+
// then the synchronous checks, with no await before the request.
|
|
117
|
+
await fenced(fence);
|
|
102
118
|
if (current() !== connector)
|
|
103
119
|
throw new WalletNotInvokedError(CONNECTION_CHANGED);
|
|
104
120
|
}
|
|
105
121
|
catch (error) {
|
|
106
122
|
// Unsent only while none of this call's requests went out.
|
|
107
123
|
if (forwarded)
|
|
108
|
-
|
|
124
|
+
throw new ReviewLineError(CONNECTION_CHANGED);
|
|
109
125
|
refusal = error;
|
|
110
|
-
|
|
126
|
+
throw error;
|
|
111
127
|
}
|
|
112
128
|
forwarded = true;
|
|
113
129
|
}
|
|
@@ -168,31 +184,31 @@ export function viemWalletAdapter(options) {
|
|
|
168
184
|
switchChain: async (chainId) => {
|
|
169
185
|
await options.switchChain(chainId);
|
|
170
186
|
},
|
|
171
|
-
sendTransaction: ({ chainId, to, data, value, gas, signal }) => withConnection(options, ({ account, client }) => client.sendTransaction({
|
|
187
|
+
sendTransaction: ({ chainId, to, data, value, gas, signal, fence }) => withConnection(options, ({ account, client }) => client.sendTransaction({
|
|
172
188
|
account,
|
|
173
189
|
chain: chainOf(client, chainId),
|
|
174
190
|
to,
|
|
175
191
|
data,
|
|
176
192
|
value,
|
|
177
193
|
...(gas === undefined ? {} : { gas }),
|
|
178
|
-
}), signal),
|
|
179
|
-
signTypedData: async (typedData) => {
|
|
194
|
+
}), { signal, fence }),
|
|
195
|
+
signTypedData: async (typedData, request) => {
|
|
180
196
|
// viem does not check the wallet's chain against the domain's.
|
|
181
197
|
const chainId = typedData.domain?.chainId;
|
|
182
198
|
if (chainId !== undefined && options.chainId() !== Number(chainId)) {
|
|
183
199
|
throw new WalletNotInvokedError(NETWORK_CHANGED);
|
|
184
200
|
}
|
|
185
|
-
return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }));
|
|
201
|
+
return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }), request);
|
|
186
202
|
},
|
|
187
|
-
signMessage: (message) => withConnection(options, ({ account, client }) => client.signMessage({ account, message })),
|
|
188
|
-
sendCalls: (chainId, calls) => withConnection(options, async ({ account, client }) => {
|
|
203
|
+
signMessage: (message, request) => withConnection(options, ({ account, client }) => client.signMessage({ account, message }), request),
|
|
204
|
+
sendCalls: (chainId, calls, request) => withConnection(options, async ({ account, client }) => {
|
|
189
205
|
const { id } = await client.sendCalls({
|
|
190
206
|
account,
|
|
191
207
|
chain: chainOf(client, chainId),
|
|
192
208
|
calls: calls.map(({ to, data, value }) => ({ to, data, value })),
|
|
193
209
|
});
|
|
194
210
|
return id;
|
|
195
|
-
}),
|
|
211
|
+
}, request),
|
|
196
212
|
};
|
|
197
213
|
}
|
|
198
214
|
/** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
|
|
@@ -212,6 +228,18 @@ export function selfReviewingAdapter(options) {
|
|
|
212
228
|
throw unsupportedWalletRequest();
|
|
213
229
|
};
|
|
214
230
|
const reject = () => Promise.reject(unsupportedWalletRequest());
|
|
231
|
+
const { signTypedData, signMessage } = options;
|
|
232
|
+
/**
|
|
233
|
+
* The account read as the call starts, its fence awaited, then the same
|
|
234
|
+
* account again, synchronously right before the wallet takes the request.
|
|
235
|
+
*/
|
|
236
|
+
const fencedAs = async (fence) => {
|
|
237
|
+
const account = options.account();
|
|
238
|
+
if (!account)
|
|
239
|
+
throw new WalletNotInvokedError("Connect a wallet first.");
|
|
240
|
+
await fenced(fence);
|
|
241
|
+
sameAccount(account, options.account());
|
|
242
|
+
};
|
|
215
243
|
return {
|
|
216
244
|
kind: "self-reviewing",
|
|
217
245
|
account: options.account,
|
|
@@ -219,9 +247,24 @@ export function selfReviewingAdapter(options) {
|
|
|
219
247
|
isSafe: refuse,
|
|
220
248
|
switchChain: reject,
|
|
221
249
|
sendTransaction: reject,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
250
|
+
// Each hands the wallet its request right after the call's fence.
|
|
251
|
+
signTypedData: signTypedData
|
|
252
|
+
? async (typedData, request) => {
|
|
253
|
+
await fencedAs(request?.fence);
|
|
254
|
+
return signTypedData(typedData);
|
|
255
|
+
}
|
|
256
|
+
: reject,
|
|
257
|
+
signMessage: signMessage
|
|
258
|
+
? async (message, request) => {
|
|
259
|
+
await fencedAs(request?.fence);
|
|
260
|
+
return signMessage(message);
|
|
261
|
+
}
|
|
262
|
+
: reject,
|
|
263
|
+
submitToReviewer: async (request, call) => {
|
|
264
|
+
await fenced(call?.fence);
|
|
265
|
+
sameAccount(request.account, options.account());
|
|
266
|
+
return options.submit(request);
|
|
267
|
+
},
|
|
225
268
|
};
|
|
226
269
|
}
|
|
227
270
|
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,GAMP,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}
|
|
@@ -878,6 +878,8 @@ export function createWriteHold(options = {}) {
|
|
|
878
878
|
let released;
|
|
879
879
|
/** Under an intent: removes the reservation's mirrors, never sent. */
|
|
880
880
|
let unsent;
|
|
881
|
+
/** Under an intent: whether every lock it reserved under is still this tab's. */
|
|
882
|
+
let acrossHeld;
|
|
881
883
|
let reviewed = "";
|
|
882
884
|
const gate = {
|
|
883
885
|
async beforeSend(actualCall) {
|
|
@@ -897,12 +899,19 @@ export function createWriteHold(options = {}) {
|
|
|
897
899
|
};
|
|
898
900
|
try {
|
|
899
901
|
if (hooks.across)
|
|
900
|
-
({
|
|
902
|
+
({
|
|
903
|
+
released,
|
|
904
|
+
unsent,
|
|
905
|
+
held: acrossHeld,
|
|
906
|
+
} = await hooks.across((work) => recovery.withLock(work), reserve, () => {
|
|
901
907
|
recovery.rejected();
|
|
902
908
|
attempt = undefined;
|
|
903
|
-
}, until, reviewed));
|
|
904
|
-
else
|
|
909
|
+
}, until, reviewed, () => recovery.assertHeld()));
|
|
910
|
+
else {
|
|
911
|
+
// The tab may have slept through the nonce read: its lock first.
|
|
912
|
+
await recovery.assertHeld();
|
|
905
913
|
reserve();
|
|
914
|
+
}
|
|
906
915
|
}
|
|
907
916
|
catch (error) {
|
|
908
917
|
if (error instanceof WriteHeldError ||
|
|
@@ -923,6 +932,9 @@ export function createWriteHold(options = {}) {
|
|
|
923
932
|
}
|
|
924
933
|
shown(peek());
|
|
925
934
|
},
|
|
935
|
+
async assertHeld() {
|
|
936
|
+
await (acrossHeld ?? recovery.assertHeld)();
|
|
937
|
+
},
|
|
926
938
|
afterSubmit(hash, proposal) {
|
|
927
939
|
if (!attempt)
|
|
928
940
|
throw new ReviewLineError("Hold the write before the wallet opens.");
|
|
@@ -1112,7 +1124,7 @@ export function createWriteHold(options = {}) {
|
|
|
1112
1124
|
throw new ReviewLineError("Held since the app's read.");
|
|
1113
1125
|
reserve();
|
|
1114
1126
|
adopted = true;
|
|
1115
|
-
}, recovery.rejected, Promise.resolve(), hooks.generations());
|
|
1127
|
+
}, recovery.rejected, Promise.resolve(), hooks.generations(), () => recovery.assertHeld());
|
|
1116
1128
|
await released;
|
|
1117
1129
|
}
|
|
1118
1130
|
catch (error) {
|
|
@@ -1133,6 +1145,7 @@ export function createWriteHold(options = {}) {
|
|
|
1133
1145
|
const verdict = hash === undefined ? "yes" : await adoptable(hash, client);
|
|
1134
1146
|
if (verdict !== "yes")
|
|
1135
1147
|
return { ...peek(), declined: verdict };
|
|
1148
|
+
await recovery.assertHeld();
|
|
1136
1149
|
reserve();
|
|
1137
1150
|
return hash && client ? inspect(client) : peek();
|
|
1138
1151
|
}, true);
|
|
@@ -1193,12 +1206,15 @@ export function createWriteHold(options = {}) {
|
|
|
1193
1206
|
released(reservation) {
|
|
1194
1207
|
return recovery.released(reservation);
|
|
1195
1208
|
},
|
|
1196
|
-
/**
|
|
1209
|
+
/**
|
|
1210
|
+
* How `reservation` settled, if saved: its latest state, or, once a
|
|
1211
|
+
* later reservation replaced it, its own saved settlement.
|
|
1212
|
+
*/
|
|
1197
1213
|
settlementOf(reservation) {
|
|
1198
1214
|
const now = peek();
|
|
1199
|
-
return now.status === "clear" && now.reservation === reservation
|
|
1215
|
+
return ((now.status === "clear" && now.reservation === reservation
|
|
1200
1216
|
? now.settled
|
|
1201
|
-
: undefined;
|
|
1217
|
+
: undefined) ?? recovery.settledOf(reservation));
|
|
1202
1218
|
},
|
|
1203
1219
|
/**
|
|
1204
1220
|
* The user acknowledged a success the hold settled while they were
|
|
@@ -1496,12 +1512,13 @@ export function createWriteHold(options = {}) {
|
|
|
1496
1512
|
* hold refuses; otherwise the intent reserves, and mirrors itself at each
|
|
1497
1513
|
* legacy key so its readers, older versions included, see it held.
|
|
1498
1514
|
*/
|
|
1499
|
-
async function reserveAcross(ownLock, reserve, unreserve, until, reviewed) {
|
|
1515
|
+
async function reserveAcross(ownLock, reserve, unreserve, until, reviewed, ownHeld) {
|
|
1500
1516
|
const locks = [
|
|
1501
|
-
{ scope: scopeOf(call), take: ownLock },
|
|
1517
|
+
{ scope: scopeOf(call), take: ownLock, held: ownHeld },
|
|
1502
1518
|
...journals.map((journal) => ({
|
|
1503
1519
|
scope: journal.scopeKey,
|
|
1504
1520
|
take: (work) => journal.withLock(work),
|
|
1521
|
+
held: () => journal.assertHeld(),
|
|
1505
1522
|
})),
|
|
1506
1523
|
].sort((a, b) => Number(a.scope > b.scope) - Number(a.scope < b.scope));
|
|
1507
1524
|
const deadline = Date.now() + RESERVE_RETRY_MS;
|
|
@@ -1511,6 +1528,9 @@ export function createWriteHold(options = {}) {
|
|
|
1511
1528
|
* send never reached the wallet.
|
|
1512
1529
|
*/
|
|
1513
1530
|
let unsent;
|
|
1531
|
+
const stillHeld = async () => {
|
|
1532
|
+
await Promise.all(locks.map((lock) => lock.held()));
|
|
1533
|
+
};
|
|
1514
1534
|
for (;;) {
|
|
1515
1535
|
let entered = 0;
|
|
1516
1536
|
let reserved;
|
|
@@ -1521,6 +1541,9 @@ export function createWriteHold(options = {}) {
|
|
|
1521
1541
|
entered += 1;
|
|
1522
1542
|
return acquire(index + 1);
|
|
1523
1543
|
});
|
|
1544
|
+
// Every lock is still this tab's, right before the checks and the
|
|
1545
|
+
// reservation, which nothing then separates.
|
|
1546
|
+
await stillHeld();
|
|
1524
1547
|
const refuse = (held) => new WriteHeldError(noticed({
|
|
1525
1548
|
...ungated(classify(held)),
|
|
1526
1549
|
reservation: held.id,
|
|
@@ -1578,7 +1601,11 @@ export function createWriteHold(options = {}) {
|
|
|
1578
1601
|
holding.then(() => null, (error) => ({ error })),
|
|
1579
1602
|
]);
|
|
1580
1603
|
if (!failed)
|
|
1581
|
-
return {
|
|
1604
|
+
return {
|
|
1605
|
+
released: holding.catch(() => { }),
|
|
1606
|
+
unsent,
|
|
1607
|
+
held: stillHeld,
|
|
1608
|
+
};
|
|
1582
1609
|
// Not reserved: every lock, its own included, is let go before any
|
|
1583
1610
|
// retry; the checks run again each time.
|
|
1584
1611
|
const { error } = failed;
|