hive-stream 2.0.6 → 3.0.1

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 (123) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +2 -2
  3. package/.travis.yml +11 -11
  4. package/AGENTS.md +35 -0
  5. package/CHANGELOG.md +166 -0
  6. package/CLAUDE.md +75 -0
  7. package/DOCUMENTATION.md +380 -0
  8. package/LICENSE +21 -21
  9. package/README.md +429 -238
  10. package/dist/actions.d.ts +41 -10
  11. package/dist/actions.js +126 -23
  12. package/dist/actions.js.map +1 -1
  13. package/dist/adapters/base.adapter.d.ts +43 -25
  14. package/dist/adapters/base.adapter.js +79 -49
  15. package/dist/adapters/base.adapter.js.map +1 -1
  16. package/dist/adapters/mongodb.adapter.d.ts +44 -37
  17. package/dist/adapters/mongodb.adapter.js +363 -158
  18. package/dist/adapters/mongodb.adapter.js.map +1 -1
  19. package/dist/adapters/postgresql.adapter.d.ts +66 -0
  20. package/dist/adapters/postgresql.adapter.js +598 -0
  21. package/dist/adapters/postgresql.adapter.js.map +1 -0
  22. package/dist/adapters/sqlite.adapter.d.ts +57 -41
  23. package/dist/adapters/sqlite.adapter.js +561 -397
  24. package/dist/adapters/sqlite.adapter.js.map +1 -1
  25. package/dist/api.d.ts +6 -6
  26. package/dist/api.js +181 -55
  27. package/dist/api.js.map +1 -1
  28. package/dist/config.d.ts +19 -16
  29. package/dist/config.js +21 -18
  30. package/dist/config.js.map +1 -1
  31. package/dist/contracts/coinflip.contract.d.ts +9 -14
  32. package/dist/contracts/coinflip.contract.js +232 -94
  33. package/dist/contracts/coinflip.contract.js.map +1 -1
  34. package/dist/contracts/contract.d.ts +3 -0
  35. package/dist/contracts/contract.js +26 -0
  36. package/dist/contracts/contract.js.map +1 -0
  37. package/dist/contracts/dice.contract.d.ts +10 -29
  38. package/dist/contracts/dice.contract.js +217 -155
  39. package/dist/contracts/dice.contract.js.map +1 -1
  40. package/dist/contracts/exchange.contract.d.ts +11 -0
  41. package/dist/contracts/exchange.contract.js +492 -0
  42. package/dist/contracts/exchange.contract.js.map +1 -0
  43. package/dist/contracts/lotto.contract.d.ts +16 -20
  44. package/dist/contracts/lotto.contract.js +238 -246
  45. package/dist/contracts/lotto.contract.js.map +1 -1
  46. package/dist/contracts/nft.contract.d.ts +28 -0
  47. package/dist/contracts/nft.contract.js +598 -0
  48. package/dist/contracts/nft.contract.js.map +1 -0
  49. package/dist/contracts/poll.contract.d.ts +4 -0
  50. package/dist/contracts/poll.contract.js +105 -0
  51. package/dist/contracts/poll.contract.js.map +1 -0
  52. package/dist/contracts/rps.contract.d.ts +9 -0
  53. package/dist/contracts/rps.contract.js +217 -0
  54. package/dist/contracts/rps.contract.js.map +1 -0
  55. package/dist/contracts/tipjar.contract.d.ts +4 -0
  56. package/dist/contracts/tipjar.contract.js +60 -0
  57. package/dist/contracts/tipjar.contract.js.map +1 -0
  58. package/dist/contracts/token.contract.d.ts +4 -0
  59. package/dist/contracts/token.contract.js +311 -0
  60. package/dist/contracts/token.contract.js.map +1 -0
  61. package/dist/exchanges/bittrex.d.ts +6 -6
  62. package/dist/exchanges/bittrex.js +34 -34
  63. package/dist/exchanges/coingecko.d.ts +11 -0
  64. package/dist/exchanges/coingecko.js +57 -0
  65. package/dist/exchanges/coingecko.js.map +1 -0
  66. package/dist/exchanges/exchange.d.ts +16 -9
  67. package/dist/exchanges/exchange.js +80 -26
  68. package/dist/exchanges/exchange.js.map +1 -1
  69. package/dist/hive-rates.d.ts +34 -9
  70. package/dist/hive-rates.js +208 -75
  71. package/dist/hive-rates.js.map +1 -1
  72. package/dist/index.d.ts +19 -11
  73. package/dist/index.js +47 -32
  74. package/dist/index.js.map +1 -1
  75. package/dist/streamer.d.ts +233 -93
  76. package/dist/streamer.js +1063 -545
  77. package/dist/streamer.js.map +1 -1
  78. package/dist/test.d.ts +1 -1
  79. package/dist/test.js +24 -25
  80. package/dist/test.js.map +1 -1
  81. package/dist/types/hive-stream.d.ts +106 -6
  82. package/dist/types/hive-stream.js +2 -2
  83. package/dist/types/rates.d.ts +47 -0
  84. package/dist/types/rates.js +29 -0
  85. package/dist/types/rates.js.map +1 -0
  86. package/dist/utils.d.ts +334 -27
  87. package/dist/utils.js +960 -261
  88. package/dist/utils.js.map +1 -1
  89. package/ecosystem.config.js +17 -17
  90. package/examples/contracts/README.md +8 -0
  91. package/examples/contracts/exchange.ts +38 -0
  92. package/examples/contracts/poll.ts +21 -0
  93. package/examples/contracts/rps.ts +19 -0
  94. package/examples/contracts/tipjar.ts +19 -0
  95. package/jest.config.js +8 -8
  96. package/package.json +54 -48
  97. package/test-contract-block.md +18 -18
  98. package/tests/actions.spec.ts +252 -0
  99. package/tests/adapters/actions-persistence.spec.ts +144 -0
  100. package/tests/adapters/postgresql.adapter.spec.ts +127 -0
  101. package/tests/adapters/sqlite.adapter.spec.ts +180 -42
  102. package/tests/contracts/coinflip.contract.spec.ts +94 -132
  103. package/tests/contracts/dice.contract.spec.ts +87 -160
  104. package/tests/contracts/entrants.json +728 -728
  105. package/tests/contracts/exchange.contract.spec.ts +84 -0
  106. package/tests/contracts/lotto.contract.spec.ts +59 -324
  107. package/tests/contracts/nft.contract.spec.ts +948 -0
  108. package/tests/contracts/token.contract.spec.ts +90 -0
  109. package/tests/exchanges/coingecko.exchange.spec.ts +169 -0
  110. package/tests/exchanges/exchange.base.spec.ts +246 -0
  111. package/tests/helpers/mock-adapter.ts +214 -0
  112. package/tests/helpers/mock-fetch.ts +165 -0
  113. package/tests/hive-chain-features.spec.ts +238 -0
  114. package/tests/hive-rates.spec.ts +443 -0
  115. package/tests/integration/hive-rates.integration.spec.ts +35 -0
  116. package/tests/setup.ts +29 -18
  117. package/tests/streamer-actions.spec.ts +274 -0
  118. package/tests/streamer.spec.ts +342 -152
  119. package/tests/types/rates.spec.ts +216 -0
  120. package/tests/utils.spec.ts +113 -95
  121. package/tsconfig.build.json +3 -22
  122. package/tslint.json +20 -20
  123. package/wallaby.js +26 -26
