@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.
Files changed (41) hide show
  1. package/dist/api/balance/index.js +13 -4
  2. package/dist/api/broadcast/index.js +7 -2
  3. package/dist/api/constants.js +4 -1
  4. package/dist/api/index.js +6 -6
  5. package/dist/api/inscriptions/index.js +20 -7
  6. package/dist/api/locks/index.js +19 -6
  7. package/dist/api/ordinals/index.d.ts +2 -2
  8. package/dist/api/ordinals/index.js +138 -40
  9. package/dist/api/payments/index.js +27 -8
  10. package/dist/api/signing/index.js +4 -2
  11. package/dist/api/sweep/index.d.ts +2 -2
  12. package/dist/api/sweep/index.js +55 -21
  13. package/dist/api/tokens/index.js +47 -15
  14. package/dist/backup/FileBackupProvider.d.ts +1 -1
  15. package/dist/backup/FileRestoreReader.d.ts +1 -1
  16. package/dist/cwi/chrome.d.ts +1 -1
  17. package/dist/cwi/chrome.js +10 -6
  18. package/dist/cwi/event.d.ts +1 -1
  19. package/dist/cwi/event.js +3 -3
  20. package/dist/cwi/factory.d.ts +2 -2
  21. package/dist/cwi/factory.js +1 -1
  22. package/dist/cwi/index.d.ts +4 -4
  23. package/dist/cwi/index.js +4 -4
  24. package/dist/indexers/Bsv21Indexer.js +1 -1
  25. package/dist/indexers/InscriptionIndexer.js +2 -1
  26. package/dist/indexers/MapIndexer.js +3 -1
  27. package/dist/indexers/OriginIndexer.js +4 -4
  28. package/dist/indexers/Outpoint.d.ts +1 -0
  29. package/dist/indexers/Outpoint.js +8 -0
  30. package/dist/services/OneSatServices.d.ts +1 -1
  31. package/dist/services/OneSatServices.js +1 -1
  32. package/dist/services/client/ChaintracksClient.js +2 -1
  33. package/dist/services/client/OverlayClient.d.ts +1 -1
  34. package/dist/sync/AddressManager.js +1 -1
  35. package/dist/sync/SyncManager.d.ts +2 -2
  36. package/dist/sync/SyncManager.js +27 -12
  37. package/dist/sync/index.d.ts +1 -1
  38. package/dist/sync/index.js +1 -1
  39. package/dist/wallet/factory.d.ts +2 -0
  40. package/dist/wallet/factory.js +6 -2
  41. package/package.json +6 -6
@@ -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 { Outpoint } from "../indexers/Outpoint";
12
+ import { Bsv21Indexer } from "../indexers/Bsv21Indexer";
13
13
  import { FundIndexer } from "../indexers/FundIndexer";
14
14
  import { InscriptionIndexer } from "../indexers/InscriptionIndexer";
15
- import { Bsv21Indexer } from "../indexers/Bsv21Indexer";
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.get(event).add(listener);
45
+ this.listeners
46
+ .get(event)
47
+ .add(listener);
46
48
  }
47
49
  off(event, listener) {
48
- this.listeners.get(event)?.delete(listener);
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", { outpoint: output.outpoint, score: output.score });
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.get(event).add(listener);
162
+ this.listeners
163
+ .get(event)
164
+ .add(listener);
156
165
  }
157
166
  off(event, listener) {
158
- this.listeners.get(event)?.delete(listener);
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.get(event).add(listener);
468
+ this.listeners
469
+ .get(event)
470
+ .add(listener);
458
471
  }
459
472
  off(event, listener) {
460
- this.listeners.get(event)?.delete(listener);
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));
@@ -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";
@@ -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";
@@ -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) */
@@ -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
- remoteClient = new StorageClient(underlyingWallet, config.remoteStorageUrl);
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 => ({ name: s.storageName, key: s.storageIdentityKey.slice(0, 16) + "..." })),
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.57",
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.6",
42
- "@bsv/sdk": "^1.10.1",
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.20-idb-fix.30"
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.20-idb-fix.30",
58
- "@bsv/wallet-toolbox-mobile": "npm:@bopen-io/wallet-toolbox-mobile@^1.7.20-idb-fix.30",
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"