@bsv/wallet-toolbox 2.8.0 → 2.9.0

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 (61) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/README.md +9 -1
  3. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +22 -0
  4. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -1
  5. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
  6. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
  7. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
  8. package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
  9. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +33 -0
  10. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  11. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +6 -1
  12. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  13. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +9 -3
  14. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  15. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -5
  16. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  17. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +3 -0
  18. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  19. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -1
  20. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  21. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +2 -0
  22. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  23. package/out/src/services/chaintracker/chaintracks/index.all.js +2 -0
  24. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  25. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +2 -0
  26. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  27. package/out/src/services/chaintracker/chaintracks/index.mobile.js +2 -0
  28. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  29. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +15 -2
  30. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  31. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +115 -13
  32. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  33. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +17 -1
  34. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  35. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +174 -87
  36. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  37. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
  38. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
  39. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +30 -0
  40. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
  41. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +2 -2
  42. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  43. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +5 -3
  44. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  45. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +39 -0
  46. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
  47. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +194 -0
  48. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
  49. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +1 -0
  50. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -1
  51. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +1 -0
  52. package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -1
  53. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +12 -0
  54. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
  55. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +52 -0
  56. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
  57. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +40 -0
  58. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
  59. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +207 -0
  60. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
  61. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"configureChaintracksIngestors.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/configureChaintracksIngestors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureChaintracksIngestors.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/configureChaintracksIngestors.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export * from './index.client';
2
2
  export * from './util/ChaintracksFs';
3
3
  export * from './util/BulkFileDataCacheFs';
4
+ export * from './util/NodeBulkFileDataValidator';
5
+ export * from './util/DurableFileBulkFileDownloadBudget';
4
6
  export * from './Storage/ChaintracksStorageKnex';
5
7
  export * from './Storage/ChaintracksStorageMemory';
6
8
  export * from './createDefaultKnexChaintracksOptions';
@@ -1 +1 @@
1
- {"version":3,"file":"index.all.d.ts","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.all.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAE9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAElD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA"}
1
+ {"version":3,"file":"index.all.d.ts","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.all.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAE9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAElD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA"}
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./index.client"), exports);
18
18
  __exportStar(require("./util/ChaintracksFs"), exports);
19
19
  __exportStar(require("./util/BulkFileDataCacheFs"), exports);
20
+ __exportStar(require("./util/NodeBulkFileDataValidator"), exports);
21
+ __exportStar(require("./util/DurableFileBulkFileDownloadBudget"), exports);
20
22
  __exportStar(require("./Storage/ChaintracksStorageKnex"), exports);
21
23
  __exportStar(require("./Storage/ChaintracksStorageMemory"), exports);