package/dist/actions.d.ts CHANGED
@@ -1,10 +1,41 @@
1
- export declare class TimeAction {
2
- timeValue: string;
3
- id: string;
4
- contractName: string;
5
- contractMethod: string;
6
- payload: any;
7
- date: Date;
8
- constructor(timeValue: string, id: string, contractName: string, contractMethod: string, payload?: any, date?: Date);
9
- reset(): void;
10
- }
1
+ export interface TimeActionInterface {
2
+ timeValue: string;
3
+ id: string;
4
+ contractName: string;
5
+ contractAction: string;
6
+ payload: any;
7
+ date: Date;
8
+ enabled: boolean;
9
+ lastExecution?: Date;
10
+ executionCount: number;
11
+ maxExecutions?: number;
12
+ timezone?: string;
13
+ }
14
+ export declare class TimeAction implements TimeActionInterface {
15
+ timeValue: string;
16
+ id: string;
17
+ contractName: string;
18
+ contractAction: string;
19
+ payload: any;
20
+ date: Date;
21
+ enabled: boolean;
22
+ lastExecution?: Date;
23
+ executionCount: number;
24
+ maxExecutions?: number;
25
+ timezone?: string;
26
+ private static readonly VALID_TIME_VALUES;
27
+ constructor(timeValue: string, id: string, contractName: string, contractAction: string, payload?: any, date?: Date | string, enabled?: boolean, executionCount?: number, maxExecutions?: number, timezone?: string);
28
+ private validateTimeValue;
29
+ private validateId;
30
+ private validateContractName;
31
+ private validateMethodName;
32
+ private parseDate;
33
+ reset(): void;
34
+ disable(): void;
35
+ enable(): void;
36
+ hasReachedMaxExecutions(): boolean;
37
+ incrementExecutionCount(): void;
38
+ toJSON(): Record<string, any>;
39
+ static fromJSON(data: any): TimeAction;
40
+ static getValidTimeValues(): string[];
41
+ }
package/dist/actions.js CHANGED
@@ -1,24 +1,127 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimeAction = void 0;
4
- class TimeAction {
5
- timeValue;
6
- id;
7
- contractName;
8
- contractMethod;
9
- payload;
10
- date;
11
- constructor(timeValue, id, contractName, contractMethod, payload = {}, date = new Date()) {
12
- this.timeValue = timeValue;
13
- this.id = id;
14
- this.contractName = contractName;
15
- this.contractMethod = contractMethod;
16
- this.payload = payload;
17
- this.date = date;
18
- }
19
- reset() {
20
- this.date = new Date();
21
- }
22
- }
23
- exports.TimeAction = TimeAction;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeAction = void 0;
4
+ class TimeAction {
5
+ timeValue;
6
+ id;
7
+ contractName;
8
+ contractAction;
9
+ payload;
10
+ date;
11
+ enabled;
12
+ lastExecution;
13
+ executionCount;
14
+ maxExecutions;
15
+ timezone;
16
+ static VALID_TIME_VALUES = [
17
+ '3s', 'block', '10s', '30s', '1m', '5m', 'minute', '15m', 'quarter',
18
+ '30m', 'halfhour', 'hourly', '1h', '12h', 'halfday', '24h',
19
+ 'day', 'daily', 'week', 'weekly'
20
+ ];
21
+ constructor(timeValue, id, contractName, contractAction, payload = {}, date = new Date(), enabled = true, executionCount = 0, maxExecutions, timezone) {
22
+ this.validateTimeValue(timeValue);
23
+ this.validateId(id);
24
+ this.validateContractName(contractName);
25
+ this.validateMethodName(contractAction);
26
+ this.timeValue = timeValue;
27
+ this.id = id;
28
+ this.contractName = contractName;
29
+ this.contractAction = contractAction;
30
+ this.payload = payload || {};
31
+ this.date = this.parseDate(date);
32
+ this.enabled = enabled;
33
+ this.executionCount = executionCount;
34
+ this.maxExecutions = maxExecutions;
35
+ this.timezone = timezone || 'UTC';
36
+ }
37
+ validateTimeValue(timeValue) {
38
+ if (!timeValue || typeof timeValue !== 'string') {
39
+ throw new Error('TimeAction: timeValue must be a non-empty string');
40
+ }
41
+ if (!TimeAction.VALID_TIME_VALUES.includes(timeValue)) {
42
+ throw new Error(`TimeAction: Invalid timeValue '${timeValue}'. Valid values are: ${TimeAction.VALID_TIME_VALUES.join(', ')}`);
43
+ }
44
+ }
45
+ validateId(id) {
46
+ if (!id || typeof id !== 'string') {
47
+ throw new Error('TimeAction: id must be a non-empty string');
48
+ }
49
+ if (id.length > 255) {
50
+ throw new Error('TimeAction: id must not exceed 255 characters');
51
+ }
52
+ if (!/^[a-zA-Z0-9_-]+$/.test(id)) {
53
+ throw new Error('TimeAction: id can only contain alphanumeric characters, underscores, and hyphens');
54
+ }
55
+ }
56
+ validateContractName(contractName) {
57
+ if (!contractName || typeof contractName !== 'string') {
58
+ throw new Error('TimeAction: contractName must be a non-empty string');
59
+ }
60
+ }
61
+ validateMethodName(methodName) {
62
+ if (!methodName || typeof methodName !== 'string') {
63
+ throw new Error('TimeAction: contractAction must be a non-empty string');
64
+ }
65
+ }
66
+ parseDate(date) {
67
+ if (date instanceof Date) {
68
+ return date;
69
+ }
70
+ if (typeof date === 'string') {
71
+ const parsed = new Date(date);
72
+ if (isNaN(parsed.getTime())) {
73
+ throw new Error(`TimeAction: Invalid date string '${date}'`);
74
+ }
75
+ return parsed;
76
+ }
77
+ throw new Error('TimeAction: date must be a Date object or valid date string');
78
+ }
79
+ reset() {
80
+ this.date = new Date();
81
+ this.lastExecution = undefined;
82
+ }
83
+ disable() {
84
+ this.enabled = false;
85
+ }
86
+ enable() {
87
+ this.enabled = true;
88
+ }
89
+ hasReachedMaxExecutions() {
90
+ return this.maxExecutions !== undefined && this.executionCount >= this.maxExecutions;
91
+ }
92
+ incrementExecutionCount() {
93
+ this.executionCount++;
94
+ this.lastExecution = new Date();
95
+ }
96
+ toJSON() {
97
+ return {
98
+ timeValue: this.timeValue,
99
+ id: this.id,
100
+ contractName: this.contractName,
101
+ contractAction: this.contractAction,
102
+ payload: this.payload,
103
+ date: this.date.toISOString(),
104
+ enabled: this.enabled,
105
+ lastExecution: this.lastExecution?.toISOString(),
106
+ executionCount: this.executionCount,
107
+ maxExecutions: this.maxExecutions,
108
+ timezone: this.timezone
109
+ };
110
+ }
111
+ static fromJSON(data) {
112
+ if (!data || typeof data !== 'object') {
113
+ throw new Error('TimeAction.fromJSON: data must be a valid object');
114
+ }
115
+ const action = new TimeAction(data.timeValue, data.id, data.contractName, data.contractAction || data.contractMethod, data.payload, data.date, data.enabled !== undefined ? data.enabled : true, data.executionCount || 0, data.maxExecutions, data.timezone);
116
+ // Handle lastExecution separately since it's not a constructor parameter
117
+ if (data.lastExecution) {
118
+ action.lastExecution = new Date(data.lastExecution);
119
+ }
120
+ return action;
121
+ }
122
+ static getValidTimeValues() {
123
+ return [...TimeAction.VALID_TIME_VALUES];
124
+ }
125
+ }
126
+ exports.TimeAction = TimeAction;
24
127
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACA;IAA0B;IAAmB;IAA6B;IAA+B;IAA0B;IAAtJ,YAAmB,SAAiB,EAAS,EAAU,EAAS,YAAoB,EAAS,cAAsB,EAAS,UAAe,EAAE,EAAS,OAAO,IAAI,IAAI,EAAE;QAApJ,cAAS,GAAT,SAAS,CAAQ;QAAS,OAAE,GAAF,EAAE,CAAQ;QAAS,iBAAY,GAAZ,YAAY,CAAQ;QAAS,mBAAc,GAAd,cAAc,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAU;QAAS,SAAI,GAAJ,IAAI,CAAa;IAEvK,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;CACJ;AARD,gCAQC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,43 @@
1
- import { TimeAction } from './../actions';
2
- import { ContractPayload } from './../types/hive-stream';
3
- import { SignedBlock } from '@hiveio/dhive';
4
- export declare class AdapterBase {
5
- constructor();
6
- create(): Promise<boolean>;
7
- destroy(): Promise<boolean>;
8
- loadActions(): Promise<TimeAction[]>;
9
- loadState(): Promise<any>;
10
- saveState(data: any): Promise<boolean | any>;
11
- processBlock(block: SignedBlock): Promise<any>;
12
- processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<any>;
13
- processTransfer(operation: any, payload: ContractPayload, metadata: {
14
- sender: string;
15
- amount: string;
16
- }): Promise<boolean>;
17
- processCustomJson(operation: any, payload: ContractPayload, metadata: {
18
- sender: string;
19
- isSignedWithActiveKey: boolean;
20
- }): Promise<boolean>;
21
- find(table: string, queryObject: any): Promise<any>;
22
- findOne(table: string, queryObject: any): Promise<any>;
23
- insert(table: string, data: any): Promise<any>;
24
- replace(table: string, queryObject: any, data: any): Promise<any>;
25
- }
1
+ import { TimeAction } from './../actions';
2
+ import { ContractPayload, TransferMetadata, CustomJsonMetadata, EscrowOperationType, OperationMetadata } from './../types/hive-stream';
3
+ import { SignedBlock } from '@hiveio/dhive';
4
+ export declare class AdapterBase {
5
+ protected client: any;
6
+ protected db: any;
7
+ constructor();
8
+ create(): Promise<boolean>;
9
+ destroy(): Promise<boolean>;
10
+ loadActions(): Promise<TimeAction[]>;
11
+ loadState(): Promise<any>;
12
+ saveState(data: any): Promise<boolean | any>;
13
+ processBlock(block: SignedBlock): Promise<any>;
14
+ processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<any>;
15
+ processTransfer(operation: any, payload: ContractPayload, metadata: TransferMetadata): Promise<boolean>;
16
+ processCustomJson(operation: any, payload: ContractPayload, metadata: CustomJsonMetadata): Promise<boolean>;
17
+ processEscrow(operationType: EscrowOperationType, operation: any, metadata: OperationMetadata): Promise<boolean>;
18
+ find(table: string, queryObject: Record<string, any>): Promise<any>;
19
+ findOne(table: string, queryObject: Record<string, any>): Promise<any>;
20
+ insert(table: string, data: any): Promise<any>;
21
+ replace(table: string, queryObject: Record<string, any>, data: any): Promise<any>;
22
+ query(sql: string, params?: any[]): Promise<any[]>;
23
+ getEvents(): Promise<any[]>;
24
+ getEventsByContract(contract: string): Promise<any[]>;
25
+ getEventsByAccount(account: string): Promise<any[]>;
26
+ getExchangeBalances(account?: string): Promise<any[]>;
27
+ getExchangeOrders(filters?: {
28
+ account?: string;
29
+ base?: string;
30
+ quote?: string;
31
+ status?: string;
32
+ }): Promise<any[]>;
33
+ getExchangeTrades(filters?: {
34
+ account?: string;
35
+ base?: string;
36
+ quote?: string;
37
+ }): Promise<any[]>;
38
+ getExchangeOrderBookSnapshots(filters?: {
39
+ base?: string;
40
+ quote?: string;
41
+ limit?: number;
42
+ }): Promise<any[]>;
43
+ }
@@ -1,50 +1,80 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdapterBase = void 0;
4
- class AdapterBase {
5
- constructor() {
6
- this['client'] = null;
7
- this['db'] = null;
8
- }
9
- async create() {
10
- return true;
11
- }
12
- async destroy() {
13
- return true;
14
- }
15
- async loadActions() {
16
- return [];
17
- }
18
- async loadState() {
19
- throw new Error('Load state method not implemented in adapter');
20
- }
21
- async saveState(data) {
22
- throw new Error('Save state method not implemented in adapter');
23
- }
24
- async processBlock(block) {
25
- return true;
26
- }
27
- async processOperation(op, blockNumber, blockId, prevBlockId, trxId, blockTime) {
28
- return true;
29
- }
30
- async processTransfer(operation, payload, metadata) {
31
- return true;
32
- }
33
- async processCustomJson(operation, payload, metadata) {
34
- return true;
35
- }
36
- async find(table, queryObject) {
37
- return true;
38
- }
39
- async findOne(table, queryObject) {
40
- return true;
41
- }
42
- async insert(table, data) {
43
- return true;
44
- }
45
- async replace(table, queryObject, data) {
46
- return true;
47
- }
48
- }
49
- exports.AdapterBase = AdapterBase;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdapterBase = void 0;
4
+ class AdapterBase {
5
+ client = null;
6
+ db = null;
7
+ constructor() {
8
+ this.client = null;
9
+ this.db = null;
10
+ }
11
+ async create() {
12
+ return true;
13
+ }
14
+ async destroy() {
15
+ return true;
16
+ }
17
+ async loadActions() {
18
+ return [];
19
+ }
20
+ async loadState() {
21
+ throw new Error('Load state method not implemented in adapter');
22
+ }
23
+ async saveState(data) {
24
+ throw new Error('Save state method not implemented in adapter');
25
+ }
26
+ async processBlock(block) {
27
+ return true;
28
+ }
29
+ async processOperation(op, blockNumber, blockId, prevBlockId, trxId, blockTime) {
30
+ return true;
31
+ }
32
+ async processTransfer(operation, payload, metadata) {
33
+ return true;
34
+ }
35
+ async processCustomJson(operation, payload, metadata) {
36
+ return true;
37
+ }
38
+ async processEscrow(operationType, operation, metadata) {
39
+ return true;
40
+ }
41
+ async find(table, queryObject) {
42
+ return [];
43
+ }
44
+ async findOne(table, queryObject) {
45
+ return null;
46
+ }
47
+ async insert(table, data) {
48
+ return true;
49
+ }
50
+ async replace(table, queryObject, data) {
51
+ return data;
52
+ }
53
+ async query(sql, params) {
54
+ throw new Error('Query method not implemented in adapter');
55
+ }
56
+ async getEvents() {
57
+ return [];
58
+ }
59
+ async getEventsByContract(contract) {
60
+ return [];
61
+ }
62
+ async getEventsByAccount(account) {
63
+ return [];
64
+ }
65
+ // Exchange helpers (SQL adapters implement these)
66
+ async getExchangeBalances(account) {
67
+ return [];
68
+ }
69
+ async getExchangeOrders(filters = {}) {
70
+ return [];
71
+ }
72
+ async getExchangeTrades(filters = {}) {
73
+ return [];
74
+ }
75
+ async getExchangeOrderBookSnapshots(filters = {}) {
76
+ return [];
77
+ }
78
+ }
79
+ exports.AdapterBase = AdapterBase;
50
80
  //# sourceMappingURL=base.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../src/adapters/base.adapter.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IACpB;QACI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAS;QAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAkB;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,EAAO,EAAE,WAAmB,EAAE,OAAe,EAAE,WAAmB,EAAE,KAAa,EAAE,SAAe;QAC5H,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,OAAwB,EAAE,QAA4C;QAC1G,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAwB,EAAE,QAA4D;QAC5H,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,WAAgB;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,WAAgB;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAS;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,WAAgB,EAAE,IAAS;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzDD,kCAyDC"}
