@bananapus/nana-sdk-core 2.39.0 → 2.41.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.map +1 -1
- package/dist/cjs/review/heldWrite.js +80 -46
- package/dist/cjs/review/heldWrite.js.map +1 -1
- package/dist/cjs/review/intents.d.ts +45 -0
- package/dist/cjs/review/intents.d.ts.map +1 -1
- package/dist/cjs/review/intents.js +57 -0
- package/dist/cjs/review/intents.js.map +1 -1
- package/dist/cjs/review/react/HeldWritesNotice.d.ts +11 -0
- package/dist/cjs/review/react/HeldWritesNotice.d.ts.map +1 -0
- package/dist/cjs/review/react/HeldWritesNotice.js +22 -0
- package/dist/cjs/review/react/HeldWritesNotice.js.map +1 -0
- package/dist/cjs/review/react/heldView.d.ts +25 -0
- package/dist/cjs/review/react/heldView.d.ts.map +1 -0
- package/dist/cjs/review/react/heldView.js +29 -0
- package/dist/cjs/review/react/heldView.js.map +1 -0
- package/dist/cjs/review/react/index.d.ts +6 -0
- package/dist/cjs/review/react/index.d.ts.map +1 -0
- package/dist/cjs/review/react/index.js +22 -0
- package/dist/cjs/review/react/index.js.map +1 -0
- package/dist/cjs/review/react/useHeldSend.d.ts +30 -0
- package/dist/cjs/review/react/useHeldSend.d.ts.map +1 -0
- package/dist/cjs/review/react/useHeldSend.js +80 -0
- package/dist/cjs/review/react/useHeldSend.js.map +1 -0
- package/dist/cjs/review/react/useHeldWrite.d.ts +51 -0
- package/dist/cjs/review/react/useHeldWrite.d.ts.map +1 -0
- package/dist/cjs/review/react/useHeldWrite.js +94 -0
- package/dist/cjs/review/react/useHeldWrite.js.map +1 -0
- package/dist/cjs/review/react/useHeldWrites.d.ts +40 -0
- package/dist/cjs/review/react/useHeldWrites.d.ts.map +1 -0
- package/dist/cjs/review/react/useHeldWrites.js +95 -0
- package/dist/cjs/review/react/useHeldWrites.js.map +1 -0
- package/dist/cjs/review/react/useSavedAttempt.d.ts +54 -0
- package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -0
- package/dist/cjs/review/react/useSavedAttempt.js +105 -0
- package/dist/cjs/review/react/useSavedAttempt.js.map +1 -0
- package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
- package/dist/cjs/review/writeRecovery.js +3 -1
- package/dist/cjs/review/writeRecovery.js.map +1 -1
- package/dist/esm/review/heldWrite.d.ts.map +1 -1
- package/dist/esm/review/heldWrite.js +80 -46
- package/dist/esm/review/heldWrite.js.map +1 -1
- package/dist/esm/review/intents.d.ts +45 -0
- package/dist/esm/review/intents.d.ts.map +1 -1
- package/dist/esm/review/intents.js +52 -0
- package/dist/esm/review/intents.js.map +1 -1
- package/dist/esm/review/react/HeldWritesNotice.d.ts +11 -0
- package/dist/esm/review/react/HeldWritesNotice.d.ts.map +1 -0
- package/dist/esm/review/react/HeldWritesNotice.js +19 -0
- package/dist/esm/review/react/HeldWritesNotice.js.map +1 -0
- package/dist/esm/review/react/heldView.d.ts +25 -0
- package/dist/esm/review/react/heldView.d.ts.map +1 -0
- package/dist/esm/review/react/heldView.js +22 -0
- package/dist/esm/review/react/heldView.js.map +1 -0
- package/dist/esm/review/react/index.d.ts +6 -0
- package/dist/esm/review/react/index.d.ts.map +1 -0
- package/dist/esm/review/react/index.js +6 -0
- package/dist/esm/review/react/index.js.map +1 -0
- package/dist/esm/review/react/useHeldSend.d.ts +30 -0
- package/dist/esm/review/react/useHeldSend.d.ts.map +1 -0
- package/dist/esm/review/react/useHeldSend.js +77 -0
- package/dist/esm/review/react/useHeldSend.js.map +1 -0
- package/dist/esm/review/react/useHeldWrite.d.ts +51 -0
- package/dist/esm/review/react/useHeldWrite.d.ts.map +1 -0
- package/dist/esm/review/react/useHeldWrite.js +91 -0
- package/dist/esm/review/react/useHeldWrite.js.map +1 -0
- package/dist/esm/review/react/useHeldWrites.d.ts +40 -0
- package/dist/esm/review/react/useHeldWrites.d.ts.map +1 -0
- package/dist/esm/review/react/useHeldWrites.js +91 -0
- package/dist/esm/review/react/useHeldWrites.js.map +1 -0
- package/dist/esm/review/react/useSavedAttempt.d.ts +54 -0
- package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -0
- package/dist/esm/review/react/useSavedAttempt.js +102 -0
- package/dist/esm/review/react/useSavedAttempt.js.map +1 -0
- package/dist/esm/review/writeRecovery.d.ts.map +1 -1
- package/dist/esm/review/writeRecovery.js +3 -1
- package/dist/esm/review/writeRecovery.js.map +1 -1
- package/package.json +16 -2
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useHeldSend = useHeldSend;
|
|
4
|
+
const index_js_1 = require("../index.js");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const heldView_js_1 = require("./heldView.js");
|
|
7
|
+
/**
|
|
8
|
+
* Held sends whose call is known only at send time (a generic contract write
|
|
9
|
+
* or Safe transaction): each send runs through the held-write view of its
|
|
10
|
+
* intent or exact call, made once and reused, and the result shows the
|
|
11
|
+
* current send's line, notice and exit as {@link useHeldWrite} does. Only
|
|
12
|
+
* the current send's view runs and reaches the app's callbacks.
|
|
13
|
+
*/
|
|
14
|
+
function useHeldSend(options) {
|
|
15
|
+
const { hold, client, pollMs, follow } = options;
|
|
16
|
+
const latest = (0, react_1.useRef)(options);
|
|
17
|
+
latest.current = options;
|
|
18
|
+
/** This hold and client's views, by their send's identity. */
|
|
19
|
+
const views = (0, react_1.useMemo)(() => new Map(), [hold, client, pollMs, follow]);
|
|
20
|
+
const [current, setCurrent] = (0, react_1.useState)();
|
|
21
|
+
// A view of an earlier hold or client shows nothing.
|
|
22
|
+
const held = current?.views === views ? current.held : undefined;
|
|
23
|
+
const view = held?.view;
|
|
24
|
+
/**
|
|
25
|
+
* The one view running, started at its send: a replaced view is stopped
|
|
26
|
+
* then, so only the current send's view ever tells the app anything, and
|
|
27
|
+
* a success it never told stays pending for the gate.
|
|
28
|
+
*/
|
|
29
|
+
const running = (0, react_1.useRef)(undefined);
|
|
30
|
+
(0, react_1.useEffect)(() => () => {
|
|
31
|
+
if (running.current?.views !== views)
|
|
32
|
+
return;
|
|
33
|
+
running.current.stop();
|
|
34
|
+
running.current = undefined;
|
|
35
|
+
}, [views]);
|
|
36
|
+
const shown = (0, react_1.useSyncExternalStore)(view?.subscribe ?? heldView_js_1.none, view?.get ?? heldView_js_1.idle, view?.get ?? heldView_js_1.idle);
|
|
37
|
+
return {
|
|
38
|
+
...shown,
|
|
39
|
+
...(0, heldView_js_1.actionsOf)(shown, view),
|
|
40
|
+
send: (input, run) => {
|
|
41
|
+
if (!client)
|
|
42
|
+
return Promise.reject(new Error("Connect a wallet and build the call before sending."));
|
|
43
|
+
const { chainId, account, safe = false, namespace, legacy, call } = input;
|
|
44
|
+
const key = (0, heldView_js_1.keyOf)([
|
|
45
|
+
chainId,
|
|
46
|
+
account.toLowerCase(),
|
|
47
|
+
safe,
|
|
48
|
+
namespace ?? null,
|
|
49
|
+
call,
|
|
50
|
+
legacy ?? null,
|
|
51
|
+
]);
|
|
52
|
+
let next = views.get(key);
|
|
53
|
+
if (!next) {
|
|
54
|
+
const handle = hold.open({ chainId, account, safe, call, ...(namespace ? { namespace } : {}) }, legacy ? { legacy } : undefined);
|
|
55
|
+
const created = (0, index_js_1.createHeldWriteView)(handle, {
|
|
56
|
+
client,
|
|
57
|
+
pollMs,
|
|
58
|
+
...(follow === undefined ? {} : { follow }),
|
|
59
|
+
// A stopped view tells no settlement; a late release is dropped here.
|
|
60
|
+
onSettled: (settled, receipt) => latest.current.onSettled?.(settled, receipt),
|
|
61
|
+
onReleased: (by) => {
|
|
62
|
+
if (running.current?.view === created)
|
|
63
|
+
latest.current.onReleased?.(by);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
next = { handle, view: created };
|
|
67
|
+
views.set(key, next);
|
|
68
|
+
}
|
|
69
|
+
if (running.current?.view !== next.view) {
|
|
70
|
+
running.current?.stop();
|
|
71
|
+
running.current = { views, view: next.view, stop: next.view.start() };
|
|
72
|
+
}
|
|
73
|
+
setCurrent({ views, held: next });
|
|
74
|
+
return next.view.send(run);
|
|
75
|
+
},
|
|
76
|
+
check: () => (view ? view.check() : Promise.resolve(heldView_js_1.IDLE)),
|
|
77
|
+
handle: held?.handle,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=useHeldSend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeldSend.js","sourceRoot":"","sources":["../../../../src/review/react/useHeldSend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type HeldWriteEvidence, type HeldWriteView, type ReviewedWriteRecoveryInput, type WriteHold, type WriteHoldClient, type WriteHoldGate, type WriteHoldHandle, type WriteHoldSettled, type WriteHoldState } from "../index.js";
|
|
2
|
+
import type { Address, Hex, TransactionReceipt } from "viem";
|
|
3
|
+
import { type HeldViewActions } from "./heldView.js";
|
|
4
|
+
export type UseHeldWriteOptions = {
|
|
5
|
+
/** The app's one write hold controller (createWriteHold()). */
|
|
6
|
+
hold: WriteHold;
|
|
7
|
+
chainId: number;
|
|
8
|
+
/** The account that sends: the wallet, or the Safe. */
|
|
9
|
+
account: Address;
|
|
10
|
+
/** Whether `account` is a Safe whose writes are proposals. */
|
|
11
|
+
safe?: boolean;
|
|
12
|
+
/** The action's intent key (payIntent and the other builders). */
|
|
13
|
+
namespace?: string;
|
|
14
|
+
/** Keys an earlier version held this write under. */
|
|
15
|
+
legacy?: Parameters<WriteHold["open"]>[1] extends infer O ? O extends {
|
|
16
|
+
legacy?: infer L;
|
|
17
|
+
} ? L : never : never;
|
|
18
|
+
/** The reviewed call, when built; without one, the hold is found by `namespace`. */
|
|
19
|
+
call?: ReviewedWriteRecoveryInput["call"];
|
|
20
|
+
/** Reads the account's chain. */
|
|
21
|
+
client: WriteHoldClient | undefined;
|
|
22
|
+
/** A previous deploy's saved evidence of this write: adopted before any send. */
|
|
23
|
+
adopt?: () => Promise<HeldWriteEvidence | null | undefined>;
|
|
24
|
+
onAdopted?: (state: WriteHoldState) => void;
|
|
25
|
+
/** The hold settled what this view saw held, on authenticated evidence: once. */
|
|
26
|
+
onSettled?: (settled: WriteHoldSettled, receipt: TransactionReceipt | null) => void;
|
|
27
|
+
/** Released: by the user's exit (reopen the review), or by another window. */
|
|
28
|
+
onReleased?: (by: "user" | "other-tab") => void;
|
|
29
|
+
/** How often a held write is asked again (15 s to 60 s, 30 s by default). */
|
|
30
|
+
pollMs?: number;
|
|
31
|
+
};
|
|
32
|
+
export type UseHeldWriteResult = HeldWriteView & HeldViewActions & {
|
|
33
|
+
/** Send under the hold, once any adoption is done. */
|
|
34
|
+
send: (run: (gate: WriteHoldGate) => Promise<Hex>) => Promise<Hex>;
|
|
35
|
+
/** Ask the chain now. */
|
|
36
|
+
check: () => Promise<HeldWriteView>;
|
|
37
|
+
/** The hold handle, for anything else. */
|
|
38
|
+
handle: WriteHoldHandle | undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* One held write, the one way every app runs it: its send under the hold,
|
|
42
|
+
* the watch, the shared follower of its transaction or Safe proposal, its
|
|
43
|
+
* one line, its exit and the adoption of a previous deploy's record.
|
|
44
|
+
*
|
|
45
|
+
* The exit ("I checked my wallet") only releases the hold: `onReleased("user")`
|
|
46
|
+
* is where the app reopens its review, so a resend always shows the values it
|
|
47
|
+
* sends. A release by another window is neutral (`releasedBy: "other-tab"`),
|
|
48
|
+
* and `onSettled` fires only for a settlement of what this view saw held.
|
|
49
|
+
*/
|
|
50
|
+
export declare function useHeldWrite(options: UseHeldWriteOptions): UseHeldWriteResult;
|
|
51
|
+
//# sourceMappingURL=useHeldWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeldWrite.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useHeldWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,KAAK,0BAA0B,EAC/B,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC7D,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAQvB,MAAM,MAAM,mBAAmB,GAAG;IAChC,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACrD,CAAC,SAAS;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,GAC5B,CAAC,GACD,KAAK,GACP,KAAK,CAAC;IACV,oFAAoF;IACpF,IAAI,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC1C,iCAAiC;IACjC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,iFAAiF;IACjF,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,GAAG,IAAI,KAC/B,IAAI,CAAC;IACV,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAC5C,eAAe,GAAG;IAChB,sDAAsD;IACtD,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnE,yBAAyB;IACzB,KAAK,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,0CAA0C;IAC1C,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;CACrC,CAAC;AAEJ;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA2F7E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useHeldWrite = useHeldWrite;
|
|
4
|
+
const index_js_1 = require("../index.js");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const heldView_js_1 = require("./heldView.js");
|
|
7
|
+
/** A call stand-in for a hold found by its intent alone, before any call is built. */
|
|
8
|
+
const NO_CALL = {
|
|
9
|
+
to: "0x0000000000000000000000000000000000000000",
|
|
10
|
+
data: "0x",
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* One held write, the one way every app runs it: its send under the hold,
|
|
14
|
+
* the watch, the shared follower of its transaction or Safe proposal, its
|
|
15
|
+
* one line, its exit and the adoption of a previous deploy's record.
|
|
16
|
+
*
|
|
17
|
+
* The exit ("I checked my wallet") only releases the hold: `onReleased("user")`
|
|
18
|
+
* is where the app reopens its review, so a resend always shows the values it
|
|
19
|
+
* sends. A release by another window is neutral (`releasedBy: "other-tab"`),
|
|
20
|
+
* and `onSettled` fires only for a settlement of what this view saw held.
|
|
21
|
+
*/
|
|
22
|
+
function useHeldWrite(options) {
|
|
23
|
+
const { hold, chainId, account, safe = false, namespace, client, pollMs, } = options;
|
|
24
|
+
const callKey = (0, heldView_js_1.keyOf)(options.call ?? null);
|
|
25
|
+
const legacyKey = (0, heldView_js_1.keyOf)(options.legacy ?? null);
|
|
26
|
+
const latest = (0, react_1.useRef)(options);
|
|
27
|
+
latest.current = options;
|
|
28
|
+
const handle = (0, react_1.useMemo)(() => {
|
|
29
|
+
const call = latest.current.call;
|
|
30
|
+
if (!call && !namespace)
|
|
31
|
+
return undefined;
|
|
32
|
+
const legacy = latest.current.legacy;
|
|
33
|
+
return hold.open({
|
|
34
|
+
chainId,
|
|
35
|
+
account,
|
|
36
|
+
safe,
|
|
37
|
+
call: call ?? NO_CALL,
|
|
38
|
+
...(namespace ? { namespace } : {}),
|
|
39
|
+
}, legacy ? { legacy } : undefined);
|
|
40
|
+
// The call and legacy keys stand for their values.
|
|
41
|
+
}, [hold, chainId, account, safe, namespace, callKey, legacyKey]);
|
|
42
|
+
// Whether the app has a previous deploy's record to adopt: a change makes a
|
|
43
|
+
// new view, whose adoption runs before any send.
|
|
44
|
+
const adopts = !!options.adopt;
|
|
45
|
+
/** The view whose callbacks are the app's now: an earlier one's late answers reach none. */
|
|
46
|
+
const active = (0, react_1.useRef)(undefined);
|
|
47
|
+
const view = (0, react_1.useMemo)(() => {
|
|
48
|
+
if (!handle || !client)
|
|
49
|
+
return undefined;
|
|
50
|
+
/** Only while this view is the app's: an earlier one's late answers reach no callback. */
|
|
51
|
+
const own = (callback) => (...args) => {
|
|
52
|
+
if (active.current === created)
|
|
53
|
+
callback(...args);
|
|
54
|
+
};
|
|
55
|
+
const created = (0, index_js_1.createHeldWriteView)(handle, {
|
|
56
|
+
client,
|
|
57
|
+
pollMs,
|
|
58
|
+
onSettled: own((settled, receipt) => latest.current.onSettled?.(settled, receipt)),
|
|
59
|
+
onReleased: own((by) => latest.current.onReleased?.(by)),
|
|
60
|
+
onAdopted: own((state) => latest.current.onAdopted?.(state)),
|
|
61
|
+
// A view made with a provider: the app's current one (a removed one
|
|
62
|
+
// makes a new view, and this one stops).
|
|
63
|
+
...(adopts ? { adopt: () => latest.current.adopt() } : {}),
|
|
64
|
+
});
|
|
65
|
+
return created;
|
|
66
|
+
}, [handle, client, pollMs, adopts]);
|
|
67
|
+
(0, react_1.useEffect)(() => {
|
|
68
|
+
if (!view)
|
|
69
|
+
return;
|
|
70
|
+
active.current = view;
|
|
71
|
+
const stop = view.start();
|
|
72
|
+
return () => {
|
|
73
|
+
if (active.current === view)
|
|
74
|
+
active.current = undefined;
|
|
75
|
+
stop();
|
|
76
|
+
};
|
|
77
|
+
}, [view]);
|
|
78
|
+
const shown = (0, react_1.useSyncExternalStore)(view?.subscribe ?? heldView_js_1.none, view?.get ?? heldView_js_1.idle, view?.get ?? heldView_js_1.idle);
|
|
79
|
+
return {
|
|
80
|
+
...shown,
|
|
81
|
+
...(0, heldView_js_1.actionsOf)(shown, view),
|
|
82
|
+
send: (run) => {
|
|
83
|
+
if (!view)
|
|
84
|
+
return Promise.reject(new Error("Connect a wallet and build the call before sending."));
|
|
85
|
+
// A record to adopt that this view doesn't know of yet: never send past it.
|
|
86
|
+
if (!!latest.current.adopt !== adopts)
|
|
87
|
+
return Promise.reject(new Error("Saved transactions are still being checked. Try again in a moment."));
|
|
88
|
+
return view.send(run);
|
|
89
|
+
},
|
|
90
|
+
check: () => (view ? view.check() : Promise.resolve(heldView_js_1.IDLE)),
|
|
91
|
+
handle,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=useHeldWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeldWrite.js","sourceRoot":"","sources":["../../../../src/review/react/useHeldWrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type HeldWriteView, type WriteHold, type WriteHoldClient } from "../index.js";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
/** One held write an app-wide notice shows. */
|
|
4
|
+
export type HeldWriteItem = {
|
|
5
|
+
key: string;
|
|
6
|
+
/** What the action is, when the app names it. */
|
|
7
|
+
label?: string;
|
|
8
|
+
view: HeldWriteView;
|
|
9
|
+
/** Release it (the notice's exit): true when released. */
|
|
10
|
+
release: () => Promise<boolean>;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* The holds of a fixed set of actions, found by their intents alone and
|
|
14
|
+
* shown with their lines and exits, whatever the actions' buttons allow now.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useHeldIntents({ hold, chainId, account, client, intents, pollMs, }: {
|
|
17
|
+
hold: WriteHold;
|
|
18
|
+
chainId: number;
|
|
19
|
+
account: Address | undefined;
|
|
20
|
+
client: WriteHoldClient | undefined;
|
|
21
|
+
intents: readonly {
|
|
22
|
+
namespace: string;
|
|
23
|
+
label?: string;
|
|
24
|
+
}[];
|
|
25
|
+
pollMs?: number;
|
|
26
|
+
}): HeldWriteItem[];
|
|
27
|
+
/**
|
|
28
|
+
* Every write held for `account` on `chainId`, whatever action made it
|
|
29
|
+
* (`hold.list`), read again when another window changes one and every poll.
|
|
30
|
+
*/
|
|
31
|
+
export declare function useHeldWrites({ hold, chainId, account, client, label, pollMs, }: {
|
|
32
|
+
hold: WriteHold;
|
|
33
|
+
chainId: number;
|
|
34
|
+
account: Address | undefined;
|
|
35
|
+
client: WriteHoldClient | undefined;
|
|
36
|
+
/** The app's name for a listed write's action, when it knows it. */
|
|
37
|
+
label?: (record: ReturnType<WriteHold["list"]>[number]["record"]) => string | undefined;
|
|
38
|
+
pollMs?: number;
|
|
39
|
+
}): HeldWriteItem[];
|
|
40
|
+
//# sourceMappingURL=useHeldWrites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeldWrites.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useHeldWrites.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAO,MAAM,MAAM,CAAC;AAEzC,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC,CAAC;AAqDF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,GACP,EAAE;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,SAAS;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,aAAa,EAAE,CAqBlB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAe,GAChB,EAAE;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,KAAK,CAAC,EAAE,CACN,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KACpD,MAAM,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,aAAa,EAAE,CA6BlB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useHeldIntents = useHeldIntents;
|
|
4
|
+
exports.useHeldWrites = useHeldWrites;
|
|
5
|
+
const index_js_1 = require("../index.js");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
/** Watch each entry's hold as one held write view; held ones (and fresh results) come back as items. */
|
|
8
|
+
function useHeldViews(entries, client, pollMs) {
|
|
9
|
+
const views = (0, react_1.useMemo)(() => client
|
|
10
|
+
? entries.map((entry) => ({
|
|
11
|
+
entry,
|
|
12
|
+
view: (0, index_js_1.createHeldWriteView)(entry.handle, { client, pollMs }),
|
|
13
|
+
}))
|
|
14
|
+
: [], [entries, client, pollMs]);
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
const stops = views.map(({ view }) => view.start());
|
|
17
|
+
return () => stops.forEach((stop) => stop());
|
|
18
|
+
}, [views]);
|
|
19
|
+
const store = (0, react_1.useMemo)(() => feed(views.map(({ view }) => view)), [views]);
|
|
20
|
+
const shown = (0, react_1.useSyncExternalStore)(store.subscribe, store.get, store.get);
|
|
21
|
+
return views
|
|
22
|
+
.map(({ entry, view }, index) => ({
|
|
23
|
+
key: entry.key,
|
|
24
|
+
...(entry.label ? { label: entry.label } : {}),
|
|
25
|
+
view: shown[index],
|
|
26
|
+
release: view.exit,
|
|
27
|
+
}))
|
|
28
|
+
.filter(({ view }) => view.phase !== "clear");
|
|
29
|
+
}
|
|
30
|
+
/** Several views as one store: a snapshot array that changes when any view does. */
|
|
31
|
+
function feed(views) {
|
|
32
|
+
let snapshot = views.map((view) => view.get());
|
|
33
|
+
return {
|
|
34
|
+
subscribe(listener) {
|
|
35
|
+
const stops = views.map((view) => view.subscribe(() => {
|
|
36
|
+
snapshot = views.map((each) => each.get());
|
|
37
|
+
listener();
|
|
38
|
+
}));
|
|
39
|
+
return () => stops.forEach((stop) => stop());
|
|
40
|
+
},
|
|
41
|
+
get: () => snapshot,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The holds of a fixed set of actions, found by their intents alone and
|
|
46
|
+
* shown with their lines and exits, whatever the actions' buttons allow now.
|
|
47
|
+
*/
|
|
48
|
+
function useHeldIntents({ hold, chainId, account, client, intents, pollMs, }) {
|
|
49
|
+
const intentsKey = JSON.stringify(intents);
|
|
50
|
+
const entries = (0, react_1.useMemo)(() => account
|
|
51
|
+
? intents.map(({ namespace, label }) => ({
|
|
52
|
+
key: namespace,
|
|
53
|
+
label,
|
|
54
|
+
handle: hold.open({
|
|
55
|
+
chainId,
|
|
56
|
+
account,
|
|
57
|
+
safe: false,
|
|
58
|
+
namespace,
|
|
59
|
+
call: { to: account, data: "0x" },
|
|
60
|
+
}),
|
|
61
|
+
}))
|
|
62
|
+
: [],
|
|
63
|
+
// The intents key stands for the intents.
|
|
64
|
+
[hold, chainId, account, intentsKey]);
|
|
65
|
+
return useHeldViews(entries, client, pollMs);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Every write held for `account` on `chainId`, whatever action made it
|
|
69
|
+
* (`hold.list`), read again when another window changes one and every poll.
|
|
70
|
+
*/
|
|
71
|
+
function useHeldWrites({ hold, chainId, account, client, label, pollMs = 30_000, }) {
|
|
72
|
+
const [generation, setGeneration] = (0, react_1.useState)(0);
|
|
73
|
+
(0, react_1.useEffect)(() => {
|
|
74
|
+
const again = () => setGeneration((value) => value + 1);
|
|
75
|
+
globalThis.addEventListener?.("storage", again);
|
|
76
|
+
const timer = setInterval(again, pollMs);
|
|
77
|
+
return () => {
|
|
78
|
+
globalThis.removeEventListener?.("storage", again);
|
|
79
|
+
clearInterval(timer);
|
|
80
|
+
};
|
|
81
|
+
}, [pollMs]);
|
|
82
|
+
const listed = (0, react_1.useMemo)(() => (account ? hold.list({ account, chainId }) : []), [hold, account, chainId, generation]);
|
|
83
|
+
const listedKey = listed
|
|
84
|
+
.map(({ key, record }) => `${key}:${record.id}`)
|
|
85
|
+
.join("|");
|
|
86
|
+
const entries = (0, react_1.useMemo)(() => listed.map(({ key, record, handle }) => ({
|
|
87
|
+
key,
|
|
88
|
+
label: label?.(record),
|
|
89
|
+
handle,
|
|
90
|
+
})),
|
|
91
|
+
// The listed key stands for the list.
|
|
92
|
+
[listedKey]);
|
|
93
|
+
return useHeldViews(entries, client, pollMs);
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=useHeldWrites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeldWrites.js","sourceRoot":"","sources":["../../../../src/review/react/useHeldWrites.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type SavedAttempt, type SavedAttemptOutcome, type SavedAttemptRecovery, type SavedAttemptRetirement, type WriteHoldClient } from "../index.js";
|
|
2
|
+
export type UseSavedAttemptOptions<T> = {
|
|
3
|
+
/** The app's one saved-attempt recovery (createSavedAttemptRecovery()). */
|
|
4
|
+
recovery: SavedAttemptRecovery;
|
|
5
|
+
/** The saved attempt; none while nothing is saved. */
|
|
6
|
+
attempt: SavedAttempt<T> | null | undefined;
|
|
7
|
+
/** Reads the attempt's chain. */
|
|
8
|
+
client: WriteHoldClient | undefined;
|
|
9
|
+
/** The check action's next step: "I checked it. <next>." ("Review it again" by default). */
|
|
10
|
+
checkNext?: string;
|
|
11
|
+
};
|
|
12
|
+
/** What a retirement returned: whether it took, and whether it outlives this tab. */
|
|
13
|
+
type Retired = Awaited<ReturnType<SavedAttemptRecovery["retire"]>>;
|
|
14
|
+
export type UseSavedAttemptResult<T> = {
|
|
15
|
+
/** How recovery ended; null until it has, or with no attempt. */
|
|
16
|
+
outcome: SavedAttemptOutcome<T> | null;
|
|
17
|
+
recovering: boolean;
|
|
18
|
+
/** Recover again now: also "Check again" on a success whose details are unavailable. */
|
|
19
|
+
recover: () => Promise<SavedAttemptOutcome<T> | null>;
|
|
20
|
+
/** On `check`: the one explicit action, which retires the attempt for every tab and reload. */
|
|
21
|
+
checkAction: {
|
|
22
|
+
line: string;
|
|
23
|
+
warning: string;
|
|
24
|
+
label: string;
|
|
25
|
+
run: () => Promise<Retired>;
|
|
26
|
+
} | null;
|
|
27
|
+
/**
|
|
28
|
+
* Only after the check action came back `reason: "unreadable"` (the browser
|
|
29
|
+
* has storage it can't read): the warned exit, "I checked my wallet.
|
|
30
|
+
* Continue anyway", which retires in this tab alone if storage still can't
|
|
31
|
+
* be read. Never a first option.
|
|
32
|
+
*/
|
|
33
|
+
unreadableAction: {
|
|
34
|
+
line: string;
|
|
35
|
+
label: string;
|
|
36
|
+
run: () => Promise<Retired>;
|
|
37
|
+
} | null;
|
|
38
|
+
/**
|
|
39
|
+
* Retire after the user's exit or a followed settlement; recovers again.
|
|
40
|
+
* Bound to the attempt it was rendered for: called after that attempt (or
|
|
41
|
+
* its recovery or client) changed, it refuses before anything is saved.
|
|
42
|
+
*/
|
|
43
|
+
retire: (reason: SavedAttemptRetirement) => Promise<Retired>;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* One saved attempt's recovery, the one way every app runs it: recovered
|
|
47
|
+
* when it (or the client) appears, before the app prepares any new send, with
|
|
48
|
+
* the check action ready on `check`. Every answer and callback belongs to the
|
|
49
|
+
* attempt, recovery and client it started with: an earlier one's, or an older
|
|
50
|
+
* request's, never reaches the current one.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useSavedAttempt<T>(options: UseSavedAttemptOptions<T>): UseSavedAttemptResult<T>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=useSavedAttempt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSavedAttempt.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useSavedAttempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAUrB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,2EAA2E;IAC3E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,sDAAsD;IACtD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iCAAiC;IACjC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qFAAqF;AACrF,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,iEAAiE;IACjE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,OAAO,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,+FAA+F;IAC/F,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;;OAKG;IACH,gBAAgB,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D,CAAC;AASF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAoG1B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSavedAttempt = useSavedAttempt;
|
|
4
|
+
const index_js_1 = require("../index.js");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const keyOf = (attempt) => attempt
|
|
7
|
+
? JSON.stringify({ ...attempt, authenticate: undefined }, (_, value) => typeof value === "bigint" ? value.toString() : value)
|
|
8
|
+
: null;
|
|
9
|
+
/**
|
|
10
|
+
* One saved attempt's recovery, the one way every app runs it: recovered
|
|
11
|
+
* when it (or the client) appears, before the app prepares any new send, with
|
|
12
|
+
* the check action ready on `check`. Every answer and callback belongs to the
|
|
13
|
+
* attempt, recovery and client it started with: an earlier one's, or an older
|
|
14
|
+
* request's, never reaches the current one.
|
|
15
|
+
*/
|
|
16
|
+
function useSavedAttempt(options) {
|
|
17
|
+
const { recovery, client, checkNext } = options;
|
|
18
|
+
const key = keyOf(options.attempt);
|
|
19
|
+
const attempt = options.attempt;
|
|
20
|
+
/** The attempt as last rendered: the same saved fields, with the app's newest callbacks. */
|
|
21
|
+
const latest = (0, react_1.useRef)(attempt);
|
|
22
|
+
latest.current = attempt;
|
|
23
|
+
/** One lifecycle per attempt, recovery and client, with its latest request. */
|
|
24
|
+
const lifecycle = (0, react_1.useMemo)(() => ({ attempt, recovery, client, request: 0 }),
|
|
25
|
+
// The key stands for the attempt.
|
|
26
|
+
[key, recovery, client]);
|
|
27
|
+
/** Whether `of` is the mounted hook's lifecycle now. */
|
|
28
|
+
const current = (of) => mounted.current && rendered.current === of;
|
|
29
|
+
/**
|
|
30
|
+
* The lifecycle last rendered: set during render, so a callback of an
|
|
31
|
+
* earlier one is refused from the next commit's first layout effect on. A
|
|
32
|
+
* render React then discards leaves the shown callbacks refused (fail
|
|
33
|
+
* closed) until the next commit.
|
|
34
|
+
*/
|
|
35
|
+
const rendered = (0, react_1.useRef)(undefined);
|
|
36
|
+
rendered.current = lifecycle;
|
|
37
|
+
/** Whether the hook is mounted: no callback or answer acts after unmount. */
|
|
38
|
+
const mounted = (0, react_1.useRef)(false);
|
|
39
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
40
|
+
mounted.current = true;
|
|
41
|
+
return () => {
|
|
42
|
+
mounted.current = false;
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
const [shown, setShown] = (0, react_1.useState)({ outcome: null, recovering: false });
|
|
46
|
+
/** The lifecycle whose check action last found storage unreadable. */
|
|
47
|
+
const [unreadable, setUnreadable] = (0, react_1.useState)();
|
|
48
|
+
const recover = (0, react_1.useCallback)(async () => {
|
|
49
|
+
const { recovery, client } = lifecycle;
|
|
50
|
+
const attempt = latest.current;
|
|
51
|
+
if (!attempt || !client || !current(lifecycle))
|
|
52
|
+
return null;
|
|
53
|
+
const request = ++lifecycle.request;
|
|
54
|
+
setShown((now) => ({
|
|
55
|
+
of: lifecycle,
|
|
56
|
+
outcome: now.of === lifecycle ? now.outcome : null,
|
|
57
|
+
recovering: true,
|
|
58
|
+
}));
|
|
59
|
+
const outcome = await recovery.recover(attempt, client);
|
|
60
|
+
// Only the latest request of the mounted lifecycle shows.
|
|
61
|
+
if (!current(lifecycle) || lifecycle.request !== request)
|
|
62
|
+
return null;
|
|
63
|
+
setShown({ of: lifecycle, outcome, recovering: false });
|
|
64
|
+
return outcome;
|
|
65
|
+
}, [lifecycle]);
|
|
66
|
+
(0, react_1.useEffect)(() => {
|
|
67
|
+
void recover();
|
|
68
|
+
}, [recover]);
|
|
69
|
+
const retire = (0, react_1.useCallback)(async (reason) => {
|
|
70
|
+
const { recovery } = lifecycle;
|
|
71
|
+
const attempt = latest.current;
|
|
72
|
+
if (!attempt || !current(lifecycle))
|
|
73
|
+
return { retired: false };
|
|
74
|
+
const retired = await recovery.retire(attempt, reason);
|
|
75
|
+
if (!current(lifecycle))
|
|
76
|
+
return retired;
|
|
77
|
+
if (!retired.retired && retired.reason === "unreadable")
|
|
78
|
+
setUnreadable(lifecycle);
|
|
79
|
+
await recover();
|
|
80
|
+
return retired;
|
|
81
|
+
}, [lifecycle, recover]);
|
|
82
|
+
const outcome = shown.of === lifecycle ? shown.outcome : null;
|
|
83
|
+
return {
|
|
84
|
+
outcome,
|
|
85
|
+
recovering: shown.of === lifecycle && shown.recovering,
|
|
86
|
+
recover,
|
|
87
|
+
checkAction: outcome?.status === "check"
|
|
88
|
+
? {
|
|
89
|
+
line: outcome.line,
|
|
90
|
+
warning: outcome.warning,
|
|
91
|
+
label: (0, index_js_1.checkedItLabel)(checkNext),
|
|
92
|
+
run: () => retire({ by: "check", outcome }),
|
|
93
|
+
}
|
|
94
|
+
: null,
|
|
95
|
+
unreadableAction: outcome?.status === "check" && unreadable === lifecycle
|
|
96
|
+
? {
|
|
97
|
+
line: index_js_1.SAVED_ATTEMPT_UNREADABLE_LINE,
|
|
98
|
+
label: index_js_1.SAVED_ATTEMPT_CONTINUE_ANYWAY_LABEL,
|
|
99
|
+
run: () => retire({ by: "check", outcome, force: "unreadable" }),
|
|
100
|
+
}
|
|
101
|
+
: null,
|
|
102
|
+
retire,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=useSavedAttempt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSavedAttempt.js","sourceRoot":"","sources":["../../../../src/review/react/useSavedAttempt.ts"],"names":[],"mappings":";;AA+EA,0CAsGC;AArLD,0CASqB;AACrB,iCAOe;AAgDf,MAAM,KAAK,GAAG,CAAC,OAAiD,EAAE,EAAE,CAClE,OAAO;IACL,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACnE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CACrD;IACH,CAAC,CAAC,IAAI,CAAC;AAEX;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,OAAkC;IAElC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,4FAA4F;IAC5F,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,+EAA+E;IAC/E,MAAM,SAAS,GAAG,IAAA,eAAO,EACvB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACjD,kCAAkC;IAClC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CACxB,CAAC;IAEF,wDAAwD;IACxD,MAAM,OAAO,GAAG,CAAC,EAAa,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,EAAE,CAAC;IAC9E;;;;;OAKG;IACH,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAwB,SAAS,CAAC,CAAC;IAC1D,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7B,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC9B,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAI/B,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,sEAAsE;IACtE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,GAAyB,CAAC;IAEtE,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,MAAM,OAAO,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;QACpC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjB,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAClD,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,0DAA0D;QAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACtE,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,KAAK,OAAO,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,IAAA,mBAAW,EACxB,KAAK,EAAE,MAA8B,EAAoB,EAAE;QACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO,OAAO,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;YACrD,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,CAAC,SAAS,EAAE,OAAO,CAAC,CACrB,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,OAAO;QACL,OAAO;QACP,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU;QACtD,OAAO;QACP,WAAW,EACT,OAAO,EAAE,MAAM,KAAK,OAAO;YACzB,CAAC,CAAC;gBACE,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,IAAA,yBAAc,EAAC,SAAS,CAAC;gBAChC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC5C;YACH,CAAC,CAAC,IAAI;QACV,gBAAgB,EACd,OAAO,EAAE,MAAM,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS;YACrD,CAAC,CAAC;gBACE,IAAI,EAAE,wCAA6B;gBACnC,KAAK,EAAE,8CAAmC;gBAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;aACjE;YACH,CAAC,CAAC,IAAI;QACV,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeRecovery.d.ts","sourceRoot":"","sources":["../../../src/review/writeRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAC;AACd,OAAO,EAKL,eAAe,EACf,0BAA0B,EAC1B,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,0BAA0B,EAC1B,MAAM,CACP,GAAG;IACF,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,iFAAiF;IACjF,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kHAAkH;IAClH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4GAA4G;IAC5G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,GAAG,CAAC;IACV;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,kGAAkG;AAClG,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;AAC3E,KAAK,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAWlD,qHAAqH;AACrH,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,QAAQ,CAAC,IAAI,oCAAoC;IACjD,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,SAAiB,KAAK,EAAE,OAAO,CAAC;gBAEpB,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO;CAOhE;AA2CD,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAqF7D;AAqBD,4FAA4F;AAC5F,OAAO,EAAE,QAAQ,IAAI,gCAAgC,EAAE,CAAC;AA6CxD,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,+FAA+F;IAC/F,OAAO,IAAI,OAAO,CAAC;IACnB,sFAAsF;IACtF,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;IAClB,gGAAgG;IAChG,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5C,CAAC;AA+BF;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,GACL,gBAAgB,CA0HlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG;IAC/D,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;CACf,EACD,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,eAAe,CAAA;CAAO,GAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,2BAA2B,CAAA;CAAE,EAAE,CAoCxD;AAeD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,CAAC,EAC9D,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,eAAe,CAAA;CAAO,GAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,2BAA2B,CAAA;CAAE,EAAE,CAgCxD;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,0BAA0B,EAC1B,SAAS,GAAG,SAAS,CACtB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,eAAe,CAAA;CAAO,GAC1C,2BAA2B,GAAG,IAAI,CASpC;AA+CD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,2BAA2B,EACnC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAIT;AAgID;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAa5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,0BAA0B,EACjC,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACR;gBAuEW,2BAA2B,GAAG,IAAI;IAkMjD,wEAAwE;;IAExE;;;;;OAKG;yBAEY,0BAA0B,CAAC,MAAM,CAAC,aACpC,0BAA0B,YAC5B;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,2BAA2B;oBAuEtB,GAAG,aACC,2BAA2B,GAAG,SAAS,GAChD,2BAA2B;oBArNX,IAAI;sBAtDA,2BAA2B,KAAG,IAAI;IAgRzD;;;;OAIG;mBAEO,2BAA2B,MAC/B,MAAM,GACT,2BAA2B;IAsB9B;;;;OAIG;wBACiB,MAAM,GAAG,SAAS;IAYtC,gEAAgE;iBACnD,MAAM,GAAG,SAAS;IAY/B;;;OAGG;yBACkB,MAAM,GAAG,SAAS;IAgBvC;;;;;OAKG;sBACe,IAAI;IActB;;;OAGG;2BACoB,MAAM,GAAG,SAAS;IAYzC;;;;;OAKG;0BAES,2BAA2B,cACzB,uBAAuB,GAClC,IAAI;IAgBP;;;OAGG;gCACyB,uBAAuB,GAAG,IAAI;IAiB1D;;;;OAIG;eACQ,uBAAuB,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"writeRecovery.d.ts","sourceRoot":"","sources":["../../../src/review/writeRecovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1136,7 +1136,9 @@ function createBrowserWriteRecovery(input, options = {}) {
|
|
|
1136
1136
|
? {
|
|
1137
1137
|
result: saved.result,
|
|
1138
1138
|
hash: saved.hash,
|
|
1139
|
-
|
|
1139
|
+
// Saved before 2.39 (a latest marker with no time): the user
|
|
1140
|
+
// saw it then, so it reads as acknowledged.
|
|
1141
|
+
...(saved.acknowledged === true || typeof latest.at !== "number"
|
|
1140
1142
|
? { acknowledged: true }
|
|
1141
1143
|
: {}),
|
|
1142
1144
|
}
|