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.
Files changed (202) hide show
  1. package/DOCUMENTATION.md +50 -2
  2. package/README.md +282 -4
  3. package/dist/adapters/base.adapter.d.ts +5 -0
  4. package/dist/adapters/base.adapter.js +9 -0
  5. package/dist/adapters/base.adapter.js.map +1 -1
  6. package/dist/adapters/mongodb.adapter.d.ts +6 -6
  7. package/dist/adapters/mongodb.adapter.js +36 -21
  8. package/dist/adapters/mongodb.adapter.js.map +1 -1
  9. package/dist/adapters/postgresql.adapter.d.ts +7 -0
  10. package/dist/adapters/postgresql.adapter.js +46 -19
  11. package/dist/adapters/postgresql.adapter.js.map +1 -1
  12. package/dist/adapters/sqlite.adapter.d.ts +4 -0
  13. package/dist/adapters/sqlite.adapter.js +10 -0
  14. package/dist/adapters/sqlite.adapter.js.map +1 -1
  15. package/dist/api.d.ts +13 -3
  16. package/dist/api.js +96 -62
  17. package/dist/api.js.map +1 -1
  18. package/dist/builders.d.ts +176 -0
  19. package/dist/builders.js +727 -0
  20. package/dist/builders.js.map +1 -0
  21. package/dist/config.d.ts +16 -1
  22. package/dist/config.js +95 -3
  23. package/dist/config.js.map +1 -1
  24. package/dist/contracts/auctionhouse.contract.d.ts +4 -0
  25. package/dist/contracts/auctionhouse.contract.js +234 -0
  26. package/dist/contracts/auctionhouse.contract.js.map +1 -0
  27. package/dist/contracts/booking.contract.d.ts +4 -0
  28. package/dist/contracts/booking.contract.js +225 -0
  29. package/dist/contracts/booking.contract.js.map +1 -0
  30. package/dist/contracts/bountyboard.contract.d.ts +4 -0
  31. package/dist/contracts/bountyboard.contract.js +233 -0
  32. package/dist/contracts/bountyboard.contract.js.map +1 -0
  33. package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
  34. package/dist/contracts/bundlemarketplace.contract.js +195 -0
  35. package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
  36. package/dist/contracts/charitymatch.contract.d.ts +4 -0
  37. package/dist/contracts/charitymatch.contract.js +172 -0
  38. package/dist/contracts/charitymatch.contract.js.map +1 -0
  39. package/dist/contracts/coinflip.contract.js +25 -22
  40. package/dist/contracts/coinflip.contract.js.map +1 -1
  41. package/dist/contracts/crowdfund.contract.d.ts +4 -0
  42. package/dist/contracts/crowdfund.contract.js +290 -0
  43. package/dist/contracts/crowdfund.contract.js.map +1 -0
  44. package/dist/contracts/dcabot.contract.d.ts +4 -0
  45. package/dist/contracts/dcabot.contract.js +217 -0
  46. package/dist/contracts/dcabot.contract.js.map +1 -0
  47. package/dist/contracts/dice.contract.js +25 -22
  48. package/dist/contracts/dice.contract.js.map +1 -1
  49. package/dist/contracts/domainregistry.contract.d.ts +4 -0
  50. package/dist/contracts/domainregistry.contract.js +232 -0
  51. package/dist/contracts/domainregistry.contract.js.map +1 -0
  52. package/dist/contracts/exchange.contract.js +209 -168
  53. package/dist/contracts/exchange.contract.js.map +1 -1
  54. package/dist/contracts/fanclub.contract.d.ts +4 -0
  55. package/dist/contracts/fanclub.contract.js +193 -0
  56. package/dist/contracts/fanclub.contract.js.map +1 -0
  57. package/dist/contracts/giftcard.contract.d.ts +4 -0
  58. package/dist/contracts/giftcard.contract.js +158 -0
  59. package/dist/contracts/giftcard.contract.js.map +1 -0
  60. package/dist/contracts/grantrounds.contract.d.ts +4 -0
  61. package/dist/contracts/grantrounds.contract.js +265 -0
  62. package/dist/contracts/grantrounds.contract.js.map +1 -0
  63. package/dist/contracts/groupbuy.contract.d.ts +4 -0
  64. package/dist/contracts/groupbuy.contract.js +198 -0
  65. package/dist/contracts/groupbuy.contract.js.map +1 -0
  66. package/dist/contracts/helpers.d.ts +66 -0
  67. package/dist/contracts/helpers.js +166 -0
  68. package/dist/contracts/helpers.js.map +1 -0
  69. package/dist/contracts/insurancepool.contract.d.ts +4 -0
  70. package/dist/contracts/insurancepool.contract.js +281 -0
  71. package/dist/contracts/insurancepool.contract.js.map +1 -0
  72. package/dist/contracts/invoice.contract.d.ts +4 -0
  73. package/dist/contracts/invoice.contract.js +193 -0
  74. package/dist/contracts/invoice.contract.js.map +1 -0
  75. package/dist/contracts/launchpad.contract.d.ts +4 -0
  76. package/dist/contracts/launchpad.contract.js +225 -0
  77. package/dist/contracts/launchpad.contract.js.map +1 -0
  78. package/dist/contracts/lotto.contract.js +53 -37
  79. package/dist/contracts/lotto.contract.js.map +1 -1
  80. package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
  81. package/dist/contracts/multisigtreasury.contract.js +245 -0
  82. package/dist/contracts/multisigtreasury.contract.js.map +1 -0
  83. package/dist/contracts/nft.contract.d.ts +1 -0
  84. package/dist/contracts/nft.contract.js +234 -195
  85. package/dist/contracts/nft.contract.js.map +1 -1
  86. package/dist/contracts/oraclebounty.contract.d.ts +4 -0
  87. package/dist/contracts/oraclebounty.contract.js +250 -0
  88. package/dist/contracts/oraclebounty.contract.js.map +1 -0
  89. package/dist/contracts/payroll.contract.d.ts +4 -0
  90. package/dist/contracts/payroll.contract.js +232 -0
  91. package/dist/contracts/payroll.contract.js.map +1 -0
  92. package/dist/contracts/paywall.contract.d.ts +4 -0
  93. package/dist/contracts/paywall.contract.js +185 -0
  94. package/dist/contracts/paywall.contract.js.map +1 -0
  95. package/dist/contracts/poll.contract.js +2 -0
  96. package/dist/contracts/poll.contract.js.map +1 -1
  97. package/dist/contracts/predictionmarket.contract.d.ts +4 -0
  98. package/dist/contracts/predictionmarket.contract.js +213 -0
  99. package/dist/contracts/predictionmarket.contract.js.map +1 -0
  100. package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
  101. package/dist/contracts/proposaltimelock.contract.js +250 -0
  102. package/dist/contracts/proposaltimelock.contract.js.map +1 -0
  103. package/dist/contracts/questpass.contract.d.ts +4 -0
  104. package/dist/contracts/questpass.contract.js +214 -0
  105. package/dist/contracts/questpass.contract.js.map +1 -0
  106. package/dist/contracts/referral.contract.d.ts +4 -0
  107. package/dist/contracts/referral.contract.js +238 -0
  108. package/dist/contracts/referral.contract.js.map +1 -0
  109. package/dist/contracts/rental.contract.d.ts +4 -0
  110. package/dist/contracts/rental.contract.js +221 -0
  111. package/dist/contracts/rental.contract.js.map +1 -0
  112. package/dist/contracts/revenuesplit.contract.d.ts +4 -0
  113. package/dist/contracts/revenuesplit.contract.js +211 -0
  114. package/dist/contracts/revenuesplit.contract.js.map +1 -0
  115. package/dist/contracts/rps.contract.js +48 -20
  116. package/dist/contracts/rps.contract.js.map +1 -1
  117. package/dist/contracts/savings.contract.d.ts +4 -0
  118. package/dist/contracts/savings.contract.js +208 -0
  119. package/dist/contracts/savings.contract.js.map +1 -0
  120. package/dist/contracts/subscription.contract.d.ts +4 -0
  121. package/dist/contracts/subscription.contract.js +241 -0
  122. package/dist/contracts/subscription.contract.js.map +1 -0
  123. package/dist/contracts/sweepstakes.contract.d.ts +4 -0
  124. package/dist/contracts/sweepstakes.contract.js +209 -0
  125. package/dist/contracts/sweepstakes.contract.js.map +1 -0
  126. package/dist/contracts/ticketing.contract.d.ts +4 -0
  127. package/dist/contracts/ticketing.contract.js +185 -0
  128. package/dist/contracts/ticketing.contract.js.map +1 -0
  129. package/dist/contracts/tipjar.contract.js +2 -0
  130. package/dist/contracts/tipjar.contract.js.map +1 -1
  131. package/dist/contracts/token.contract.js +135 -125
  132. package/dist/contracts/token.contract.js.map +1 -1
  133. package/dist/index.d.ts +40 -0
  134. package/dist/index.js +72 -1
  135. package/dist/index.js.map +1 -1
  136. package/dist/metadata.d.ts +20 -0
  137. package/dist/metadata.js +320 -1
  138. package/dist/metadata.js.map +1 -1
  139. package/dist/providers/block-provider.d.ts +22 -0
  140. package/dist/providers/block-provider.js +3 -0
  141. package/dist/providers/block-provider.js.map +1 -0
  142. package/dist/providers/haf-client.d.ts +30 -0
  143. package/dist/providers/haf-client.js +119 -0
  144. package/dist/providers/haf-client.js.map +1 -0
  145. package/dist/providers/haf-provider.d.ts +49 -0
  146. package/dist/providers/haf-provider.js +256 -0
  147. package/dist/providers/haf-provider.js.map +1 -0
  148. package/dist/providers/hive-provider.d.ts +13 -0
  149. package/dist/providers/hive-provider.js +25 -0
  150. package/dist/providers/hive-provider.js.map +1 -0
  151. package/dist/providers/index.d.ts +4 -0
  152. package/dist/providers/index.js +21 -0
  153. package/dist/providers/index.js.map +1 -0
  154. package/dist/streamer.d.ts +65 -4
  155. package/dist/streamer.js +768 -72
  156. package/dist/streamer.js.map +1 -1
  157. package/dist/types/hive-stream.d.ts +317 -0
  158. package/dist/utils.d.ts +33 -0
  159. package/dist/utils.js +198 -2
  160. package/dist/utils.js.map +1 -1
  161. package/package.json +16 -1
  162. package/.claude/settings.local.json +0 -12
  163. package/.env.example +0 -3
  164. package/.travis.yml +0 -11
  165. package/AGENTS.md +0 -35
  166. package/CLAUDE.md +0 -75
  167. package/ecosystem.config.js +0 -17
  168. package/examples/contracts/README.md +0 -8
  169. package/examples/contracts/exchange.ts +0 -38
  170. package/examples/contracts/poll.ts +0 -21
  171. package/examples/contracts/rps.ts +0 -19
  172. package/examples/contracts/tipjar.ts +0 -19
  173. package/jest.config.js +0 -9
  174. package/test-contract-block.md +0 -19
  175. package/tests/actions.spec.ts +0 -252
  176. package/tests/adapters/actions-persistence.spec.ts +0 -144
  177. package/tests/adapters/postgresql.adapter.spec.ts +0 -127
  178. package/tests/adapters/sqlite.adapter.spec.ts +0 -181
  179. package/tests/config-input.spec.ts +0 -90
  180. package/tests/contracts/coinflip.contract.spec.ts +0 -94
  181. package/tests/contracts/dice.contract.spec.ts +0 -87
  182. package/tests/contracts/entrants.json +0 -729
  183. package/tests/contracts/exchange.contract.spec.ts +0 -84
  184. package/tests/contracts/lotto.contract.spec.ts +0 -59
  185. package/tests/contracts/nft.contract.spec.ts +0 -948
  186. package/tests/contracts/token.contract.spec.ts +0 -90
  187. package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
  188. package/tests/exchanges/exchange.base.spec.ts +0 -246
  189. package/tests/helpers/mock-adapter.ts +0 -214
  190. package/tests/helpers/mock-fetch.ts +0 -165
  191. package/tests/hive-chain-features.spec.ts +0 -319
  192. package/tests/hive-rates.spec.ts +0 -443
  193. package/tests/integration/hive-rates.integration.spec.ts +0 -35
  194. package/tests/metadata.spec.ts +0 -63
  195. package/tests/setup.ts +0 -30
  196. package/tests/streamer-actions.spec.ts +0 -274
  197. package/tests/streamer.spec.ts +0 -342
  198. package/tests/types/rates.spec.ts +0 -216
  199. package/tests/utils.spec.ts +0 -113
  200. package/tsconfig.build.json +0 -4
  201. package/tslint.json +0 -21
  202. 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,4 @@
1
+ export * from './block-provider';
2
+ export * from './hive-provider';
3
+ export * from './haf-provider';
4
+ export * from './haf-client';
@@ -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"}