hive-stream 2.0.6 → 3.0.0

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 (87) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +2 -2
  3. package/.travis.yml +11 -11
  4. package/CHANGELOG.md +166 -0
  5. package/CLAUDE.md +75 -0
  6. package/LICENSE +21 -21
  7. package/README.md +338 -238
  8. package/dist/actions.d.ts +41 -10
  9. package/dist/actions.js +126 -23
  10. package/dist/actions.js.map +1 -1
  11. package/dist/adapters/base.adapter.d.ts +25 -25
  12. package/dist/adapters/base.adapter.js +63 -49
  13. package/dist/adapters/base.adapter.js.map +1 -1
  14. package/dist/adapters/mongodb.adapter.d.ts +50 -37
  15. package/dist/adapters/mongodb.adapter.js +363 -158
  16. package/dist/adapters/mongodb.adapter.js.map +1 -1
  17. package/dist/adapters/postgresql.adapter.d.ts +49 -0
  18. package/dist/adapters/postgresql.adapter.js +507 -0
  19. package/dist/adapters/postgresql.adapter.js.map +1 -0
  20. package/dist/adapters/sqlite.adapter.d.ts +40 -41
  21. package/dist/adapters/sqlite.adapter.js +470 -397
  22. package/dist/adapters/sqlite.adapter.js.map +1 -1
  23. package/dist/api.d.ts +6 -6
  24. package/dist/api.js +95 -55
  25. package/dist/api.js.map +1 -1
  26. package/dist/config.d.ts +16 -16
  27. package/dist/config.js +18 -18
  28. package/dist/config.js.map +1 -1
  29. package/dist/contracts/coinflip.contract.d.ts +27 -14
  30. package/dist/contracts/coinflip.contract.js +253 -94
  31. package/dist/contracts/coinflip.contract.js.map +1 -1
  32. package/dist/contracts/dice.contract.d.ts +37 -29
  33. package/dist/contracts/dice.contract.js +282 -155
  34. package/dist/contracts/dice.contract.js.map +1 -1
  35. package/dist/contracts/lotto.contract.d.ts +20 -20
  36. package/dist/contracts/lotto.contract.js +246 -246
  37. package/dist/contracts/nft.contract.d.ts +24 -0
  38. package/dist/contracts/nft.contract.js +533 -0
  39. package/dist/contracts/nft.contract.js.map +1 -0
  40. package/dist/contracts/token.contract.d.ts +18 -0
  41. package/dist/contracts/token.contract.js +263 -0
  42. package/dist/contracts/token.contract.js.map +1 -0
  43. package/dist/exchanges/bittrex.d.ts +6 -6
  44. package/dist/exchanges/bittrex.js +34 -34
  45. package/dist/exchanges/coingecko.d.ts +5 -0
  46. package/dist/exchanges/coingecko.js +40 -0
  47. package/dist/exchanges/coingecko.js.map +1 -0
  48. package/dist/exchanges/exchange.d.ts +9 -9
  49. package/dist/exchanges/exchange.js +26 -26
  50. package/dist/hive-rates.d.ts +9 -9
  51. package/dist/hive-rates.js +121 -75
  52. package/dist/hive-rates.js.map +1 -1
  53. package/dist/index.d.ts +12 -11
  54. package/dist/index.js +33 -32
  55. package/dist/index.js.map +1 -1
  56. package/dist/streamer.d.ts +140 -93
  57. package/dist/streamer.js +793 -545
  58. package/dist/streamer.js.map +1 -1
  59. package/dist/test.d.ts +1 -1
  60. package/dist/test.js +25 -25
  61. package/dist/types/hive-stream.d.ts +35 -6
  62. package/dist/types/hive-stream.js +2 -2
  63. package/dist/utils.d.ts +27 -27
  64. package/dist/utils.js +271 -261
  65. package/dist/utils.js.map +1 -1
  66. package/ecosystem.config.js +17 -17
  67. package/jest.config.js +8 -8
  68. package/package.json +53 -48
  69. package/test-contract-block.md +18 -18
  70. package/tests/actions.spec.ts +252 -0
  71. package/tests/adapters/actions-persistence.spec.ts +144 -0
  72. package/tests/adapters/postgresql.adapter.spec.ts +127 -0
  73. package/tests/adapters/sqlite.adapter.spec.ts +180 -42
  74. package/tests/contracts/coinflip.contract.spec.ts +221 -131
  75. package/tests/contracts/dice.contract.spec.ts +202 -159
  76. package/tests/contracts/entrants.json +728 -728
  77. package/tests/contracts/lotto.contract.spec.ts +323 -323
  78. package/tests/contracts/nft.contract.spec.ts +948 -0
  79. package/tests/contracts/token.contract.spec.ts +334 -0
  80. package/tests/helpers/mock-adapter.ts +214 -0
  81. package/tests/setup.ts +29 -18
  82. package/tests/streamer-actions.spec.ts +263 -0
  83. package/tests/streamer.spec.ts +248 -151
  84. package/tests/utils.spec.ts +91 -94
  85. package/tsconfig.build.json +3 -22
  86. package/tslint.json +20 -20
  87. package/wallaby.js +26 -26
