hive-stream 3.0.2 → 3.0.3

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