1
+ {"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../src/adapters/base.adapter.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IACV,MAAM,GAAQ,IAAI,CAAC;IACnB,EAAE,GAAQ,IAAI,CAAC;IAEzB;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAS;QAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAkB;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,EAAO,EAAE,WAAmB,EAAE,OAAe,EAAE,WAAmB,EAAE,KAAa,EAAE,SAAe;QAC5H,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,SAAc,EAAE,OAAwB,EAAE,QAA0B;QAC7F,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,SAAc,EAAE,OAAwB,EAAE,QAA4B;QACjG,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,aAAkC,EAAE,SAAc,EAAE,QAA2B;QACtG,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,WAAgC;QAC7D,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,WAAgC;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAS;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,WAAgC,EAAE,IAAS;QAC3E,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,MAAc;QAC1C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAC7C,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAC3C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,kDAAkD;IAC3C,KAAK,CAAC,mBAAmB,CAAC,OAAgB;QAC7C,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAAgF,EAAE;QAC7G,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAA+D,EAAE;QAC5F,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,UAA6D,EAAE;QACtG,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAjGD,kCAiGC"}
@@ -1,37 +1,44 @@
1
- import { TimeAction } from './../actions';
2
- import { ContractPayload } from './../types/hive-stream';
3
- import { AdapterBase } from './base.adapter';
4
- import { Db } from 'mongodb';
5
- export declare class MongodbAdapter extends AdapterBase {
6
- private client;
7
- private db;
8
- private mongo;
9
- private blockNumber;
10
- private lastBlockNumber;
11
- private blockId;
12
- private prevBlockId;
13
- private transactionId;
14
- constructor(uri: string, database: string, options?: {
15
- useNewUrlParser: boolean;
16
- useUnifiedTopology: boolean;
17
- });
18
- getDbInstance(): Promise<Db>;
19
- create(): Promise<boolean>;
20
- loadActions(): Promise<TimeAction[]>;
21
- loadState(): Promise<any>;
22
- saveState(data: any): Promise<boolean>;
23
- processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<void>;
24
- processTransfer(operation: any, payload: ContractPayload, metadata: {
25
- sender: string;
26
- amount: string;
27
- }): Promise<boolean>;
28
- processCustomJson(operation: any, payload: ContractPayload, metadata: {
29
- sender: string;
30
- isSignedWithActiveKey: boolean;
31
- }): Promise<boolean>;
32
- destroy(): Promise<boolean>;
33
- find(table: string, queryObject: any): Promise<any>;
34
- findOne(table: string, queryObject: any): Promise<any>;
35
- insert(table: string, data: any): Promise<import("mongodb").InsertOneResult<import("bson").Document>>;
36
- replace(table: string, queryObject: any, data: any): Promise<import("bson").Document | import("mongodb").UpdateResult>;
37
- }
1
+ import { TimeAction } from './../actions';
2
+ import { ContractPayload, TransferMetadata, CustomJsonMetadata } from './../types/hive-stream';
3
+ import { AdapterBase } from './base.adapter';
4
+ import { MongoClient, Db } from 'mongodb';
5
+ export declare class MongodbAdapter extends AdapterBase {
6
+ protected client: MongoClient;
7
+ protected db: Db;
8
+ private mongo;
9
+ private blockNumber;
10
+ private lastBlockNumber;
11
+ private blockId;
12
+ private prevBlockId;
13
+ private transactionId;
14
+ constructor(uri: string, database: string, options?: {
15
+ useNewUrlParser: boolean;
16
+ useUnifiedTopology: boolean;
17
+ });
18
+ getDbInstance(): Promise<Db>;
19
+ create(): Promise<boolean>;
20
+ loadActions(): Promise<TimeAction[]>;
21
+ loadState(): Promise<any>;
22
+ saveState(data: any): Promise<boolean>;
23
+ processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<void>;
24
+ processTransfer(operation: any, payload: ContractPayload, metadata: TransferMetadata): Promise<boolean>;
25
+ processCustomJson(operation: any, payload: ContractPayload, metadata: CustomJsonMetadata): Promise<boolean>;
26
+ destroy(): Promise<boolean>;
27
+ find(table: string, queryObject: any): Promise<any>;
28
+ findOne(table: string, queryObject: any): Promise<any>;
29
+ insert(table: string, data: any): Promise<import("mongodb").InsertOneResult<import("mongodb").Document>>;
30
+ replace(table: string, queryObject: any, data: any): Promise<import("mongodb").UpdateResult<import("mongodb").Document>>;
31
+ query(sql: string, params?: any[]): Promise<any[]>;
32
+ addEvent(date: string, contract: string, action: string, payload: ContractPayload, data: unknown): Promise<boolean>;
33
+ getEvents(): Promise<any[]>;
34
+ getEventsByContract(contract: string): Promise<any[]>;
35
+ getEventsByAccount(account: string): Promise<any[]>;
36
+ getTransfers(): Promise<any[]>;
37
+ getTransfersByContract(contract: string): Promise<any[]>;
38
+ getTransfersByAccount(account: string): Promise<any[]>;
39
+ getTransfersByBlockid(blockId: string): Promise<any[]>;
40
+ getJson(): Promise<any[]>;
41
+ getJsonByContract(contract: string): Promise<any[]>;
42
+ getJsonByAccount(account: string): Promise<any[]>;
43
+ getJsonByBlockid(blockId: string): Promise<any[]>;
44
+ }