@1sat/wallet-toolbox 0.0.57 → 0.0.59
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/api/balance/index.js +13 -4
- package/dist/api/broadcast/index.js +7 -2
- package/dist/api/constants.js +4 -1
- package/dist/api/index.js +6 -6
- package/dist/api/inscriptions/index.js +20 -7
- package/dist/api/locks/index.js +19 -6
- package/dist/api/ordinals/index.d.ts +2 -2
- package/dist/api/ordinals/index.js +138 -40
- package/dist/api/payments/index.js +27 -8
- package/dist/api/signing/index.js +4 -2
- package/dist/api/sweep/index.d.ts +2 -2
- package/dist/api/sweep/index.js +55 -21
- package/dist/api/tokens/index.js +47 -15
- package/dist/backup/FileBackupProvider.d.ts +1 -1
- package/dist/backup/FileRestoreReader.d.ts +1 -1
- package/dist/cwi/chrome.d.ts +1 -1
- package/dist/cwi/chrome.js +10 -6
- package/dist/cwi/event.d.ts +1 -1
- package/dist/cwi/event.js +3 -3
- package/dist/cwi/factory.d.ts +2 -2
- package/dist/cwi/factory.js +1 -1
- package/dist/cwi/index.d.ts +4 -4
- package/dist/cwi/index.js +4 -4
- package/dist/indexers/Bsv21Indexer.js +1 -1
- package/dist/indexers/InscriptionIndexer.js +2 -1
- package/dist/indexers/MapIndexer.js +3 -1
- package/dist/indexers/OriginIndexer.js +4 -4
- package/dist/indexers/Outpoint.d.ts +1 -0
- package/dist/indexers/Outpoint.js +8 -0
- package/dist/services/OneSatServices.d.ts +1 -1
- package/dist/services/OneSatServices.js +1 -1
- package/dist/services/client/ChaintracksClient.js +2 -1
- package/dist/services/client/OverlayClient.d.ts +1 -1
- package/dist/sync/AddressManager.js +1 -1
- package/dist/sync/SyncManager.d.ts +2 -2
- package/dist/sync/SyncManager.js +27 -12
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/wallet/factory.d.ts +2 -0
- package/dist/wallet/factory.js +6 -2
- package/package.json +6 -6
package/dist/sync/SyncManager.js
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
* in Chrome extension service workers due to their ephemeral nature.
|
|
10
10
|
*/
|
|
11
11
|
import { Beef } from "@bsv/sdk";
|
|
12
|
-
import {
|
|
12
|
+
import { Bsv21Indexer } from "../indexers/Bsv21Indexer";
|
|
13
13
|
import { FundIndexer } from "../indexers/FundIndexer";
|
|
14
14
|
import { InscriptionIndexer } from "../indexers/InscriptionIndexer";
|
|
15
|
-
import {
|
|
16
|
-
import { OriginIndexer } from "../indexers/OriginIndexer";
|
|
15
|
+
import { MapIndexer } from "../indexers/MapIndexer";
|
|
17
16
|
import { OpNSIndexer } from "../indexers/OpNSIndexer";
|
|
17
|
+
import { OriginIndexer } from "../indexers/OriginIndexer";
|
|
18
|
+
import { Outpoint } from "../indexers/Outpoint";
|
|
18
19
|
import { SigmaIndexer } from "../indexers/SigmaIndexer";
|
|
19
|
-
import { MapIndexer } from "../indexers/MapIndexer";
|
|
20
20
|
/** Reorg-safe depth - only update lastQueuedScore for outputs this many blocks deep */
|
|
21
21
|
const REORG_SAFE_DEPTH = 6;
|
|
22
22
|
/** Default batch size for queue processing */
|
|
@@ -42,10 +42,14 @@ export class SyncFetcher {
|
|
|
42
42
|
if (!this.listeners.has(event)) {
|
|
43
43
|
this.listeners.set(event, new Set());
|
|
44
44
|
}
|
|
45
|
-
this.listeners
|
|
45
|
+
this.listeners
|
|
46
|
+
.get(event)
|
|
47
|
+
.add(listener);
|
|
46
48
|
}
|
|
47
49
|
off(event, listener) {
|
|
48
|
-
this.listeners
|
|
50
|
+
this.listeners
|
|
51
|
+
.get(event)
|
|
52
|
+
?.delete(listener);
|
|
49
53
|
}
|
|
50
54
|
emit(event, data) {
|
|
51
55
|
this.listeners.get(event)?.forEach((listener) => listener(data));
|
|
@@ -73,7 +77,10 @@ export class SyncFetcher {
|
|
|
73
77
|
this.unsubscribeStream = this.services.owner.sync(addresses, async (output) => {
|
|
74
78
|
await this.handleSyncOutput(output, currentHeight);
|
|
75
79
|
queuedCount++;
|
|
76
|
-
this.emit("fetch:queued", {
|
|
80
|
+
this.emit("fetch:queued", {
|
|
81
|
+
outpoint: output.outpoint,
|
|
82
|
+
score: output.score,
|
|
83
|
+
});
|
|
77
84
|
}, fromScore, () => {
|
|
78
85
|
// Stream complete
|
|
79
86
|
this.unsubscribeStream = null;
|
|
@@ -152,10 +159,14 @@ export class SyncProcessor {
|
|
|
152
159
|
if (!this.listeners.has(event)) {
|
|
153
160
|
this.listeners.set(event, new Set());
|
|
154
161
|
}
|
|
155
|
-
this.listeners
|
|
162
|
+
this.listeners
|
|
163
|
+
.get(event)
|
|
164
|
+
.add(listener);
|
|
156
165
|
}
|
|
157
166
|
off(event, listener) {
|
|
158
|
-
this.listeners
|
|
167
|
+
this.listeners
|
|
168
|
+
.get(event)
|
|
169
|
+
?.delete(listener);
|
|
159
170
|
}
|
|
160
171
|
emit(event, data) {
|
|
161
172
|
this.listeners.get(event)?.forEach((listener) => listener(data));
|
|
@@ -225,7 +236,7 @@ export class SyncProcessor {
|
|
|
225
236
|
const spendMap = new Map();
|
|
226
237
|
for (const item of items) {
|
|
227
238
|
if (item.spendTxid) {
|
|
228
|
-
const vout = parseInt(item.outpoint.split("_")[1], 10);
|
|
239
|
+
const vout = Number.parseInt(item.outpoint.split("_")[1], 10);
|
|
229
240
|
spendMap.set(vout, item.spendTxid);
|
|
230
241
|
}
|
|
231
242
|
}
|
|
@@ -454,10 +465,14 @@ export class SyncManager {
|
|
|
454
465
|
if (!this.listeners.has(event)) {
|
|
455
466
|
this.listeners.set(event, new Set());
|
|
456
467
|
}
|
|
457
|
-
this.listeners
|
|
468
|
+
this.listeners
|
|
469
|
+
.get(event)
|
|
470
|
+
.add(listener);
|
|
458
471
|
}
|
|
459
472
|
off(event, listener) {
|
|
460
|
-
this.listeners
|
|
473
|
+
this.listeners
|
|
474
|
+
.get(event)
|
|
475
|
+
?.delete(listener);
|
|
461
476
|
}
|
|
462
477
|
emit(event, data) {
|
|
463
478
|
this.listeners.get(event)?.forEach((listener) => listener(data));
|
package/dist/sync/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./types";
|
|
2
2
|
export { IndexedDbSyncQueue } from "./IndexedDbSyncQueue";
|
|
3
3
|
export { SqliteSyncQueue } from "./SqliteSyncQueue";
|
|
4
|
-
export { AddressManager, YOURS_PREFIX, BRC29_PROTOCOL_ID } from "./AddressManager";
|
|
4
|
+
export { AddressManager, YOURS_PREFIX, BRC29_PROTOCOL_ID, } from "./AddressManager";
|
|
5
5
|
export type { AddressDerivation } from "./AddressManager";
|
|
6
6
|
export { SyncFetcher, SyncProcessor, SyncManager } from "./SyncManager";
|
|
7
7
|
export type { SyncFetcherOptions, SyncFetcherEvents, SyncProcessorOptions, SyncProcessorEvents, SyncManagerOptions, SyncEvents, } from "./SyncManager";
|
package/dist/sync/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./types";
|
|
2
2
|
export { IndexedDbSyncQueue } from "./IndexedDbSyncQueue";
|
|
3
3
|
export { SqliteSyncQueue } from "./SqliteSyncQueue";
|
|
4
|
-
export { AddressManager, YOURS_PREFIX, BRC29_PROTOCOL_ID } from "./AddressManager";
|
|
4
|
+
export { AddressManager, YOURS_PREFIX, BRC29_PROTOCOL_ID, } from "./AddressManager";
|
|
5
5
|
export { SyncFetcher, SyncProcessor, SyncManager } from "./SyncManager";
|
package/dist/wallet/factory.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export interface WebWalletConfig {
|
|
|
28
28
|
};
|
|
29
29
|
/** Remote storage URL. If provided, attempts to connect for cloud backup. */
|
|
30
30
|
remoteStorageUrl?: string;
|
|
31
|
+
/** Device ID for sync isolation. Each device should have a unique ID to prevent sync corruption. */
|
|
32
|
+
deviceId?: string;
|
|
31
33
|
/** Callback when a transaction is broadcasted (called after remote sync if connected) */
|
|
32
34
|
onTransactionBroadcasted?: (txid: string) => void;
|
|
33
35
|
/** Callback when a transaction is proven (called after remote sync if connected) */
|
package/dist/wallet/factory.js
CHANGED
|
@@ -89,7 +89,8 @@ export async function createWebWallet(config) {
|
|
|
89
89
|
try {
|
|
90
90
|
// Create StorageClient with the REAL wallet (not a temp wallet)
|
|
91
91
|
// StorageClient captures the wallet at construction for signing requests
|
|
92
|
-
|
|
92
|
+
// deviceId isolates sync state per device to prevent ID mapping corruption
|
|
93
|
+
remoteClient = new StorageClient(underlyingWallet, config.remoteStorageUrl, config.deviceId);
|
|
93
94
|
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error("Remote storage connection timeout")), DEFAULT_REMOTE_STORAGE_TIMEOUT));
|
|
94
95
|
await Promise.race([remoteClient.makeAvailable(), timeoutPromise]);
|
|
95
96
|
// Add remote storage to the existing storage manager using public API
|
|
@@ -108,7 +109,10 @@ export async function createWebWallet(config) {
|
|
|
108
109
|
backups: storage.getBackupStores(),
|
|
109
110
|
conflictingActives: storage.getConflictingStores(),
|
|
110
111
|
isActiveEnabled: storage.isActiveEnabled,
|
|
111
|
-
allStores: stores.map(s => ({
|
|
112
|
+
allStores: stores.map((s) => ({
|
|
113
|
+
name: s.storageName,
|
|
114
|
+
key: s.storageIdentityKey.slice(0, 16) + "...",
|
|
115
|
+
})),
|
|
112
116
|
});
|
|
113
117
|
// 7. Handle conflicting actives or sync to backups
|
|
114
118
|
const conflictingStores = storage.getConflictingStores();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1sat/wallet-toolbox",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.59",
|
|
4
4
|
"description": "BSV wallet library extending @bsv/wallet-toolbox with 1Sat Ordinals protocol support",
|
|
5
5
|
"author": "1Sat Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@1sat/wallet-toolbox": "0.0.52",
|
|
41
|
-
"@bopen-io/templates": "^1.1.
|
|
42
|
-
"@bsv/sdk": "^1.10.
|
|
41
|
+
"@bopen-io/templates": "^1.1.7",
|
|
42
|
+
"@bsv/sdk": "^1.10.2",
|
|
43
43
|
"@msgpack/msgpack": "^3.1.3",
|
|
44
44
|
"buffer": "^6.0.3",
|
|
45
45
|
"fflate": "^0.8.2"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@bsv/wallet-toolbox-mobile": "npm:@bopen-io/wallet-toolbox-mobile@^1.7.
|
|
48
|
+
"@bsv/wallet-toolbox-mobile": "npm:@bopen-io/wallet-toolbox-mobile@^1.7.22-idb-fix.1"
|
|
49
49
|
},
|
|
50
50
|
"peerDependenciesMeta": {
|
|
51
51
|
"@bsv/wallet-toolbox-mobile": {
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@biomejs/biome": "^1.9.4",
|
|
57
|
-
"@bsv/wallet-toolbox": "npm:@bopen-io/wallet-toolbox@^1.7.
|
|
58
|
-
"@bsv/wallet-toolbox-mobile": "npm:@bopen-io/wallet-toolbox-mobile@^1.7.
|
|
57
|
+
"@bsv/wallet-toolbox": "npm:@bopen-io/wallet-toolbox@^1.7.22-idb-fix.1",
|
|
58
|
+
"@bsv/wallet-toolbox-mobile": "npm:@bopen-io/wallet-toolbox-mobile@^1.7.22-idb-fix.1",
|
|
59
59
|
"@types/bun": "^1.3.4",
|
|
60
60
|
"@types/chrome": "^0.1.32",
|
|
61
61
|
"typescript": "^5.9.3"
|