@invisi-labs/sdk 1.1.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.
@@ -0,0 +1,20 @@
1
+ import { A as AtomicRecordStore, a as AtomicRecord, T as TransactionalWalletStore, W as WalletRecordCodec } from './store-1zgwa--h.cjs';
2
+ import './state-DHl6j33x.cjs';
3
+ import '@invisi-labs/core';
4
+ import '@invisi-labs/prover';
5
+
6
+ /** Native IndexedDB CAS transactions. Encryption happens outside active IDB transactions. */
7
+ declare class IndexedDBAtomicRecords implements AtomicRecordStore {
8
+ #private;
9
+ constructor(name: string, factory?: IDBFactory);
10
+ read(key: string): Promise<AtomicRecord | undefined>;
11
+ compareAndSwap(key: string, previousRevision: number, next: AtomicRecord): Promise<boolean>;
12
+ close(): Promise<void>;
13
+ }
14
+ declare class IndexedDBWalletStore extends TransactionalWalletStore {
15
+ #private;
16
+ constructor(name: string, codec: WalletRecordCodec, factory?: IDBFactory);
17
+ close(): Promise<void>;
18
+ }
19
+
20
+ export { IndexedDBAtomicRecords, IndexedDBWalletStore };
@@ -0,0 +1,20 @@
1
+ import { A as AtomicRecordStore, a as AtomicRecord, T as TransactionalWalletStore, W as WalletRecordCodec } from './store-Dlol1q1s.js';
2
+ import './state-DHl6j33x.js';
3
+ import '@invisi-labs/core';
4
+ import '@invisi-labs/prover';
5
+
6
+ /** Native IndexedDB CAS transactions. Encryption happens outside active IDB transactions. */
7
+ declare class IndexedDBAtomicRecords implements AtomicRecordStore {
8
+ #private;
9
+ constructor(name: string, factory?: IDBFactory);
10
+ read(key: string): Promise<AtomicRecord | undefined>;
11
+ compareAndSwap(key: string, previousRevision: number, next: AtomicRecord): Promise<boolean>;
12
+ close(): Promise<void>;
13
+ }
14
+ declare class IndexedDBWalletStore extends TransactionalWalletStore {
15
+ #private;
16
+ constructor(name: string, codec: WalletRecordCodec, factory?: IDBFactory);
17
+ close(): Promise<void>;
18
+ }
19
+
20
+ export { IndexedDBAtomicRecords, IndexedDBWalletStore };
@@ -0,0 +1,70 @@
1
+ import {
2
+ TransactionalWalletStore
3
+ } from "./chunk-T246CYQ7.js";
4
+ import "./chunk-NAEEEZMH.js";
5
+
6
+ // src/integrations/indexeddb.ts
7
+ var IndexedDBAtomicRecords = class {
8
+ #database;
9
+ constructor(name, factory = indexedDB) {
10
+ if (!name) throw new Error("IndexedDB database name is required");
11
+ this.#database = new Promise((resolve, reject) => {
12
+ const request = factory.open(name, 1);
13
+ request.onupgradeneeded = () => {
14
+ request.result.createObjectStore("walletRecords");
15
+ };
16
+ request.onsuccess = () => resolve(request.result);
17
+ request.onerror = () => reject(new Error("could not open wallet IndexedDB"));
18
+ request.onblocked = () => reject(new Error("wallet IndexedDB upgrade is blocked"));
19
+ });
20
+ }
21
+ async read(key) {
22
+ const db = await this.#database;
23
+ return new Promise((resolve, reject) => {
24
+ const tx = db.transaction("walletRecords", "readonly"), request = tx.objectStore("walletRecords").get(key);
25
+ let result;
26
+ request.onsuccess = () => {
27
+ const value = request.result;
28
+ if (value) result = { revision: value.revision, data: Uint8Array.from(value.data) };
29
+ };
30
+ tx.oncomplete = () => resolve(result);
31
+ tx.onerror = () => reject(new Error("wallet IndexedDB read failed"));
32
+ tx.onabort = () => reject(new Error("wallet IndexedDB read aborted"));
33
+ });
34
+ }
35
+ async compareAndSwap(key, previousRevision, next) {
36
+ const db = await this.#database;
37
+ return new Promise((resolve, reject) => {
38
+ const tx = db.transaction("walletRecords", "readwrite"), store = tx.objectStore("walletRecords"), request = store.get(key);
39
+ let swapped = false;
40
+ request.onsuccess = () => {
41
+ if ((request.result?.revision ?? 0) === previousRevision) {
42
+ store.put({ revision: next.revision, data: Uint8Array.from(next.data) }, key);
43
+ swapped = true;
44
+ }
45
+ };
46
+ tx.oncomplete = () => resolve(swapped);
47
+ tx.onerror = () => reject(new Error("wallet IndexedDB transaction failed"));
48
+ tx.onabort = () => reject(new Error("wallet IndexedDB transaction aborted"));
49
+ });
50
+ }
51
+ async close() {
52
+ (await this.#database).close();
53
+ }
54
+ };
55
+ var IndexedDBWalletStore = class extends TransactionalWalletStore {
56
+ #records;
57
+ constructor(name, codec, factory) {
58
+ const records = new IndexedDBAtomicRecords(name, factory);
59
+ super(records, codec, { persistent: true });
60
+ this.#records = records;
61
+ }
62
+ close() {
63
+ return this.#records.close();
64
+ }
65
+ };
66
+ export {
67
+ IndexedDBAtomicRecords,
68
+ IndexedDBWalletStore
69
+ };
70
+ //# sourceMappingURL=indexeddb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/integrations/indexeddb.ts"],"sourcesContent":["import {\n TransactionalWalletStore,\n type AtomicRecord,\n type AtomicRecordStore,\n type WalletRecordCodec,\n} from \"../session\";\n/** Native IndexedDB CAS transactions. Encryption happens outside active IDB transactions. */\nexport class IndexedDBAtomicRecords implements AtomicRecordStore {\n readonly #database: Promise<IDBDatabase>;\n constructor(name: string, factory: IDBFactory = indexedDB) {\n if (!name) throw new Error(\"IndexedDB database name is required\");\n this.#database = new Promise((resolve, reject) => {\n const request = factory.open(name, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(\"walletRecords\");\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(new Error(\"could not open wallet IndexedDB\"));\n request.onblocked = () => reject(new Error(\"wallet IndexedDB upgrade is blocked\"));\n });\n }\n async read(key: string): Promise<AtomicRecord | undefined> {\n const db = await this.#database;\n return new Promise((resolve, reject) => {\n const tx = db.transaction(\"walletRecords\", \"readonly\"),\n request = tx.objectStore(\"walletRecords\").get(key);\n let result: AtomicRecord | undefined;\n request.onsuccess = () => {\n const value = request.result as AtomicRecord | undefined;\n if (value) result = { revision: value.revision, data: Uint8Array.from(value.data) };\n };\n tx.oncomplete = () => resolve(result);\n tx.onerror = () => reject(new Error(\"wallet IndexedDB read failed\"));\n tx.onabort = () => reject(new Error(\"wallet IndexedDB read aborted\"));\n });\n }\n async compareAndSwap(\n key: string,\n previousRevision: number,\n next: AtomicRecord\n ): Promise<boolean> {\n const db = await this.#database;\n return new Promise((resolve, reject) => {\n const tx = db.transaction(\"walletRecords\", \"readwrite\"),\n store = tx.objectStore(\"walletRecords\"),\n request = store.get(key);\n let swapped = false;\n request.onsuccess = () => {\n if (\n ((request.result as AtomicRecord | undefined)?.revision ?? 0) ===\n previousRevision\n ) {\n store.put({ revision: next.revision, data: Uint8Array.from(next.data) }, key);\n swapped = true;\n }\n };\n tx.oncomplete = () => resolve(swapped);\n tx.onerror = () => reject(new Error(\"wallet IndexedDB transaction failed\"));\n tx.onabort = () => reject(new Error(\"wallet IndexedDB transaction aborted\"));\n });\n }\n async close(): Promise<void> {\n (await this.#database).close();\n }\n}\nexport class IndexedDBWalletStore extends TransactionalWalletStore {\n readonly #records: IndexedDBAtomicRecords;\n constructor(name: string, codec: WalletRecordCodec, factory?: IDBFactory) {\n const records = new IndexedDBAtomicRecords(name, factory);\n super(records, codec, { persistent: true });\n this.#records = records;\n }\n close(): Promise<void> {\n return this.#records.close();\n }\n}\n"],"mappings":";;;;;;AAOO,IAAM,yBAAN,MAA0D;AAAA,EACpD;AAAA,EACT,YAAY,MAAc,UAAsB,WAAW;AACvD,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,qCAAqC;AAChE,SAAK,YAAY,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC9C,YAAM,UAAU,QAAQ,KAAK,MAAM,CAAC;AACpC,cAAQ,kBAAkB,MAAM;AAC5B,gBAAQ,OAAO,kBAAkB,eAAe;AAAA,MACpD;AACA,cAAQ,YAAY,MAAM,QAAQ,QAAQ,MAAM;AAChD,cAAQ,UAAU,MAAM,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAC3E,cAAQ,YAAY,MAAM,OAAO,IAAI,MAAM,qCAAqC,CAAC;AAAA,IACrF,CAAC;AAAA,EACL;AAAA,EACA,MAAM,KAAK,KAAgD;AACvD,UAAM,KAAK,MAAM,KAAK;AACtB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,KAAK,GAAG,YAAY,iBAAiB,UAAU,GACjD,UAAU,GAAG,YAAY,eAAe,EAAE,IAAI,GAAG;AACrD,UAAI;AACJ,cAAQ,YAAY,MAAM;AACtB,cAAM,QAAQ,QAAQ;AACtB,YAAI,MAAO,UAAS,EAAE,UAAU,MAAM,UAAU,MAAM,WAAW,KAAK,MAAM,IAAI,EAAE;AAAA,MACtF;AACA,SAAG,aAAa,MAAM,QAAQ,MAAM;AACpC,SAAG,UAAU,MAAM,OAAO,IAAI,MAAM,8BAA8B,CAAC;AACnE,SAAG,UAAU,MAAM,OAAO,IAAI,MAAM,+BAA+B,CAAC;AAAA,IACxE,CAAC;AAAA,EACL;AAAA,EACA,MAAM,eACF,KACA,kBACA,MACgB;AAChB,UAAM,KAAK,MAAM,KAAK;AACtB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,KAAK,GAAG,YAAY,iBAAiB,WAAW,GAClD,QAAQ,GAAG,YAAY,eAAe,GACtC,UAAU,MAAM,IAAI,GAAG;AAC3B,UAAI,UAAU;AACd,cAAQ,YAAY,MAAM;AACtB,aACM,QAAQ,QAAqC,YAAY,OAC3D,kBACF;AACE,gBAAM,IAAI,EAAE,UAAU,KAAK,UAAU,MAAM,WAAW,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG;AAC5E,oBAAU;AAAA,QACd;AAAA,MACJ;AACA,SAAG,aAAa,MAAM,QAAQ,OAAO;AACrC,SAAG,UAAU,MAAM,OAAO,IAAI,MAAM,qCAAqC,CAAC;AAC1E,SAAG,UAAU,MAAM,OAAO,IAAI,MAAM,sCAAsC,CAAC;AAAA,IAC/E,CAAC;AAAA,EACL;AAAA,EACA,MAAM,QAAuB;AACzB,KAAC,MAAM,KAAK,WAAW,MAAM;AAAA,EACjC;AACJ;AACO,IAAM,uBAAN,cAAmC,yBAAyB;AAAA,EACtD;AAAA,EACT,YAAY,MAAc,OAA0B,SAAsB;AACtE,UAAM,UAAU,IAAI,uBAAuB,MAAM,OAAO;AACxD,UAAM,SAAS,OAAO,EAAE,YAAY,KAAK,CAAC;AAC1C,SAAK,WAAW;AAAA,EACpB;AAAA,EACA,QAAuB;AACnB,WAAO,KAAK,SAAS,MAAM;AAAA,EAC/B;AACJ;","names":[]}