@ghostlytools/cli 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.md +10 -7
  2. package/dist/assets/bark_ffi_wasm_bg-EY2uc0Bx.js.map +1 -1
  3. package/dist/assets/bitcoindevkit_bg-B-iLWrmX.js.map +1 -1
  4. package/dist/assets/fileBytes-Br_MpeNT.js +123 -0
  5. package/dist/assets/fileBytes-Br_MpeNT.js.map +1 -0
  6. package/dist/assets/{fileBytes-CLv0gryb.js → fileBytes-CpP9Vj7s.js} +2 -2
  7. package/dist/assets/{fileBytes-CLv0gryb.js.map → fileBytes-CpP9Vj7s.js.map} +1 -1
  8. package/dist/assets/{fileBytesIdb-CKCtzMTy.js → fileBytesIdb-vubSXPoO.js} +3 -2
  9. package/dist/assets/{fileBytesIdb-CKCtzMTy.js.map → fileBytesIdb-vubSXPoO.js.map} +1 -1
  10. package/dist/assets/{fileBytesOpfs-By55XVTI.js → fileBytesOpfs-6iSa6u2K.js} +20 -8
  11. package/dist/assets/fileBytesOpfs-6iSa6u2K.js.map +1 -0
  12. package/dist/assets/{hyperdhtRelay-_rJsllcP.js → hyperdhtRelay-VM9STKLd.js} +3 -3
  13. package/dist/assets/{hyperdhtRelay-_rJsllcP.js.map → hyperdhtRelay-VM9STKLd.js.map} +1 -1
  14. package/dist/assets/idb-DIN_Miwb.js +351 -0
  15. package/dist/assets/idb-DIN_Miwb.js.map +1 -0
  16. package/dist/assets/{mainline-B0mUxYPH.js → mainline-CcO2f8jy.js} +17 -10
  17. package/dist/assets/mainline-CcO2f8jy.js.map +1 -0
  18. package/dist/assets/restoredRows-tVxgyG23.js +79 -0
  19. package/dist/assets/restoredRows-tVxgyG23.js.map +1 -0
  20. package/dist/assets/{server-C-8wbsAX.js → server-BnNXYzR9.js} +2371 -358
  21. package/dist/assets/server-BnNXYzR9.js.map +1 -0
  22. package/dist/assets/src-7sdQpCoi.js +23665 -0
  23. package/dist/assets/src-7sdQpCoi.js.map +1 -0
  24. package/dist/ghostly.mjs +933 -23260
  25. package/dist/ghostly.mjs.map +1 -1
  26. package/package.json +2 -2
  27. package/dist/assets/fileBytesOpfs-By55XVTI.js.map +0 -1
  28. package/dist/assets/mainline-B0mUxYPH.js.map +0 -1
  29. package/dist/assets/server-C-8wbsAX.js.map +0 -1
