@bsv/wallet-toolbox 1.6.16 → 1.6.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/wallet-toolbox",
3
- "version": "1.6.16",
3
+ "version": "1.6.17",
4
4
  "description": "BRC100 conforming wallet, wallet storage and wallet signer components",
5
5
  "main": "./out/src/index.js",
6
6
  "types": "./out/src/index.d.ts",
@@ -54,7 +54,7 @@ export class WalletError extends Error implements WalletErrorObject {
54
54
  *
55
55
  */
56
56
  static fromUnknown(err: unknown): WalletError {
57
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ if (err instanceof WalletError) return err
58
58
  let name = 'WERR_UNKNOWN'
59
59
  let message = ''
60
60
  let stack: string | undefined
@@ -15,6 +15,7 @@ import { SingleWriterMultiReaderLock } from './util/SingleWriterMultiReaderLock'
15
15
  import { ChaintracksFsApi } from './Api/ChaintracksFsApi'
16
16
  import { randomBytesBase64, wait } from '../../../utility/utilityHelpers'
17
17
  import { WalletError } from '../../../sdk/WalletError'
18
+ import { CWIStyleWalletManager } from '../../../CWIStyleWalletManager'
18
19
 
19
20
  export class Chaintracks implements ChaintracksManagementApi {
20
21
  static createOptions(chain: Chain): ChaintracksOptions {
@@ -328,6 +329,7 @@ export class Chaintracks implements ChaintracksManagementApi {
328
329
 
329
330
  let done = false
330
331
  for (; !done; ) {
332
+ let bulkSyncError: WalletError | undefined
331
333
  for (const bulk of this.bulkIngestors) {
332
334
  try {
333
335
  const r = await bulk.synchronize(presentHeight, before, newLiveHeaders)
@@ -344,23 +346,30 @@ export class Chaintracks implements ChaintracksManagementApi {
344
346
  done = true
345
347
  break
346
348
  }
347
- } catch (uerr: unknown) {
348
- console.error(uerr)
349
+ } catch (eu: unknown) {
350
+ const e = (bulkSyncError = WalletError.fromUnknown(eu))
351
+ this.log(`bulk sync error: ${e.message}`)
349
352
  }
350
353
  }
354
+ if (!bulkDone && !this.available && bulkSyncError) {
355
+ this.startupError = bulkSyncError
356
+ break
357
+ }
351
358
  if (bulkDone) break
352
359
  }
353
360
 
354
- this.liveHeaders.unshift(...newLiveHeaders)
361
+ if (!this.startupError) {
362
+ this.liveHeaders.unshift(...newLiveHeaders)
355
363
 
356
- added = after.bulk.above(initialRanges.bulk)
364
+ added = after.bulk.above(initialRanges.bulk)
357
365
 
358
- this.log(`syncBulkStorage done
366
+ this.log(`syncBulkStorage done
359
367
  Before sync: bulk ${initialRanges.bulk}, live ${initialRanges.live}
360
368
  After sync: bulk ${after.bulk}, live ${after.live}
361
369
  ${added.length} headers added to bulk storage
362
370
  ${this.liveHeaders.length} headers forwarded to live header storage
363
371
  `)
372
+ }
364
373
  }
365
374
 
366
375
  private async getMissingBlockHeader(hash: string): Promise<BlockHeader | undefined> {
@@ -468,6 +477,7 @@ export class Chaintracks implements ChaintracksManagementApi {
468
477
  else
469
478
  // While still not available, the makeAvailable write lock is held.
470
479
  await this.syncBulkStorageNoLock(presentHeight, before)
480
+ if (this.startupError) throw this.startupError
471
481
  }
472
482
 
473
483
  let count = 0