22
24
  __exportStar(require("./createDefaultKnexChaintracksOptions"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.all.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.all.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAE9B,uDAAoC;AACpC,6DAA0C;AAC1C,mEAAgD;AAChD,qEAAkD;AAElD,wEAAqD;AACrD,0DAAuC;AAEvC,uDAAoC;AACpC,sEAAmD;AACnD,sEAAmD"}
1
+ {"version":3,"file":"index.all.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.all.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAE9B,uDAAoC;AACpC,6DAA0C;AAC1C,mEAAgD;AAChD,2EAAwD;AACxD,mEAAgD;AAChD,qEAAkD;AAElD,wEAAqD;AACrD,0DAAuC;AAEvC,uDAAoC;AACpC,sEAAmD;AACnD,sEAAmD"}
@@ -9,6 +9,7 @@ export * from './Api/BulkIngestorApi';
9
9
  export * from './Api/LiveIngestorApi';
10
10
  export * from './Api/BlockHeaderApi';
11
11
  export * from './Api/BulkFileDataCacheApi';
12
+ export * from './Api/BulkFileDataValidatorApi';
12
13
  export * from './Chaintracks';
13
14
  export * from './ChaintracksServiceClient';
14
15
  export * from './GoChaintracksServiceClient';
@@ -34,5 +35,6 @@ export * from './util/BulkFileDataManager';
34
35
  export * from './util/BulkHeaderFile';
35
36
  export * from './util/ChaintracksFetch';
36
37
  export * from './util/FixedWindowBulkFileDownloadBudget';
38
+ export * from './util/InlineBulkFileDataValidator';
37
39
  export * as utils from './util/blockHeaderUtilities';
38
40
  //# sourceMappingURL=index.mobile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mobile.d.ts","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.mobile.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAE1C,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAE5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AAEzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+BAA+B,CAAA;AAE7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAE/C,cAAc,uCAAuC,CAAA;AACrD,cAAc,yBAAyB,CAAA;AACvC,cAAc,iCAAiC,CAAA;AAE/C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0CAA0C,CAAA;AAExD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.mobile.d.ts","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.mobile.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAE9C,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAE5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AAEzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+BAA+B,CAAA;AAE7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAE/C,cAAc,uCAAuC,CAAA;AACrD,cAAc,yBAAyB,CAAA;AACvC,cAAc,iCAAiC,CAAA;AAE/C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0CAA0C,CAAA;AACxD,cAAc,oCAAoC,CAAA;AAElD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA"}
@@ -47,6 +47,7 @@ __exportStar(require("./Api/BulkIngestorApi"), exports);
47
47
  __exportStar(require("./Api/LiveIngestorApi"), exports);
48
48
  __exportStar(require("./Api/BlockHeaderApi"), exports);
49
49
  __exportStar(require("./Api/BulkFileDataCacheApi"), exports);
50
+ __exportStar(require("./Api/BulkFileDataValidatorApi"), exports);
50
51
  __exportStar(require("./Chaintracks"), exports);
51
52
  __exportStar(require("./ChaintracksServiceClient"), exports);
52
53
  __exportStar(require("./GoChaintracksServiceClient"), exports);
@@ -72,5 +73,6 @@ __exportStar(require("./util/BulkFileDataManager"), exports);
72
73
  __exportStar(require("./util/BulkHeaderFile"), exports);
73
74
  __exportStar(require("./util/ChaintracksFetch"), exports);
74
75
  __exportStar(require("./util/FixedWindowBulkFileDownloadBudget"), exports);
76
+ __exportStar(require("./util/InlineBulkFileDataValidator"), exports);
75
77
  exports.utils = __importStar(require("./util/blockHeaderUtilities"));
76
78
  //# sourceMappingURL=index.mobile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mobile.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.mobile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uDAAoC;AACpC,6DAA0C;AAC1C,yDAAsC;AACtC,4DAAyC;AACzC,8DAA2C;AAC3C,uDAAoC;AACpC,wDAAqC;AACrC,wDAAqC;AACrC,uDAAoC;AACpC,6DAA0C;AAE1C,gDAA6B;AAC7B,6DAA0C;AAC1C,+DAA4C;AAE5C,4DAAyC;AACzC,4DAAyC;AAEzC,2DAAwC;AACxC,kEAA+C;AAC/C,uEAAoD;AACpD,mEAAgD;AAChD,wEAAqD;AACrD,sEAAmD;AACnD,gEAA6C;AAE7C,4DAAyC;AACzC,mEAAgD;AAChD,mEAAgD;AAChD,kEAA+C;AAE/C,wEAAqD;AACrD,0DAAuC;AACvC,kEAA+C;AAE/C,yDAAsC;AACtC,qDAAkC;AAClC,6DAA0C;AAC1C,wDAAqC;AACrC,0DAAuC;AACvC,2EAAwD;AAExD,QAAY,KAAK,wDAAmC"}
1
+ {"version":3,"file":"index.mobile.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/index.mobile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uDAAoC;AACpC,6DAA0C;AAC1C,yDAAsC;AACtC,4DAAyC;AACzC,8DAA2C;AAC3C,uDAAoC;AACpC,wDAAqC;AACrC,wDAAqC;AACrC,uDAAoC;AACpC,6DAA0C;AAC1C,iEAA8C;AAE9C,gDAA6B;AAC7B,6DAA0C;AAC1C,+DAA4C;AAE5C,4DAAyC;AACzC,4DAAyC;AAEzC,2DAAwC;AACxC,kEAA+C;AAC/C,uEAAoD;AACpD,mEAAgD;AAChD,wEAAqD;AACrD,sEAAmD;AACnD,gEAA6C;AAE7C,4DAAyC;AACzC,mEAAgD;AAChD,mEAAgD;AAChD,kEAA+C;AAE/C,wEAAqD;AACrD,0DAAuC;AACvC,kEAA+C;AAE/C,yDAAsC;AACtC,qDAAkC;AAClC,6DAA0C;AAC1C,wDAAqC;AACrC,0DAAuC;AACvC,2EAAwD;AACxD,qEAAkD;AAElD,QAAY,KAAK,wDAAmC"}
@@ -1,5 +1,11 @@
1
1
  import type { BulkFileDataCacheApi } from '../Api/BulkFileDataCacheApi';
2
2
  import type { BulkHeaderFileInfo } from './BulkHeaderFile';
3
+ export interface BulkFileDataCacheFsOptions {
4
+ /** Root for immutable content-addressed cache objects. */
5
+ rootFolder: string;
6
+ /** Read-only legacy locations consulted during in-place migration. */
7
+ legacyRoots?: string[];
8
+ }
3
9
  /**
4
10
  * Atomic filesystem implementation of the bulk-header cache contract.
5
11
  *
@@ -11,10 +17,17 @@ import type { BulkHeaderFileInfo } from './BulkHeaderFile';
11
17
  */
12
18
  export declare class BulkFileDataCacheFs implements BulkFileDataCacheApi {
13
19
  private readonly rootFolder;
14
- constructor(rootFolder: string);
15
- private filePath;
20
+ private readonly legacyRoots;
21
+ constructor(rootFolderOrOptions: string | BulkFileDataCacheFsOptions);
22
+ private legacyFilePath;
23
+ private validateFileName;
24
+ private digestHex;
25
+ private objectPath;
26
+ private legacyRejectionMarker;
16
27
  get(file: Readonly<BulkHeaderFileInfo>): Promise<Uint8Array | undefined>;
17
28
  set(file: Readonly<BulkHeaderFileInfo>, data: Uint8Array): Promise<void>;
29
+ promoteValidated(file: Readonly<BulkHeaderFileInfo>, data: Uint8Array): Promise<void>;
30
+ quarantine(file: Readonly<BulkHeaderFileInfo>, reason: string, rejectedData?: Uint8Array): Promise<void>;
18
31
  delete(file: Readonly<BulkHeaderFileInfo>): Promise<void>;
19
32
  }
20
33
  //# sourceMappingURL=BulkFileDataCacheFs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BulkFileDataCacheFs.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAvC,YAA6B,UAAU,EAAE,MAAM,EAAI;IAEnD,OAAO,CAAC,QAAQ;IAOV,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAO7E;IAEK,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7E;IAEK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9D;CACF"}
1
+ {"version":3,"file":"BulkFileDataCacheFs.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,WAAW,0BAA0B;IACzC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IAEtC,YAAY,mBAAmB,EAAE,MAAM,GAAG,0BAA0B,EAInE;IAED,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAIvB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAoB7E;IAEK,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;IAEK,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1F;IAEK,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7G;IAEK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;CACF"}
@@ -48,29 +48,70 @@ const path = __importStar(require("node:path"));
48
48
  */
49
49
  class BulkFileDataCacheFs {
50
50
  rootFolder;
51
- constructor(rootFolder) {
52
- this.rootFolder = rootFolder;
51
+ legacyRoots;
52
+ constructor(rootFolderOrOptions) {
53
+ const options = typeof rootFolderOrOptions === 'string' ? { rootFolder: rootFolderOrOptions } : rootFolderOrOptions;
54
+ this.rootFolder = options.rootFolder;
55
+ this.legacyRoots = options.legacyRoots ?? [];
53
56
  }
54
- filePath(file) {
57
+ legacyFilePath(root, file) {
58
+ this.validateFileName(file);
59
+ return path.join(root, file.fileName);
60
+ }
61
+ validateFileName(file) {
55
62
  if (path.basename(file.fileName) !== file.fileName || file.fileName === '.' || file.fileName === '..') {
56
63
  throw new Error(`Invalid bulk-header cache file name: ${file.fileName}`);
57
64
  }
58
- return path.join(this.rootFolder, file.fileName);
65
+ }
66
+ digestHex(file) {
67
+ if (file.fileHash == null)
68
+ throw new Error(`Missing bulk-header digest for ${file.fileName}`);
69
+ const digest = Buffer.from(file.fileHash, 'base64');
70
+ if (digest.length !== 32 || digest.toString('base64') !== file.fileHash) {
71
+ throw new Error(`Invalid bulk-header digest for ${file.fileName}`);
72
+ }
73
+ return digest.toString('hex');
74
+ }
75
+ objectPath(file) {
76
+ this.validateFileName(file);
77
+ const digest = this.digestHex(file);
78
+ return path.join(this.rootFolder, 'objects', digest.slice(0, 2), `${digest}.headers`);
79
+ }
80
+ legacyRejectionMarker(file) {
81
+ return path.join(this.rootFolder, 'quarantine', `${this.digestHex(file)}.legacy-rejected.json`);
59
82
  }
60
83
  async get(file) {
61
84
  try {
62
- return new Uint8Array(await node_fs_1.promises.readFile(this.filePath(file)));
85
+ return new Uint8Array(await node_fs_1.promises.readFile(this.objectPath(file)));
63
86
  }
64
87
  catch (error) {
65
- if (error.code === 'ENOENT')
66
- return undefined;
67
- throw error;
88
+ if (error.code !== 'ENOENT')
89
+ throw error;
90
+ }
91
+ try {
92
+ await node_fs_1.promises.access(this.legacyRejectionMarker(file));
93
+ return undefined;
68
94
  }
95
+ catch (error) {
96
+ if (error.code !== 'ENOENT')
97
+ throw error;
98
+ }
99
+ for (const root of this.legacyRoots) {
100
+ try {
101
+ return new Uint8Array(await node_fs_1.promises.readFile(this.legacyFilePath(root, file)));
102
+ }
103
+ catch (error) {
104
+ if (error.code !== 'ENOENT')
105
+ throw error;
106
+ }
107
+ }
108
+ return undefined;
69
109
  }
70
110
  async set(file, data) {
71
- const destination = this.filePath(file);
72
- await node_fs_1.promises.mkdir(this.rootFolder, { recursive: true });
73
- const temporary = path.join(this.rootFolder, `.${file.fileName}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`);
111
+ const destination = this.objectPath(file);
112
+ const folder = path.dirname(destination);
113
+ await node_fs_1.promises.mkdir(folder, { recursive: true });
114
+ const temporary = path.join(folder, `.${path.basename(destination)}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`);
74
115
  let handle;
75
116
  try {
76
117
  handle = await node_fs_1.promises.open(temporary, 'wx', 0o600);
@@ -79,6 +120,7 @@ class BulkFileDataCacheFs {
79
120
  await handle.close();
80
121
  handle = undefined;
81
122
  await node_fs_1.promises.rename(temporary, destination);
123
+ await syncDirectory(folder);
82
124
  }
83
125
  finally {
84
126
  await handle?.close().catch(() => undefined);
@@ -88,15 +130,75 @@ class BulkFileDataCacheFs {
88
130
  });
89
131
  }
90
132
  }
91
- async delete(file) {
133
+ async promoteValidated(file, data) {
92
134
  try {
93
- await node_fs_1.promises.unlink(this.filePath(file));
135
+ await node_fs_1.promises.access(this.objectPath(file));
94
136
  }
95
137
  catch (error) {
96
138
  if (error.code !== 'ENOENT')
97
139
  throw error;
140
+ await this.set(file, data);
98
141
  }
99
142
  }
143
+ async quarantine(file, reason, rejectedData) {
144
+ const source = this.objectPath(file);
145
+ const quarantineFolder = path.join(this.rootFolder, 'quarantine');
146
+ const destination = path.join(quarantineFolder, `${this.digestHex(file)}.${Date.now()}.${(0, node_crypto_1.randomUUID)()}.invalid`);
147
+ await node_fs_1.promises.mkdir(quarantineFolder, { recursive: true });
148
+ try {
149
+ const candidate = await node_fs_1.promises.readFile(source);
150
+ if (rejectedData != null && !candidate.equals(Buffer.from(rejectedData)))
151
+ return;
152
+ await node_fs_1.promises.rename(source, destination);
153
+ await syncDirectory(path.dirname(source));
154
+ await syncDirectory(quarantineFolder);
155
+ }
156
+ catch (error) {
157
+ if (error.code !== 'ENOENT')
158
+ throw error;
159
+ if (this.legacyRoots.length === 0)
160
+ return;
161
+ // Legacy entries are intentionally read-only. Once replacement succeeds,
162
+ // the content-addressed object takes precedence without destroying the
163
+ // old deployment's only retained bytes.
164
+ await writeAtomicFile(this.legacyRejectionMarker(file), Buffer.from(JSON.stringify({ fileName: file.fileName, fileHash: file.fileHash, reason })));
165
+ }
166
+ }
167
+ async delete(file) {
168
+ await this.quarantine(file, 'delete requested through legacy cache contract');
169
+ }
100
170
  }
101
171
  exports.BulkFileDataCacheFs = BulkFileDataCacheFs;
172
+ async function writeAtomicFile(destination, data) {
173
+ const folder = path.dirname(destination);
174
+ await node_fs_1.promises.mkdir(folder, { recursive: true });
175
+ const temporary = path.join(folder, `.${path.basename(destination)}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`);
176
+ let handle;
177
+ try {
178
+ handle = await node_fs_1.promises.open(temporary, 'wx', 0o600);
179
+ await handle.writeFile(data);
180
+ await handle.sync();
181
+ await handle.close();
182
+ handle = undefined;
183
+ await node_fs_1.promises.rename(temporary, destination);
184
+ await syncDirectory(folder);
185
+ }
186
+ finally {
187
+ await handle?.close().catch(() => undefined);
188
+ await node_fs_1.promises.unlink(temporary).catch(error => {
189
+ if (error.code !== 'ENOENT')
190
+ throw error;
191
+ });
192
+ }
193
+ }
194
+ async function syncDirectory(folder) {
195
+ let handle;
196
+ try {
197
+ handle = await node_fs_1.promises.open(folder, 'r');
198
+ await handle.sync();
199
+ }
200
+ finally {
201
+ await handle?.close();
202
+ }
203
+ }
102
204
  //# sourceMappingURL=BulkFileDataCacheFs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BulkFileDataCacheFs.js","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAwC;AACxC,6CAAwC;AACxC,MAAY,IAAI,sCAAiB;AAIjC;;;;;;;;GAQG;AACH;IAC+B,UAAU;IAAvC,YAA6B,UAAkB;0BAAlB,UAAU;IAAW,CAAC;IAE3C,QAAQ,CAAC,IAAkC;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtG,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAkC;QAC1C,IAAI,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YACxE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAkC,EAAE,IAAgB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,kBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAA,wBAAU,GAAE,MAAM,CAAC,CAAA;QACpG,IAAI,MAAiC,CAAA;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC9C,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,MAAM,GAAG,SAAS,CAAA;YAClB,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACzC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC5C,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,KAAK,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAkC;QAC7C,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;QACrE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"BulkFileDataCacheFs.js","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@ import { BulkHeaderFileInfo } from './BulkHeaderFile';
5
5
  import { HeightRange } from './HeightRange';
6
6
  import { ChaintracksStorageBulkFileApi } from '../Api/ChaintracksStorageApi';
7
7
  import { ChaintracksFsApi } from '../Api/ChaintracksFsApi';
8
- import type { BulkFileDataCacheApi, BulkFileDownloadBudgetApi } from '../Api/BulkFileDataCacheApi';
8
+ import type { BulkFileDataCacheApi, BulkFileDownloadBudgetApi, BulkFileDownloadBudgetSnapshot } from '../Api/BulkFileDataCacheApi';
9
+ import { type BulkFileDataValidatorApi, type BulkFileDataValidatorStats } from '../Api/BulkFileDataValidatorApi';
9
10
  export interface BulkFileDataManagerOptions {
10
11
  chain: Chain;
11
12
  maxPerFile: number;
@@ -16,6 +17,10 @@ export interface BulkFileDataManagerOptions {
16
17
  cache?: BulkFileDataCacheApi;
17
18
  /** Optional process-local or shared reservation budget for remote bytes. */
18
19
  downloadBudget?: BulkFileDownloadBudgetApi;
20
+ /** Complete-object validator. Node services should inject a worker-backed implementation. */
21
+ validator?: BulkFileDataValidatorApi;
22
+ /** Cooldown after a failed load before the same immutable object can retry. */
23
+ failedLoadRetryMsecs?: number;
19
24
  }
20
25
  /** @public */
21
26
  export interface BulkFileDataManagerStats {
@@ -27,6 +32,9 @@ export interface BulkFileDataManagerStats {
27
32
  coalescedLoads: number;
28
33
  downloads: number;
29
34
  downloadedBytes: number;
35
+ loadBackoffs: number;
36
+ validation?: BulkFileDataValidatorStats;
37
+ downloadBudget?: BulkFileDownloadBudgetSnapshot;
30
38
  }
31
39
  /**
32
40
  * Manages bulk file data (typically 8MB chunks of 100,000 headers each).
@@ -44,6 +52,7 @@ export declare class BulkFileDataManager {
44
52
  private fileHashToIndex;
45
53
  private readonly lock;
46
54
  private readonly inFlightLoads;
55
+ private readonly failedLoads;
47
56
  private storage?;
48
57
  private readonly stats;
49
58
  readonly chain: Chain;
@@ -53,6 +62,8 @@ export declare class BulkFileDataManager {
53
62
  readonly fromKnownSourceUrl?: string;
54
63
  readonly cache?: BulkFileDataCacheApi;
55
64
  readonly downloadBudget?: BulkFileDownloadBudgetApi;
65
+ readonly validator: BulkFileDataValidatorApi;
66
+ readonly failedLoadRetryMsecs: number;
56
67
  constructor(options: BulkFileDataManagerOptions | Chain);
57
68
  getStats(): BulkFileDataManagerStats;
58
69
  deleteBulkFiles(): Promise<void>;
@@ -81,6 +92,7 @@ export declare class BulkFileDataManager {
81
92
  getBulkFiles(keepData?: boolean): Promise<BulkHeaderFileInfo[]>;
82
93
  getHeightRange(): Promise<HeightRange>;
83
94
  getDataFromFile(file: BulkHeaderFileInfo, offset?: number, length?: number): Promise<Uint8Array | undefined>;
95
+ private getDataFromSnapshot;
84
96
  private getDataFromFileNoLock;
85
97
  findHeaderForHeightOrUndefined(height: number): Promise<BlockHeader | undefined>;
86
98
  getFileForHeight(height: number): Promise<BulkHeaderFileInfo | undefined>;
@@ -148,9 +160,13 @@ export declare class BulkFileDataManager {
148
160
  */
149
161
  private ensureData;
150
162
  private loadAndValidateData;
163
+ private loadFromStorage;
164
+ private loadFromCache;
165
+ private loadFromRemote;
151
166
  private validateRetrievedData;
152
167
  private ensureMaxRetained;
153
168
  exportHeadersToFs(toFs: ChaintracksFsApi, toHeadersPerFile: number, toFolder: string, sourceUrl?: string, maxHeight?: number): Promise<void>;
169
+ destroy(): Promise<void>;
154
170
  }
155
171
  interface BulkFileData extends BulkHeaderFileInfo {
156
172
  mru: number;
@@ -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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"}