@bsv/wallet-toolbox 1.6.14 → 1.6.16

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 (25) hide show
  1. package/docs/client.md +123 -93
  2. package/docs/services.md +123 -93
  3. package/docs/wallet.md +123 -93
  4. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -0
  5. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  6. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js +125 -109
  7. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  8. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +16 -4
  9. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  10. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +65 -45
  11. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  12. package/mobile/package-lock.json +2 -2
  13. package/mobile/package.json +1 -1
  14. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -0
  15. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  16. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +125 -109
  17. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  18. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +16 -4
  19. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  20. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +65 -45
  21. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  22. package/out/tsconfig.all.tsbuildinfo +1 -1
  23. package/package.json +1 -1
  24. package/src/services/chaintracker/chaintracks/Chaintracks.ts +124 -109
  25. package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +75 -50
@@ -7,6 +7,7 @@ const utilityHelpers_noBuffer_1 = require("../../../utility/utilityHelpers.noBuf
7
7
  const HeightRange_1 = require("./util/HeightRange");
8
8
  const SingleWriterMultiReaderLock_1 = require("./util/SingleWriterMultiReaderLock");
9
9
  const utilityHelpers_1 = require("../../../utility/utilityHelpers");
10
+ const WalletError_1 = require("../../../sdk/WalletError");
10
11
  class Chaintracks {
11
12
  static createOptions(chain) {
12
13
  return {
@@ -30,6 +31,7 @@ class Chaintracks {
30
31
  this.liveHeaders = [];
31
32
  this.addLiveRecursionLimit = 11;
32
33
  this.available = false;
34
+ this.startupError = null;
33
35
  this.subscriberCallbacksEnabled = false;
34
36
  this.stopMainThread = true;
35
37
  this.lastPresentHeight = 0;
@@ -146,9 +148,11 @@ class Chaintracks {
146
148
  // Start mai loop to shift out liveHeaders...once sync'd, will set `available` true.
147
149
  this.promises.push(this.mainThreadShiftLiveHeaders());
148
150
  // Wait for the main thread to finish initial sync.
149
- while (!this.available) {
151
+ while (!this.available && !this.startupError) {
150
152
  await (0, utilityHelpers_1.wait)(100);
151
153
  }
154
+ if (this.startupError)
155
+ throw this.startupError;
152
156
  });
153
157
  }
154
158
  async startPromises() {
@@ -376,142 +380,154 @@ class Chaintracks {
376
380
  const cdnSyncRepeatMsecs = 24 * 60 * 60 * 1000; // 24 hours
377
381
  const syncCheckRepeatMsecs = 30 * 60 * 1000; // 30 minutes
378
382
  while (!this.stopMainThread) {
379
- // Review the need for bulk sync...
380
- const now = Date.now();
381
- lastSyncCheck = now;
382
- const presentHeight = await this.getPresentHeight();
383
- const before = await this.storage.getAvailableHeightRanges();
384
- // Skip bulk sync if within less than half the recursion limit of present height
385
- let skipBulkSync = !before.live.isEmpty && before.live.maxHeight >= presentHeight - this.addLiveRecursionLimit / 2;
386
- if (skipBulkSync && now - lastSyncCheck > cdnSyncRepeatMsecs) {
387
- // If we haven't re-synced in a long time, do it just to check for a CDN update.
388
- skipBulkSync = false;
389
- }
390
- this.log(`Chaintracks Update Services: Bulk Header Sync Review
383
+ try {
384
+ // Review the need for bulk sync...
385
+ const now = Date.now();
386
+ lastSyncCheck = now;
387
+ const presentHeight = await this.getPresentHeight();
388
+ const before = await this.storage.getAvailableHeightRanges();
389
+ // Skip bulk sync if within less than half the recursion limit of present height
390
+ let skipBulkSync = !before.live.isEmpty && before.live.maxHeight >= presentHeight - this.addLiveRecursionLimit / 2;
391
+ if (skipBulkSync && now - lastSyncCheck > cdnSyncRepeatMsecs) {
392
+ // If we haven't re-synced in a long time, do it just to check for a CDN update.
393
+ skipBulkSync = false;
394
+ }
395
+ this.log(`Chaintracks Update Services: Bulk Header Sync Review
391
396
  presentHeight=${presentHeight} addLiveRecursionLimit=${this.addLiveRecursionLimit}
392
397
  Before synchronize: bulk ${before.bulk}, live ${before.live}
393
398
  ${skipBulkSync ? 'Skipping' : 'Starting'} syncBulkStorage.
394
399
  `);
395
- if (!skipBulkSync) {
396
- // Bring bulk storage up-to-date and (re-)initialize liveHeaders
397
- lastBulkSync = now;
398
- if (this.available)
399
- // Once available, initial write lock is released, take a new one to update bulk storage.
400
- await this.syncBulkStorage(presentHeight, before);
401
- else
402
- // While still not available, the makeAvailable write lock is held.
403
- await this.syncBulkStorageNoLock(presentHeight, before);
404
- }
405
- let count = 0;
406
- let liveHeaderDupes = 0;
407
- let needSyncCheck = false;
408
- for (; !needSyncCheck && !this.stopMainThread;) {
409
- let header = this.liveHeaders.shift();
410
- if (header) {
411
- // Process a "live" block header...
412
- let recursions = this.addLiveRecursionLimit;
413
- for (; !needSyncCheck && !this.stopMainThread;) {
414
- //console.log(`Processing liveHeader: height: ${header.height} hash: ${header.hash} ${new Date().toISOString()}`)
415
- const ihr = await this.addLiveHeader(header);
416
- if (this.invalidInsertHeaderResult(ihr)) {
417
- this.log(`Ignoring liveHeader ${header.height} ${header.hash} due to invalid insert result.`);
418
- needSyncCheck = true;
419
- }
420
- else if (ihr.noPrev) {
421
- // Previous header is unknown, request it by hash from the network and try adding it first...
422
- if (recursions-- <= 0) {
423
- // Ignore this header...
424
- this.log(`Ignoring liveHeader ${header.height} ${header.hash} addLiveRecursionLimit=${this.addLiveRecursionLimit} exceeded.`);
400
+ if (!skipBulkSync) {
401
+ // Bring bulk storage up-to-date and (re-)initialize liveHeaders
402
+ lastBulkSync = now;
403
+ if (this.available)
404
+ // Once available, initial write lock is released, take a new one to update bulk storage.
405
+ await this.syncBulkStorage(presentHeight, before);
406
+ else
407
+ // While still not available, the makeAvailable write lock is held.
408
+ await this.syncBulkStorageNoLock(presentHeight, before);
409
+ }
410
+ let count = 0;
411
+ let liveHeaderDupes = 0;
412
+ let needSyncCheck = false;
413
+ for (; !needSyncCheck && !this.stopMainThread;) {
414
+ let header = this.liveHeaders.shift();
415
+ if (header) {
416
+ // Process a "live" block header...
417
+ let recursions = this.addLiveRecursionLimit;
418
+ for (; !needSyncCheck && !this.stopMainThread;) {
419
+ //console.log(`Processing liveHeader: height: ${header.height} hash: ${header.hash} ${new Date().toISOString()}`)
420
+ const ihr = await this.addLiveHeader(header);
421
+ if (this.invalidInsertHeaderResult(ihr)) {
422
+ this.log(`Ignoring liveHeader ${header.height} ${header.hash} due to invalid insert result.`);
425
423
  needSyncCheck = true;
426
424
  }
427
- else {
428
- const hash = header.previousHash;
429
- const prevHeader = await this.getMissingBlockHeader(hash);
430
- if (!prevHeader) {
431
- this.log(`Ignoring liveHeader ${header.height} ${header.hash} failed to find previous header by hash ${(0, utilityHelpers_noBuffer_1.asString)(hash)}`);
425
+ else if (ihr.noPrev) {
426
+ // Previous header is unknown, request it by hash from the network and try adding it first...
427
+ if (recursions-- <= 0) {
428
+ // Ignore this header...
429
+ this.log(`Ignoring liveHeader ${header.height} ${header.hash} addLiveRecursionLimit=${this.addLiveRecursionLimit} exceeded.`);
432
430
  needSyncCheck = true;
433
431
  }
434
432
  else {
435
- // Switch to trying to add prevHeader, unshifting current header to try it again after prevHeader exists.
436
- this.liveHeaders.unshift(header);
437
- header = prevHeader;
433
+ const hash = header.previousHash;
434
+ const prevHeader = await this.getMissingBlockHeader(hash);
435
+ if (!prevHeader) {
436
+ this.log(`Ignoring liveHeader ${header.height} ${header.hash} failed to find previous header by hash ${(0, utilityHelpers_noBuffer_1.asString)(hash)}`);
437
+ needSyncCheck = true;
438
+ }
439
+ else {
440
+ // Switch to trying to add prevHeader, unshifting current header to try it again after prevHeader exists.
441
+ this.liveHeaders.unshift(header);
442
+ header = prevHeader;
443
+ }
438
444
  }
439
445
  }
440
- }
441
- else {
442
- if (this.subscriberCallbacksEnabled)
443
- this.log(`addLiveHeader ${header.height}${ihr.added ? ' added' : ''}${ihr.dupe ? ' dupe' : ''}${ihr.isActiveTip ? ' isActiveTip' : ''}${ihr.reorgDepth ? ' reorg depth ' + ihr.reorgDepth : ''}${ihr.noPrev ? ' noPrev' : ''}${ihr.noActiveAncestor || ihr.noTip || ihr.badPrev ? ' error' : ''}`);
444
- if (ihr.dupe) {
445
- liveHeaderDupes++;
446
- }
447
- // Header wasn't invalid and previous header is known. If it was successfully added, count it as a win.
448
- if (ihr.added) {
449
- count++;
450
- }
451
- break;
452
- }
453
- }
454
- }
455
- else {
456
- // There are no liveHeaders currently to process, check the out-of-band baseHeaders channel (`addHeader` method called by a client).
457
- const bheader = this.baseHeaders.shift();
458
- if (bheader) {
459
- const prev = await this.storage.findLiveHeaderForBlockHash(bheader.previousHash);
460
- if (!prev) {
461
- // Ignoring attempt to add a baseHeader with unknown previous hash, no attempt made to find previous header(s).
462
- this.log(`Ignoring header with unknown previousHash ${bheader.previousHash} in live storage.`);
463
- // Does not trigger a re-sync.
464
- }
465
- else {
466
- const header = {
467
- ...bheader,
468
- height: prev.height + 1,
469
- hash: (0, blockHeaderUtilities_1.blockHash)(bheader)
470
- };
471
- const ihr = await this.addLiveHeader(header);
472
- if (this.invalidInsertHeaderResult(ihr)) {
473
- this.log(`Ignoring invalid baseHeader ${header.height} ${header.hash}.`);
474
- }
475
446
  else {
476
447
  if (this.subscriberCallbacksEnabled)
477
- this.log(`addBaseHeader ${header.height}${ihr.added ? ' added' : ''}${ihr.dupe ? ' dupe' : ''}${ihr.isActiveTip ? ' isActiveTip' : ''}${ihr.reorgDepth ? ' reorg depth ' + ihr.reorgDepth : ''}${ihr.noPrev ? ' noPrev' : ''}${ihr.noActiveAncestor || ihr.noTip || ihr.badPrev ? ' error' : ''}`);
478
- // baseHeader was successfully added.
448
+ this.log(`addLiveHeader ${header.height}${ihr.added ? ' added' : ''}${ihr.dupe ? ' dupe' : ''}${ihr.isActiveTip ? ' isActiveTip' : ''}${ihr.reorgDepth ? ' reorg depth ' + ihr.reorgDepth : ''}${ihr.noPrev ? ' noPrev' : ''}${ihr.noActiveAncestor || ihr.noTip || ihr.badPrev ? ' error' : ''}`);
449
+ if (ihr.dupe) {
450
+ liveHeaderDupes++;
451
+ }
452
+ // Header wasn't invalid and previous header is known. If it was successfully added, count it as a win.
479
453
  if (ihr.added) {
480
454
  count++;
481
455
  }
456
+ break;
482
457
  }
483
458
  }
484
459
  }
485
460
  else {
486
- // There are no liveHeaders and no baseHeaders to add,
487
- if (count > 0) {
488
- if (liveHeaderDupes > 0) {
489
- this.log(`${liveHeaderDupes} duplicate headers ignored.`);
490
- liveHeaderDupes = 0;
461
+ // There are no liveHeaders currently to process, check the out-of-band baseHeaders channel (`addHeader` method called by a client).
462
+ const bheader = this.baseHeaders.shift();
463
+ if (bheader) {
464
+ const prev = await this.storage.findLiveHeaderForBlockHash(bheader.previousHash);
465
+ if (!prev) {
466
+ // Ignoring attempt to add a baseHeader with unknown previous hash, no attempt made to find previous header(s).
467
+ this.log(`Ignoring header with unknown previousHash ${bheader.previousHash} in live storage.`);
468
+ // Does not trigger a re-sync.
469
+ }
470
+ else {
471
+ const header = {
472
+ ...bheader,
473
+ height: prev.height + 1,
474
+ hash: (0, blockHeaderUtilities_1.blockHash)(bheader)
475
+ };
476
+ const ihr = await this.addLiveHeader(header);
477
+ if (this.invalidInsertHeaderResult(ihr)) {
478
+ this.log(`Ignoring invalid baseHeader ${header.height} ${header.hash}.`);
479
+ }
480
+ else {
481
+ if (this.subscriberCallbacksEnabled)
482
+ this.log(`addBaseHeader ${header.height}${ihr.added ? ' added' : ''}${ihr.dupe ? ' dupe' : ''}${ihr.isActiveTip ? ' isActiveTip' : ''}${ihr.reorgDepth ? ' reorg depth ' + ihr.reorgDepth : ''}${ihr.noPrev ? ' noPrev' : ''}${ihr.noActiveAncestor || ihr.noTip || ihr.badPrev ? ' error' : ''}`);
483
+ // baseHeader was successfully added.
484
+ if (ihr.added) {
485
+ count++;
486
+ }
487
+ }
491
488
  }
492
- const updated = await this.storage.getAvailableHeightRanges();
493
- this.log(`After adding ${count} live headers
489
+ }
490
+ else {
491
+ // There are no liveHeaders and no baseHeaders to add,
492
+ if (count > 0) {
493
+ if (liveHeaderDupes > 0) {
494
+ this.log(`${liveHeaderDupes} duplicate headers ignored.`);
495
+ liveHeaderDupes = 0;
496
+ }
497
+ const updated = await this.storage.getAvailableHeightRanges();
498
+ this.log(`After adding ${count} live headers
494
499
  After live: bulk ${updated.bulk}, live ${updated.live}
495
500
  `);
496
- count = 0;
497
- }
498
- if (!this.subscriberCallbacksEnabled) {
499
- const live = await this.storage.findLiveHeightRange();
500
- if (!live.isEmpty) {
501
- this.subscriberCallbacksEnabled = true;
502
- this.log(`listening at height of ${live.maxHeight}`);
501
+ count = 0;
503
502
  }
503
+ if (!this.subscriberCallbacksEnabled) {
504
+ const live = await this.storage.findLiveHeightRange();
505
+ if (!live.isEmpty) {
506
+ this.subscriberCallbacksEnabled = true;
507
+ this.log(`listening at height of ${live.maxHeight}`);
508
+ }
509
+ }
510
+ if (!this.available) {
511
+ this.available = true;
512
+ }
513
+ needSyncCheck = Date.now() - lastSyncCheck > syncCheckRepeatMsecs;
514
+ // If we aren't going to review sync, wait before checking input queues again
515
+ if (!needSyncCheck)
516
+ await (0, utilityHelpers_1.wait)(1000);
504
517
  }
505
- if (!this.available) {
506
- this.available = true;
507
- }
508
- needSyncCheck = Date.now() - lastSyncCheck > syncCheckRepeatMsecs;
509
- // If we aren't going to review sync, wait before checking input queues again
510
- if (!needSyncCheck)
511
- await (0, utilityHelpers_1.wait)(1000);
512
518
  }
513
519
  }
514
520
  }
521
+ catch (eu) {
522
+ const e = WalletError_1.WalletError.fromUnknown(eu);
523
+ if (!this.available) {
524
+ this.startupError = e;
525
+ this.stopMainThread = true;
526
+ }
527
+ else {
528
+ this.log(`Error occurred during chaintracks main thread processing: ${e.stack || e.message}`);
529
+ }
530
+ }
515
531
  }
516
532
  }
517
533
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chaintracks.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/Chaintracks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chaintracks.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/Chaintracks.ts"],"names":[],"mappings":"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"}
@@ -33,12 +33,24 @@ export declare class BulkFileDataManager {
33
33
  readonly maxRetained?: number;
34
34
  readonly fromKnownSourceUrl?: string;
35
35
  constructor(options: BulkFileDataManagerOptions | Chain);
36
- createReader(range?: HeightRange, maxBufferSize?: number): Promise<BulkFileDataReader>;
37
- updateFromUrl(cdnUrl: string): Promise<void>;
38
- setStorage(storage: ChaintracksStorageBulkFileApi, log: (...args: any[]) => void): Promise<void>;
39
- private setStorageNoLock;
40
36
  deleteBulkFiles(): Promise<void>;
41
37
  private deleteBulkFilesNoLock;
38
+ /**
39
+ * If `bfds` are going to be backed by persistent storage,
40
+ * must be called before making storage available.
41
+ *
42
+ * Synchronizes bfds and storage files, after which this manager maintains sync.
43
+ * There should be no changes to bulk files by direct access to storage bulk file methods.
44
+ */
45
+ setStorage(storage: ChaintracksStorageBulkFileApi, log: (...args: any[]) => void): Promise<void>;
46
+ private setStorageNoLock;
47
+ heightRangesFromBulkFiles(files: BulkHeaderFileInfo[]): {
48
+ all: HeightRange;
49
+ cdn: HeightRange;
50
+ incremental: HeightRange;
51
+ };
52
+ createReader(range?: HeightRange, maxBufferSize?: number): Promise<BulkFileDataReader>;
53
+ updateFromUrl(cdnUrl: string): Promise<void>;
42
54
  merge(files: BulkHeaderFileInfo[]): Promise<BulkFileDataManagerMergeResult>;
43
55
  private mergeNoLock;
44
56
  private mergeIncremental;
@@ -1 +1 @@
1
- {"version":3,"file":"BulkFileDataManager.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BulkFileDataManager.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,71 @@ class BulkFileDataManager {
45
45
  this.fetch = options.fetch;
46
46
  this.deleteBulkFilesNoLock();
47
47
  }
48
+ async deleteBulkFiles() {
49
+ return this.lock.withWriteLock(async () => this.deleteBulkFilesNoLock());
50
+ }
51
+ deleteBulkFilesNoLock() {
52
+ this.bfds = [];
53
+ this.fileHashToIndex = {};
54
+ if (this.fromKnownSourceUrl) {
55
+ const vbhfs = validBulkHeaderFilesByFileHash_1.validBulkHeaderFiles;
56
+ const filtered = vbhfs.filter(f => f.sourceUrl === this.fromKnownSourceUrl);
57
+ const files = selectBulkHeaderFiles(filtered, this.chain, this.maxPerFile);
58
+ for (const file of files) {
59
+ this.add({ ...file, fileHash: file.fileHash, mru: Date.now() });
60
+ }
61
+ }
62
+ }
63
+ /**
64
+ * If `bfds` are going to be backed by persistent storage,
65
+ * must be called before making storage available.
66
+ *
67
+ * Synchronizes bfds and storage files, after which this manager maintains sync.
68
+ * There should be no changes to bulk files by direct access to storage bulk file methods.
69
+ */
70
+ async setStorage(storage, log) {
71
+ return this.lock.withWriteLock(async () => this.setStorageNoLock(storage, log));
72
+ }
73
+ async setStorageNoLock(storage, log) {
74
+ this.storage = storage;
75
+ this.log = log;
76
+ // Get files currently in persistent storage.
77
+ let sfs = await this.storage.getBulkFiles();
78
+ // Sync bfds with storage. Two scenarios supported:
79
+ const bfdsRanges = this.heightRangesFromBulkFiles(this.bfds);
80
+ const sfsRanges = this.heightRangesFromBulkFiles(sfs);
81
+ if (sfsRanges.cdn.length >= bfdsRanges.cdn.length) {
82
+ // Storage win if it has greater or equal CDN coverage
83
+ // Replace all bfds with sfs
84
+ this.bfds = [];
85
+ for (const file of sfs) {
86
+ const vbf = await this.validateFileInfo(file);
87
+ this.bfds.push(vbf);
88
+ }
89
+ }
90
+ else {
91
+ // Bfds win if they have greater CDN coverage
92
+ // Replace all sfs with bfds
93
+ for (const s of sfs.reverse())
94
+ await this.storage.deleteBulkFile(s.fileId);
95
+ for (const bfd of this.bfds) {
96
+ await this.ensureData(bfd);
97
+ bfd.fileId = await this.storage.insertBulkFile(bfdToInfo(bfd, true));
98
+ }
99
+ }
100
+ }
101
+ heightRangesFromBulkFiles(files) {
102
+ const ranges = { all: new HeightRange_1.HeightRange(0, -1), cdn: new HeightRange_1.HeightRange(0, -1), incremental: new HeightRange_1.HeightRange(0, -1) };
103
+ for (const file of files) {
104
+ const range = new HeightRange_1.HeightRange(file.firstHeight, file.firstHeight + file.count - 1);
105
+ ranges.all = ranges.all.union(range);
106
+ if (isBdfCdn(file))
107
+ ranges.cdn = ranges.cdn.union(range);
108
+ if (isBdfIncremental(file))
109
+ ranges.incremental = ranges.incremental.union(range);
110
+ }
111
+ return ranges;
112
+ }
48
113
  async createReader(range, maxBufferSize) {
49
114
  range = range || (await this.getHeightRange());
50
115
  maxBufferSize = maxBufferSize || 1000000 * 80; // 100,000 headers, 8MB
@@ -78,51 +143,6 @@ class BulkFileDataManager {
78
143
  log += ` bulk range after: ${rangeAfter}\n`;
79
144
  this.log(log);
80
145
  }
81
- async setStorage(storage, log) {
82
- return this.lock.withWriteLock(async () => this.setStorageNoLock(storage, log));
83
- }
84
- async setStorageNoLock(storage, log) {
85
- this.storage = storage;
86
- this.log = log;
87
- // Sync bfds with storage. Two scenarios supported:
88
- let sfs = await this.storage.getBulkFiles();
89
- const lastCdnBfd = this.bfds.filter(f => isBdfCdn(f)).slice(-1)[0];
90
- const lastCdnSfs = sfs.filter(f => isBdfCdn(f)).slice(-1)[0];
91
- if (lastCdnBfd &&
92
- lastCdnSfs &&
93
- lastCdnBfd.firstHeight + lastCdnBfd.count > lastCdnSfs.firstHeight + lastCdnSfs.count) {
94
- // Storage has fewer cdn headers than bfds, clear them and try again.
95
- for (const s of sfs.reverse())
96
- await this.storage.deleteBulkFile(s.fileId);
97
- sfs = [];
98
- }
99
- if (sfs.length === 0) {
100
- // 1. Storage has no files: Update storage to reflect bfds.
101
- for (const bfd of this.bfds) {
102
- await this.ensureData(bfd);
103
- bfd.fileId = await this.storage.insertBulkFile(bfdToInfo(bfd, true));
104
- }
105
- }
106
- else {
107
- // 2. bfds are a prefix of storage, including last bfd having same firstHeight but possibly fewer headers: Merge storage to bfds.
108
- const r = await this.mergeNoLock(sfs);
109
- }
110
- }
111
- async deleteBulkFiles() {
112
- return this.lock.withWriteLock(async () => this.deleteBulkFilesNoLock());
113
- }
114
- deleteBulkFilesNoLock() {
115
- this.bfds = [];
116
- this.fileHashToIndex = {};
117
- if (this.fromKnownSourceUrl) {
118
- const vbhfs = validBulkHeaderFilesByFileHash_1.validBulkHeaderFiles;
119
- const filtered = vbhfs.filter(f => f.sourceUrl === this.fromKnownSourceUrl);
120
- const files = selectBulkHeaderFiles(filtered, this.chain, this.maxPerFile);
121
- for (const file of files) {
122
- this.add({ ...file, fileHash: file.fileHash, mru: Date.now() });
123
- }
124
- }
125
- }
126
146
  async merge(files) {
127
147
  return this.lock.withWriteLock(async () => this.mergeNoLock(files));
128
148
  }