@permissionless-technologies/upp-sdk 0.5.2 → 0.5.4
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/{chunk-6DCMXFSQ.cjs → chunk-4T5DWZBN.cjs} +217 -4
- package/dist/chunk-4T5DWZBN.cjs.map +1 -0
- package/dist/{chunk-MVSBQMRA.js → chunk-4W7BBQ4H.js} +212 -4
- package/dist/chunk-4W7BBQ4H.js.map +1 -0
- package/dist/chunk-ABVALIIG.js +152 -0
- package/dist/chunk-ABVALIIG.js.map +1 -0
- package/dist/chunk-ARH2SJM3.cjs +155 -0
- package/dist/chunk-ARH2SJM3.cjs.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.js +2 -2
- package/dist/indexer/index.cjs +25 -25
- package/dist/indexer/index.d.cts +6 -0
- package/dist/indexer/index.d.ts +6 -0
- package/dist/indexer/index.js +2 -2
- package/dist/react/index.cjs +3 -3
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +3 -3
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6DCMXFSQ.cjs.map +0 -1
- package/dist/chunk-ERQE57IA.cjs +0 -404
- package/dist/chunk-ERQE57IA.cjs.map +0 -1
- package/dist/chunk-MVSBQMRA.js.map +0 -1
- package/dist/chunk-XV72HNHN.js +0 -399
- package/dist/chunk-XV72HNHN.js.map +0 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/indexer/storage/indexedDB.ts
|
|
4
|
+
var DB_NAME = "upp-indexer";
|
|
5
|
+
var DB_VERSION = 1;
|
|
6
|
+
var STORE_NAME = "keyval";
|
|
7
|
+
var IndexedDBAdapter = class {
|
|
8
|
+
dbPromise = null;
|
|
9
|
+
prefix;
|
|
10
|
+
constructor(prefix = "") {
|
|
11
|
+
this.prefix = prefix;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if IndexedDB is available
|
|
15
|
+
*/
|
|
16
|
+
isAvailable() {
|
|
17
|
+
if (typeof window === "undefined") return false;
|
|
18
|
+
return "indexedDB" in window;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the database instance
|
|
22
|
+
*/
|
|
23
|
+
async getDB() {
|
|
24
|
+
if (!this.isAvailable()) {
|
|
25
|
+
throw new Error("IndexedDB is not available");
|
|
26
|
+
}
|
|
27
|
+
if (this.dbPromise) {
|
|
28
|
+
return this.dbPromise;
|
|
29
|
+
}
|
|
30
|
+
this.dbPromise = new Promise((resolve, reject) => {
|
|
31
|
+
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
32
|
+
request.onerror = () => {
|
|
33
|
+
reject(new Error(`Failed to open IndexedDB: ${request.error?.message}`));
|
|
34
|
+
};
|
|
35
|
+
request.onsuccess = () => {
|
|
36
|
+
resolve(request.result);
|
|
37
|
+
};
|
|
38
|
+
request.onupgradeneeded = (event) => {
|
|
39
|
+
const db = event.target.result;
|
|
40
|
+
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
41
|
+
db.createObjectStore(STORE_NAME);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
return this.dbPromise;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the full key with prefix
|
|
49
|
+
*/
|
|
50
|
+
getKey(key) {
|
|
51
|
+
return this.prefix ? `${this.prefix}:${key}` : key;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get a value by key
|
|
55
|
+
*/
|
|
56
|
+
async get(key) {
|
|
57
|
+
const db = await this.getDB();
|
|
58
|
+
const fullKey = this.getKey(key);
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const transaction = db.transaction(STORE_NAME, "readonly");
|
|
61
|
+
const store = transaction.objectStore(STORE_NAME);
|
|
62
|
+
const request = store.get(fullKey);
|
|
63
|
+
request.onerror = () => {
|
|
64
|
+
reject(new Error(`Failed to get key "${fullKey}": ${request.error?.message}`));
|
|
65
|
+
};
|
|
66
|
+
request.onsuccess = () => {
|
|
67
|
+
resolve(request.result ?? null);
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Set a value
|
|
73
|
+
*/
|
|
74
|
+
async set(key, value) {
|
|
75
|
+
const db = await this.getDB();
|
|
76
|
+
const fullKey = this.getKey(key);
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
const transaction = db.transaction(STORE_NAME, "readwrite");
|
|
79
|
+
const store = transaction.objectStore(STORE_NAME);
|
|
80
|
+
const request = store.put(value, fullKey);
|
|
81
|
+
request.onerror = () => {
|
|
82
|
+
reject(new Error(`Failed to set key "${fullKey}": ${request.error?.message}`));
|
|
83
|
+
};
|
|
84
|
+
request.onsuccess = () => {
|
|
85
|
+
resolve();
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Delete a value
|
|
91
|
+
*/
|
|
92
|
+
async delete(key) {
|
|
93
|
+
const db = await this.getDB();
|
|
94
|
+
const fullKey = this.getKey(key);
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
const transaction = db.transaction(STORE_NAME, "readwrite");
|
|
97
|
+
const store = transaction.objectStore(STORE_NAME);
|
|
98
|
+
const request = store.delete(fullKey);
|
|
99
|
+
request.onerror = () => {
|
|
100
|
+
reject(new Error(`Failed to delete key "${fullKey}": ${request.error?.message}`));
|
|
101
|
+
};
|
|
102
|
+
request.onsuccess = () => {
|
|
103
|
+
resolve();
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Clear all data with this prefix
|
|
109
|
+
*/
|
|
110
|
+
async clear() {
|
|
111
|
+
const db = await this.getDB();
|
|
112
|
+
return new Promise((resolve, reject) => {
|
|
113
|
+
const transaction = db.transaction(STORE_NAME, "readwrite");
|
|
114
|
+
const store = transaction.objectStore(STORE_NAME);
|
|
115
|
+
if (!this.prefix) {
|
|
116
|
+
const request = store.clear();
|
|
117
|
+
request.onerror = () => reject(new Error(`Failed to clear: ${request.error?.message}`));
|
|
118
|
+
request.onsuccess = () => resolve();
|
|
119
|
+
} else {
|
|
120
|
+
const request = store.openCursor();
|
|
121
|
+
const keysToDelete = [];
|
|
122
|
+
request.onerror = () => reject(new Error(`Failed to iterate: ${request.error?.message}`));
|
|
123
|
+
request.onsuccess = (event) => {
|
|
124
|
+
const cursor = event.target.result;
|
|
125
|
+
if (cursor) {
|
|
126
|
+
const key = cursor.key;
|
|
127
|
+
if (typeof key === "string" && key.startsWith(`${this.prefix}:`)) {
|
|
128
|
+
keysToDelete.push(key);
|
|
129
|
+
}
|
|
130
|
+
cursor.continue();
|
|
131
|
+
} else {
|
|
132
|
+
Promise.all(
|
|
133
|
+
keysToDelete.map(
|
|
134
|
+
(k) => new Promise((res, rej) => {
|
|
135
|
+
const deleteReq = store.delete(k);
|
|
136
|
+
deleteReq.onerror = () => rej(deleteReq.error);
|
|
137
|
+
deleteReq.onsuccess = () => res();
|
|
138
|
+
})
|
|
139
|
+
)
|
|
140
|
+
).then(() => resolve()).catch(reject);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
function createIndexedDBAdapter(prefix = "") {
|
|
148
|
+
return new IndexedDBAdapter(prefix);
|
|
149
|
+
}
|
|
150
|
+
var indexedDBAdapter = createIndexedDBAdapter();
|
|
151
|
+
|
|
152
|
+
exports.createIndexedDBAdapter = createIndexedDBAdapter;
|
|
153
|
+
exports.indexedDBAdapter = indexedDBAdapter;
|
|
154
|
+
//# sourceMappingURL=chunk-ARH2SJM3.cjs.map
|
|
155
|
+
//# sourceMappingURL=chunk-ARH2SJM3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/indexer/storage/indexedDB.ts"],"names":[],"mappings":"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","file":"chunk-ARH2SJM3.cjs","sourcesContent":["/**\n * IndexedDB Storage Adapter\n *\n * Provides persistent storage using IndexedDB for browser environments.\n * This is the default and recommended storage adapter for production use.\n *\n * Benefits:\n * - Large capacity (no 5MB limit like localStorage)\n * - Async API (non-blocking)\n * - Supports storing large objects like Merkle trees\n * - Transactional (data integrity)\n */\n\nimport type { StorageAdapter } from '../types.js'\n\nconst DB_NAME = 'upp-indexer'\nconst DB_VERSION = 1\nconst STORE_NAME = 'keyval'\n\n/**\n * IndexedDB storage adapter\n */\nclass IndexedDBAdapter implements StorageAdapter {\n private dbPromise: Promise<IDBDatabase> | null = null\n private prefix: string\n\n constructor(prefix: string = '') {\n this.prefix = prefix\n }\n\n /**\n * Check if IndexedDB is available\n */\n isAvailable(): boolean {\n if (typeof window === 'undefined') return false\n return 'indexedDB' in window\n }\n\n /**\n * Get the database instance\n */\n private async getDB(): Promise<IDBDatabase> {\n if (!this.isAvailable()) {\n throw new Error('IndexedDB is not available')\n }\n\n if (this.dbPromise) {\n return this.dbPromise\n }\n\n this.dbPromise = new Promise((resolve, reject) => {\n const request = indexedDB.open(DB_NAME, DB_VERSION)\n\n request.onerror = () => {\n reject(new Error(`Failed to open IndexedDB: ${request.error?.message}`))\n }\n\n request.onsuccess = () => {\n resolve(request.result)\n }\n\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result\n\n // Create object store if it doesn't exist\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME)\n }\n }\n })\n\n return this.dbPromise\n }\n\n /**\n * Get the full key with prefix\n */\n private getKey(key: string): string {\n return this.prefix ? `${this.prefix}:${key}` : key\n }\n\n /**\n * Get a value by key\n */\n async get<T>(key: string): Promise<T | null> {\n const db = await this.getDB()\n const fullKey = this.getKey(key)\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(STORE_NAME, 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.get(fullKey)\n\n request.onerror = () => {\n reject(new Error(`Failed to get key \"${fullKey}\": ${request.error?.message}`))\n }\n\n request.onsuccess = () => {\n resolve(request.result ?? null)\n }\n })\n }\n\n /**\n * Set a value\n */\n async set<T>(key: string, value: T): Promise<void> {\n const db = await this.getDB()\n const fullKey = this.getKey(key)\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.put(value, fullKey)\n\n request.onerror = () => {\n reject(new Error(`Failed to set key \"${fullKey}\": ${request.error?.message}`))\n }\n\n request.onsuccess = () => {\n resolve()\n }\n })\n }\n\n /**\n * Delete a value\n */\n async delete(key: string): Promise<void> {\n const db = await this.getDB()\n const fullKey = this.getKey(key)\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.delete(fullKey)\n\n request.onerror = () => {\n reject(new Error(`Failed to delete key \"${fullKey}\": ${request.error?.message}`))\n }\n\n request.onsuccess = () => {\n resolve()\n }\n })\n }\n\n /**\n * Clear all data with this prefix\n */\n async clear(): Promise<void> {\n const db = await this.getDB()\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n\n if (!this.prefix) {\n // Clear all if no prefix\n const request = store.clear()\n request.onerror = () => reject(new Error(`Failed to clear: ${request.error?.message}`))\n request.onsuccess = () => resolve()\n } else {\n // Only clear keys with this prefix\n const request = store.openCursor()\n const keysToDelete: IDBValidKey[] = []\n\n request.onerror = () => reject(new Error(`Failed to iterate: ${request.error?.message}`))\n\n request.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest<IDBCursorWithValue>).result\n if (cursor) {\n const key = cursor.key\n if (typeof key === 'string' && key.startsWith(`${this.prefix}:`)) {\n keysToDelete.push(key)\n }\n cursor.continue()\n } else {\n // Delete all matching keys\n Promise.all(\n keysToDelete.map(\n (k) =>\n new Promise<void>((res, rej) => {\n const deleteReq = store.delete(k)\n deleteReq.onerror = () => rej(deleteReq.error)\n deleteReq.onsuccess = () => res()\n })\n )\n )\n .then(() => resolve())\n .catch(reject)\n }\n }\n }\n })\n }\n}\n\n/**\n * Create an IndexedDB storage adapter\n *\n * @param prefix - Optional prefix for keys (useful for multi-account)\n * @returns StorageAdapter instance\n *\n * @example\n * ```ts\n * const storage = createIndexedDBAdapter('account_0x123')\n * await storage.set('notes', myNotes)\n * const notes = await storage.get('notes')\n * ```\n */\nexport function createIndexedDBAdapter(prefix: string = ''): StorageAdapter {\n return new IndexedDBAdapter(prefix)\n}\n\n/**\n * Default IndexedDB adapter instance (no prefix)\n */\nexport const indexedDBAdapter = createIndexedDBAdapter()\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var chunkHB43C26P_cjs = require('./chunk-HB43C26P.cjs');
|
|
4
4
|
var chunkO2SKZZAP_cjs = require('./chunk-O2SKZZAP.cjs');
|
|
5
5
|
var chunkIX7HV5TE_cjs = require('./chunk-IX7HV5TE.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk4T5DWZBN_cjs = require('./chunk-4T5DWZBN.cjs');
|
|
7
7
|
var chunk7BNJV2ZS_cjs = require('./chunk-7BNJV2ZS.cjs');
|
|
8
8
|
var chunkIYRCJAME_cjs = require('./chunk-IYRCJAME.cjs');
|
|
9
9
|
var chunkXVIICZKW_cjs = require('./chunk-XVIICZKW.cjs');
|
|
10
10
|
var chunkVVW5VVY3_cjs = require('./chunk-VVW5VVY3.cjs');
|
|
11
|
-
require('./chunk-
|
|
11
|
+
require('./chunk-ARH2SJM3.cjs');
|
|
12
12
|
var chunkI5EKGD4P_cjs = require('./chunk-I5EKGD4P.cjs');
|
|
13
13
|
var chunkSWTNJPK5_cjs = require('./chunk-SWTNJPK5.cjs');
|
|
14
14
|
var chunkIIUKM5VE_cjs = require('./chunk-IIUKM5VE.cjs');
|
|
@@ -5550,7 +5550,7 @@ Object.defineProperty(exports, "verifyProof", {
|
|
|
5550
5550
|
});
|
|
5551
5551
|
Object.defineProperty(exports, "makeRpcIndexer", {
|
|
5552
5552
|
enumerable: true,
|
|
5553
|
-
get: function () { return
|
|
5553
|
+
get: function () { return chunk4T5DWZBN_cjs.makeRpcIndexer; }
|
|
5554
5554
|
});
|
|
5555
5555
|
Object.defineProperty(exports, "DEFAULT_KEY_DERIVATION_CONFIG", {
|
|
5556
5556
|
enumerable: true,
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { NOTE_VERSION, checkImplementation, createNote, createUPPClient, decryptNote, encryptNote, verifyDeployment } from './chunk-53JACDGZ.js';
|
|
2
2
|
export { buildTransfer, buildUPPTransferCircuitInputs, computeNullifier, formatOutputForContract, getDeployment, getDeploymentOrThrow, getMerkleProofsForNotes, getSupportedChainIds, getTokenAddress, hasDeployment, registerDeployment, syncMerkleTree } from './chunk-DD4NT4D7.js';
|
|
3
3
|
export { ASP_TREE_DEPTH, STATE_TREE_DEPTH, formatProofForContract, generateProof, generateStealthProof, generateUPPProof, getStealthCircuitArtifacts, getUPPCircuitArtifacts, verifyProof } from './chunk-KR4GB6VC.js';
|
|
4
|
-
export { makeRpcIndexer } from './chunk-
|
|
4
|
+
export { makeRpcIndexer } from './chunk-4W7BBQ4H.js';
|
|
5
5
|
export { DEFAULT_KEY_DERIVATION_CONFIG, deriveDualKeysFromSignature, deriveKeysFromSignature, deriveNullifierKey, derivePerNoteKey, derivePerNoteKeyFromKeys, deriveStarkKeysFromSignature, deriveStarkPerNoteKey, deriveStarkPerNoteKeyFromKeys, exportViewingKeysForAudit, getKeyDerivationMessage, getViewingKeyFromExport, validateAuditKeyExport, verifyKeysMatchSignature } from './chunk-DTEAFJG7.js';
|
|
6
6
|
export { ADDRESS_VERSION, DirectAccountAdapter, NoteStore, ProofWorkerManager, RATE_PRECISION, STARK_ADDRESS_VERSION, STARK_STEALTH_ADDRESS_PREFIX, STEALTH_ADDRESS_PREFIX, SWAP_EVENTS_ABI, SWAP_ORDER_CANCELLED_EVENT, SWAP_ORDER_CLAIMED_EVENT, SWAP_ORDER_FILLED_EVENT, SWAP_ORDER_PLACED_EVENT, StorableAccountAdapter, computeCancelKeyHash, computeFillPercentage, computeGiveAmount, computeNoteEncryptionKey, computeRate, computeTakeAmount, computeTotalBuyAmount, createOneTimeKeys, decodeStarkStealthAddress, decodeStealthAddress, detectAddressType, encodeStarkStealthAddress, encodeStealthAddress, filterOrdersByASP, filterOrdersByTokenPair, formatRate, generateCancelSecret, generateStarkStealthAddress, generateStealthAddress, generateUPPProofAsync, getCancelSecret, getOwnOrderIds, isFillerASPAccepted, isOrderActive, isValidStarkStealthAddress, isValidStealthAddress, removeCancelSecret, storeCancelSecret, verifyOwnership } from './chunk-Q6BLTPWV.js';
|
|
7
7
|
export { DEMO_ASP_ID, DEMO_ASP_NAME, buildASPTree, computeMultiOriginASPRoot, computeSingleOriginASPRoot, createDemoASPRoot, generateASPProof, generateMultiOriginASPProof, generateSingleOriginASPProof, verifyASPProof } from './chunk-6IEYWJVS.js';
|
|
8
8
|
export { CIRCUIT_CDN_BASE, CIRCUIT_VERSION, CircuitArtifactCache } from './chunk-2BSIUEPO.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-ABVALIIG.js';
|
|
10
10
|
export { addPoints, computeSharedSecret, deriveDecryptionViewingKey, deriveEncryptionViewingKey, getBasePoint, getSubOrder, isOnCurve, mulPointScalar, packPoint, pointToTuple, privateToPublic, tupleToPoint } from './chunk-EHGH6TAW.js';
|
|
11
11
|
export { STARK_AMOUNT_SCALE, STARK_ASP_TREE_DEPTH, STARK_STATE_TREE_DEPTH, addressToM31, buildStarkTransferWitness, buildStarkWithdrawWitness, computeTransferPublicInputsSeed, computeWithdrawPublicInputsSeed, isStarkAligned, packM31Digest, scaleAmountForStark, splitSecretToM31Limbs, truncateToM31 } from './chunk-7T4CUE6E.js';
|
|
12
12
|
export { MAX_TREE_DEPTH, MerkleTree, buildMerkleTree, getMerkleProof, verifyMerkleProof } from './chunk-GPF72JFR.js';
|
package/dist/indexer/index.cjs
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk4T5DWZBN_cjs = require('../chunk-4T5DWZBN.cjs');
|
|
4
|
+
var chunkARH2SJM3_cjs = require('../chunk-ARH2SJM3.cjs');
|
|
5
5
|
require('../chunk-G7VZBCD6.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "computeSearchTag", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunk4T5DWZBN_cjs.computeSearchTag; }
|
|
12
12
|
});
|
|
13
|
-
Object.defineProperty(exports, "
|
|
13
|
+
Object.defineProperty(exports, "createAutoAdapter", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunk4T5DWZBN_cjs.createAutoAdapter; }
|
|
16
16
|
});
|
|
17
|
-
Object.defineProperty(exports, "
|
|
17
|
+
Object.defineProperty(exports, "createLocalStorageAdapter", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunk4T5DWZBN_cjs.createLocalStorageAdapter; }
|
|
20
20
|
});
|
|
21
|
-
Object.defineProperty(exports, "
|
|
21
|
+
Object.defineProperty(exports, "createMemoryAdapter", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunk4T5DWZBN_cjs.createMemoryAdapter; }
|
|
24
24
|
});
|
|
25
|
-
Object.defineProperty(exports, "
|
|
25
|
+
Object.defineProperty(exports, "localStorageAdapter", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunk4T5DWZBN_cjs.localStorageAdapter; }
|
|
28
28
|
});
|
|
29
|
-
Object.defineProperty(exports, "
|
|
29
|
+
Object.defineProperty(exports, "makeRpcIndexer", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunk4T5DWZBN_cjs.makeRpcIndexer; }
|
|
32
32
|
});
|
|
33
|
-
Object.defineProperty(exports, "
|
|
33
|
+
Object.defineProperty(exports, "matchesSearchTag", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunk4T5DWZBN_cjs.matchesSearchTag; }
|
|
36
36
|
});
|
|
37
|
-
Object.defineProperty(exports, "
|
|
37
|
+
Object.defineProperty(exports, "memoryAdapter", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunk4T5DWZBN_cjs.memoryAdapter; }
|
|
40
40
|
});
|
|
41
|
-
Object.defineProperty(exports, "
|
|
41
|
+
Object.defineProperty(exports, "tryDecryptNote", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunk4T5DWZBN_cjs.tryDecryptNote; }
|
|
44
44
|
});
|
|
45
|
-
Object.defineProperty(exports, "
|
|
45
|
+
Object.defineProperty(exports, "unpackNoteData", {
|
|
46
46
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunk4T5DWZBN_cjs.unpackNoteData; }
|
|
48
48
|
});
|
|
49
|
-
Object.defineProperty(exports, "
|
|
49
|
+
Object.defineProperty(exports, "createIndexedDBAdapter", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkARH2SJM3_cjs.createIndexedDBAdapter; }
|
|
52
52
|
});
|
|
53
|
-
Object.defineProperty(exports, "
|
|
53
|
+
Object.defineProperty(exports, "indexedDBAdapter", {
|
|
54
54
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunkARH2SJM3_cjs.indexedDBAdapter; }
|
|
56
56
|
});
|
|
57
57
|
//# sourceMappingURL=index.cjs.map
|
|
58
58
|
//# sourceMappingURL=index.cjs.map
|
package/dist/indexer/index.d.cts
CHANGED
package/dist/indexer/index.d.ts
CHANGED
package/dist/indexer/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { computeSearchTag, makeRpcIndexer, matchesSearchTag, tryDecryptNote, unpackNoteData } from '../chunk-
|
|
2
|
-
export {
|
|
1
|
+
export { computeSearchTag, createAutoAdapter, createLocalStorageAdapter, createMemoryAdapter, localStorageAdapter, makeRpcIndexer, matchesSearchTag, memoryAdapter, tryDecryptNote, unpackNoteData } from '../chunk-4W7BBQ4H.js';
|
|
2
|
+
export { createIndexedDBAdapter, indexedDBAdapter } from '../chunk-ABVALIIG.js';
|
|
3
3
|
import '../chunk-Z6ZWNWWR.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chunkIYRCJAME_cjs = require('../chunk-IYRCJAME.cjs');
|
|
4
4
|
var chunkXVIICZKW_cjs = require('../chunk-XVIICZKW.cjs');
|
|
5
5
|
var chunkVVW5VVY3_cjs = require('../chunk-VVW5VVY3.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkARH2SJM3_cjs = require('../chunk-ARH2SJM3.cjs');
|
|
7
7
|
require('../chunk-UFEDJJSH.cjs');
|
|
8
8
|
var chunkHEHXSV47_cjs = require('../chunk-HEHXSV47.cjs');
|
|
9
9
|
var chunkG7VZBCD6_cjs = require('../chunk-G7VZBCD6.cjs');
|
|
@@ -107,7 +107,7 @@ function UPPAccountProvider({
|
|
|
107
107
|
accountAdapterRef.current = null;
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
-
const accountStorage =
|
|
110
|
+
const accountStorage = chunkARH2SJM3_cjs.createIndexedDBAdapter(`upp_account`);
|
|
111
111
|
const adapter = new chunkIYRCJAME_cjs.StorableAccountAdapter(accountStorage, ethAddress);
|
|
112
112
|
accountAdapterRef.current = adapter;
|
|
113
113
|
const legacyKey = getStorageKey(ethAddress);
|
|
@@ -148,7 +148,7 @@ function UPPAccountProvider({
|
|
|
148
148
|
if (account.starkKeys) setStarkMasterKeys(account.starkKeys);
|
|
149
149
|
const ownerHashHex2 = viem.toHex(account.keys.ownerHash, { size: 32 });
|
|
150
150
|
const storagePrefix = `upp_${chainId}_${ownerHashHex2.slice(0, 12)}`;
|
|
151
|
-
const noteStorage =
|
|
151
|
+
const noteStorage = chunkARH2SJM3_cjs.createIndexedDBAdapter(storagePrefix);
|
|
152
152
|
const store = new chunkIYRCJAME_cjs.NoteStore(noteStorage, "notes");
|
|
153
153
|
noteStoreRef.current = store;
|
|
154
154
|
noteStoreUnsub = store.onChange(() => {
|