@@ -0,0 +1,79 @@
1
+ import { n as STORES, s as openDb } from "./idb-DIN_Miwb.js";
2
+ //#region ../browser/src/shared/restoredRows.ts
3
+ /**
4
+ * What a restore changes in the money a backup carries (WISP 05 § Restoring). A bundle holds the wallet as it stood
5
+ * when the backup was made, and the profile it came from may have gone on since: none of it is taken at its word.
6
+ */
7
+ var RESTORED_WALLET_STORES = [
8
+ STORES.proofs,
9
+ STORES.swaps,
10
+ STORES.intents
11
+ ];
12
+ /** One row of `store` as a restore writes it. A row of any other store, or one that is not what it should be, is kept as it is. */
13
+ function restoredWalletRow(store, value) {
14
+ if (!value || typeof value !== "object") return value;
15
+ if (store === STORES.proofs) {
16
+ const proof = value;
17
+ return typeof proof.secret === "string" && !proof.reserved ? {
18
+ ...proof,
19
+ unchecked: true
20
+ } : value;
21
+ }
22
+ if (store === STORES.swaps) return {
23
+ ...value,
24
+ restored: true
25
+ };
26
+ if (store === STORES.intents) {
27
+ const intent = value;
28
+ if (intent.review?.method === "bitcoin" && intent.review.state === "pending") return {
29
+ ...intent,
30
+ review: {
31
+ ...intent.review,
32
+ state: "cancelled"
33
+ }
34
+ };
35
+ return intent.review && [
36
+ "pending",
37
+ "submitted",
38
+ "unknown"
39
+ ].includes(intent.review.state ?? "") ? {
40
+ ...intent,
41
+ review: {
42
+ ...intent.review,
43
+ state: "unknown"
44
+ }
45
+ } : value;
46
+ }
47
+ return value;
48
+ }
49
+ /**
50
+ * The same, for a restore that brought the profile's database back whole (the headless CLI's): every wallet row of
51
+ * this profile's database is rewritten as `restoredWalletRow` says, in one transaction, before the engine reads any.
52
+ * Doing it twice changes nothing more.
53
+ */
54
+ async function markRestoredWallet() {
55
+ const db = await openDb();
56
+ const names = RESTORED_WALLET_STORES.filter((name) => db.objectStoreNames.contains(name));
57
+ if (!names.length) return;
58
+ const tx = db.transaction(names, "readwrite");
59
+ const done = new Promise((resolve, reject) => {
60
+ tx.oncomplete = () => resolve();
61
+ tx.onabort = () => reject(tx.error ?? /* @__PURE__ */ new Error("The restored wallet could not be marked"));
62
+ tx.onerror = () => reject(tx.error ?? /* @__PURE__ */ new Error("The restored wallet could not be marked"));
63
+ });
64
+ for (const name of names) {
65
+ const walk = tx.objectStore(name).openCursor();
66
+ walk.onsuccess = () => {
67
+ const cursor = walk.result;
68
+ if (!cursor) return;
69
+ const next = restoredWalletRow(name, cursor.value);
70
+ if (next !== cursor.value) cursor.update(next);
71
+ cursor.continue();
72
+ };
73
+ }
74
+ return done;
75
+ }
76
+ //#endregion
77
+ export { markRestoredWallet };
78
+
79
+ //# sourceMappingURL=restoredRows-tVxgyG23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoredRows-tVxgyG23.js","names":[],"sources":["../../../browser/src/shared/restoredRows.ts"],"sourcesContent":["import { STORES, openDb } from \"./idb\";\n\n/**\n * What a restore changes in the money a backup carries (WISP 05 § Restoring). A bundle holds the wallet as it stood\n * when the backup was made, and the profile it came from may have gone on since: none of it is taken at its word.\n */\nexport const RESTORED_WALLET_STORES: readonly string[] = [STORES.proofs, STORES.swaps, STORES.intents];\n\n/** One row of `store` as a restore writes it. A row of any other store, or one that is not what it should be, is kept as it is. */\nexport function restoredWalletRow(store: string, value: unknown): unknown {\n if (!value || typeof value !== \"object\") return value;\n if (store === STORES.proofs) {\n // Ecash as it was when the backup was made: what was spent since is found by asking the mint, once the wallet runs.\n const proof = value as { secret?: unknown; reserved?: boolean };\n return typeof proof.secret === \"string\" && !proof.reserved ? { ...proof, unchecked: true } : value;\n }\n // A swap as it stood when the backup was made: what it brings is checked like the copy's ecash.\n if (store === STORES.swaps) return { ...value, restored: true };\n if (store === STORES.intents) {\n // An older copy cannot prove an unfinished attempt was never sent; it may not authorize a new one.\n const intent = value as { review?: { state?: string; method?: string } };\n // An on-chain review never approved stays unapproved: only Approve on this profile could send it, and a copy has none.\n if (intent.review?.method === \"bitcoin\" && intent.review.state === \"pending\") return { ...intent, review: { ...intent.review, state: \"cancelled\" } };\n return intent.review && [\"pending\", \"submitted\", \"unknown\"].includes(intent.review.state ?? \"\") ? { ...intent, review: { ...intent.review, state: \"unknown\" } } : value;\n }\n return value;\n}\n\n/**\n * The same, for a restore that brought the profile's database back whole (the headless CLI's): every wallet row of\n * this profile's database is rewritten as `restoredWalletRow` says, in one transaction, before the engine reads any.\n * Doing it twice changes nothing more.\n */\nexport async function markRestoredWallet(): Promise<void> {\n const db = await openDb();\n const names = RESTORED_WALLET_STORES.filter((name) => db.objectStoreNames.contains(name));\n if (!names.length) return;\n const tx = db.transaction(names, \"readwrite\");\n const done = new Promise<void>((resolve, reject) => {\n tx.oncomplete = () => resolve();\n tx.onabort = () => reject(tx.error ?? new Error(\"The restored wallet could not be marked\"));\n tx.onerror = () => reject(tx.error ?? new Error(\"The restored wallet could not be marked\"));\n });\n for (const name of names) {\n const walk = tx.objectStore(name).openCursor();\n walk.onsuccess = () => {\n const cursor = walk.result;\n if (!cursor) return;\n const next = restoredWalletRow(name, cursor.value);\n if (next !== cursor.value) cursor.update(next);\n cursor.continue();\n };\n }\n return done;\n}\n"],"mappings":";;;;;;AAMA,IAAa,yBAA4C;CAAC,OAAO;CAAQ,OAAO;CAAO,OAAO;AAAO;;AAGrG,SAAgB,kBAAkB,OAAe,OAAyB;CACxE,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU,OAAO;CAChD,IAAI,UAAU,OAAO,QAAQ;EAE3B,MAAM,QAAQ;EACd,OAAO,OAAO,MAAM,WAAW,YAAY,CAAC,MAAM,WAAW;GAAE,GAAG;GAAO,WAAW;EAAK,IAAI;CAC/F;CAEA,IAAI,UAAU,OAAO,OAAO,OAAO;EAAE,GAAG;EAAO,UAAU;CAAK;CAC9D,IAAI,UAAU,OAAO,SAAS;EAE5B,MAAM,SAAS;EAEf,IAAI,OAAO,QAAQ,WAAW,aAAa,OAAO,OAAO,UAAU,WAAW,OAAO;GAAE,GAAG;GAAQ,QAAQ;IAAE,GAAG,OAAO;IAAQ,OAAO;GAAY;EAAE;EACnJ,OAAO,OAAO,UAAU;GAAC;GAAW;GAAa;EAAS,CAAC,CAAC,SAAS,OAAO,OAAO,SAAS,EAAE,IAAI;GAAE,GAAG;GAAQ,QAAQ;IAAE,GAAG,OAAO;IAAQ,OAAO;GAAU;EAAE,IAAI;CACpK;CACA,OAAO;AACT;;;;;;AAOA,eAAsB,qBAAoC;CACxD,MAAM,KAAK,MAAM,OAAO;CACxB,MAAM,QAAQ,uBAAuB,QAAQ,SAAS,GAAG,iBAAiB,SAAS,IAAI,CAAC;CACxF,IAAI,CAAC,MAAM,QAAQ;CACnB,MAAM,KAAK,GAAG,YAAY,OAAO,WAAW;CAC5C,MAAM,OAAO,IAAI,SAAe,SAAS,WAAW;EAClD,GAAG,mBAAmB,QAAQ;EAC9B,GAAG,gBAAgB,OAAO,GAAG,yBAAS,IAAI,MAAM,yCAAyC,CAAC;EAC1F,GAAG,gBAAgB,OAAO,GAAG,yBAAS,IAAI,MAAM,yCAAyC,CAAC;CAC5F,CAAC;CACD,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,CAAC,WAAW;EAC7C,KAAK,kBAAkB;GACrB,MAAM,SAAS,KAAK;GACpB,IAAI,CAAC,QAAQ;GACb,MAAM,OAAO,kBAAkB,MAAM,OAAO,KAAK;GACjD,IAAI,SAAS,OAAO,OAAO,OAAO,OAAO,IAAI;GAC7C,OAAO,SAAS;EAClB;CACF;CACA,OAAO;AACT"}