@@ -0,0 +1,507 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgreSQLAdapter = void 0;
4
+ const actions_1 = require("./../actions");
5
+ const base_adapter_1 = require("./base.adapter");
6
+ const knex_1 = require("knex");
7
+ class PostgreSQLAdapter extends base_adapter_1.AdapterBase {
8
+ config;
9
+ constructor(config) {
10
+ super();
11
+ this.config = config;
12
+ // Support both individual config and connection string
13
+ const connection = config.connectionString ? {
14
+ connectionString: config.connectionString,
15
+ ssl: config.ssl || false
16
+ } : {
17
+ host: config.host || 'localhost',
18
+ port: config.port || 5432,
19
+ user: config.user || 'postgres',
20
+ password: config.password,
21
+ database: config.database || 'hive_stream',
22
+ ssl: config.ssl || false
23
+ };
24
+ this.db = (0, knex_1.knex)({
25
+ client: 'pg',
26
+ connection,
27
+ pool: {
28
+ min: 2,
29
+ max: 10,
30
+ acquireTimeoutMillis: 30000,
31
+ idleTimeoutMillis: 30000
32
+ },
33
+ migrations: {
34
+ tableName: 'knex_migrations'
35
+ }
36
+ });
37
+ }
38
+ blockNumber;
39
+ lastBlockNumber;
40
+ blockId;
41
+ prevBlockId;
42
+ transactionId;
43
+ getDb() {
44
+ return this.db;
45
+ }
46
+ async create() {
47
+ try {
48
+ await this.db.schema.createTableIfNotExists('params', table => {
49
+ table.integer('id').primary();
50
+ table.bigInteger('lastBlockNumber');
51
+ table.text('actions');
52
+ });
53
+ await this.db.schema.createTableIfNotExists('transfers', table => {
54
+ table.text('id').primary();
55
+ table.text('blockId');
56
+ table.bigInteger('blockNumber');
57
+ table.text('sender');
58
+ table.text('amount');
59
+ table.text('contractName');
60
+ table.text('contractAction');
61
+ table.text('contractPayload');
62
+ table.timestamp('created_at').defaultTo(this.db.fn.now());
63
+ // Add indexes for common queries
64
+ table.index(['sender']);
65
+ table.index(['contractName']);
66
+ table.index(['blockNumber']);
67
+ table.index(['blockId']);
68
+ });
69
+ await this.db.schema.createTableIfNotExists('customJson', table => {
70
+ table.text('id').primary();
71
+ table.text('blockId');
72
+ table.bigInteger('blockNumber');
73
+ table.text('sender');
74
+ table.integer('isSignedWithActiveKey');
75
+ table.text('contractName');
76
+ table.text('contractAction');
77
+ table.text('contractPayload');
78
+ table.timestamp('created_at').defaultTo(this.db.fn.now());
79
+ // Add indexes for common queries
80
+ table.index(['sender']);
81
+ table.index(['contractName']);
82
+ table.index(['blockNumber']);
83
+ table.index(['blockId']);
84
+ });
85
+ await this.db.schema.createTableIfNotExists('events', table => {
86
+ table.increments('id').primary();
87
+ table.timestamp('date').defaultTo(this.db.fn.now());
88
+ table.text('contract');
89
+ table.text('action');
90
+ table.text('payload');
91
+ table.text('data');
92
+ // Add indexes for common queries
93
+ table.index(['contract']);
94
+ table.index(['action']);
95
+ table.index(['date']);
96
+ });
97
+ return true;
98
+ }
99
+ catch (error) {
100
+ console.error('[PostgreSQLAdapter] Error creating tables:', error);
101
+ throw error;
102
+ }
103
+ }
104
+ async loadActions() {
105
+ const state = await this.loadState();
106
+ if (state && state.actions) {
107
+ try {
108
+ return state.actions.map((actionData) => {
109
+ try {
110
+ return actions_1.TimeAction.fromJSON(actionData);
111
+ }
112
+ catch (error) {
113
+ console.warn(`[PostgreSQLAdapter] Failed to restore action ${actionData?.id || 'unknown'}:`, error);
114
+ return null;
115
+ }
116
+ }).filter(Boolean);
117
+ }
118
+ catch (error) {
119
+ console.error('[PostgreSQLAdapter] Error loading actions:', error);
120
+ return [];
121
+ }
122
+ }
123
+ return [];
124
+ }
125
+ async loadState() {
126
+ try {
127
+ const row = await this.db('params')
128
+ .select('actions', 'lastBlockNumber')
129
+ .first();
130
+ if (row) {
131
+ try {
132
+ row.actions = row.actions ? JSON.parse(row.actions) : [];
133
+ }
134
+ catch (parseError) {
135
+ console.warn('[PostgreSQLAdapter] Failed to parse actions from database, using empty array:', parseError);
136
+ row.actions = [];
137
+ }
138
+ return row;
139
+ }
140
+ return null;
141
+ }
142
+ catch (error) {
143
+ console.error('[PostgreSQLAdapter] Error loading state:', error);
144
+ throw error;
145
+ }
146
+ }
147
+ async saveState(data) {
148
+ try {
149
+ let actionsJson;
150
+ try {
151
+ actionsJson = JSON.stringify(data.actions || []);
152
+ }
153
+ catch (error) {
154
+ console.error('[PostgreSQLAdapter] Failed to serialize actions:', error);
155
+ actionsJson = '[]';
156
+ }
157
+ await this.db('params')
158
+ .insert({
159
+ id: 1,
160
+ actions: actionsJson,
161
+ lastBlockNumber: data.lastBlockNumber
162
+ })
163
+ .onConflict('id')
164
+ .merge();
165
+ return true;
166
+ }
167
+ catch (error) {
168
+ console.error('[PostgreSQLAdapter] Error saving state:', error);
169
+ throw error;
170
+ }
171
+ }
172
+ async processOperation(op, blockNumber, blockId, prevBlockId, trxId, blockTime) {
173
+ this.blockNumber = blockNumber;
174
+ this.blockId = blockId;
175
+ this.prevBlockId = prevBlockId;
176
+ this.transactionId = trxId;
177
+ }
178
+ async processTransfer(operation, payload, metadata) {
179
+ try {
180
+ await this.db('transfers').insert({
181
+ id: this.transactionId,
182
+ blockId: this.blockId,
183
+ blockNumber: this.blockNumber,
184
+ sender: metadata.sender,
185
+ amount: metadata.amount,
186
+ contractName: payload.name,
187
+ contractAction: payload.action,
188
+ contractPayload: JSON.stringify(payload.payload)
189
+ });
190
+ return true;
191
+ }
192
+ catch (error) {
193
+ console.error('[PostgreSQLAdapter] Error processing transfer:', error);
194
+ throw error;
195
+ }
196
+ }
197
+ async processCustomJson(operation, payload, metadata) {
198
+ try {
199
+ await this.db('customJson').insert({
200
+ id: this.transactionId,
201
+ blockId: this.blockId,
202
+ blockNumber: this.blockNumber,
203
+ sender: metadata.sender,
204
+ isSignedWithActiveKey: metadata.isSignedWithActiveKey ? 1 : 0,
205
+ contractName: payload.name,
206
+ contractAction: payload.action,
207
+ contractPayload: JSON.stringify(payload.payload)
208
+ });
209
+ return true;
210
+ }
211
+ catch (error) {
212
+ console.error('[PostgreSQLAdapter] Error processing custom JSON:', error);
213
+ throw error;
214
+ }
215
+ }
216
+ async addEvent(date, contract, action, payload, data) {
217
+ try {
218
+ await this.db('events').insert({
219
+ date: new Date(date),
220
+ contract,
221
+ action,
222
+ payload: JSON.stringify(payload),
223
+ data: JSON.stringify(data)
224
+ });
225
+ return true;
226
+ }
227
+ catch (error) {
228
+ console.error('[PostgreSQLAdapter] Error adding event:', error);
229
+ throw error;
230
+ }
231
+ }
232
+ async getTransfers() {
233
+ try {
234
+ const rows = await this.db('transfers')
235
+ .select('id', 'blockId', 'blockNumber', 'sender', 'amount', 'contractName', 'contractAction', 'contractPayload')
236
+ .orderBy('blockNumber', 'desc');
237
+ if (rows.length) {
238
+ return rows.map(row => ({
239
+ ...row,
240
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
241
+ }));
242
+ }
243
+ return null;
244
+ }
245
+ catch (error) {
246
+ console.error('[PostgreSQLAdapter] Error getting transfers:', error);
247
+ throw error;
248
+ }
249
+ }
250
+ async getEvents() {
251
+ try {
252
+ const rows = await this.db('events')
253
+ .select('id', 'date', 'contract', 'action', 'payload', 'data')
254
+ .orderBy('date', 'desc');
255
+ if (rows.length) {
256
+ return rows.map(row => ({
257
+ ...row,
258
+ payload: JSON.parse(row.payload) ?? {},
259
+ data: JSON.parse(row.data) ?? {}
260
+ }));
261
+ }
262
+ return null;
263
+ }
264
+ catch (error) {
265
+ console.error('[PostgreSQLAdapter] Error getting events:', error);
266
+ throw error;
267
+ }
268
+ }
269
+ async getEventsByContract(contract) {
270
+ try {
271
+ const rows = await this.db('events')
272
+ .select('id', 'date', 'contract', 'action', 'payload', 'data')
273
+ .where('contract', contract)
274
+ .orderBy('date', 'desc');
275
+ if (rows.length) {
276
+ return rows.map(row => ({
277
+ ...row,
278
+ payload: JSON.parse(row.payload) ?? {},
279
+ data: JSON.parse(row.data) ?? {}
280
+ }));
281
+ }
282
+ return null;
283
+ }
284
+ catch (error) {
285
+ console.error('[PostgreSQLAdapter] Error getting events by contract:', error);
286
+ throw error;
287
+ }
288
+ }
289
+ async getEventsByAccount(account) {
290
+ try {
291
+ const rows = await this.db('events')
292
+ .select('id', 'date', 'contract', 'action', 'payload', 'data')
293
+ .where('data', 'like', `%"${account}"%`)
294
+ .orderBy('date', 'desc');
295
+ if (rows.length) {
296
+ return rows.map(row => ({
297
+ ...row,
298
+ payload: JSON.parse(row.payload) ?? {},
299
+ data: JSON.parse(row.data) ?? {}
300
+ }));
301
+ }
302
+ return null;
303
+ }
304
+ catch (error) {
305
+ console.error('[PostgreSQLAdapter] Error getting events by account:', error);
306
+ throw error;
307
+ }
308
+ }
309
+ async getTransfersByContract(contract) {
310
+ try {
311
+ const rows = await this.db('transfers')
312
+ .select('id', 'blockId', 'blockNumber', 'sender', 'amount', 'contractName', 'contractAction', 'contractPayload')
313
+ .where('contractName', contract)
314
+ .orderBy('blockNumber', 'desc');
315
+ if (rows.length) {
316
+ return rows.map(row => ({
317
+ ...row,
318
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
319
+ }));
320
+ }
321
+ return null;
322
+ }
323
+ catch (error) {
324
+ console.error('[PostgreSQLAdapter] Error getting transfers by contract:', error);
325
+ throw error;
326
+ }
327
+ }
328
+ async getTransfersByAccount(account) {
329
+ try {
330
+ const rows = await this.db('transfers')
331
+ .select('id', 'blockId', 'blockNumber', 'sender', 'amount', 'contractName', 'contractAction', 'contractPayload')
332
+ .where('sender', account)
333
+ .orderBy('blockNumber', 'desc');
334
+ if (rows.length) {
335
+ return rows.map(row => ({
336
+ ...row,
337
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
338
+ }));
339
+ }
340
+ return null;
341
+ }
342
+ catch (error) {
343
+ console.error('[PostgreSQLAdapter] Error getting transfers by account:', error);
344
+ throw error;
345
+ }
346
+ }
347
+ async getTransfersByBlockid(blockId) {
348
+ try {
349
+ const rows = await this.db('transfers')
350
+ .select('id', 'blockId', 'blockNumber', 'sender', 'amount', 'contractName', 'contractAction', 'contractPayload')
351
+ .where('blockId', blockId)
352
+ .orderBy('blockNumber', 'desc');
353
+ if (rows.length) {
354
+ return rows.map(row => ({
355
+ ...row,
356
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
357
+ }));
358
+ }
359
+ return null;
360
+ }
361
+ catch (error) {
362
+ console.error('[PostgreSQLAdapter] Error getting transfers by blockId:', error);
363
+ throw error;
364
+ }
365
+ }
366
+ async getJson() {
367
+ try {
368
+ const rows = await this.db('customJson')
369
+ .select('id', 'blockId', 'blockNumber', 'sender', 'isSignedWithActiveKey', 'contractName', 'contractAction', 'contractPayload')
370
+ .orderBy('blockNumber', 'desc');
371
+ if (rows.length) {
372
+ return rows.map(row => ({
373
+ ...row,
374
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
375
+ }));
376
+ }
377
+ return null;
378
+ }
379
+ catch (error) {
380
+ console.error('[PostgreSQLAdapter] Error getting JSON:', error);
381
+ throw error;
382
+ }
383
+ }
384
+ async getJsonByContract(contract) {
385
+ try {
386
+ const rows = await this.db('customJson')
387
+ .select('id', 'blockId', 'blockNumber', 'sender', 'isSignedWithActiveKey', 'contractName', 'contractAction', 'contractPayload')
388
+ .where('contractName', contract)
389
+ .orderBy('blockNumber', 'desc');
390
+ if (rows.length) {
391
+ return rows.map(row => ({
392
+ ...row,
393
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
394
+ }));
395
+ }
396
+ return null;
397
+ }
398
+ catch (error) {
399
+ console.error('[PostgreSQLAdapter] Error getting JSON by contract:', error);
400
+ throw error;
401
+ }
402
+ }
403
+ async getJsonByAccount(account) {
404
+ try {
405
+ const rows = await this.db('customJson')
406
+ .select('id', 'blockId', 'blockNumber', 'sender', 'isSignedWithActiveKey', 'contractName', 'contractAction', 'contractPayload')
407
+ .where('sender', account)
408
+ .orderBy('blockNumber', 'desc');
409
+ if (rows.length) {
410
+ return rows.map(row => ({
411
+ ...row,
412
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
413
+ }));
414
+ }
415
+ return null;
416
+ }
417
+ catch (error) {
418
+ console.error('[PostgreSQLAdapter] Error getting JSON by account:', error);
419
+ throw error;
420
+ }
421
+ }
422
+ async getJsonByBlockid(blockId) {
423
+ try {
424
+ const rows = await this.db('customJson')
425
+ .select('id', 'blockId', 'blockNumber', 'sender', 'isSignedWithActiveKey', 'contractName', 'contractAction', 'contractPayload')
426
+ .where('blockId', blockId)
427
+ .orderBy('blockNumber', 'desc');
428
+ if (rows.length) {
429
+ return rows.map(row => ({
430
+ ...row,
431
+ contractPayload: JSON.parse(row.contractPayload) ?? {}
432
+ }));
433
+ }
434
+ return null;
435
+ }
436
+ catch (error) {
437
+ console.error('[PostgreSQLAdapter] Error getting JSON by blockId:', error);
438
+ throw error;
439
+ }
440
+ }
441
+ async destroy() {
442
+ try {
443
+ await this.db.destroy();
444
+ return true;
445
+ }
446
+ catch (error) {
447
+ console.error('[PostgreSQLAdapter] Error destroying database connection:', error);
448
+ throw error;
449
+ }
450
+ }
451
+ async find(table, query) {
452
+ try {
453
+ const rows = await this.db(table).where(query);
454
+ return rows.length ? rows : null;
455
+ }
456
+ catch (error) {
457
+ console.error(`[PostgreSQLAdapter] Error finding in table ${table}:`, error);
458
+ throw error;
459
+ }
460
+ }
461
+ async findOne(table, query) {
462
+ try {
463
+ const row = await this.db(table).where(query).first();
464
+ return row || null;
465
+ }
466
+ catch (error) {
467
+ console.error(`[PostgreSQLAdapter] Error finding one in table ${table}:`, error);
468
+ throw error;
469
+ }
470
+ }
471
+ async insert(table, data) {
472
+ try {
473
+ await this.db(table).insert(data);
474
+ return true;
475
+ }
476
+ catch (error) {
477
+ console.error(`[PostgreSQLAdapter] Error inserting into table ${table}:`, error);
478
+ throw error;
479
+ }
480
+ }
481
+ async replace(table, queryObject, data) {
482
+ try {
483
+ await this.db(table)
484
+ .insert(data)
485
+ .onConflict(Object.keys(queryObject))
486
+ .merge();
487
+ return data;
488
+ }
489
+ catch (error) {
490
+ console.error(`[PostgreSQLAdapter] Error replacing in table ${table}:`, error);
491
+ throw error;
492
+ }
493
+ }
494
+ async query(sql, params) {
495
+ try {
496
+ const result = await this.db.raw(sql, params);
497
+ // PostgreSQL returns results in result.rows
498
+ return result.rows || [];
499
+ }
500
+ catch (error) {
501
+ console.error('[PostgreSQLAdapter] Error executing raw query:', error);
502
+ throw error;
503
+ }
504
+ }
505
+ }
506
+ exports.PostgreSQLAdapter = PostgreSQLAdapter;
507
+ //# sourceMappingURL=postgresql.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql.adapter.js","sourceRoot":"","sources":["../../src/adapters/postgresql.adapter.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,40 @@
1
- import { TimeAction } from './../actions';
2
- import { ContractPayload } from './../types/hive-stream';
3
- import { AdapterBase } from './base.adapter';
4
- import { Database } from 'sqlite3';
5
- export declare class SqliteAdapter extends AdapterBase {
6
- db: Database;
7
- private blockNumber;
8
- private lastBlockNumber;
9
- private blockId;
10
- private prevBlockId;
11
- private transactionId;
12
- getDb(): Database;
13
- create(): Promise<boolean>;
14
- loadActions(): Promise<TimeAction[]>;
15
- loadState(): Promise<any>;
16
- saveState(data: any): Promise<boolean>;
17
- processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<void>;
18
- processTransfer(operation: any, payload: ContractPayload, metadata: {
19
- sender: string;
20
- amount: string;
21
- }): Promise<boolean>;
22
- processCustomJson(operation: any, payload: ContractPayload, metadata: {
23
- sender: string;
24
- isSignedWithActiveKey: boolean;
25
- }): Promise<boolean>;
26
- addEvent(date: string, contract: string, action: string, payload: ContractPayload, data: unknown): Promise<boolean>;
27
- getTransfers(): Promise<unknown>;
28
- getEvents(): Promise<unknown>;
29
- getTransfersByContract(contract: string): Promise<unknown>;
30
- getTransfersByAccount(account: string): Promise<unknown>;
31
- getTransfersByBlockid(blockId: any): Promise<unknown>;
32
- getJson(): Promise<unknown>;
33
- getJsonByContract(contract: string): Promise<unknown>;
34
- getJsonByAccount(account: string): Promise<unknown>;
35
- getJsonByBlockid(blockId: any): Promise<unknown>;
36
- destroy(): Promise<boolean>;
37
- find(table: any, query: any): Promise<unknown>;
38
- findOne(table: any, query: any): Promise<unknown>;
39
- insert(table: any, data: any): Promise<unknown>;
40
- replace(table: string, queryObject: any, data: any): Promise<any>;
41
- }
1
+ import { TimeAction } from './../actions';
2
+ import { ContractPayload, TransferMetadata, CustomJsonMetadata } from './../types/hive-stream';
3
+ import { AdapterBase } from './base.adapter';
4
+ import { Knex } from 'knex';
5
+ export declare class SqliteAdapter extends AdapterBase {
6
+ db: Knex;
7
+ private dbPath;
8
+ constructor(dbPath?: string);
9
+ private blockNumber;
10
+ private lastBlockNumber;
11
+ private blockId;
12
+ private prevBlockId;
13
+ private transactionId;
14
+ getDb(): Knex;
15
+ create(): Promise<boolean>;
16
+ loadActions(): Promise<TimeAction[]>;
17
+ loadState(): Promise<any>;
18
+ saveState(data: any): Promise<boolean>;
19
+ processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<void>;
20
+ processTransfer(operation: any, payload: ContractPayload, metadata: TransferMetadata): Promise<boolean>;
21
+ processCustomJson(operation: any, payload: ContractPayload, metadata: CustomJsonMetadata): Promise<boolean>;
22
+ addEvent(date: string, contract: string, action: string, payload: ContractPayload, data: unknown): Promise<boolean>;
23
+ getTransfers(): Promise<any[]>;
24
+ getEvents(): Promise<any[]>;
25
+ getEventsByContract(contract: string): Promise<any[]>;
26
+ getEventsByAccount(account: string): Promise<any[]>;
27
+ getTransfersByContract(contract: string): Promise<any[]>;
28
+ getTransfersByAccount(account: string): Promise<any[]>;
29
+ getTransfersByBlockid(blockId: any): Promise<any[]>;
30
+ getJson(): Promise<any[]>;
31
+ getJsonByContract(contract: string): Promise<any[]>;
32
+ getJsonByAccount(account: string): Promise<any[]>;
33
+ getJsonByBlockid(blockId: any): Promise<any[]>;
34
+ destroy(): Promise<boolean>;
35
+ find(table: string, query: Record<string, any>): Promise<any[]>;
36
+ findOne(table: string, query: Record<string, any>): Promise<any>;
37
+ insert(table: string, data: any): Promise<boolean>;
38
+ replace(table: string, queryObject: Record<string, any>, data: any): Promise<any>;
39
+ query(sql: string, params?: any[]): Promise<any[]>;
40
+ }