@hardkas/toolkit 0.11.1-alpha → 0.11.4-alpha
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/dist/fee-estimator.d.ts +9 -0
- package/dist/fee-estimator.d.ts.map +1 -0
- package/dist/fee-estimator.js +32 -0
- package/dist/fee-estimator.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +3 -1
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +13 -2
- package/dist/indexer.js.map +1 -1
- package/dist/jobs.d.ts +3 -0
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +16 -1
- package/dist/jobs.js.map +1 -1
- package/dist/payment.d.ts +4 -2
- package/dist/payment.d.ts.map +1 -1
- package/dist/payment.js +30 -12
- package/dist/payment.js.map +1 -1
- package/dist/query-api.d.ts +22 -0
- package/dist/query-api.d.ts.map +1 -0
- package/dist/query-api.js +116 -0
- package/dist/query-api.js.map +1 -0
- package/dist/snapshot/serialization.d.ts +0 -9
- package/dist/snapshot/serialization.d.ts.map +1 -1
- package/dist/snapshot/serialization.js +0 -12
- package/dist/snapshot/serialization.js.map +1 -1
- package/dist/stores/invoice-store.d.ts +15 -1
- package/dist/stores/invoice-store.d.ts.map +1 -1
- package/dist/stores/invoice-store.js.map +1 -1
- package/dist/subscriptions.d.ts +22 -0
- package/dist/subscriptions.d.ts.map +1 -0
- package/dist/subscriptions.js +91 -0
- package/dist/subscriptions.js.map +1 -0
- package/dist/wallet.d.ts +81 -2
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallet.js +328 -13
- package/dist/wallet.js.map +1 -1
- package/package.json +27 -11
- package/.turbo/turbo-build.log +0 -4
- package/src/dag/consensus.ts +0 -150
- package/src/dag/index.ts +0 -73
- package/src/dag/store.ts +0 -40
- package/src/dag/topology.ts +0 -108
- package/src/dag/types.ts +0 -20
- package/src/index.ts +0 -9
- package/src/indexer.ts +0 -128
- package/src/jobs.ts +0 -46
- package/src/payment.ts +0 -81
- package/src/silver/index.ts +0 -102
- package/src/silver/templates.ts +0 -27
- package/src/silver/types.ts +0 -37
- package/src/snapshot/backends/FsSnapshotBackend.ts +0 -100
- package/src/snapshot/backends/MemorySnapshotBackend.ts +0 -65
- package/src/snapshot/index.ts +0 -102
- package/src/snapshot/serialization.ts +0 -35
- package/src/snapshot/types.ts +0 -45
- package/src/stores/invoice-store.ts +0 -53
- package/src/stores/utxo-control-store.ts +0 -78
- package/src/utxos.ts +0 -451
- package/src/wallet.ts +0 -93
- package/test/silver.test.ts +0 -59
- package/test/snapshot.test.ts +0 -99
- package/test/toolkit.test.ts +0 -109
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -8
package/dist/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardkas/toolkit",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.4-alpha",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"require": "./dist/index.js",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
8
19
|
"dependencies": {
|
|
20
|
+
"@hardkas/observability": "0.11.4-alpha",
|
|
9
21
|
"fs-extra": "^11.2.0",
|
|
10
|
-
"@hardkas/
|
|
11
|
-
"@hardkas/
|
|
12
|
-
"@hardkas/
|
|
13
|
-
"@hardkas/
|
|
14
|
-
"@hardkas/query-store": "0.11.
|
|
15
|
-
"@hardkas/
|
|
16
|
-
"@hardkas/
|
|
22
|
+
"@hardkas/accounts": "0.11.4-alpha",
|
|
23
|
+
"@hardkas/jobs": "0.11.4-alpha",
|
|
24
|
+
"@hardkas/query": "0.11.4-alpha",
|
|
25
|
+
"@hardkas/kaspa-rpc": "0.11.4-alpha",
|
|
26
|
+
"@hardkas/query-store": "0.11.4-alpha",
|
|
27
|
+
"@hardkas/core": "0.11.4-alpha",
|
|
28
|
+
"@hardkas/artifacts": "0.11.4-alpha",
|
|
29
|
+
"@hardkas/tx-builder": "0.11.4-alpha"
|
|
17
30
|
},
|
|
18
31
|
"devDependencies": {
|
|
19
|
-
"
|
|
20
|
-
"vitest": "^2.1.2",
|
|
32
|
+
"@types/fs-extra": "^11.0.4",
|
|
21
33
|
"@types/node": "^20.12.7",
|
|
22
|
-
"
|
|
34
|
+
"typescript": "^5.6.3",
|
|
35
|
+
"vitest": "^2.1.2"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
23
39
|
},
|
|
24
40
|
"scripts": {
|
|
25
41
|
"build": "tsc",
|
package/.turbo/turbo-build.log
DELETED
package/src/dag/consensus.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { LocalDagStore } from './store.js';
|
|
2
|
-
import { DAGTopology } from './topology.js';
|
|
3
|
-
import { DagBlock, DagStatistics } from './types.js';
|
|
4
|
-
|
|
5
|
-
export class ConsensusView {
|
|
6
|
-
// Memoize calculated blue scores to prevent exponential recursion
|
|
7
|
-
private blueScoreCache = new Map<string, number>();
|
|
8
|
-
|
|
9
|
-
public constructor(
|
|
10
|
-
private readonly store: LocalDagStore,
|
|
11
|
-
private readonly topology: DAGTopology
|
|
12
|
-
) {}
|
|
13
|
-
|
|
14
|
-
public clearCache(): void {
|
|
15
|
-
this.blueScoreCache.clear();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public async blueScore(hash: string): Promise<number> {
|
|
19
|
-
// If provided explicitly in the payload, use it
|
|
20
|
-
const b = await this.topology.block(hash);
|
|
21
|
-
if (b.blueScore !== undefined) {
|
|
22
|
-
return b.blueScore;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (this.blueScoreCache.has(hash)) {
|
|
26
|
-
return this.blueScoreCache.get(hash)!;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (b.parents.length === 0) {
|
|
30
|
-
this.blueScoreCache.set(hash, 0);
|
|
31
|
-
return 0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let maxScore = 0;
|
|
35
|
-
for (const p of b.parents) {
|
|
36
|
-
try {
|
|
37
|
-
const score = await this.blueScore(p);
|
|
38
|
-
if (score > maxScore) maxScore = score;
|
|
39
|
-
} catch (e) {
|
|
40
|
-
// Ignore missing parents (orphans)
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const calculatedScore = maxScore + 1;
|
|
45
|
-
this.blueScoreCache.set(hash, calculatedScore);
|
|
46
|
-
return calculatedScore;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public async confirmations(hash: string): Promise<number> {
|
|
50
|
-
const isOrphan = await this.isOrphan(hash);
|
|
51
|
-
if (isOrphan) return 0;
|
|
52
|
-
|
|
53
|
-
const allBlocks = this.store.getAllBlocks();
|
|
54
|
-
const tips = allBlocks.filter(b => this.store.getChildrenHashes(b.hash).length === 0);
|
|
55
|
-
|
|
56
|
-
if (tips.length === 0) return 0;
|
|
57
|
-
|
|
58
|
-
let maxScore = -1;
|
|
59
|
-
let heaviestTip: DagBlock | null = null;
|
|
60
|
-
|
|
61
|
-
for (const tip of tips) {
|
|
62
|
-
const score = await this.blueScore(tip.hash);
|
|
63
|
-
if (score > maxScore) {
|
|
64
|
-
maxScore = score;
|
|
65
|
-
heaviestTip = tip;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (!heaviestTip) return 0;
|
|
70
|
-
|
|
71
|
-
// Verify reachability: does the heaviest tip actually include this block in its past?
|
|
72
|
-
const reachable = await this.topology.reachability(hash, heaviestTip.hash);
|
|
73
|
-
if (!reachable) return 0;
|
|
74
|
-
|
|
75
|
-
const blockScore = await this.blueScore(hash);
|
|
76
|
-
return Math.max(0, maxScore - blockScore);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
private async isOrphan(hash: string): Promise<boolean> {
|
|
80
|
-
const b = this.store.getBlock(hash);
|
|
81
|
-
if (!b) return false;
|
|
82
|
-
if (b.parents.length === 0) return false;
|
|
83
|
-
|
|
84
|
-
for (const p of b.parents) {
|
|
85
|
-
if (!this.store.getBlock(p)) return true;
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public async trace(txid: string): Promise<{ txid: string, status: string, foundIn: string[] }> {
|
|
91
|
-
const allBlocks = this.store.getAllBlocks();
|
|
92
|
-
const foundInBlocks: string[] = [];
|
|
93
|
-
|
|
94
|
-
for (const block of allBlocks) {
|
|
95
|
-
if (block.transactions && block.transactions.some(tx => tx.id === txid)) {
|
|
96
|
-
foundInBlocks.push(block.hash);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (foundInBlocks.length === 0) {
|
|
101
|
-
return { txid, status: "not_found", foundIn: [] };
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (foundInBlocks.length === 1) {
|
|
105
|
-
const blockHash = foundInBlocks[0]!;
|
|
106
|
-
const isOrphan = await this.isOrphan(blockHash);
|
|
107
|
-
return { txid, status: isOrphan ? "orphan" : "accepted", foundIn: foundInBlocks };
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Parallel branch conflict detection
|
|
111
|
-
let isConflict = false;
|
|
112
|
-
for (let i = 0; i < foundInBlocks.length; i++) {
|
|
113
|
-
for (let j = i + 1; j < foundInBlocks.length; j++) {
|
|
114
|
-
const b1 = foundInBlocks[i]!;
|
|
115
|
-
const b2 = foundInBlocks[j]!;
|
|
116
|
-
|
|
117
|
-
const reach1 = await this.topology.reachability(b1, b2);
|
|
118
|
-
const reach2 = await this.topology.reachability(b2, b1);
|
|
119
|
-
|
|
120
|
-
if (!reach1 && !reach2) {
|
|
121
|
-
isConflict = true;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
txid,
|
|
129
|
-
status: isConflict ? "conflict" : "merged",
|
|
130
|
-
foundIn: foundInBlocks
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
public async statistics(): Promise<DagStatistics> {
|
|
135
|
-
const allBlocks = this.store.getAllBlocks();
|
|
136
|
-
const tips = allBlocks.filter(b => this.store.getChildrenHashes(b.hash).length === 0);
|
|
137
|
-
|
|
138
|
-
let highestBlueScore = 0;
|
|
139
|
-
for (const b of allBlocks) {
|
|
140
|
-
const score = await this.blueScore(b.hash);
|
|
141
|
-
if (score > highestBlueScore) highestBlueScore = score;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return {
|
|
145
|
-
totalBlocks: allBlocks.length,
|
|
146
|
-
totalTips: tips.length,
|
|
147
|
-
highestBlueScore
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
}
|
package/src/dag/index.ts
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { LocalDagStore } from './store.js';
|
|
2
|
-
import { DAGTopology } from './topology.js';
|
|
3
|
-
import { ConsensusView } from './consensus.js';
|
|
4
|
-
import { DagBlock, DagNeighborhood, DagStatistics } from './types.js';
|
|
5
|
-
|
|
6
|
-
export * from './types.js';
|
|
7
|
-
|
|
8
|
-
export class DagApi {
|
|
9
|
-
private store: LocalDagStore;
|
|
10
|
-
private topology: DAGTopology;
|
|
11
|
-
private consensus: ConsensusView;
|
|
12
|
-
|
|
13
|
-
constructor() {
|
|
14
|
-
this.store = new LocalDagStore();
|
|
15
|
-
this.topology = new DAGTopology(this.store);
|
|
16
|
-
this.consensus = new ConsensusView(this.store, this.topology);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public async ingestBlocks(blocks: DagBlock[]): Promise<void> {
|
|
20
|
-
this.store.ingest(blocks);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public async snapshot(): Promise<DagBlock[]> {
|
|
24
|
-
return this.store.getAllBlocks();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public async restore(blocks: DagBlock[]): Promise<void> {
|
|
28
|
-
this.store.clear();
|
|
29
|
-
this.store.ingest(blocks);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public async reload(): Promise<void> {
|
|
33
|
-
this.consensus.clearCache();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Topology
|
|
37
|
-
public async block(hash: string): Promise<DagBlock> {
|
|
38
|
-
return this.topology.block(hash);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public async parents(hash: string): Promise<DagBlock[]> {
|
|
42
|
-
return this.topology.parents(hash);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public async children(hash: string): Promise<DagBlock[]> {
|
|
46
|
-
return this.topology.children(hash);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public async reachability(fromHash: string, toHash: string): Promise<boolean> {
|
|
50
|
-
return this.topology.reachability(fromHash, toHash);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public async neighborhood(hash: string, opts: { depth?: number } = {}): Promise<DagNeighborhood> {
|
|
54
|
-
return this.topology.neighborhood(hash, opts);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Consensus
|
|
58
|
-
public async blueScore(hash: string): Promise<number> {
|
|
59
|
-
return this.consensus.blueScore(hash);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
public async confirmations(hash: string): Promise<number> {
|
|
63
|
-
return this.consensus.confirmations(hash);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public async trace(txid: string): Promise<{ txid: string, status: string, foundIn: string[] }> {
|
|
67
|
-
return this.consensus.trace(txid);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public async statistics(): Promise<DagStatistics> {
|
|
71
|
-
return this.consensus.statistics();
|
|
72
|
-
}
|
|
73
|
-
}
|
package/src/dag/store.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { DagBlock } from './types.js';
|
|
2
|
-
|
|
3
|
-
export class LocalDagStore {
|
|
4
|
-
private blocks = new Map<string, DagBlock>();
|
|
5
|
-
|
|
6
|
-
// Reverse index to avoid O(N) children scans
|
|
7
|
-
private childrenIndex = new Map<string, Set<string>>();
|
|
8
|
-
|
|
9
|
-
public ingest(blocksToIngest: DagBlock[]): void {
|
|
10
|
-
for (const block of blocksToIngest) {
|
|
11
|
-
this.blocks.set(block.hash, block);
|
|
12
|
-
|
|
13
|
-
// Update children index
|
|
14
|
-
for (const parent of block.parents) {
|
|
15
|
-
if (!this.childrenIndex.has(parent)) {
|
|
16
|
-
this.childrenIndex.set(parent, new Set());
|
|
17
|
-
}
|
|
18
|
-
this.childrenIndex.get(parent)!.add(block.hash);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public getBlock(hash: string): DagBlock | undefined {
|
|
24
|
-
return this.blocks.get(hash);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public getChildrenHashes(hash: string): string[] {
|
|
28
|
-
const children = this.childrenIndex.get(hash);
|
|
29
|
-
return children ? Array.from(children) : [];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public getAllBlocks(): DagBlock[] {
|
|
33
|
-
return Array.from(this.blocks.values());
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public clear(): void {
|
|
37
|
-
this.blocks.clear();
|
|
38
|
-
this.childrenIndex.clear();
|
|
39
|
-
}
|
|
40
|
-
}
|
package/src/dag/topology.ts
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { LocalDagStore } from './store.js';
|
|
2
|
-
import { DagBlock, DagNeighborhood } from './types.js';
|
|
3
|
-
|
|
4
|
-
export class DAGTopology {
|
|
5
|
-
constructor(private store: LocalDagStore) {}
|
|
6
|
-
|
|
7
|
-
public async block(hash: string): Promise<DagBlock> {
|
|
8
|
-
const b = this.store.getBlock(hash);
|
|
9
|
-
if (!b) throw new Error(`Block not found: ${hash}`);
|
|
10
|
-
return b;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public async parents(hash: string): Promise<DagBlock[]> {
|
|
14
|
-
const b = await this.block(hash);
|
|
15
|
-
return b.parents.map(p => this.store.getBlock(p)).filter(Boolean) as DagBlock[];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public async children(hash: string): Promise<DagBlock[]> {
|
|
19
|
-
// Fast lookup via index instead of O(N) scan
|
|
20
|
-
const childrenHashes = this.store.getChildrenHashes(hash);
|
|
21
|
-
return childrenHashes.map(c => this.store.getBlock(c)).filter(Boolean) as DagBlock[];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public async reachability(fromHash: string, toHash: string): Promise<boolean> {
|
|
25
|
-
if (fromHash === toHash) return true;
|
|
26
|
-
|
|
27
|
-
const toBlock = this.store.getBlock(toHash);
|
|
28
|
-
if (!toBlock) return false;
|
|
29
|
-
|
|
30
|
-
// DFS for reachability
|
|
31
|
-
const visited = new Set<string>();
|
|
32
|
-
const stack = [toHash];
|
|
33
|
-
|
|
34
|
-
while (stack.length > 0) {
|
|
35
|
-
const current = stack.pop()!;
|
|
36
|
-
if (current === fromHash) return true;
|
|
37
|
-
if (visited.has(current)) continue;
|
|
38
|
-
visited.add(current);
|
|
39
|
-
|
|
40
|
-
const b = this.store.getBlock(current);
|
|
41
|
-
if (b) {
|
|
42
|
-
for (const p of b.parents) {
|
|
43
|
-
stack.push(p);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
public async neighborhood(hash: string, opts: { depth?: number } = {}): Promise<DagNeighborhood> {
|
|
52
|
-
const maxDepth = opts.depth || 1;
|
|
53
|
-
const baseBlock = await this.block(hash);
|
|
54
|
-
|
|
55
|
-
const ancestors = new Map<string, DagBlock>();
|
|
56
|
-
const descendants = new Map<string, DagBlock>();
|
|
57
|
-
|
|
58
|
-
// BFS for Ancestors
|
|
59
|
-
let aQueue = [{ hash, currentDepth: 0 }];
|
|
60
|
-
let aVisited = new Set<string>([hash]);
|
|
61
|
-
|
|
62
|
-
while (aQueue.length > 0) {
|
|
63
|
-
const { hash: curr, currentDepth } = aQueue.shift()!;
|
|
64
|
-
if (currentDepth >= maxDepth) continue;
|
|
65
|
-
|
|
66
|
-
const b = this.store.getBlock(curr);
|
|
67
|
-
if (!b) continue;
|
|
68
|
-
|
|
69
|
-
for (const p of b.parents) {
|
|
70
|
-
if (!aVisited.has(p)) {
|
|
71
|
-
aVisited.add(p);
|
|
72
|
-
const parentBlock = this.store.getBlock(p);
|
|
73
|
-
if (parentBlock) {
|
|
74
|
-
ancestors.set(p, parentBlock);
|
|
75
|
-
aQueue.push({ hash: p, currentDepth: currentDepth + 1 });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// BFS for Descendants
|
|
82
|
-
let dQueue = [{ hash, currentDepth: 0 }];
|
|
83
|
-
let dVisited = new Set<string>([hash]);
|
|
84
|
-
|
|
85
|
-
while (dQueue.length > 0) {
|
|
86
|
-
const { hash: curr, currentDepth } = dQueue.shift()!;
|
|
87
|
-
if (currentDepth >= maxDepth) continue;
|
|
88
|
-
|
|
89
|
-
const children = this.store.getChildrenHashes(curr);
|
|
90
|
-
for (const c of children) {
|
|
91
|
-
if (!dVisited.has(c)) {
|
|
92
|
-
dVisited.add(c);
|
|
93
|
-
const childBlock = this.store.getBlock(c);
|
|
94
|
-
if (childBlock) {
|
|
95
|
-
descendants.set(c, childBlock);
|
|
96
|
-
dQueue.push({ hash: c, currentDepth: currentDepth + 1 });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
hash,
|
|
104
|
-
ancestors: Array.from(ancestors.values()),
|
|
105
|
-
descendants: Array.from(descendants.values())
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|
package/src/dag/types.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface DagBlock {
|
|
2
|
-
hash: string;
|
|
3
|
-
parents: string[];
|
|
4
|
-
blueScore?: number;
|
|
5
|
-
transactions?: { id: string, payload?: any }[];
|
|
6
|
-
// Other fields can be appended as needed by the consumer
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface DagNeighborhood {
|
|
11
|
-
hash: string;
|
|
12
|
-
ancestors: DagBlock[];
|
|
13
|
-
descendants: DagBlock[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface DagStatistics {
|
|
17
|
-
totalBlocks: number;
|
|
18
|
-
totalTips: number;
|
|
19
|
-
highestBlueScore: number;
|
|
20
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * from './wallet.js';
|
|
2
|
-
export * from './payment.js';
|
|
3
|
-
export * from './indexer.js';
|
|
4
|
-
export * from './jobs.js';
|
|
5
|
-
export * from './utxos.js';
|
|
6
|
-
export * from './dag/index.js';
|
|
7
|
-
export * from './snapshot/index.js';
|
|
8
|
-
export * from './silver/index.js';
|
|
9
|
-
export * from './silver/types.js';
|
package/src/indexer.ts
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { EventSubscriber, BackendPlugin } from '@hardkas/core';
|
|
2
|
-
import { ProjectionStoreJson } from '@hardkas/query-store';
|
|
3
|
-
import { ArtifactIndexStoreJson } from '@hardkas/artifacts';
|
|
4
|
-
import { DagApi } from './dag/index.js';
|
|
5
|
-
import { SnapshotParticipant } from './snapshot/types.js';
|
|
6
|
-
|
|
7
|
-
export interface IndexerBackendPlugin extends BackendPlugin {
|
|
8
|
-
balance?(address: string): Promise<bigint>;
|
|
9
|
-
history?(address: string): Promise<unknown[]>;
|
|
10
|
-
utxos?(address: string): Promise<unknown[]>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface IndexerToolkitOptions {
|
|
14
|
-
dataDir?: string;
|
|
15
|
-
backend?: IndexerBackendPlugin;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class IndexerToolkit implements SnapshotParticipant {
|
|
19
|
-
private subscriber: EventSubscriber;
|
|
20
|
-
private projection?: ProjectionStoreJson;
|
|
21
|
-
private artifactIndex?: ArtifactIndexStoreJson;
|
|
22
|
-
public readonly dag: DagApi;
|
|
23
|
-
public readonly backend?: IndexerBackendPlugin | undefined;
|
|
24
|
-
|
|
25
|
-
private constructor(private readonly options: IndexerToolkitOptions) {
|
|
26
|
-
this.subscriber = new EventSubscriber();
|
|
27
|
-
this.backend = options.backend;
|
|
28
|
-
|
|
29
|
-
if (!this.backend || !this.backend.capabilities.externalState) {
|
|
30
|
-
this.projection = new ProjectionStoreJson({
|
|
31
|
-
dirPath: options.dataDir ? `${options.dataDir}/projections` : '.hardkas/indexer/projections',
|
|
32
|
-
namespace: 'indexer'
|
|
33
|
-
});
|
|
34
|
-
this.artifactIndex = new ArtifactIndexStoreJson({
|
|
35
|
-
filePath: options.dataDir ? `${options.dataDir}/artifacts.json` : '.hardkas/indexer/artifacts.json'
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
this.dag = new DagApi();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public static open(options: IndexerToolkitOptions = {}): IndexerToolkit {
|
|
43
|
-
return new IndexerToolkit(options);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public async connect(): Promise<void> {
|
|
47
|
-
if (this.backend?.connect) {
|
|
48
|
-
await this.backend.connect();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public async watch(address: string): Promise<void> {
|
|
53
|
-
// Polling wrapper as per V1 rules.
|
|
54
|
-
this.subscriber.subscribe({
|
|
55
|
-
source: {}, // mock source for facade
|
|
56
|
-
type: "payment",
|
|
57
|
-
intervalMs: 1000,
|
|
58
|
-
watchedAddresses: [address],
|
|
59
|
-
handler: async (evt) => {
|
|
60
|
-
// Internally updates projections if address is involved
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public async balance(address: string): Promise<bigint> {
|
|
66
|
-
if (this.backend?.balance) {
|
|
67
|
-
return this.backend.balance(address);
|
|
68
|
-
}
|
|
69
|
-
const balances = this.projection?.get('balances') || {};
|
|
70
|
-
return BigInt(balances[address] || 0);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public async history(address: string): Promise<any[]> {
|
|
74
|
-
if (this.backend?.history) {
|
|
75
|
-
return this.backend.history(address);
|
|
76
|
-
}
|
|
77
|
-
const history = this.projection?.get('history') || {};
|
|
78
|
-
return history[address] || [];
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
public async findReceipts(opts: { tags: string[] }): Promise<any[]> {
|
|
82
|
-
if (!this.artifactIndex) return [];
|
|
83
|
-
return this.artifactIndex.find(opts);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public async ingestArtifact(artifact: any): Promise<void> {
|
|
87
|
-
if (!this.artifactIndex) return;
|
|
88
|
-
this.artifactIndex.index({
|
|
89
|
-
hash: artifact.id || 'mock_hash',
|
|
90
|
-
schema: artifact.schema || 'unknown.v1',
|
|
91
|
-
timestamp: new Date().toISOString(),
|
|
92
|
-
filePath: `/mock/path/${artifact.id}.json`,
|
|
93
|
-
tags: artifact.tags || []
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public async snapshot(): Promise<any> {
|
|
98
|
-
if (this.backend && !this.backend.capabilities.snapshots && this.backend.capabilities.externalState) {
|
|
99
|
-
return {
|
|
100
|
-
backend: this.backend.name,
|
|
101
|
-
externalState: true,
|
|
102
|
-
snapshots: false,
|
|
103
|
-
dag: await this.dag.snapshot()
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
return {
|
|
107
|
-
projection: this.projection?.getAll() || {},
|
|
108
|
-
artifactIndex: this.artifactIndex?.getAll() || [],
|
|
109
|
-
dag: await this.dag.snapshot()
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
public async restore(state: any): Promise<void> {
|
|
114
|
-
if (state.externalState) {
|
|
115
|
-
// Cannot restore local state over an external backend. Just restore DAG.
|
|
116
|
-
if (state.dag) await this.dag.restore(state.dag);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (state.projection && this.projection) this.projection.setAll(state.projection);
|
|
120
|
-
if (state.artifactIndex && this.artifactIndex) this.artifactIndex.setAll(state.artifactIndex);
|
|
121
|
-
if (state.dag) await this.dag.restore(state.dag);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
public async reload(): Promise<void> {
|
|
125
|
-
await this.dag.reload();
|
|
126
|
-
// Projection and artifactIndex read synchronously from memory in this version
|
|
127
|
-
}
|
|
128
|
-
}
|
package/src/jobs.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { JobRunner, JobStoreJson, JobHandler, JobRecord } from '@hardkas/jobs';
|
|
2
|
-
import { SnapshotParticipant, SnapshotState } from './snapshot/types.js';
|
|
3
|
-
|
|
4
|
-
export interface JobsToolkitOptions {
|
|
5
|
-
storePath?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class JobsToolkit implements SnapshotParticipant {
|
|
9
|
-
private runner: JobRunner;
|
|
10
|
-
private store: JobStoreJson;
|
|
11
|
-
|
|
12
|
-
private constructor(options: JobsToolkitOptions) {
|
|
13
|
-
this.store = new JobStoreJson({ filePath: options.storePath || '.hardkas-data/jobs.json' });
|
|
14
|
-
this.runner = new JobRunner({ store: this.store });
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public static open(options: JobsToolkitOptions = {}): JobsToolkit {
|
|
18
|
-
return new JobsToolkit(options);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public registerHandler(type: string, handler: JobHandler): void {
|
|
22
|
-
this.runner.registerHandler(type, handler);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public async enqueue(type: string, args?: any): Promise<string> {
|
|
26
|
-
return this.runner.enqueue(type, args);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async getJob(id: string): Promise<JobRecord | undefined> {
|
|
30
|
-
return this.runner.getJob(id);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public async snapshot(): Promise<SnapshotState> {
|
|
34
|
-
return this.store.getAll();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public async restore(state: SnapshotState): Promise<void> {
|
|
38
|
-
this.store.setAll(state as Record<string, JobRecord>);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public async reload(): Promise<void> {
|
|
42
|
-
// Runner reads from store on each operation natively in current design,
|
|
43
|
-
// but if it had internal queues/caches, we'd clear them here.
|
|
44
|
-
// E.g., this.runner.clearCache();
|
|
45
|
-
}
|
|
46
|
-
}
|