@bsv/wallet-toolbox 1.6.23 → 1.6.25
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 +11 -0
- package/docs/client.md +298 -167
- package/docs/monitor.md +126 -23
- package/docs/services.md +86 -37
- package/docs/wallet.md +298 -167
- package/mobile/out/src/WalletPermissionsManager.d.ts +3 -0
- package/mobile/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/mobile/out/src/WalletPermissionsManager.js +185 -43
- package/mobile/out/src/WalletPermissionsManager.js.map +1 -1
- package/mobile/out/src/index.mobile.d.ts +1 -1
- package/mobile/out/src/index.mobile.js +1 -1
- package/mobile/out/src/monitor/Monitor.d.ts +32 -8
- package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
- package/mobile/out/src/monitor/Monitor.js +59 -28
- package/mobile/out/src/monitor/Monitor.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskCheckNoSends.js +2 -1
- package/mobile/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskClock.js +3 -2
- package/mobile/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
- package/mobile/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.js +2 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskReorg.d.ts +47 -0
- package/mobile/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -0
- package/mobile/out/src/monitor/tasks/TaskReorg.js +135 -0
- package/mobile/out/src/monitor/tasks/TaskReorg.js.map +1 -0
- package/mobile/out/src/monitor/tasks/TaskSendWaiting.js +2 -1
- package/mobile/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskUnFail.js +2 -1
- package/mobile/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +4 -0
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js +3 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +4 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +3 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +5 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +68 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +59 -15
- package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +4 -61
- package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +13 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +27 -0
- package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts +2 -28
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.js +2 -50
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +30 -0
- package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.js +68 -0
- package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +11 -11
- package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/mobile/package-lock.json +7 -6
- package/mobile/package.json +2 -2
- package/out/src/WalletPermissionsManager.d.ts +3 -0
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +185 -43
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/index.mobile.d.ts +1 -1
- package/out/src/index.mobile.js +1 -1
- package/out/src/monitor/Monitor.d.ts +32 -8
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +59 -28
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts +2 -0
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +3 -1
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/__test/MonitorDaemon.man.test.js +30 -39
- package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +2 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +3 -2
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +2 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts +47 -0
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskReorg.js +135 -0
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -0
- package/out/src/monitor/tasks/TaskSendWaiting.js +2 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +2 -1
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +4 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +1 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +68 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +66 -22
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +59 -15
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +4 -61
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +14 -0
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +27 -0
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +13 -0
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +27 -0
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +1 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.client.d.ts +2 -28
- package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.client.js +2 -50
- package/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +30 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +68 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +11 -11
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/chaintracker/index.mobile.d.ts +4 -0
- package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -0
- package/out/src/services/chaintracker/index.mobile.js +20 -0
- package/out/src/services/chaintracker/index.mobile.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +12 -0
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/test/monitor/Monitor.test.js +32 -29
- package/out/test/monitor/Monitor.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/WalletPermissionsManager.ts +245 -57
- package/src/index.mobile.ts +1 -1
- package/src/monitor/Monitor.ts +94 -29
- package/src/monitor/MonitorDaemon.ts +9 -1
- package/src/monitor/__test/MonitorDaemon.man.test.ts +35 -7
- package/src/monitor/tasks/TaskCheckNoSends.ts +1 -1
- package/src/monitor/tasks/TaskClock.ts +2 -2
- package/src/monitor/tasks/TaskMonitorCallHistory.ts +1 -1
- package/src/monitor/tasks/TaskNewHeader.ts +1 -1
- package/src/monitor/tasks/TaskReorg.ts +139 -0
- package/src/monitor/tasks/TaskSendWaiting.ts +3 -3
- package/src/monitor/tasks/TaskUnFail.ts +1 -1
- package/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.ts +6 -1
- package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +4 -0
- package/src/services/chaintracker/chaintracks/Chaintracks.ts +3 -1
- package/src/services/chaintracker/chaintracks/ChaintracksService.ts +2 -2
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +4 -1
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +4 -12
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +3 -1
- package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +2 -2
- package/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.ts +92 -0
- package/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.ts +84 -25
- package/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.ts +79 -17
- package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +11 -64
- package/src/services/chaintracker/chaintracks/createKnexChaintracks.ts +65 -0
- package/src/services/chaintracker/chaintracks/createNoDbChaintracks.ts +60 -0
- package/src/services/chaintracker/chaintracks/index.all.ts +1 -0
- package/src/services/chaintracker/chaintracks/index.client.ts +2 -35
- package/src/services/chaintracker/chaintracks/index.mobile.ts +37 -0
- package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +11 -11
- package/src/services/chaintracker/index.mobile.ts +4 -0
- package/src/storage/schema/KnexMigrations.ts +13 -0
- package/test/monitor/Monitor.test.ts +21 -16
|
@@ -1,29 +1,91 @@
|
|
|
1
1
|
import { Chain } from '../../../sdk'
|
|
2
2
|
import { ChaintracksOptions } from './Api/ChaintracksApi'
|
|
3
|
-
import { Chaintracks } from './Chaintracks'
|
|
4
3
|
import { BulkIngestorCDNBabbage } from './Ingest/BulkIngestorCDNBabbage'
|
|
5
4
|
import { ChaintracksFetch } from './util/ChaintracksFetch'
|
|
6
|
-
import { LiveIngestorWhatsOnChainPoll } from './Ingest/LiveIngestorWhatsOnChainPoll'
|
|
7
|
-
import { BulkIngestorWhatsOnChainCdn } from './Ingest/BulkIngestorWhatsOnChainCdn'
|
|
8
|
-
import { ChaintracksStorageNoDb } from './Storage/ChaintracksStorageNoDb'
|
|
5
|
+
import { LiveIngestorWhatsOnChainOptions, LiveIngestorWhatsOnChainPoll } from './Ingest/LiveIngestorWhatsOnChainPoll'
|
|
6
|
+
import { BulkIngestorWhatsOnChainCdn, BulkIngestorWhatsOnChainOptions } from './Ingest/BulkIngestorWhatsOnChainCdn'
|
|
7
|
+
import { ChaintracksStorageNoDb, ChaintracksStorageNoDbOptions } from './Storage/ChaintracksStorageNoDb'
|
|
8
|
+
import { ChaintracksFetchApi } from './Api/ChaintracksFetchApi'
|
|
9
|
+
import { BulkFileDataManager, BulkFileDataManagerOptions } from './util/BulkFileDataManager'
|
|
10
|
+
import { BulkIngestorCDNOptions } from './Ingest/BulkIngestorCDN'
|
|
11
|
+
import { WhatsOnChainServicesOptions } from './Ingest/WhatsOnChainServices'
|
|
9
12
|
|
|
10
|
-
export function
|
|
11
|
-
|
|
13
|
+
export function createDefaultNoDbChaintracksOptions(
|
|
14
|
+
chain: Chain,
|
|
15
|
+
whatsonchainApiKey: string = '',
|
|
16
|
+
maxPerFile: number = 100000,
|
|
17
|
+
maxRetained: number = 2,
|
|
18
|
+
fetch?: ChaintracksFetchApi,
|
|
19
|
+
cdnUrl: string = 'https://cdn.projectbabbage.com/blockheaders/',
|
|
20
|
+
liveHeightThreshold: number = 2000,
|
|
21
|
+
reorgHeightThreshold: number = 400,
|
|
22
|
+
bulkMigrationChunkSize: number = 500,
|
|
23
|
+
batchInsertLimit: number = 400,
|
|
24
|
+
addLiveRecursionLimit: number = 36
|
|
25
|
+
): ChaintracksOptions {
|
|
26
|
+
fetch ||= new ChaintracksFetch()
|
|
12
27
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
const bfo: BulkFileDataManagerOptions = {
|
|
29
|
+
chain,
|
|
30
|
+
fetch,
|
|
31
|
+
maxPerFile,
|
|
32
|
+
maxRetained,
|
|
33
|
+
fromKnownSourceUrl: cdnUrl
|
|
34
|
+
}
|
|
35
|
+
const bulkFileDataManager = new BulkFileDataManager(bfo)
|
|
16
36
|
|
|
17
|
-
const
|
|
37
|
+
const so: ChaintracksStorageNoDbOptions = {
|
|
38
|
+
chain,
|
|
39
|
+
bulkFileDataManager,
|
|
40
|
+
liveHeightThreshold,
|
|
41
|
+
reorgHeightThreshold,
|
|
42
|
+
bulkMigrationChunkSize,
|
|
43
|
+
batchInsertLimit
|
|
44
|
+
}
|
|
45
|
+
const storage = new ChaintracksStorageNoDb(so)
|
|
18
46
|
|
|
19
|
-
const
|
|
20
|
-
|
|
47
|
+
const co: ChaintracksOptions = {
|
|
48
|
+
chain,
|
|
49
|
+
storage,
|
|
50
|
+
bulkIngestors: [],
|
|
51
|
+
liveIngestors: [],
|
|
52
|
+
addLiveRecursionLimit,
|
|
53
|
+
logging: (...args) => console.log(new Date().toISOString(), ...args),
|
|
54
|
+
readonly: false
|
|
55
|
+
}
|
|
21
56
|
|
|
22
|
-
const
|
|
23
|
-
options.bulkIngestors.push(new BulkIngestorWhatsOnChainCdn(bulkWhatsOnChainOptions))
|
|
57
|
+
const jsonResource = `${chain}NetBlockHeaders.json`
|
|
24
58
|
|
|
25
|
-
const
|
|
26
|
-
|
|
59
|
+
const bulkCdnOptions: BulkIngestorCDNOptions = {
|
|
60
|
+
chain,
|
|
61
|
+
jsonResource,
|
|
62
|
+
fetch,
|
|
63
|
+
cdnUrl,
|
|
64
|
+
maxPerFile
|
|
65
|
+
}
|
|
66
|
+
co.bulkIngestors.push(new BulkIngestorCDNBabbage(bulkCdnOptions))
|
|
27
67
|
|
|
28
|
-
|
|
68
|
+
const wocOptions: WhatsOnChainServicesOptions = {
|
|
69
|
+
chain,
|
|
70
|
+
apiKey: whatsonchainApiKey,
|
|
71
|
+
timeout: 30000,
|
|
72
|
+
userAgent: 'BabbageWhatsOnChainServices',
|
|
73
|
+
enableCache: true,
|
|
74
|
+
chainInfoMsecs: 5000
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const bulkOptions: BulkIngestorWhatsOnChainOptions = {
|
|
78
|
+
...wocOptions,
|
|
79
|
+
jsonResource,
|
|
80
|
+
idleWait: 5000
|
|
81
|
+
}
|
|
82
|
+
co.bulkIngestors.push(new BulkIngestorWhatsOnChainCdn(bulkOptions))
|
|
83
|
+
|
|
84
|
+
const liveOptions: LiveIngestorWhatsOnChainOptions = {
|
|
85
|
+
...wocOptions,
|
|
86
|
+
idleWait: 100000
|
|
87
|
+
}
|
|
88
|
+
co.liveIngestors.push(new LiveIngestorWhatsOnChainPoll(liveOptions))
|
|
89
|
+
|
|
90
|
+
return co
|
|
29
91
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { Chain } from '../../../sdk'
|
|
2
|
-
import { ChaintracksOptions } from './Api/ChaintracksApi'
|
|
3
2
|
import { Chaintracks } from './Chaintracks'
|
|
4
|
-
import { BulkIngestorCDNBabbage } from './Ingest/BulkIngestorCDNBabbage'
|
|
5
3
|
import { ChaintracksFetch } from './util/ChaintracksFetch'
|
|
6
|
-
import { LiveIngestorWhatsOnChainOptions, LiveIngestorWhatsOnChainPoll } from './Ingest/LiveIngestorWhatsOnChainPoll'
|
|
7
|
-
import { BulkIngestorWhatsOnChainCdn, BulkIngestorWhatsOnChainOptions } from './Ingest/BulkIngestorWhatsOnChainCdn'
|
|
8
4
|
import { ChaintracksFetchApi } from './Api/ChaintracksFetchApi'
|
|
9
|
-
import { ChaintracksStorageIdb
|
|
10
|
-
import {
|
|
11
|
-
import { BulkIngestorCDNOptions, WhatsOnChainServicesOptions } from './index.client'
|
|
5
|
+
import { ChaintracksStorageIdb } from './Storage/ChaintracksStorageIdb'
|
|
6
|
+
import { createDefaultIdbChaintracksOptions } from './createDefaultIdbChaintracksOptions'
|
|
12
7
|
|
|
13
8
|
export async function createIdbChaintracks(
|
|
14
9
|
chain: Chain,
|
|
15
|
-
whatsonchainApiKey: string,
|
|
10
|
+
whatsonchainApiKey: string = '',
|
|
16
11
|
maxPerFile: number = 100000,
|
|
17
12
|
maxRetained: number = 2,
|
|
18
13
|
fetch?: ChaintracksFetchApi,
|
|
@@ -33,67 +28,19 @@ export async function createIdbChaintracks(
|
|
|
33
28
|
try {
|
|
34
29
|
fetch ||= new ChaintracksFetch()
|
|
35
30
|
|
|
36
|
-
const
|
|
31
|
+
const co = createDefaultIdbChaintracksOptions(
|
|
37
32
|
chain,
|
|
38
|
-
|
|
33
|
+
whatsonchainApiKey,
|
|
39
34
|
maxPerFile,
|
|
40
35
|
maxRetained,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const bulkFileDataManager = new BulkFileDataManager(bfo)
|
|
44
|
-
|
|
45
|
-
const so: ChaintracksStorageIdbOptions = {
|
|
46
|
-
chain,
|
|
47
|
-
bulkFileDataManager,
|
|
36
|
+
fetch,
|
|
37
|
+
cdnUrl,
|
|
48
38
|
liveHeightThreshold,
|
|
49
39
|
reorgHeightThreshold,
|
|
50
40
|
bulkMigrationChunkSize,
|
|
51
|
-
batchInsertLimit
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const co: ChaintracksOptions = {
|
|
56
|
-
chain,
|
|
57
|
-
storage,
|
|
58
|
-
bulkIngestors: [],
|
|
59
|
-
liveIngestors: [],
|
|
60
|
-
addLiveRecursionLimit,
|
|
61
|
-
logging: (...args) => console.log(new Date().toISOString(), ...args),
|
|
62
|
-
readonly: false
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const jsonResource = `${chain}NetBlockHeaders.json`
|
|
66
|
-
|
|
67
|
-
const bulkCdnOptions: BulkIngestorCDNOptions = {
|
|
68
|
-
chain,
|
|
69
|
-
jsonResource,
|
|
70
|
-
fetch,
|
|
71
|
-
cdnUrl,
|
|
72
|
-
maxPerFile
|
|
73
|
-
}
|
|
74
|
-
co.bulkIngestors.push(new BulkIngestorCDNBabbage(bulkCdnOptions))
|
|
75
|
-
|
|
76
|
-
const wocOptions: WhatsOnChainServicesOptions = {
|
|
77
|
-
chain,
|
|
78
|
-
apiKey: whatsonchainApiKey,
|
|
79
|
-
timeout: 30000,
|
|
80
|
-
userAgent: 'BabbageWhatsOnChainServices',
|
|
81
|
-
enableCache: true,
|
|
82
|
-
chainInfoMsecs: 5000
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const bulkOptions: BulkIngestorWhatsOnChainOptions = {
|
|
86
|
-
...wocOptions,
|
|
87
|
-
jsonResource,
|
|
88
|
-
idleWait: 5000
|
|
89
|
-
}
|
|
90
|
-
co.bulkIngestors.push(new BulkIngestorWhatsOnChainCdn(bulkOptions))
|
|
91
|
-
|
|
92
|
-
const liveOptions: LiveIngestorWhatsOnChainOptions = {
|
|
93
|
-
...wocOptions,
|
|
94
|
-
idleWait: 100000
|
|
95
|
-
}
|
|
96
|
-
co.liveIngestors.push(new LiveIngestorWhatsOnChainPoll(liveOptions))
|
|
41
|
+
batchInsertLimit,
|
|
42
|
+
addLiveRecursionLimit
|
|
43
|
+
)
|
|
97
44
|
|
|
98
45
|
const chaintracks = new Chaintracks(co)
|
|
99
46
|
const available = chaintracks.makeAvailable()
|
|
@@ -102,7 +49,7 @@ export async function createIdbChaintracks(
|
|
|
102
49
|
chain,
|
|
103
50
|
fetch,
|
|
104
51
|
maxPerFile,
|
|
105
|
-
storage,
|
|
52
|
+
storage: co.storage as ChaintracksStorageIdb,
|
|
106
53
|
chaintracks,
|
|
107
54
|
available
|
|
108
55
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Knex, knex as makeKnex } from 'knex'
|
|
2
|
+
import { Chain } from '../../../sdk'
|
|
3
|
+
import { Chaintracks } from './Chaintracks'
|
|
4
|
+
import { ChaintracksFetch } from './util/ChaintracksFetch'
|
|
5
|
+
import { ChaintracksFetchApi } from './Api/ChaintracksFetchApi'
|
|
6
|
+
import { ChaintracksStorageKnex } from './Storage/ChaintracksStorageKnex'
|
|
7
|
+
import { createDefaultKnexChaintracksOptions } from './createDefaultKnexChaintracksOptions'
|
|
8
|
+
|
|
9
|
+
export async function createKnexChaintracks(
|
|
10
|
+
chain: Chain,
|
|
11
|
+
rootFolder: string = './data/',
|
|
12
|
+
knexConfig?: Knex.Config,
|
|
13
|
+
whatsonchainApiKey: string = '',
|
|
14
|
+
maxPerFile: number = 100000,
|
|
15
|
+
maxRetained: number = 2,
|
|
16
|
+
fetch?: ChaintracksFetchApi,
|
|
17
|
+
cdnUrl: string = 'https://cdn.projectbabbage.com/blockheaders/',
|
|
18
|
+
liveHeightThreshold: number = 2000,
|
|
19
|
+
reorgHeightThreshold: number = 400,
|
|
20
|
+
bulkMigrationChunkSize: number = 500,
|
|
21
|
+
batchInsertLimit: number = 400,
|
|
22
|
+
addLiveRecursionLimit: number = 36
|
|
23
|
+
): Promise<{
|
|
24
|
+
chain: Chain
|
|
25
|
+
maxPerFile: number
|
|
26
|
+
fetch: ChaintracksFetchApi
|
|
27
|
+
storage: ChaintracksStorageKnex
|
|
28
|
+
chaintracks: Chaintracks
|
|
29
|
+
available: Promise<void>
|
|
30
|
+
}> {
|
|
31
|
+
try {
|
|
32
|
+
fetch ||= new ChaintracksFetch()
|
|
33
|
+
|
|
34
|
+
const co = createDefaultKnexChaintracksOptions(
|
|
35
|
+
chain,
|
|
36
|
+
rootFolder,
|
|
37
|
+
knexConfig,
|
|
38
|
+
whatsonchainApiKey,
|
|
39
|
+
maxPerFile,
|
|
40
|
+
maxRetained,
|
|
41
|
+
fetch,
|
|
42
|
+
cdnUrl,
|
|
43
|
+
liveHeightThreshold,
|
|
44
|
+
reorgHeightThreshold,
|
|
45
|
+
bulkMigrationChunkSize,
|
|
46
|
+
batchInsertLimit,
|
|
47
|
+
addLiveRecursionLimit
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
const chaintracks = new Chaintracks(co)
|
|
51
|
+
const available = chaintracks.makeAvailable()
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
chain,
|
|
55
|
+
fetch,
|
|
56
|
+
maxPerFile,
|
|
57
|
+
storage: co.storage as ChaintracksStorageKnex,
|
|
58
|
+
chaintracks,
|
|
59
|
+
available
|
|
60
|
+
}
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error('Error setting up Chaintracks with Knex Storage:', error)
|
|
63
|
+
throw error
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Chain } from '../../../sdk'
|
|
2
|
+
import { Chaintracks } from './Chaintracks'
|
|
3
|
+
import { ChaintracksFetch } from './util/ChaintracksFetch'
|
|
4
|
+
import { ChaintracksFetchApi } from './Api/ChaintracksFetchApi'
|
|
5
|
+
import { ChaintracksStorageNoDb } from './Storage/ChaintracksStorageNoDb'
|
|
6
|
+
import { createDefaultNoDbChaintracksOptions } from './createDefaultNoDbChaintracksOptions'
|
|
7
|
+
|
|
8
|
+
export async function createNoDbChaintracks(
|
|
9
|
+
chain: Chain,
|
|
10
|
+
whatsonchainApiKey: string = '',
|
|
11
|
+
maxPerFile: number = 100000,
|
|
12
|
+
maxRetained: number = 2,
|
|
13
|
+
fetch?: ChaintracksFetchApi,
|
|
14
|
+
cdnUrl: string = 'https://cdn.projectbabbage.com/blockheaders/',
|
|
15
|
+
liveHeightThreshold: number = 2000,
|
|
16
|
+
reorgHeightThreshold: number = 400,
|
|
17
|
+
bulkMigrationChunkSize: number = 500,
|
|
18
|
+
batchInsertLimit: number = 400,
|
|
19
|
+
addLiveRecursionLimit: number = 36
|
|
20
|
+
): Promise<{
|
|
21
|
+
chain: Chain
|
|
22
|
+
maxPerFile: number
|
|
23
|
+
fetch: ChaintracksFetchApi
|
|
24
|
+
storage: ChaintracksStorageNoDb
|
|
25
|
+
chaintracks: Chaintracks
|
|
26
|
+
available: Promise<void>
|
|
27
|
+
}> {
|
|
28
|
+
try {
|
|
29
|
+
fetch ||= new ChaintracksFetch()
|
|
30
|
+
|
|
31
|
+
const co = createDefaultNoDbChaintracksOptions(
|
|
32
|
+
chain,
|
|
33
|
+
whatsonchainApiKey,
|
|
34
|
+
maxPerFile,
|
|
35
|
+
maxRetained,
|
|
36
|
+
fetch,
|
|
37
|
+
cdnUrl,
|
|
38
|
+
liveHeightThreshold,
|
|
39
|
+
reorgHeightThreshold,
|
|
40
|
+
bulkMigrationChunkSize,
|
|
41
|
+
batchInsertLimit,
|
|
42
|
+
addLiveRecursionLimit
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
const chaintracks = new Chaintracks(co)
|
|
46
|
+
const available = chaintracks.makeAvailable()
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
chain,
|
|
50
|
+
fetch,
|
|
51
|
+
maxPerFile,
|
|
52
|
+
storage: co.storage as ChaintracksStorageNoDb,
|
|
53
|
+
chaintracks,
|
|
54
|
+
available
|
|
55
|
+
}
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error('Error setting up Chaintracks with NoDb Storage:', error)
|
|
58
|
+
throw error
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -5,6 +5,7 @@ export * from './Storage/ChaintracksStorageKnex'
|
|
|
5
5
|
export * from './Storage/ChaintracksStorageMemory'
|
|
6
6
|
|
|
7
7
|
export * from './createDefaultKnexChaintracksOptions'
|
|
8
|
+
export * from './createKnexChaintracks'
|
|
8
9
|
|
|
9
10
|
export * from './ChaintracksService'
|
|
10
11
|
export * from './Ingest/BulkIngestorWhatsOnChainWs'
|
|
@@ -1,37 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './index.mobile'
|
|
2
2
|
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './Api/ChaintracksFsApi'
|
|
5
|
-
export * from './Api/ChaintracksFetchApi'
|
|
6
|
-
export * from './Api/ChaintracksStorageApi'
|
|
7
|
-
export * from './Api/BulkStorageApi'
|
|
8
|
-
export * from './Api/BulkIngestorApi'
|
|
9
|
-
export * from './Api/LiveIngestorApi'
|
|
10
|
-
export * from './Api/BlockHeaderApi'
|
|
11
|
-
|
|
12
|
-
export * from './Chaintracks'
|
|
13
|
-
export * from './ChaintracksServiceClient'
|
|
14
|
-
|
|
15
|
-
export * from './Ingest/BulkIngestorBase'
|
|
16
|
-
export * from './Ingest/LiveIngestorBase'
|
|
17
|
-
|
|
18
|
-
export * from './Ingest/BulkIngestorCDN'
|
|
19
|
-
export * from './Ingest/BulkIngestorCDNBabbage'
|
|
20
|
-
export * from './Ingest/BulkIngestorWhatsOnChainCdn'
|
|
21
|
-
export * from './Ingest/LiveIngestorWhatsOnChainPoll'
|
|
22
|
-
export * from './Ingest/WhatsOnChainServices'
|
|
23
|
-
|
|
24
|
-
export * from './Storage/BulkStorageBase'
|
|
25
|
-
export * from './Storage/ChaintracksStorageBase'
|
|
26
|
-
export * from './Storage/ChaintracksStorageNoDb'
|
|
27
|
-
export * from './Storage/ChaintracksStorageIdb'
|
|
28
|
-
|
|
29
|
-
export * from './createDefaultNoDbChaintracksOptions'
|
|
3
|
+
export * from './createDefaultIdbChaintracksOptions'
|
|
30
4
|
export * from './createIdbChaintracks'
|
|
31
|
-
|
|
32
|
-
export * from './util/BulkFilesReader'
|
|
33
|
-
export * from './util/HeightRange'
|
|
34
|
-
export * from './util/BulkFileDataManager'
|
|
35
|
-
export * from './util/ChaintracksFetch'
|
|
36
|
-
|
|
37
|
-
export * as utils from './util/blockHeaderUtilities'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export { Chain } from '../../../sdk/types'
|
|
2
|
+
|
|
3
|
+
export * from './Api/ChaintracksApi'
|
|
4
|
+
export * from './Api/ChaintracksFsApi'
|
|
5
|
+
export * from './Api/ChaintracksFetchApi'
|
|
6
|
+
export * from './Api/ChaintracksStorageApi'
|
|
7
|
+
export * from './Api/BulkStorageApi'
|
|
8
|
+
export * from './Api/BulkIngestorApi'
|
|
9
|
+
export * from './Api/LiveIngestorApi'
|
|
10
|
+
export * from './Api/BlockHeaderApi'
|
|
11
|
+
|
|
12
|
+
export * from './Chaintracks'
|
|
13
|
+
export * from './ChaintracksServiceClient'
|
|
14
|
+
|
|
15
|
+
export * from './Ingest/BulkIngestorBase'
|
|
16
|
+
export * from './Ingest/LiveIngestorBase'
|
|
17
|
+
|
|
18
|
+
export * from './Ingest/BulkIngestorCDN'
|
|
19
|
+
export * from './Ingest/BulkIngestorCDNBabbage'
|
|
20
|
+
export * from './Ingest/BulkIngestorWhatsOnChainCdn'
|
|
21
|
+
export * from './Ingest/LiveIngestorWhatsOnChainPoll'
|
|
22
|
+
export * from './Ingest/WhatsOnChainServices'
|
|
23
|
+
|
|
24
|
+
export * from './Storage/BulkStorageBase'
|
|
25
|
+
export * from './Storage/ChaintracksStorageBase'
|
|
26
|
+
export * from './Storage/ChaintracksStorageNoDb'
|
|
27
|
+
export * from './Storage/ChaintracksStorageIdb'
|
|
28
|
+
|
|
29
|
+
export * from './createDefaultNoDbChaintracksOptions'
|
|
30
|
+
export * from './createNoDbChaintracks'
|
|
31
|
+
|
|
32
|
+
export * from './util/BulkFilesReader'
|
|
33
|
+
export * from './util/HeightRange'
|
|
34
|
+
export * from './util/BulkFileDataManager'
|
|
35
|
+
export * from './util/ChaintracksFetch'
|
|
36
|
+
|
|
37
|
+
export * as utils from './util/blockHeaderUtilities'
|
|
@@ -274,16 +274,16 @@ export const validBulkHeaderFiles: BulkHeaderFileInfo[] = [
|
|
|
274
274
|
validated: true
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
|
-
|
|
277
|
+
chain: 'test',
|
|
278
|
+
count: 95262,
|
|
279
|
+
fileHash: 'BvNO9eeMwCaN1Xsx8PQLMJ+YiqF9FrNe+9WnnEo9B44=',
|
|
278
280
|
fileName: 'testNet_16.headers',
|
|
279
281
|
firstHeight: 1600000,
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
lastHash: '0000000035ba2558f604ff73909944235b8094f07c0efa9c91f59b62b4920516',
|
|
283
|
-
fileHash: 'jw+ItRm5zjngLuuClRZONclYWCC66wPovV3XPF585KU=',
|
|
284
|
-
lastChainWork: '00000000000000000000000000000000000000000000015814b79f747a43902a',
|
|
282
|
+
lastChainWork: '00000000000000000000000000000000000000000000015814b84c3f9834ef93',
|
|
283
|
+
lastHash: '000000000ca922c841cb7fedd8f012ebc27b17991c9b00a8fb7ca4b1b2b648d3',
|
|
285
284
|
prevChainWork: '000000000000000000000000000000000000000000000156c3b84396da4e60b9',
|
|
286
|
-
|
|
285
|
+
prevHash: '00000000000005504bfd1a3ce4688c30c86740390102b6cd464a2fb5e0e3fed1',
|
|
286
|
+
sourceUrl: 'https://cdn.projectbabbage.com/blockheaders',
|
|
287
287
|
validated: true
|
|
288
288
|
},
|
|
289
289
|
{
|
|
@@ -418,12 +418,12 @@ export const validBulkHeaderFiles: BulkHeaderFileInfo[] = [
|
|
|
418
418
|
},
|
|
419
419
|
{
|
|
420
420
|
chain: 'main',
|
|
421
|
-
count:
|
|
422
|
-
fileHash: '
|
|
421
|
+
count: 15512,
|
|
422
|
+
fileHash: 'sbLY7ZiEWkdvgAbZlWxYJfd/CLxeYPtuwHrc4WZ0aL4=',
|
|
423
423
|
fileName: 'mainNet_9.headers',
|
|
424
424
|
firstHeight: 900000,
|
|
425
|
-
lastChainWork: '
|
|
426
|
-
lastHash: '
|
|
425
|
+
lastChainWork: '00000000000000000000000000000000000000000168d586f9048fd69f17e1ca',
|
|
426
|
+
lastHash: '000000000000000004c5e39626c72e67d669135a7c004ee86f7191e3ed01cdee',
|
|
427
427
|
prevChainWork: '000000000000000000000000000000000000000001664db1f2d50327928007e0',
|
|
428
428
|
prevHash: '00000000000000000e7dcc27c06ee353bd37260b2e7e664314c204f0324a5087',
|
|
429
429
|
sourceUrl: 'https://cdn.projectbabbage.com/blockheaders',
|
|
@@ -73,6 +73,19 @@ export class KnexMigrations implements MigrationSource<string> {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
migrations['2025-09-06-001 add proven txs blockHash index'] = {
|
|
77
|
+
async up(knex) {
|
|
78
|
+
await knex.schema.alterTable('proven_txs', table => {
|
|
79
|
+
table.index('blockHash')
|
|
80
|
+
})
|
|
81
|
+
},
|
|
82
|
+
async down(knex) {
|
|
83
|
+
await knex.schema.alterTable('proven_txs', table => {
|
|
84
|
+
table.dropIndex('blockHash')
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
76
89
|
migrations['2025-05-13-001 add monitor events event index'] = {
|
|
77
90
|
async up(knex) {
|
|
78
91
|
await knex.schema.alterTable('monitor_events', table => {
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { Beef, MerklePath } from '@bsv/sdk'
|
|
2
|
-
import { asArray, EntityProvenTxReq, sdk, verifyOne, verifyTruthy, wait } from '../../src/index.client'
|
|
3
2
|
import { TaskCheckForProofs } from '../../src/monitor/tasks/TaskCheckForProofs'
|
|
4
3
|
import { TaskClock } from '../../src/monitor/tasks/TaskClock'
|
|
5
4
|
import { TaskNewHeader } from '../../src/monitor/tasks/TaskNewHeader'
|
|
6
5
|
import { TaskPurge } from '../../src/monitor/tasks/TaskPurge'
|
|
7
6
|
import { TaskSendWaiting } from '../../src/monitor/tasks/TaskSendWaiting'
|
|
8
7
|
import { _tu, TestSetup1Wallet, TestWallet } from '../utils/TestUtilsWalletStorage'
|
|
9
|
-
import exp from 'constants'
|
|
10
8
|
import { TaskReviewStatus } from '../../src/monitor/tasks/TaskReviewStatus'
|
|
9
|
+
import { WERR_INTERNAL } from '../../src/sdk/WERR_errors'
|
|
10
|
+
import { Monitor } from '../../src/monitor/Monitor'
|
|
11
|
+
import { verifyOne, verifyTruthy, wait } from '../../src/utility/utilityHelpers'
|
|
12
|
+
import { EntityProvenTxReq } from '../../src/storage/schema/entities/EntityProvenTxReq'
|
|
13
|
+
import { GetMerklePathResult } from '../../src/sdk/WalletServices.interfaces'
|
|
14
|
+
import { ProvenTransactionStatus } from '../../src/sdk/types'
|
|
15
|
+
import { ReviewActionResult } from '../../src/sdk/WalletStorage.interfaces'
|
|
11
16
|
|
|
12
17
|
describe('Monitor tests', () => {
|
|
13
18
|
jest.setTimeout(99999999)
|
|
@@ -37,7 +42,7 @@ describe('Monitor tests', () => {
|
|
|
37
42
|
|
|
38
43
|
// This test takes a bit over a minute to run... un-skip it to work on it.
|
|
39
44
|
for (const { chain, wallet, services, monitor } of ctxs) {
|
|
40
|
-
if (!monitor) throw new
|
|
45
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
41
46
|
|
|
42
47
|
{
|
|
43
48
|
// The clock attempts to update nextMinute to msecs for each minute.
|
|
@@ -47,10 +52,10 @@ describe('Monitor tests', () => {
|
|
|
47
52
|
monitor._tasks.push(task)
|
|
48
53
|
const msecsFirst = task.nextMinute
|
|
49
54
|
const startTasksPromise = monitor.startTasks()
|
|
50
|
-
await wait(
|
|
55
|
+
await wait(Monitor.oneMinute * 1.1)
|
|
51
56
|
const msecsNext = task.nextMinute
|
|
52
57
|
monitor.stopTasks()
|
|
53
|
-
const elapsed = (msecsNext - msecsFirst) /
|
|
58
|
+
const elapsed = (msecsNext - msecsFirst) / Monitor.oneMinute
|
|
54
59
|
expect(elapsed === 1 || elapsed === 2).toBe(true)
|
|
55
60
|
await startTasksPromise
|
|
56
61
|
}
|
|
@@ -62,7 +67,7 @@ describe('Monitor tests', () => {
|
|
|
62
67
|
|
|
63
68
|
// This test takes 10+ seconds to run... un-skip it to work on it.
|
|
64
69
|
for (const { chain, wallet, services, monitor } of ctxs) {
|
|
65
|
-
if (!monitor) throw new
|
|
70
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
66
71
|
|
|
67
72
|
{
|
|
68
73
|
// The new header task polls chaintracks for latest header and if new sets flag to check for proofs.
|
|
@@ -71,7 +76,7 @@ describe('Monitor tests', () => {
|
|
|
71
76
|
monitor._tasks.push(task)
|
|
72
77
|
expect(TaskCheckForProofs.checkNow).toBe(false)
|
|
73
78
|
const startTasksPromise = monitor.startTasks()
|
|
74
|
-
await wait(
|
|
79
|
+
await wait(Monitor.oneSecond * 10)
|
|
75
80
|
expect(task.header).toBeTruthy()
|
|
76
81
|
expect(TaskCheckForProofs.checkNow).toBe(true)
|
|
77
82
|
monitor.stopTasks()
|
|
@@ -91,7 +96,7 @@ describe('Monitor tests', () => {
|
|
|
91
96
|
*/
|
|
92
97
|
|
|
93
98
|
for (const { chain, wallet, services, monitor } of ctxs) {
|
|
94
|
-
if (!monitor) throw new
|
|
99
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
95
100
|
|
|
96
101
|
{
|
|
97
102
|
const task = new TaskPurge(monitor, {
|
|
@@ -141,7 +146,7 @@ describe('Monitor tests', () => {
|
|
|
141
146
|
})
|
|
142
147
|
|
|
143
148
|
for (const { activeStorage: storage, monitor } of ctxs) {
|
|
144
|
-
if (!monitor) throw new
|
|
149
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
145
150
|
|
|
146
151
|
monitor.lastNewHeader = {
|
|
147
152
|
height: 999999999,
|
|
@@ -203,7 +208,7 @@ describe('Monitor tests', () => {
|
|
|
203
208
|
})
|
|
204
209
|
|
|
205
210
|
for (const { activeStorage: storage, monitor } of ctxs) {
|
|
206
|
-
if (!monitor) throw new
|
|
211
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
207
212
|
|
|
208
213
|
{
|
|
209
214
|
const attempts: number[] = []
|
|
@@ -238,7 +243,7 @@ describe('Monitor tests', () => {
|
|
|
238
243
|
}
|
|
239
244
|
})
|
|
240
245
|
|
|
241
|
-
const mockGetMerklePathResults:
|
|
246
|
+
const mockGetMerklePathResults: GetMerklePathResult[] = [
|
|
242
247
|
{
|
|
243
248
|
name: 'WoCTsc',
|
|
244
249
|
merklePath: new MerklePath(1652142, [
|
|
@@ -411,7 +416,7 @@ describe('Monitor tests', () => {
|
|
|
411
416
|
})
|
|
412
417
|
|
|
413
418
|
for (const { activeStorage: storage, monitor } of ctxs) {
|
|
414
|
-
if (!monitor) throw new
|
|
419
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
415
420
|
|
|
416
421
|
{
|
|
417
422
|
const task = new TaskSendWaiting(monitor, 1, 1)
|
|
@@ -512,7 +517,7 @@ describe('Monitor tests', () => {
|
|
|
512
517
|
})
|
|
513
518
|
|
|
514
519
|
for (const { activeStorage: storage, monitor } of ctxs) {
|
|
515
|
-
if (!monitor) throw new
|
|
520
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
516
521
|
|
|
517
522
|
monitor.lastNewHeader = {
|
|
518
523
|
height: 999999999,
|
|
@@ -525,7 +530,7 @@ describe('Monitor tests', () => {
|
|
|
525
530
|
nonce: 0
|
|
526
531
|
}
|
|
527
532
|
|
|
528
|
-
monitor.onTransactionProven = async (txStatus:
|
|
533
|
+
monitor.onTransactionProven = async (txStatus: ProvenTransactionStatus) => {
|
|
529
534
|
expect(txStatus.txid).toBeTruthy()
|
|
530
535
|
expect(txStatus.blockHash).toBeTruthy()
|
|
531
536
|
expect(txStatus.blockHeight).toBeTruthy()
|
|
@@ -581,14 +586,14 @@ describe('Monitor tests', () => {
|
|
|
581
586
|
})
|
|
582
587
|
|
|
583
588
|
for (const { activeStorage: storage, monitor } of ctxs) {
|
|
584
|
-
if (!monitor) throw new
|
|
589
|
+
if (!monitor) throw new WERR_INTERNAL('test requires setup with monitor')
|
|
585
590
|
|
|
586
591
|
for (const txid of expectedTxids) {
|
|
587
592
|
const req = verifyTruthy(await EntityProvenTxReq.fromStorageTxid(storage, txid))
|
|
588
593
|
expect(req.status).toBe('unsent')
|
|
589
594
|
}
|
|
590
595
|
|
|
591
|
-
monitor.onTransactionBroadcasted = async (broadcastResult:
|
|
596
|
+
monitor.onTransactionBroadcasted = async (broadcastResult: ReviewActionResult) => {
|
|
592
597
|
expect(broadcastResult.status).toBe('success')
|
|
593
598
|
expect(expectedTxids).toContain(broadcastResult.txid)
|
|
594
599
|
updatesReceived++
|