@sentio/sdk 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +85 -0
- package/dist/cli.js.map +1 -0
- package/dist/context.d.ts +14 -5
- package/dist/context.js +14 -1
- package/dist/context.js.map +1 -1
- package/dist/gen/google/protobuf/empty.js +0 -8
- package/dist/gen/google/protobuf/empty.js.map +1 -1
- package/dist/gen/{model → processor/protos}/processor.d.ts +19 -8
- package/dist/gen/{model → processor/protos}/processor.js +94 -33
- package/dist/gen/processor/protos/processor.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/lib.js +60192 -0
- package/dist/meter.d.ts +6 -10
- package/dist/meter.js +5 -11
- package/dist/meter.js.map +1 -1
- package/dist/numberish.d.ts +3 -0
- package/dist/numberish.js +12 -0
- package/dist/numberish.js.map +1 -0
- package/dist/processor.d.ts +12 -8
- package/dist/processor.js +39 -25
- package/dist/processor.js.map +1 -1
- package/dist/processor_server.js +2 -2
- package/dist/processor_server.js.LICENSE.txt +9 -0
- package/dist/processor_server.js.map +1 -0
- package/dist/provider.d.ts +4 -0
- package/dist/provider.js +17 -0
- package/dist/provider.js.map +1 -0
- package/dist/service.d.ts +1 -1
- package/dist/service.js +25 -18
- package/dist/service.js.map +1 -1
- package/dist/target-ethers-sentio/codegen.js +42 -10
- package/dist/target-ethers-sentio/codegen.js.map +1 -1
- package/dist/test_case/erc20.d.ts +1 -0
- package/dist/test_case/erc20.js +13 -0
- package/dist/test_case/erc20.js.map +1 -0
- package/dist/test_case/types/ERC20.d.ts +150 -0
- package/dist/test_case/types/ERC20.js +3 -0
- package/dist/test_case/types/ERC20.js.map +1 -0
- package/dist/test_case/types/common.d.ts +22 -0
- package/dist/test_case/types/common.js +3 -0
- package/dist/test_case/types/common.js.map +1 -0
- package/dist/test_case/types/erc20_processor.d.ts +20 -0
- package/dist/test_case/types/erc20_processor.js +50 -0
- package/dist/test_case/types/erc20_processor.js.map +1 -0
- package/dist/test_case/types/factories/ERC20__factory.d.ts +35 -0
- package/dist/test_case/types/factories/ERC20__factory.js +216 -0
- package/dist/test_case/types/factories/ERC20__factory.js.map +1 -0
- package/dist/test_case/types/factories/index.d.ts +1 -0
- package/dist/test_case/types/factories/index.js +9 -0
- package/dist/test_case/types/factories/index.js.map +1 -0
- package/dist/test_case/types/index.d.ts +3 -0
- package/dist/test_case/types/index.js +30 -0
- package/dist/test_case/types/index.js.map +1 -0
- package/package.json +17 -14
- package/dist/gen/model/processor.js.map +0 -1
- package/dist/sentio_provider.d.ts +0 -2
- package/dist/sentio_provider.js +0 -8
- package/dist/sentio_provider.js.map +0 -1
package/dist/meter.d.ts
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
import { Context } from './context';
|
|
2
|
-
import {
|
|
3
|
-
declare type
|
|
4
|
-
declare type Tags = {
|
|
2
|
+
import { Numberish } from './numberish';
|
|
3
|
+
export declare type Tags = {
|
|
5
4
|
[key: string]: string;
|
|
6
5
|
};
|
|
7
6
|
export declare class Counter {
|
|
8
7
|
private readonly ctx;
|
|
9
8
|
private readonly name;
|
|
10
|
-
constructor(name: string, ctx: Context<any>);
|
|
9
|
+
constructor(name: string, ctx: Context<any, any>);
|
|
11
10
|
private record;
|
|
12
11
|
add(value: Numberish, tags?: Tags): void;
|
|
13
|
-
sub(value: Numberish, tags?:
|
|
14
|
-
[key: string]: string;
|
|
15
|
-
}): void;
|
|
12
|
+
sub(value: Numberish, tags?: Tags): void;
|
|
16
13
|
}
|
|
17
14
|
export declare class Histogram {
|
|
18
15
|
private readonly name;
|
|
19
16
|
private readonly ctx;
|
|
20
|
-
constructor(name: string, ctx: Context<any>);
|
|
17
|
+
constructor(name: string, ctx: Context<any, any>);
|
|
21
18
|
record(value: Numberish, tags?: Tags): void;
|
|
22
19
|
}
|
|
23
20
|
export declare class Meter {
|
|
24
21
|
private readonly ctx;
|
|
25
|
-
constructor(ctx: Context<any>);
|
|
22
|
+
constructor(ctx: Context<any, any>);
|
|
26
23
|
Counter(name: string): Counter;
|
|
27
24
|
Histogram(name: string): Histogram;
|
|
28
25
|
}
|
|
29
|
-
export {};
|
package/dist/meter.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Meter = exports.Histogram = exports.Counter = void 0;
|
|
4
|
-
const
|
|
4
|
+
const numberish_1 = require("./numberish");
|
|
5
5
|
function GetRecordMetaData(ctx) {
|
|
6
6
|
if (ctx.log) {
|
|
7
7
|
return {
|
|
8
|
-
contractAddress: ctx.contract.address,
|
|
8
|
+
contractAddress: ctx.contract._underlineContract.address,
|
|
9
9
|
blockNumber: ctx.log.blockNumber,
|
|
10
10
|
transactionIndex: ctx.log.transactionIndex,
|
|
11
11
|
logIndex: ctx.log.logIndex,
|
|
@@ -13,7 +13,7 @@ function GetRecordMetaData(ctx) {
|
|
|
13
13
|
}
|
|
14
14
|
if (ctx.block) {
|
|
15
15
|
return {
|
|
16
|
-
contractAddress: ctx.contract.address,
|
|
16
|
+
contractAddress: ctx.contract._underlineContract.address,
|
|
17
17
|
blockNumber: ctx.block.number,
|
|
18
18
|
transactionIndex: -1,
|
|
19
19
|
logIndex: -1,
|
|
@@ -21,12 +21,6 @@ function GetRecordMetaData(ctx) {
|
|
|
21
21
|
}
|
|
22
22
|
throw new Error("This can't happen");
|
|
23
23
|
}
|
|
24
|
-
function toNumber(value) {
|
|
25
|
-
if (value instanceof ethers_1.BigNumber) {
|
|
26
|
-
return value.toNumber();
|
|
27
|
-
}
|
|
28
|
-
return value;
|
|
29
|
-
}
|
|
30
24
|
class Counter {
|
|
31
25
|
ctx;
|
|
32
26
|
name;
|
|
@@ -39,7 +33,7 @@ class Counter {
|
|
|
39
33
|
metadata: GetRecordMetaData(this.ctx),
|
|
40
34
|
name: this.name,
|
|
41
35
|
tags: tags,
|
|
42
|
-
value: toNumber(value),
|
|
36
|
+
value: (0, numberish_1.toNumber)(value),
|
|
43
37
|
add: add,
|
|
44
38
|
});
|
|
45
39
|
}
|
|
@@ -63,7 +57,7 @@ class Histogram {
|
|
|
63
57
|
metadata: GetRecordMetaData(this.ctx),
|
|
64
58
|
name: this.name,
|
|
65
59
|
tags: tags,
|
|
66
|
-
value: toNumber(value),
|
|
60
|
+
value: (0, numberish_1.toNumber)(value),
|
|
67
61
|
});
|
|
68
62
|
}
|
|
69
63
|
}
|
package/dist/meter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toNumber = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
function toNumber(value) {
|
|
6
|
+
if (value instanceof ethers_1.BigNumber) {
|
|
7
|
+
return value.toNumber();
|
|
8
|
+
}
|
|
9
|
+
return Number(value);
|
|
10
|
+
}
|
|
11
|
+
exports.toNumber = toNumber;
|
|
12
|
+
//# sourceMappingURL=numberish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberish.js","sourceRoot":"","sources":["../src/numberish.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAIlC,SAAgB,QAAQ,CAAC,KAAgB;IACvC,IAAI,KAAK,YAAY,kBAAS,EAAE;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;KACxB;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AALD,4BAKC"}
|
package/dist/processor.d.ts
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
import { Context } from './context';
|
|
1
|
+
import { Context, ContractWrapper } from './context';
|
|
2
2
|
import { Block, Log } from '@ethersproject/abstract-provider';
|
|
3
3
|
import { BaseContract, EventFilter } from 'ethers';
|
|
4
4
|
import { Networkish } from '@ethersproject/networks';
|
|
5
5
|
import { Event } from '@ethersproject/contracts';
|
|
6
|
-
import { O11yResult } from './gen/
|
|
6
|
+
import { O11yResult } from './gen/processor/protos/processor';
|
|
7
7
|
declare type IndexConfigure = {
|
|
8
8
|
startBlock: number;
|
|
9
9
|
endBlock?: number;
|
|
10
10
|
chunkSize?: number;
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
declare class EventsHandler {
|
|
13
|
+
filters: EventFilter[];
|
|
14
|
+
handler: (event: Log) => Promise<O11yResult>;
|
|
15
|
+
}
|
|
16
|
+
export declare abstract class BaseProcessor<TContract extends BaseContract, TContractWrapper extends ContractWrapper<TContract>> {
|
|
13
17
|
blockHandlers: ((block: Block) => Promise<O11yResult>)[];
|
|
14
|
-
eventHandlers:
|
|
15
|
-
contract:
|
|
18
|
+
eventHandlers: EventsHandler[];
|
|
19
|
+
contract: TContractWrapper;
|
|
16
20
|
name: string;
|
|
17
21
|
config: IndexConfigure;
|
|
18
22
|
constructor(address: string, name: string, network?: Networkish);
|
|
19
|
-
abstract bind(address: string, network: Networkish): BaseProcessor<TContract>;
|
|
23
|
+
abstract bind(address: string, network: Networkish): BaseProcessor<TContract, TContractWrapper>;
|
|
20
24
|
startBlock(startBlock: number): this;
|
|
21
25
|
endBlock(endBlock: number): this;
|
|
22
26
|
configure(option: IndexConfigure): void;
|
|
23
27
|
isBind(): boolean;
|
|
24
|
-
onEvent(handler: (event: Event, ctx: Context<TContract>) => void, filter: EventFilter): void;
|
|
25
|
-
onBlock(handler: (block: Block, ctx: Context<TContract>) => void): void;
|
|
28
|
+
onEvent(handler: (event: Event, ctx: Context<TContract, TContractWrapper>) => void, filter: EventFilter | EventFilter[]): void;
|
|
29
|
+
onBlock(handler: (block: Block, ctx: Context<TContract, TContractWrapper>) => void): void;
|
|
26
30
|
}
|
|
27
31
|
export {};
|
package/dist/processor.js
CHANGED
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseProcessor = void 0;
|
|
4
4
|
const context_1 = require("./context");
|
|
5
|
+
class EventsHandler {
|
|
6
|
+
filters;
|
|
7
|
+
handler;
|
|
8
|
+
}
|
|
5
9
|
class BaseProcessor {
|
|
6
10
|
blockHandlers = [];
|
|
7
|
-
eventHandlers =
|
|
11
|
+
eventHandlers = [];
|
|
8
12
|
contract;
|
|
9
13
|
name;
|
|
10
14
|
config = { startBlock: 0 };
|
|
@@ -28,36 +32,46 @@ class BaseProcessor {
|
|
|
28
32
|
this.config = option;
|
|
29
33
|
}
|
|
30
34
|
isBind() {
|
|
31
|
-
return this.contract.address != '';
|
|
35
|
+
return this.contract._underlineContract.address != '';
|
|
32
36
|
}
|
|
33
37
|
onEvent(handler, filter) {
|
|
34
38
|
if (!this.isBind()) {
|
|
35
39
|
throw new Error('processor not bind');
|
|
36
40
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
event
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
const wrappedContract = this.contract;
|
|
42
|
+
let _filters = [];
|
|
43
|
+
if (Array.isArray(filter)) {
|
|
44
|
+
_filters = filter;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
_filters.push(filter);
|
|
48
|
+
}
|
|
49
|
+
this.eventHandlers.push({
|
|
50
|
+
filters: _filters,
|
|
51
|
+
handler: async function (log) {
|
|
52
|
+
const ctx = new context_1.Context(wrappedContract, undefined, log);
|
|
53
|
+
// let event: Event = <Event>deepCopy(log);
|
|
54
|
+
const event = log;
|
|
55
|
+
const parsed = wrappedContract._underlineContract.interface.parseLog(log);
|
|
56
|
+
if (parsed) {
|
|
57
|
+
event.args = parsed.args;
|
|
58
|
+
event.decode = (data, topics) => {
|
|
59
|
+
return wrappedContract._underlineContract.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
|
60
|
+
};
|
|
61
|
+
event.event = parsed.name;
|
|
62
|
+
event.eventSignature = parsed.signature;
|
|
63
|
+
// TODO fix this bug
|
|
64
|
+
await handler(event, ctx);
|
|
65
|
+
return {
|
|
66
|
+
histograms: ctx.histograms,
|
|
67
|
+
counters: ctx.counters,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
52
70
|
return {
|
|
53
|
-
histograms:
|
|
54
|
-
counters:
|
|
71
|
+
histograms: [],
|
|
72
|
+
counters: [],
|
|
55
73
|
};
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
histograms: [],
|
|
59
|
-
counters: [],
|
|
60
|
-
};
|
|
74
|
+
},
|
|
61
75
|
});
|
|
62
76
|
}
|
|
63
77
|
onBlock(handler) {
|
|
@@ -66,6 +80,7 @@ class BaseProcessor {
|
|
|
66
80
|
}
|
|
67
81
|
const contract = this.contract;
|
|
68
82
|
this.blockHandlers.push(async function (block) {
|
|
83
|
+
contract.block = block;
|
|
69
84
|
const ctx = new context_1.Context(contract, block, undefined);
|
|
70
85
|
await handler(block, ctx);
|
|
71
86
|
return {
|
|
@@ -76,5 +91,4 @@ class BaseProcessor {
|
|
|
76
91
|
}
|
|
77
92
|
}
|
|
78
93
|
exports.BaseProcessor = BaseProcessor;
|
|
79
|
-
// export const Processors: BaseProcessor<BaseContract>[] = []
|
|
80
94
|
//# sourceMappingURL=processor.js.map
|
package/dist/processor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}
|