@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.
- package/CHANGELOG.md +14 -3
- package/README.md +9 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +22 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +33 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +9 -3
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -5
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +2 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +2 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +15 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +115 -13
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +17 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +174 -87
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +30 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +5 -3
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +39 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +194 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +12 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +52 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +40 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +207 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureChaintracksIngestors.js","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/configureChaintracksIngestors.ts"],"names":[],"mappings":";;;;;;;;;AAEA,+CAA2C;AAC3C,4EAAwE;AACxE,wFAAqH;AACrH,sFAAmH;AAInH,oEAA4F;AAC5F,8DAA0D;AAE1D,8EAA0E;AAC1E,oFAAgF;AAChF,6EAAyE;AACzE,uDAAqD;
|
|
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;
|
|
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;
|
|
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
|
-
|
|
15
|
-
|
|
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;
|
|
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
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
85
|
+
return new Uint8Array(await node_fs_1.promises.readFile(this.objectPath(file)));
|
|
63
86
|
}
|
|
64
87
|
catch (error) {
|
|
65
|
-
if (error.code
|
|
66
|
-
|
|
67
|
-
|
|
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.
|
|
72
|
-
|
|
73
|
-
|
|
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
|
|
133
|
+
async promoteValidated(file, data) {
|
|
92
134
|
try {
|
|
93
|
-
await node_fs_1.promises.
|
|
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;
|
|
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;AAWjC;;;;;;;;GAQG;AACH;IACmB,UAAU,CAAQ;IAClB,WAAW,CAAU;IAEtC,YAAY,mBAAwD;QAClE,MAAM,OAAO,GAAG,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACnH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAA;IAC9C,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,IAAkC;QACrE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAEO,gBAAgB,CAAC,IAAkC;QACzD,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;IACH,CAAC;IAEO,SAAS,CAAC,IAAkC;QAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACnD,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAEO,UAAU,CAAC,IAAkC;QACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,CAAA;IACvF,CAAC;IAEO,qBAAqB,CAAC,IAAkC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACjG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAkC;QAC1C,IAAI,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;QACrE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;QACrE,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,IAAI,UAAU,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,KAAK,CAAA;YACrE,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAkC,EAAE,IAAgB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,kBAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAA,wBAAU,GAAE,MAAM,CAAC,CAAA;QACxG,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;YACvC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;QAC7B,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,gBAAgB,CAAC,IAAkC,EAAE,IAAgB;QACzE,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;YACnE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAkC,EAAE,MAAc,EAAE,YAAyB;QAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAA,wBAAU,GAAE,UAAU,CAAC,CAAA;QAChH,MAAM,kBAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACrD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC3C,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAE,OAAM;YAChF,MAAM,kBAAE,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YACpC,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;YACzC,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;YACnE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YACzC,yEAAyE;YACzE,uEAAuE;YACvE,wCAAwC;YACxC,MAAM,eAAe,CACnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAC1F,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAkC;QAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gDAAgD,CAAC,CAAA;IAC/E,CAAC;CACF;;AAED,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAgB;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACxC,MAAM,kBAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAA,wBAAU,GAAE,MAAM,CAAC,CAAA;IACxG,IAAI,MAAiC,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,GAAG,SAAS,CAAA;QAClB,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACvC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC5C,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc;IACzC,IAAI,MAAiC,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACnC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAA;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAiE,MAAM,iBAAiB,CAAA;AAGnH,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAA;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"BulkFileDataManager.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts"],"names":[],"mappings":"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"}
|