hive-stream 3.0.2 → 3.0.4
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/DOCUMENTATION.md +50 -2
- package/README.md +282 -4
- package/dist/adapters/base.adapter.d.ts +5 -0
- package/dist/adapters/base.adapter.js +9 -0
- package/dist/adapters/base.adapter.js.map +1 -1
- package/dist/adapters/mongodb.adapter.d.ts +6 -6
- package/dist/adapters/mongodb.adapter.js +36 -21
- package/dist/adapters/mongodb.adapter.js.map +1 -1
- package/dist/adapters/postgresql.adapter.d.ts +7 -0
- package/dist/adapters/postgresql.adapter.js +46 -19
- package/dist/adapters/postgresql.adapter.js.map +1 -1
- package/dist/adapters/sqlite.adapter.d.ts +4 -0
- package/dist/adapters/sqlite.adapter.js +10 -0
- package/dist/adapters/sqlite.adapter.js.map +1 -1
- package/dist/api.d.ts +13 -3
- package/dist/api.js +96 -62
- package/dist/api.js.map +1 -1
- package/dist/builders.d.ts +176 -0
- package/dist/builders.js +727 -0
- package/dist/builders.js.map +1 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.js +95 -3
- package/dist/config.js.map +1 -1
- package/dist/contracts/auctionhouse.contract.d.ts +4 -0
- package/dist/contracts/auctionhouse.contract.js +234 -0
- package/dist/contracts/auctionhouse.contract.js.map +1 -0
- package/dist/contracts/booking.contract.d.ts +4 -0
- package/dist/contracts/booking.contract.js +225 -0
- package/dist/contracts/booking.contract.js.map +1 -0
- package/dist/contracts/bountyboard.contract.d.ts +4 -0
- package/dist/contracts/bountyboard.contract.js +233 -0
- package/dist/contracts/bountyboard.contract.js.map +1 -0
- package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
- package/dist/contracts/bundlemarketplace.contract.js +195 -0
- package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
- package/dist/contracts/charitymatch.contract.d.ts +4 -0
- package/dist/contracts/charitymatch.contract.js +172 -0
- package/dist/contracts/charitymatch.contract.js.map +1 -0
- package/dist/contracts/coinflip.contract.js +25 -22
- package/dist/contracts/coinflip.contract.js.map +1 -1
- package/dist/contracts/crowdfund.contract.d.ts +4 -0
- package/dist/contracts/crowdfund.contract.js +290 -0
- package/dist/contracts/crowdfund.contract.js.map +1 -0
- package/dist/contracts/dcabot.contract.d.ts +4 -0
- package/dist/contracts/dcabot.contract.js +217 -0
- package/dist/contracts/dcabot.contract.js.map +1 -0
- package/dist/contracts/dice.contract.js +25 -22
- package/dist/contracts/dice.contract.js.map +1 -1
- package/dist/contracts/domainregistry.contract.d.ts +4 -0
- package/dist/contracts/domainregistry.contract.js +232 -0
- package/dist/contracts/domainregistry.contract.js.map +1 -0
- package/dist/contracts/exchange.contract.js +209 -168
- package/dist/contracts/exchange.contract.js.map +1 -1
- package/dist/contracts/fanclub.contract.d.ts +4 -0
- package/dist/contracts/fanclub.contract.js +193 -0
- package/dist/contracts/fanclub.contract.js.map +1 -0
- package/dist/contracts/giftcard.contract.d.ts +4 -0
- package/dist/contracts/giftcard.contract.js +158 -0
- package/dist/contracts/giftcard.contract.js.map +1 -0
- package/dist/contracts/grantrounds.contract.d.ts +4 -0
- package/dist/contracts/grantrounds.contract.js +265 -0
- package/dist/contracts/grantrounds.contract.js.map +1 -0
- package/dist/contracts/groupbuy.contract.d.ts +4 -0
- package/dist/contracts/groupbuy.contract.js +198 -0
- package/dist/contracts/groupbuy.contract.js.map +1 -0
- package/dist/contracts/helpers.d.ts +66 -0
- package/dist/contracts/helpers.js +166 -0
- package/dist/contracts/helpers.js.map +1 -0
- package/dist/contracts/insurancepool.contract.d.ts +4 -0
- package/dist/contracts/insurancepool.contract.js +281 -0
- package/dist/contracts/insurancepool.contract.js.map +1 -0
- package/dist/contracts/invoice.contract.d.ts +4 -0
- package/dist/contracts/invoice.contract.js +193 -0
- package/dist/contracts/invoice.contract.js.map +1 -0
- package/dist/contracts/launchpad.contract.d.ts +4 -0
- package/dist/contracts/launchpad.contract.js +225 -0
- package/dist/contracts/launchpad.contract.js.map +1 -0
- package/dist/contracts/lotto.contract.js +53 -37
- package/dist/contracts/lotto.contract.js.map +1 -1
- package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
- package/dist/contracts/multisigtreasury.contract.js +245 -0
- package/dist/contracts/multisigtreasury.contract.js.map +1 -0
- package/dist/contracts/nft.contract.d.ts +1 -0
- package/dist/contracts/nft.contract.js +234 -195
- package/dist/contracts/nft.contract.js.map +1 -1
- package/dist/contracts/oraclebounty.contract.d.ts +4 -0
- package/dist/contracts/oraclebounty.contract.js +250 -0
- package/dist/contracts/oraclebounty.contract.js.map +1 -0
- package/dist/contracts/payroll.contract.d.ts +4 -0
- package/dist/contracts/payroll.contract.js +232 -0
- package/dist/contracts/payroll.contract.js.map +1 -0
- package/dist/contracts/paywall.contract.d.ts +4 -0
- package/dist/contracts/paywall.contract.js +185 -0
- package/dist/contracts/paywall.contract.js.map +1 -0
- package/dist/contracts/poll.contract.js +2 -0
- package/dist/contracts/poll.contract.js.map +1 -1
- package/dist/contracts/predictionmarket.contract.d.ts +4 -0
- package/dist/contracts/predictionmarket.contract.js +213 -0
- package/dist/contracts/predictionmarket.contract.js.map +1 -0
- package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
- package/dist/contracts/proposaltimelock.contract.js +250 -0
- package/dist/contracts/proposaltimelock.contract.js.map +1 -0
- package/dist/contracts/questpass.contract.d.ts +4 -0
- package/dist/contracts/questpass.contract.js +214 -0
- package/dist/contracts/questpass.contract.js.map +1 -0
- package/dist/contracts/referral.contract.d.ts +4 -0
- package/dist/contracts/referral.contract.js +238 -0
- package/dist/contracts/referral.contract.js.map +1 -0
- package/dist/contracts/rental.contract.d.ts +4 -0
- package/dist/contracts/rental.contract.js +221 -0
- package/dist/contracts/rental.contract.js.map +1 -0
- package/dist/contracts/revenuesplit.contract.d.ts +4 -0
- package/dist/contracts/revenuesplit.contract.js +211 -0
- package/dist/contracts/revenuesplit.contract.js.map +1 -0
- package/dist/contracts/rps.contract.js +48 -20
- package/dist/contracts/rps.contract.js.map +1 -1
- package/dist/contracts/savings.contract.d.ts +4 -0
- package/dist/contracts/savings.contract.js +208 -0
- package/dist/contracts/savings.contract.js.map +1 -0
- package/dist/contracts/subscription.contract.d.ts +4 -0
- package/dist/contracts/subscription.contract.js +241 -0
- package/dist/contracts/subscription.contract.js.map +1 -0
- package/dist/contracts/sweepstakes.contract.d.ts +4 -0
- package/dist/contracts/sweepstakes.contract.js +209 -0
- package/dist/contracts/sweepstakes.contract.js.map +1 -0
- package/dist/contracts/ticketing.contract.d.ts +4 -0
- package/dist/contracts/ticketing.contract.js +185 -0
- package/dist/contracts/ticketing.contract.js.map +1 -0
- package/dist/contracts/tipjar.contract.js +2 -0
- package/dist/contracts/tipjar.contract.js.map +1 -1
- package/dist/contracts/token.contract.js +135 -125
- package/dist/contracts/token.contract.js.map +1 -1
- package/dist/index.d.ts +40 -0
- package/dist/index.js +72 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +20 -0
- package/dist/metadata.js +320 -1
- package/dist/metadata.js.map +1 -1
- package/dist/providers/block-provider.d.ts +22 -0
- package/dist/providers/block-provider.js +3 -0
- package/dist/providers/block-provider.js.map +1 -0
- package/dist/providers/haf-client.d.ts +30 -0
- package/dist/providers/haf-client.js +119 -0
- package/dist/providers/haf-client.js.map +1 -0
- package/dist/providers/haf-provider.d.ts +49 -0
- package/dist/providers/haf-provider.js +256 -0
- package/dist/providers/haf-provider.js.map +1 -0
- package/dist/providers/hive-provider.d.ts +13 -0
- package/dist/providers/hive-provider.js +25 -0
- package/dist/providers/hive-provider.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.js +21 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/streamer.d.ts +65 -4
- package/dist/streamer.js +768 -72
- package/dist/streamer.js.map +1 -1
- package/dist/types/hive-stream.d.ts +317 -0
- package/dist/utils.d.ts +33 -0
- package/dist/utils.js +198 -2
- package/dist/utils.js.map +1 -1
- package/package.json +16 -1
- package/.claude/settings.local.json +0 -12
- package/.env.example +0 -3
- package/.travis.yml +0 -11
- package/AGENTS.md +0 -35
- package/CLAUDE.md +0 -75
- package/ecosystem.config.js +0 -17
- package/examples/contracts/README.md +0 -8
- package/examples/contracts/exchange.ts +0 -38
- package/examples/contracts/poll.ts +0 -21
- package/examples/contracts/rps.ts +0 -19
- package/examples/contracts/tipjar.ts +0 -19
- package/jest.config.js +0 -9
- package/test-contract-block.md +0 -19
- package/tests/actions.spec.ts +0 -252
- package/tests/adapters/actions-persistence.spec.ts +0 -144
- package/tests/adapters/postgresql.adapter.spec.ts +0 -127
- package/tests/adapters/sqlite.adapter.spec.ts +0 -181
- package/tests/config-input.spec.ts +0 -90
- package/tests/contracts/coinflip.contract.spec.ts +0 -94
- package/tests/contracts/dice.contract.spec.ts +0 -87
- package/tests/contracts/entrants.json +0 -729
- package/tests/contracts/exchange.contract.spec.ts +0 -84
- package/tests/contracts/lotto.contract.spec.ts +0 -59
- package/tests/contracts/nft.contract.spec.ts +0 -948
- package/tests/contracts/token.contract.spec.ts +0 -90
- package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
- package/tests/exchanges/exchange.base.spec.ts +0 -246
- package/tests/helpers/mock-adapter.ts +0 -214
- package/tests/helpers/mock-fetch.ts +0 -165
- package/tests/hive-chain-features.spec.ts +0 -319
- package/tests/hive-rates.spec.ts +0 -443
- package/tests/integration/hive-rates.integration.spec.ts +0 -35
- package/tests/metadata.spec.ts +0 -63
- package/tests/setup.ts +0 -30
- package/tests/streamer-actions.spec.ts +0 -274
- package/tests/streamer.spec.ts +0 -342
- package/tests/types/rates.spec.ts +0 -216
- package/tests/utils.spec.ts +0 -113
- package/tsconfig.build.json +0 -4
- package/tslint.json +0 -21
- package/wallaby.js +0 -26
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface HafClientConfig {
|
|
2
|
+
host?: string;
|
|
3
|
+
port?: number;
|
|
4
|
+
user?: string;
|
|
5
|
+
password?: string;
|
|
6
|
+
database?: string;
|
|
7
|
+
ssl?: boolean | object;
|
|
8
|
+
connectionString?: string;
|
|
9
|
+
statementTimeout?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface TransferQuery {
|
|
12
|
+
accounts: string[];
|
|
13
|
+
fromDate?: string | Date;
|
|
14
|
+
toDate?: string | Date;
|
|
15
|
+
symbol?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class HafClient {
|
|
18
|
+
private client;
|
|
19
|
+
private config;
|
|
20
|
+
private connected;
|
|
21
|
+
constructor(config?: HafClientConfig);
|
|
22
|
+
connect(): Promise<void>;
|
|
23
|
+
disconnect(): Promise<void>;
|
|
24
|
+
query<T = any>(sql: string, params?: any[]): Promise<T[]>;
|
|
25
|
+
getTransfers(options: TransferQuery): Promise<any[]>;
|
|
26
|
+
getAccountBalances(accounts: string[]): Promise<any[]>;
|
|
27
|
+
getBlockAtTime(timestamp: string | Date): Promise<number | null>;
|
|
28
|
+
getBlockTimestamp(blockNumber: number): Promise<string | null>;
|
|
29
|
+
getProposalPayouts(proposalIds: number[]): Promise<any[]>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HafClient = void 0;
|
|
4
|
+
const pg_1 = require("pg");
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
host: 'hafsql-sql.mahdiyari.info',
|
|
7
|
+
port: 5432,
|
|
8
|
+
user: 'hafsql_public',
|
|
9
|
+
password: 'hafsql_public',
|
|
10
|
+
database: 'haf_block_log',
|
|
11
|
+
statementTimeout: '90s',
|
|
12
|
+
};
|
|
13
|
+
class HafClient {
|
|
14
|
+
client;
|
|
15
|
+
config;
|
|
16
|
+
connected = false;
|
|
17
|
+
constructor(config = {}) {
|
|
18
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
19
|
+
const pgOptions = {};
|
|
20
|
+
if (this.config.connectionString) {
|
|
21
|
+
pgOptions.connectionString = this.config.connectionString;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
pgOptions.host = this.config.host;
|
|
25
|
+
pgOptions.port = this.config.port;
|
|
26
|
+
pgOptions.user = this.config.user;
|
|
27
|
+
pgOptions.password = this.config.password;
|
|
28
|
+
pgOptions.database = this.config.database;
|
|
29
|
+
}
|
|
30
|
+
if (this.config.ssl !== undefined) {
|
|
31
|
+
pgOptions.ssl = this.config.ssl;
|
|
32
|
+
}
|
|
33
|
+
this.client = new pg_1.Client(pgOptions);
|
|
34
|
+
}
|
|
35
|
+
async connect() {
|
|
36
|
+
await this.client.connect();
|
|
37
|
+
this.connected = true;
|
|
38
|
+
await this.client.query(`SET statement_timeout = '${this.config.statementTimeout}'`);
|
|
39
|
+
}
|
|
40
|
+
async disconnect() {
|
|
41
|
+
if (this.connected) {
|
|
42
|
+
await this.client.end();
|
|
43
|
+
this.connected = false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async query(sql, params) {
|
|
47
|
+
const result = await this.client.query(sql, params);
|
|
48
|
+
return result.rows;
|
|
49
|
+
}
|
|
50
|
+
async getTransfers(options) {
|
|
51
|
+
const conditions = [];
|
|
52
|
+
const params = [];
|
|
53
|
+
let paramIndex = 1;
|
|
54
|
+
if (options.accounts.length > 0) {
|
|
55
|
+
conditions.push(`(t.from_account = ANY($${paramIndex}) OR t.to_account = ANY($${paramIndex}))`);
|
|
56
|
+
params.push(options.accounts);
|
|
57
|
+
paramIndex++;
|
|
58
|
+
}
|
|
59
|
+
if (options.fromDate) {
|
|
60
|
+
conditions.push(`t.id >= (SELECT MIN(ov.id) FROM hafbe_bal.operations_view ov JOIN hafbe_bal.blocks_view bv ON ov.block_num = bv.num WHERE bv.created_at >= $${paramIndex})`);
|
|
61
|
+
params.push(options.fromDate instanceof Date ? options.fromDate.toISOString() : options.fromDate);
|
|
62
|
+
paramIndex++;
|
|
63
|
+
}
|
|
64
|
+
if (options.toDate) {
|
|
65
|
+
conditions.push(`t.id <= (SELECT MAX(ov.id) FROM hafbe_bal.operations_view ov JOIN hafbe_bal.blocks_view bv ON ov.block_num = bv.num WHERE bv.created_at <= $${paramIndex})`);
|
|
66
|
+
params.push(options.toDate instanceof Date ? options.toDate.toISOString() : options.toDate);
|
|
67
|
+
paramIndex++;
|
|
68
|
+
}
|
|
69
|
+
if (options.symbol) {
|
|
70
|
+
conditions.push(`t.symbol = $${paramIndex}`);
|
|
71
|
+
params.push(options.symbol);
|
|
72
|
+
paramIndex++;
|
|
73
|
+
}
|
|
74
|
+
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
75
|
+
const sql = `
|
|
76
|
+
SELECT t.from_account AS "from", t.to_account AS "to", t.amount, t.symbol, t.memo
|
|
77
|
+
FROM hafsql.operation_transfer_table t
|
|
78
|
+
${whereClause}
|
|
79
|
+
ORDER BY t.id DESC
|
|
80
|
+
`;
|
|
81
|
+
return this.query(sql, params);
|
|
82
|
+
}
|
|
83
|
+
async getAccountBalances(accounts) {
|
|
84
|
+
const sql = `
|
|
85
|
+
SELECT acc.name AS account, cab.nai, cab.balance
|
|
86
|
+
FROM hafbe_bal.current_account_balances cab
|
|
87
|
+
JOIN hafsql.accounts acc ON acc.id = cab.account
|
|
88
|
+
WHERE acc.name = ANY($1)
|
|
89
|
+
ORDER BY acc.name, cab.nai
|
|
90
|
+
`;
|
|
91
|
+
return this.query(sql, [accounts]);
|
|
92
|
+
}
|
|
93
|
+
async getBlockAtTime(timestamp) {
|
|
94
|
+
const ts = timestamp instanceof Date ? timestamp.toISOString() : timestamp;
|
|
95
|
+
const result = await this.query(`SELECT num
|
|
96
|
+
FROM hafbe_bal.blocks_view
|
|
97
|
+
WHERE created_at <= $1
|
|
98
|
+
ORDER BY num DESC
|
|
99
|
+
LIMIT 1`, [ts]);
|
|
100
|
+
return result.length > 0 ? result[0].num : null;
|
|
101
|
+
}
|
|
102
|
+
async getBlockTimestamp(blockNumber) {
|
|
103
|
+
const result = await this.query(`SELECT created_at
|
|
104
|
+
FROM hafbe_bal.blocks_view
|
|
105
|
+
WHERE num = $1`, [blockNumber]);
|
|
106
|
+
return result.length > 0 ? String(result[0].created_at) : null;
|
|
107
|
+
}
|
|
108
|
+
async getProposalPayouts(proposalIds) {
|
|
109
|
+
const sql = `
|
|
110
|
+
SELECT pp.proposal_id, pp.receiver, pp.payer, pp.payment, pp.symbol
|
|
111
|
+
FROM hafsql.operation_proposal_pay_table pp
|
|
112
|
+
WHERE pp.proposal_id = ANY($1)
|
|
113
|
+
ORDER BY pp.id DESC
|
|
114
|
+
`;
|
|
115
|
+
return this.query(sql, [proposalIds]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.HafClient = HafClient;
|
|
119
|
+
//# sourceMappingURL=haf-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haf-client.js","sourceRoot":"","sources":["../../src/providers/haf-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BlockProvider, BlockData, DynamicGlobalProperties } from './block-provider';
|
|
2
|
+
export interface HafProviderConfig {
|
|
3
|
+
host?: string;
|
|
4
|
+
port?: number;
|
|
5
|
+
user?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
database?: string;
|
|
8
|
+
ssl?: boolean | object;
|
|
9
|
+
connectionString?: string;
|
|
10
|
+
schema?: string;
|
|
11
|
+
useHafContext?: boolean;
|
|
12
|
+
hafAppName?: string;
|
|
13
|
+
statementTimeout?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Maps HAF numeric operation type IDs to Hive operation string names.
|
|
17
|
+
* Only includes the most commonly used operations.
|
|
18
|
+
*/
|
|
19
|
+
export declare const HAF_OP_TYPES: Record<number, string>;
|
|
20
|
+
declare const DEFAULT_CONFIG: Required<Omit<HafProviderConfig, 'connectionString' | 'ssl' | 'hafAppName'>> & Pick<HafProviderConfig, 'connectionString' | 'ssl' | 'hafAppName'>;
|
|
21
|
+
export declare class HafProvider implements BlockProvider {
|
|
22
|
+
private client;
|
|
23
|
+
private config;
|
|
24
|
+
private connected;
|
|
25
|
+
constructor(config?: HafProviderConfig);
|
|
26
|
+
private buildPgClient;
|
|
27
|
+
create(): Promise<void>;
|
|
28
|
+
getDynamicGlobalProperties(): Promise<DynamicGlobalProperties>;
|
|
29
|
+
/**
|
|
30
|
+
* NAI asset code to symbol name mapping.
|
|
31
|
+
*/
|
|
32
|
+
private static readonly NAI_MAP;
|
|
33
|
+
/**
|
|
34
|
+
* Converts a HAF structured amount object to a dhive-style string.
|
|
35
|
+
* HAF: { nai: "@@000000021", amount: "100000", precision: 3 }
|
|
36
|
+
* dhive: "100.000 HBD"
|
|
37
|
+
*/
|
|
38
|
+
private static formatAmount;
|
|
39
|
+
/**
|
|
40
|
+
* Walks an operation body and converts any structured amount fields
|
|
41
|
+
* to dhive-style string format for downstream compatibility.
|
|
42
|
+
*/
|
|
43
|
+
private static normalizeAmountFields;
|
|
44
|
+
private bytesToHex;
|
|
45
|
+
getBlock(blockNumber: number): Promise<BlockData | null>;
|
|
46
|
+
destroy(): Promise<void>;
|
|
47
|
+
getConfig(): Readonly<typeof DEFAULT_CONFIG>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HafProvider = exports.HAF_OP_TYPES = void 0;
|
|
4
|
+
const pg_1 = require("pg");
|
|
5
|
+
/**
|
|
6
|
+
* Maps HAF numeric operation type IDs to Hive operation string names.
|
|
7
|
+
* Only includes the most commonly used operations.
|
|
8
|
+
*/
|
|
9
|
+
exports.HAF_OP_TYPES = {
|
|
10
|
+
0: 'vote',
|
|
11
|
+
1: 'comment',
|
|
12
|
+
2: 'transfer',
|
|
13
|
+
3: 'transfer_to_vesting',
|
|
14
|
+
4: 'withdraw_vesting',
|
|
15
|
+
5: 'limit_order_create',
|
|
16
|
+
6: 'limit_order_cancel',
|
|
17
|
+
7: 'feed_publish',
|
|
18
|
+
8: 'convert',
|
|
19
|
+
9: 'account_create',
|
|
20
|
+
10: 'account_update',
|
|
21
|
+
11: 'witness_update',
|
|
22
|
+
12: 'account_witness_vote',
|
|
23
|
+
13: 'account_witness_proxy',
|
|
24
|
+
14: 'pow',
|
|
25
|
+
15: 'custom',
|
|
26
|
+
16: 'witness_block_approve',
|
|
27
|
+
17: 'delete_comment',
|
|
28
|
+
18: 'custom_json',
|
|
29
|
+
19: 'comment_options',
|
|
30
|
+
20: 'set_withdraw_vesting_route',
|
|
31
|
+
21: 'limit_order_create2',
|
|
32
|
+
22: 'claim_account',
|
|
33
|
+
23: 'create_claimed_account',
|
|
34
|
+
24: 'request_account_recovery',
|
|
35
|
+
25: 'recover_account',
|
|
36
|
+
26: 'change_recovery_account',
|
|
37
|
+
27: 'escrow_transfer',
|
|
38
|
+
28: 'escrow_dispute',
|
|
39
|
+
29: 'escrow_release',
|
|
40
|
+
30: 'pow2',
|
|
41
|
+
31: 'escrow_approve',
|
|
42
|
+
32: 'transfer_to_savings',
|
|
43
|
+
33: 'transfer_from_savings',
|
|
44
|
+
34: 'cancel_transfer_from_savings',
|
|
45
|
+
35: 'custom_binary',
|
|
46
|
+
36: 'decline_voting_rights',
|
|
47
|
+
37: 'reset_account',
|
|
48
|
+
38: 'set_reset_account',
|
|
49
|
+
39: 'claim_reward_balance',
|
|
50
|
+
40: 'delegate_vesting_shares',
|
|
51
|
+
41: 'account_create_with_delegation',
|
|
52
|
+
42: 'witness_set_properties',
|
|
53
|
+
43: 'account_update2',
|
|
54
|
+
44: 'create_proposal',
|
|
55
|
+
45: 'update_proposal_votes',
|
|
56
|
+
46: 'remove_proposal',
|
|
57
|
+
47: 'update_proposal',
|
|
58
|
+
48: 'collateralized_convert',
|
|
59
|
+
49: 'recurrent_transfer',
|
|
60
|
+
};
|
|
61
|
+
const DEFAULT_CONFIG = {
|
|
62
|
+
host: 'hafsql-sql.mahdiyari.info',
|
|
63
|
+
port: 5432,
|
|
64
|
+
user: 'hafsql_public',
|
|
65
|
+
password: 'hafsql_public',
|
|
66
|
+
database: 'haf_block_log',
|
|
67
|
+
ssl: undefined,
|
|
68
|
+
connectionString: undefined,
|
|
69
|
+
schema: 'hafsql',
|
|
70
|
+
useHafContext: false,
|
|
71
|
+
hafAppName: undefined,
|
|
72
|
+
statementTimeout: '90s',
|
|
73
|
+
};
|
|
74
|
+
class HafProvider {
|
|
75
|
+
client;
|
|
76
|
+
config;
|
|
77
|
+
connected = false;
|
|
78
|
+
constructor(config = {}) {
|
|
79
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
80
|
+
this.client = this.buildPgClient();
|
|
81
|
+
}
|
|
82
|
+
buildPgClient() {
|
|
83
|
+
const pgOptions = {};
|
|
84
|
+
if (this.config.connectionString) {
|
|
85
|
+
pgOptions.connectionString = this.config.connectionString;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
pgOptions.host = this.config.host;
|
|
89
|
+
pgOptions.port = this.config.port;
|
|
90
|
+
pgOptions.user = this.config.user;
|
|
91
|
+
pgOptions.password = this.config.password;
|
|
92
|
+
pgOptions.database = this.config.database;
|
|
93
|
+
}
|
|
94
|
+
if (this.config.ssl !== undefined) {
|
|
95
|
+
pgOptions.ssl = this.config.ssl;
|
|
96
|
+
}
|
|
97
|
+
return new pg_1.Client(pgOptions);
|
|
98
|
+
}
|
|
99
|
+
async create() {
|
|
100
|
+
// pg Client cannot reconnect after end(); create a fresh one
|
|
101
|
+
if (!this.connected) {
|
|
102
|
+
this.client = this.buildPgClient();
|
|
103
|
+
}
|
|
104
|
+
await this.client.connect();
|
|
105
|
+
this.connected = true;
|
|
106
|
+
await this.client.query(`SET statement_timeout = '${this.config.statementTimeout}'`);
|
|
107
|
+
if (this.config.useHafContext && this.config.hafAppName) {
|
|
108
|
+
await this.client.query(`SELECT hive.app_create_context($1)`, [this.config.hafAppName]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async getDynamicGlobalProperties() {
|
|
112
|
+
const result = await this.client.query(`SELECT num AS head_block_number, created_at AS time
|
|
113
|
+
FROM hafbe_bal.blocks_view
|
|
114
|
+
WHERE num = (SELECT MAX(num) FROM hafbe_bal.blocks_view)`);
|
|
115
|
+
if (result.rows.length === 0) {
|
|
116
|
+
throw new Error('No blocks found in HAF database');
|
|
117
|
+
}
|
|
118
|
+
const row = result.rows[0];
|
|
119
|
+
return {
|
|
120
|
+
head_block_number: row.head_block_number,
|
|
121
|
+
time: row.time instanceof Date ? row.time.toISOString().replace('Z', '') : String(row.time),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* NAI asset code to symbol name mapping.
|
|
126
|
+
*/
|
|
127
|
+
static NAI_MAP = {
|
|
128
|
+
'@@000000013': 'HIVE',
|
|
129
|
+
'@@000000021': 'HBD',
|
|
130
|
+
'@@000000037': 'VESTS',
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Converts a HAF structured amount object to a dhive-style string.
|
|
134
|
+
* HAF: { nai: "@@000000021", amount: "100000", precision: 3 }
|
|
135
|
+
* dhive: "100.000 HBD"
|
|
136
|
+
*/
|
|
137
|
+
static formatAmount(amount) {
|
|
138
|
+
if (typeof amount === 'string') {
|
|
139
|
+
return amount;
|
|
140
|
+
}
|
|
141
|
+
if (amount && typeof amount === 'object' && amount.nai && amount.amount !== undefined) {
|
|
142
|
+
const symbol = HafProvider.NAI_MAP[amount.nai] || amount.nai;
|
|
143
|
+
const precision = amount.precision || 0;
|
|
144
|
+
const raw = String(amount.amount);
|
|
145
|
+
if (precision === 0) {
|
|
146
|
+
return `${raw} ${symbol}`;
|
|
147
|
+
}
|
|
148
|
+
const padded = raw.padStart(precision + 1, '0');
|
|
149
|
+
const whole = padded.slice(0, -precision);
|
|
150
|
+
const decimal = padded.slice(-precision);
|
|
151
|
+
return `${whole}.${decimal} ${symbol}`;
|
|
152
|
+
}
|
|
153
|
+
return String(amount);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Walks an operation body and converts any structured amount fields
|
|
157
|
+
* to dhive-style string format for downstream compatibility.
|
|
158
|
+
*/
|
|
159
|
+
static normalizeAmountFields(body) {
|
|
160
|
+
if (!body || typeof body !== 'object') {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const amountKeys = ['amount', 'fee', 'hbd_amount', 'hive_amount', 'steem_amount', 'sbd_amount',
|
|
164
|
+
'reward_hive', 'reward_hbd', 'reward_vests', 'vesting_shares', 'delegatee_vesting_shares',
|
|
165
|
+
'max_accepted_payout', 'min_hive_amount', 'min_hbd_amount'];
|
|
166
|
+
for (const key of amountKeys) {
|
|
167
|
+
if (body[key] && typeof body[key] === 'object' && body[key].nai) {
|
|
168
|
+
body[key] = HafProvider.formatAmount(body[key]);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
bytesToHex(buf) {
|
|
173
|
+
if (Buffer.isBuffer(buf)) {
|
|
174
|
+
return buf.toString('hex');
|
|
175
|
+
}
|
|
176
|
+
return String(buf);
|
|
177
|
+
}
|
|
178
|
+
async getBlock(blockNumber) {
|
|
179
|
+
// Fetch block metadata (hash/prev are bytea columns)
|
|
180
|
+
const blockResult = await this.client.query(`SELECT num, encode(hash, 'hex') AS hash, encode(prev, 'hex') AS prev, created_at
|
|
181
|
+
FROM hafbe_bal.blocks_view
|
|
182
|
+
WHERE num = $1`, [blockNumber]);
|
|
183
|
+
if (blockResult.rows.length === 0) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
const blockRow = blockResult.rows[0];
|
|
187
|
+
// Fetch operations for this block (operations_view has no trx_hash)
|
|
188
|
+
// Filter out virtual ops (trx_in_block = -1) to match dhive RPC behavior
|
|
189
|
+
const opsResult = await this.client.query(`SELECT op_type_id, body, trx_in_block
|
|
190
|
+
FROM hafbe_bal.operations_view
|
|
191
|
+
WHERE block_num = $1 AND trx_in_block >= 0
|
|
192
|
+
ORDER BY trx_in_block, op_pos`, [blockNumber]);
|
|
193
|
+
// Fetch transaction hashes separately (trx_hash is bytea)
|
|
194
|
+
const trxResult = await this.client.query(`SELECT trx_in_block, encode(trx_hash, 'hex') AS trx_hash
|
|
195
|
+
FROM hafbe_bal.transactions_view
|
|
196
|
+
WHERE block_num = $1
|
|
197
|
+
ORDER BY trx_in_block`, [blockNumber]);
|
|
198
|
+
// Build trx_hash lookup by trx_in_block
|
|
199
|
+
const trxHashMap = new Map();
|
|
200
|
+
for (const row of trxResult.rows) {
|
|
201
|
+
trxHashMap.set(row.trx_in_block, row.trx_hash);
|
|
202
|
+
}
|
|
203
|
+
// Group operations into transactions
|
|
204
|
+
const transactionMap = new Map();
|
|
205
|
+
const transactionOrder = [];
|
|
206
|
+
for (const op of opsResult.rows) {
|
|
207
|
+
const trxIndex = op.trx_in_block;
|
|
208
|
+
if (!transactionMap.has(trxIndex)) {
|
|
209
|
+
transactionMap.set(trxIndex, { operations: [] });
|
|
210
|
+
transactionOrder.push(trxIndex);
|
|
211
|
+
}
|
|
212
|
+
const opName = exports.HAF_OP_TYPES[op.op_type_id] ?? `unknown_op_${op.op_type_id}`;
|
|
213
|
+
const opBody = op.body?.value ?? op.body;
|
|
214
|
+
// Normalize HAF structured amounts to dhive-style strings
|
|
215
|
+
HafProvider.normalizeAmountFields(opBody);
|
|
216
|
+
transactionMap.get(trxIndex).operations.push([opName, opBody]);
|
|
217
|
+
}
|
|
218
|
+
// Build transaction arrays
|
|
219
|
+
const transactions = [];
|
|
220
|
+
const transaction_ids = [];
|
|
221
|
+
for (const idx of transactionOrder) {
|
|
222
|
+
const trx = transactionMap.get(idx);
|
|
223
|
+
transactions.push({ operations: trx.operations });
|
|
224
|
+
transaction_ids.push(trxHashMap.get(idx) || '');
|
|
225
|
+
}
|
|
226
|
+
const timestamp = blockRow.created_at instanceof Date
|
|
227
|
+
? blockRow.created_at.toISOString().replace('Z', '')
|
|
228
|
+
: String(blockRow.created_at);
|
|
229
|
+
return {
|
|
230
|
+
block_id: blockRow.hash || '',
|
|
231
|
+
previous: blockRow.prev || '',
|
|
232
|
+
timestamp,
|
|
233
|
+
transactions,
|
|
234
|
+
transaction_ids,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
async destroy() {
|
|
238
|
+
if (this.config.useHafContext && this.config.hafAppName) {
|
|
239
|
+
try {
|
|
240
|
+
await this.client.query(`SELECT hive.app_remove_context($1)`, [this.config.hafAppName]);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Context may already be removed; ignore
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (this.connected) {
|
|
247
|
+
await this.client.end();
|
|
248
|
+
this.connected = false;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
getConfig() {
|
|
252
|
+
return { ...this.config };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
exports.HafProvider = HafProvider;
|
|
256
|
+
//# sourceMappingURL=haf-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haf-provider.js","sourceRoot":"","sources":["../../src/providers/haf-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Client } from '@hiveio/dhive';
|
|
2
|
+
import { BlockProvider, BlockData, DynamicGlobalProperties } from './block-provider';
|
|
3
|
+
export interface HiveProviderConfig {
|
|
4
|
+
apiNodes: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class HiveProvider implements BlockProvider {
|
|
7
|
+
private client;
|
|
8
|
+
constructor(config: HiveProviderConfig);
|
|
9
|
+
getDynamicGlobalProperties(): Promise<DynamicGlobalProperties>;
|
|
10
|
+
getBlock(blockNumber: number): Promise<BlockData | null>;
|
|
11
|
+
updateClient(apiNodes: string[]): void;
|
|
12
|
+
getClient(): Client;
|
|
13
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HiveProvider = void 0;
|
|
4
|
+
const dhive_1 = require("@hiveio/dhive");
|
|
5
|
+
class HiveProvider {
|
|
6
|
+
client;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.client = new dhive_1.Client(config.apiNodes);
|
|
9
|
+
}
|
|
10
|
+
async getDynamicGlobalProperties() {
|
|
11
|
+
return this.client.database.getDynamicGlobalProperties();
|
|
12
|
+
}
|
|
13
|
+
async getBlock(blockNumber) {
|
|
14
|
+
const block = await this.client.database.getBlock(blockNumber);
|
|
15
|
+
return block;
|
|
16
|
+
}
|
|
17
|
+
updateClient(apiNodes) {
|
|
18
|
+
this.client = new dhive_1.Client(apiNodes);
|
|
19
|
+
}
|
|
20
|
+
getClient() {
|
|
21
|
+
return this.client;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.HiveProvider = HiveProvider;
|
|
25
|
+
//# sourceMappingURL=hive-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hive-provider.js","sourceRoot":"","sources":["../../src/providers/hive-provider.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAOvC,MAAa,YAAY;IACb,MAAM,CAAS;IAEvB,YAAY,MAA0B;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,0BAA0B;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAsC,CAAC;IACjG,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,WAAmB;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/D,OAAO,KAAoC,CAAC;IAChD,CAAC;IAEM,YAAY,CAAC,QAAkB;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAvBD,oCAuBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./block-provider"), exports);
|
|
18
|
+
__exportStar(require("./hive-provider"), exports);
|
|
19
|
+
__exportStar(require("./haf-provider"), exports);
|
|
20
|
+
__exportStar(require("./haf-client"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,kDAAgC;AAChC,iDAA+B;AAC/B,+CAA6B"}
|