@subsquid/evm-typegen 4.2.0 → 4.4.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.
- package/lib/multicall.d.ts +6 -6
- package/lib/multicall.d.ts.map +1 -1
- package/lib/multicall.js +49 -46
- package/lib/multicall.js.map +1 -1
- package/lib/typegen.d.ts +1 -1
- package/lib/typegen.d.ts.map +1 -1
- package/lib/typegen.js +11 -15
- package/lib/typegen.js.map +1 -1
- package/lib/util/fetch.js +1 -2
- package/lib/util/fetch.js.map +1 -1
- package/lib/util/types.js +1 -2
- package/lib/util/types.js.map +1 -1
- package/package.json +6 -6
- package/src/multicall.ts +73 -65
- package/src/typegen.ts +11 -17
package/lib/multicall.d.ts
CHANGED
|
@@ -39,12 +39,12 @@ export declare class Multicall extends ContractBase {
|
|
|
39
39
|
readonly success: boolean;
|
|
40
40
|
readonly returnData: string;
|
|
41
41
|
}[]>>;
|
|
42
|
-
aggregate<TF extends AnyFunc>(func: TF, address: string, calls: FunctionArguments<TF>[],
|
|
43
|
-
aggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[],
|
|
44
|
-
aggregate(calls: AggregateTuple[],
|
|
45
|
-
tryAggregate<TF extends AnyFunc>(func: TF, address: string, calls: FunctionArguments<TF>[],
|
|
46
|
-
tryAggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[],
|
|
47
|
-
tryAggregate(calls: AggregateTuple[],
|
|
42
|
+
aggregate<TF extends AnyFunc>(func: TF, address: string, calls: FunctionArguments<TF>[], pageSize?: number): Promise<FunctionReturn<TF>[]>;
|
|
43
|
+
aggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[], pageSize?: number): Promise<FunctionReturn<TF>[]>;
|
|
44
|
+
aggregate(calls: AggregateTuple[], pageSize?: number): Promise<any[]>;
|
|
45
|
+
tryAggregate<TF extends AnyFunc>(func: TF, address: string, calls: FunctionArguments<TF>[], pageSize?: number): Promise<MulticallResult<TF>[]>;
|
|
46
|
+
tryAggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[], pageSize?: number): Promise<MulticallResult<TF>[]>;
|
|
47
|
+
tryAggregate(calls: AggregateTuple[], pageSize?: number): Promise<MulticallResult<any>[]>;
|
|
48
48
|
private makeCalls;
|
|
49
49
|
}
|
|
50
50
|
export {};
|
package/lib/multicall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAM,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AAclH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI;IAC7D,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CACzB,GAAG;IACF,OAAO,EAAE,KAAK,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,KAAK,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACpC,KAAK,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;AAGrI,qBAAa,SAAU,SAAQ,YAAY;IACzC,MAAM,CAAC,SAAS;;;;;;;;;;;OAAY;IAC5B,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;UAAe;IAElC,SAAS,CAAC,EAAE,SAAS,OAAO,EAC1B,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAC9B,
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAM,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AAclH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI;IAC7D,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CACzB,GAAG;IACF,OAAO,EAAE,KAAK,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,KAAK,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACpC,KAAK,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;AAGrI,qBAAa,SAAU,SAAQ,YAAY;IACzC,MAAM,CAAC,SAAS;;;;;;;;;;;OAAY;IAC5B,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;UAAe;IAElC,SAAS,CAAC,EAAE,SAAS,OAAO,EAC1B,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhC,SAAS,CAAC,EAAE,SAAS,OAAO,EAC1B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAClE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhC,SAAS,CACP,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBjB,YAAY,CAAC,EAAE,SAAS,OAAO,EAC7B,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;IAEjC,YAAY,CAAC,EAAE,SAAS,OAAO,EAC7B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAClE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;IAEjC,YAAY,CACV,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAiClC,OAAO,CAAC,SAAS;CAqClB"}
|
package/lib/multicall.js
CHANGED
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.Multicall = void 0;
|
|
27
27
|
const p = __importStar(require("@subsquid/evm-codec"));
|
|
28
28
|
const evm_abi_1 = require("@subsquid/evm-abi");
|
|
29
|
-
const aggregate = (0, evm_abi_1.fun)('0x252dba42', "aggregate((address,bytes)[]", {
|
|
29
|
+
const aggregate = (0, evm_abi_1.fun)('0x252dba42', "aggregate((address,bytes)[])", {
|
|
30
30
|
calls: p.array(p.struct({
|
|
31
31
|
target: p.address,
|
|
32
32
|
callData: p.bytes
|
|
@@ -38,45 +38,43 @@ const tryAggregate = (0, evm_abi_1.fun)('0xbce38bd7', "tryAggregate(bool,(addres
|
|
|
38
38
|
}, p.array(p.struct({ success: p.bool, returnData: p.bytes })));
|
|
39
39
|
class Multicall extends evm_abi_1.ContractBase {
|
|
40
40
|
async aggregate(...args) {
|
|
41
|
-
let [calls,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
}
|
|
41
|
+
let [calls, pageSize] = this.makeCalls(args);
|
|
42
|
+
if (calls.length === 0)
|
|
43
|
+
return [];
|
|
44
|
+
const pages = Array.from(splitArray(pageSize, calls));
|
|
45
|
+
const results = await Promise.all(pages.flatMap(async (page) => {
|
|
46
|
+
const { returnData } = await this.eth_call(aggregate, { calls: page });
|
|
47
|
+
return returnData.map((data, i) => page[i].func.decodeResult(data));
|
|
48
|
+
}));
|
|
51
49
|
return results;
|
|
52
50
|
}
|
|
53
51
|
async tryAggregate(...args) {
|
|
54
|
-
let [calls,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
let [calls, pageSize] = this.makeCalls(args);
|
|
53
|
+
if (calls.length === 0)
|
|
54
|
+
return [];
|
|
55
|
+
const pages = Array.from(splitArray(pageSize, calls));
|
|
56
|
+
const results = await Promise.all(pages.flatMap(async (page) => {
|
|
57
|
+
const response = await this.eth_call(tryAggregate, {
|
|
59
58
|
requireSuccess: false,
|
|
60
|
-
calls:
|
|
59
|
+
calls: page,
|
|
61
60
|
});
|
|
62
|
-
|
|
63
|
-
let res = response[i - from];
|
|
61
|
+
return response.map((res, i) => {
|
|
64
62
|
if (res.success) {
|
|
65
63
|
try {
|
|
66
|
-
|
|
64
|
+
return {
|
|
67
65
|
success: true,
|
|
68
|
-
value:
|
|
66
|
+
value: page[i].func.decodeResult(res.returnData)
|
|
69
67
|
};
|
|
70
68
|
}
|
|
71
69
|
catch (err) {
|
|
72
|
-
|
|
70
|
+
return { success: false, returnData: res.returnData };
|
|
73
71
|
}
|
|
74
72
|
}
|
|
75
73
|
else {
|
|
76
|
-
|
|
74
|
+
return { success: false };
|
|
77
75
|
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
76
|
+
});
|
|
77
|
+
}));
|
|
80
78
|
return results;
|
|
81
79
|
}
|
|
82
80
|
makeCalls(args) {
|
|
@@ -85,55 +83,60 @@ class Multicall extends evm_abi_1.ContractBase {
|
|
|
85
83
|
case 1: {
|
|
86
84
|
let list = args[0];
|
|
87
85
|
let calls = new Array(list.length);
|
|
88
|
-
let funcs = new Array(list.length);
|
|
89
86
|
for (let i = 0; i < list.length; i++) {
|
|
90
87
|
let [func, address, args] = list[i];
|
|
91
|
-
calls[i] = { target: address, callData: func.encode(args) };
|
|
92
|
-
funcs[i] = func;
|
|
88
|
+
calls[i] = { target: address, callData: func.encode(args), func };
|
|
93
89
|
}
|
|
94
|
-
return [calls,
|
|
90
|
+
return [calls, page];
|
|
95
91
|
}
|
|
96
92
|
case 2: {
|
|
97
93
|
let func = args[0];
|
|
98
94
|
let list = args[1];
|
|
99
95
|
let calls = new Array(list.length);
|
|
100
|
-
let funcs = new Array(list.length);
|
|
101
96
|
for (let i = 0; i < list.length; i++) {
|
|
102
97
|
let [address, args] = list[i];
|
|
103
|
-
calls[i] = { target: address, callData: func.encode(args) };
|
|
104
|
-
funcs[i] = func;
|
|
98
|
+
calls[i] = { target: address, callData: func.encode(args), func };
|
|
105
99
|
}
|
|
106
|
-
return [calls,
|
|
100
|
+
return [calls, page];
|
|
107
101
|
}
|
|
108
102
|
case 3: {
|
|
109
103
|
let func = args[0];
|
|
110
104
|
let address = args[1];
|
|
111
105
|
let list = args[2];
|
|
112
106
|
let calls = new Array(list.length);
|
|
113
|
-
let funcs = new Array(list.length);
|
|
114
107
|
for (let i = 0; i < list.length; i++) {
|
|
115
108
|
let args = list[i];
|
|
116
|
-
calls[i] = { target: address, callData: func.encode(args) };
|
|
117
|
-
funcs[i] = func;
|
|
109
|
+
calls[i] = { target: address, callData: func.encode(args), func };
|
|
118
110
|
}
|
|
119
|
-
return [calls,
|
|
111
|
+
return [calls, page];
|
|
120
112
|
}
|
|
121
113
|
default:
|
|
122
|
-
throw new Error(
|
|
114
|
+
throw new Error(`Unexpected number of arguments: ${args.length}`);
|
|
123
115
|
}
|
|
124
116
|
}
|
|
125
117
|
}
|
|
126
118
|
exports.Multicall = Multicall;
|
|
127
119
|
Multicall.aggregate = aggregate;
|
|
128
120
|
Multicall.tryAggregate = tryAggregate;
|
|
129
|
-
function*
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
let
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
121
|
+
function* splitSlice(maxSize, beg, end) {
|
|
122
|
+
maxSize = Math.max(1, maxSize);
|
|
123
|
+
end = end ?? Number.MAX_SAFE_INTEGER;
|
|
124
|
+
while (beg < end) {
|
|
125
|
+
let left = end - beg;
|
|
126
|
+
let splits = Math.ceil(left / maxSize);
|
|
127
|
+
let step = Math.round(left / splits);
|
|
128
|
+
yield [beg, beg + step];
|
|
129
|
+
beg += step;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function* splitArray(maxSize, arr) {
|
|
133
|
+
if (arr.length <= maxSize) {
|
|
134
|
+
yield arr;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
for (let [beg, end] of splitSlice(maxSize, 0, arr.length)) {
|
|
138
|
+
yield arr.slice(beg, end);
|
|
139
|
+
}
|
|
137
140
|
}
|
|
138
141
|
}
|
|
139
142
|
//# sourceMappingURL=multicall.js.map
|
package/lib/multicall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAwC;AACxC,+CAAkH;AAElH,MAAM,SAAS,GAAG,IAAA,aAAG,EAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"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"}
|
package/lib/typegen.d.ts
CHANGED
package/lib/typegen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../src/typegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAIzC,OAAO,KAAK,EAAE,GAAG,EAAuC,MAAM,SAAS,CAAA;AACvE,OAAO,EAAc,MAAM,EAAE,MAAM,sCAAsC,CAAA;
|
|
1
|
+
{"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../src/typegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAIzC,OAAO,KAAK,EAAE,GAAG,EAAuC,MAAM,SAAS,CAAA;AACvE,OAAO,EAAc,MAAM,EAAE,MAAM,sCAAsC,CAAA;AAEzE,qBAAa,OAAO;IAKhB,OAAO,CAAC,GAAG;IAEX,OAAO,CAAC,GAAG;IANb,OAAO,CAAC,GAAG,CAAY;gBAGrB,IAAI,EAAE,MAAM,EACJ,GAAG,EAAE,GAAG,EAChB,QAAQ,EAAE,MAAM,EACR,GAAG,EAAE,MAAM;IAKf,QAAQ;IAmBd,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;CAGlB"}
|
package/lib/typegen.js
CHANGED
|
@@ -13,15 +13,6 @@ exports.Typegen = void 0;
|
|
|
13
13
|
const util_internal_1 = require("@subsquid/util-internal");
|
|
14
14
|
const evm_abi_1 = require("@subsquid/evm-abi");
|
|
15
15
|
const types_1 = require("./util/types");
|
|
16
|
-
function areItemEqual(item1, item2) {
|
|
17
|
-
if (item1.name !== item2.name || item1.inputs.length !== item2.inputs.length || item1.type !== item2.type) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
return item1.inputs.every((input, idx) => {
|
|
21
|
-
const input2 = item2.inputs[idx];
|
|
22
|
-
return input.name === input2.name && input.type === input2.type;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
16
|
class Typegen {
|
|
26
17
|
constructor(dest, abi, basename, log) {
|
|
27
18
|
this.abi = abi;
|
|
@@ -103,24 +94,29 @@ class Typegen {
|
|
|
103
94
|
}
|
|
104
95
|
});
|
|
105
96
|
}
|
|
106
|
-
|
|
97
|
+
canonicalType(param) {
|
|
107
98
|
if (!param.type.startsWith('tuple')) {
|
|
108
99
|
return param.type;
|
|
109
100
|
}
|
|
110
101
|
const arrayBrackets = param.type.slice(5);
|
|
111
|
-
return `(${param.components.map((param) => this.
|
|
102
|
+
return `(${param.components.map((param) => this.canonicalType(param))})${arrayBrackets}`;
|
|
112
103
|
}
|
|
113
104
|
signature(item) {
|
|
114
105
|
return `${item.name}(${item.inputs
|
|
115
|
-
.map((param) => this.
|
|
106
|
+
.map((param) => this.canonicalType(param))
|
|
116
107
|
.join(',')})`;
|
|
117
108
|
}
|
|
118
109
|
getPropName(item) {
|
|
119
110
|
if (this.getOverloads(item) == 1) {
|
|
120
111
|
return item.name;
|
|
121
112
|
}
|
|
113
|
+
else if (item.type === 'function') {
|
|
114
|
+
return `'${this.signature(item)}'`;
|
|
115
|
+
}
|
|
122
116
|
else {
|
|
123
|
-
return `
|
|
117
|
+
return `'${item.name}(${item.inputs
|
|
118
|
+
.map((param) => this.canonicalType(param) + (param.indexed ? ` indexed` : ``))
|
|
119
|
+
.join(',')})'`;
|
|
124
120
|
}
|
|
125
121
|
}
|
|
126
122
|
getPropNameGetter(item) {
|
|
@@ -128,7 +124,7 @@ class Typegen {
|
|
|
128
124
|
return '.' + item.name;
|
|
129
125
|
}
|
|
130
126
|
else {
|
|
131
|
-
return `[
|
|
127
|
+
return `[${this.getPropName(item)}]`;
|
|
132
128
|
}
|
|
133
129
|
}
|
|
134
130
|
getOverloads(item) {
|
|
@@ -145,7 +141,7 @@ class Typegen {
|
|
|
145
141
|
getOverloadIndex(item) {
|
|
146
142
|
const abi = [...this.getEvents(), ...this.getFunctions()];
|
|
147
143
|
const overloads = abi.filter((x) => x.name === item.name);
|
|
148
|
-
return overloads.findIndex((x) =>
|
|
144
|
+
return overloads.findIndex((x) => x === item);
|
|
149
145
|
}
|
|
150
146
|
toEventType(e) {
|
|
151
147
|
if (this.getOverloads(e) === 1) {
|
package/lib/typegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../src/typegen.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2DAA6C;AAC7C,+CAA6C;AAC7C,wCAAsC;AAItC,
|
|
1
|
+
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../src/typegen.ts"],"names":[],"mappings":"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"}
|
package/lib/util/fetch.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GET =
|
|
3
|
+
exports.GET = GET;
|
|
4
4
|
const logger_1 = require("@subsquid/logger");
|
|
5
5
|
const http_client_1 = require("@subsquid/http-client");
|
|
6
6
|
const http = new http_client_1.HttpClient({
|
|
@@ -10,5 +10,4 @@ const http = new http_client_1.HttpClient({
|
|
|
10
10
|
function GET(url) {
|
|
11
11
|
return http.get(url);
|
|
12
12
|
}
|
|
13
|
-
exports.GET = GET;
|
|
14
13
|
//# sourceMappingURL=fetch.js.map
|
package/lib/util/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/util/fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/util/fetch.ts"],"names":[],"mappings":";;AAQA,kBAEC;AAVD,6CAA+C;AAC/C,uDAAkD;AAElD,MAAM,IAAI,GAAG,IAAI,wBAAU,CAAC;IAC1B,GAAG,EAAE,IAAA,qBAAY,EAAC,uBAAuB,CAAC;IAC1C,aAAa,EAAE,CAAC;CACjB,CAAC,CAAA;AAEF,SAAgB,GAAG,CAAU,GAAW;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC"}
|
package/lib/util/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getType =
|
|
3
|
+
exports.getType = getType;
|
|
4
4
|
function isStaticArray(param) {
|
|
5
5
|
return param.type.match(/\[\d+]$/);
|
|
6
6
|
}
|
|
@@ -43,5 +43,4 @@ function getType(param, index) {
|
|
|
43
43
|
}
|
|
44
44
|
return `p.${param.type}`;
|
|
45
45
|
}
|
|
46
|
-
exports.getType = getType;
|
|
47
46
|
//# sourceMappingURL=types.js.map
|
package/lib/util/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/util/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/util/types.ts"],"names":[],"mappings":";;AAkBA,0BAmCC;AAnDD,SAAS,aAAa,CAAC,KAAwB;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,SAAgB,OAAO,CAAC,KAAwB,EAAE,KAAc;IAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAA;IAExC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,IAAI,MAAM,OAAO,CAAC,aAAoB,CAAC,EAAE,CAAA;IACtD,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,KAAK,CAAA;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,WAAW,OAAO,CAAC,cAAqB,CAAC,GAAG,CAAA;IACrD,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACrC,OAAO,oBAAoB,OAAO,CAAC;YACjC,GAAG,KAAK;YACR,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;SAC5B,CAAC,KAAK,QAAQ,GAAG,CAAA;IACpB,CAAC;IAED,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,WAAW,OAAO,CAAC;YACxB,GAAG,KAAK;YACR,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;SAC5B,CAAC,GAAG,CAAA;IACP,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,aAAc,KAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IAChI,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE,CAAA;AAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subsquid/evm-typegen",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "CLI for generating typescript types and decode implementations for evm logs",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": "git@github.com:subsquid/squid.git",
|
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
"squid-evm-typegen": "bin/run.js"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@subsquid/http-client": "^1.
|
|
20
|
-
"@subsquid/logger": "^1.
|
|
19
|
+
"@subsquid/http-client": "^1.6.0",
|
|
20
|
+
"@subsquid/logger": "^1.4.0",
|
|
21
21
|
"@subsquid/util-internal": "^3.2.0",
|
|
22
22
|
"@subsquid/util-internal-code-printer": "^1.2.2",
|
|
23
23
|
"@subsquid/util-internal-commander": "^1.4.0",
|
|
24
24
|
"@subsquid/evm-codec": "^0.3.0",
|
|
25
|
-
"@subsquid/evm-abi": "^0.3.
|
|
25
|
+
"@subsquid/evm-abi": "^0.3.1",
|
|
26
26
|
"commander": "^11.1.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"abitype": "^1.0.0",
|
|
30
29
|
"@types/node": "^18.18.14",
|
|
31
|
-
"
|
|
30
|
+
"abitype": "^1.0.4",
|
|
31
|
+
"typescript": "~5.5.4"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "rm -rf lib && tsc"
|
package/src/multicall.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as p from '@subsquid/evm-codec'
|
|
2
2
|
import {fun, ContractBase, type AbiFunction, type FunctionReturn, type FunctionArguments} from '@subsquid/evm-abi'
|
|
3
3
|
|
|
4
|
-
const aggregate = fun('0x252dba42', "aggregate((address,bytes)[]", {
|
|
4
|
+
const aggregate = fun('0x252dba42', "aggregate((address,bytes)[])", {
|
|
5
5
|
calls: p.array(p.struct({
|
|
6
6
|
target: p.address,
|
|
7
7
|
callData: p.bytes
|
|
@@ -24,7 +24,7 @@ export type MulticallResult<T extends AbiFunction<any, any>> = {
|
|
|
24
24
|
|
|
25
25
|
type AnyFunc = AbiFunction<any, any>
|
|
26
26
|
type AggregateTuple<T extends AnyFunc = AnyFunc> = [func: T, address: string, args: T extends AnyFunc ? FunctionArguments<T> : never]
|
|
27
|
-
type Call = {target: string, callData: string}
|
|
27
|
+
type Call = {target: string, func: AnyFunc, callData: string}
|
|
28
28
|
|
|
29
29
|
export class Multicall extends ContractBase {
|
|
30
30
|
static aggregate = aggregate
|
|
@@ -34,31 +34,32 @@ export class Multicall extends ContractBase {
|
|
|
34
34
|
func: TF,
|
|
35
35
|
address: string,
|
|
36
36
|
calls: FunctionArguments<TF>[],
|
|
37
|
-
|
|
37
|
+
pageSize?: number
|
|
38
38
|
): Promise<FunctionReturn<TF>[]>
|
|
39
39
|
|
|
40
40
|
aggregate<TF extends AnyFunc>(
|
|
41
41
|
func: TF,
|
|
42
42
|
calls: (readonly [address: string, args: FunctionArguments<TF>])[],
|
|
43
|
-
|
|
43
|
+
pageSize?: number
|
|
44
44
|
): Promise<FunctionReturn<TF>[]>
|
|
45
45
|
|
|
46
46
|
aggregate(
|
|
47
47
|
calls: AggregateTuple[],
|
|
48
|
-
|
|
48
|
+
pageSize?: number
|
|
49
49
|
): Promise<any[]>
|
|
50
50
|
|
|
51
51
|
async aggregate(...args: any[]): Promise<any[]> {
|
|
52
|
-
let [calls,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
let [calls, pageSize] = this.makeCalls(args)
|
|
53
|
+
if (calls.length === 0) return []
|
|
54
|
+
|
|
55
|
+
const pages = Array.from(splitArray(pageSize, calls))
|
|
56
|
+
const results = await Promise.all(
|
|
57
|
+
pages.flatMap(async (page) => {
|
|
58
|
+
const {returnData} = await this.eth_call(aggregate, {calls: page})
|
|
59
|
+
return returnData.map((data, i) => page[i].func.decodeResult(data))
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
|
|
62
63
|
return results
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -66,101 +67,108 @@ export class Multicall extends ContractBase {
|
|
|
66
67
|
func: TF,
|
|
67
68
|
address: string,
|
|
68
69
|
calls: FunctionArguments<TF>[],
|
|
69
|
-
|
|
70
|
+
pageSize?: number
|
|
70
71
|
): Promise<MulticallResult<TF>[]>
|
|
71
72
|
|
|
72
73
|
tryAggregate<TF extends AnyFunc>(
|
|
73
74
|
func: TF,
|
|
74
75
|
calls: (readonly [address: string, args: FunctionArguments<TF>])[],
|
|
75
|
-
|
|
76
|
+
pageSize?: number
|
|
76
77
|
): Promise<MulticallResult<TF>[]>
|
|
77
78
|
|
|
78
79
|
tryAggregate(
|
|
79
80
|
calls: AggregateTuple[],
|
|
80
|
-
|
|
81
|
+
pageSize?: number
|
|
81
82
|
): Promise<MulticallResult<any>[]>
|
|
82
83
|
|
|
83
84
|
async tryAggregate(...args: any[]): Promise<any[]> {
|
|
84
|
-
let [calls,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
85
|
+
let [calls, pageSize] = this.makeCalls(args)
|
|
86
|
+
if (calls.length === 0) return []
|
|
87
|
+
|
|
88
|
+
const pages = Array.from(splitArray(pageSize, calls))
|
|
89
|
+
const results = await Promise.all(
|
|
90
|
+
pages.flatMap(async (page) => {
|
|
91
|
+
const response = await this.eth_call(tryAggregate, {
|
|
92
|
+
requireSuccess: false,
|
|
93
|
+
calls: page,
|
|
94
|
+
})
|
|
95
|
+
return response.map((res, i) => {
|
|
96
|
+
if (res.success) {
|
|
97
|
+
try {
|
|
98
|
+
return {
|
|
99
|
+
success: true,
|
|
100
|
+
value: page[i].func.decodeResult(res.returnData)
|
|
101
|
+
}
|
|
102
|
+
} catch (err: any) {
|
|
103
|
+
return {success: false, returnData: res.returnData}
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
return {success: false}
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
)
|
|
111
|
+
|
|
108
112
|
return results
|
|
109
113
|
}
|
|
110
114
|
|
|
111
|
-
private makeCalls(args: any[]): [calls: Call[],
|
|
115
|
+
private makeCalls(args: any[]): [calls: Call[], page: number] {
|
|
112
116
|
let page = typeof args[args.length - 1] == 'number' ? args.pop()! : Number.MAX_SAFE_INTEGER
|
|
113
117
|
switch (args.length) {
|
|
114
118
|
case 1: {
|
|
115
119
|
let list: AggregateTuple[] = args[0]
|
|
116
120
|
let calls: Call[] = new Array(list.length)
|
|
117
|
-
let funcs = new Array(list.length)
|
|
118
121
|
for (let i = 0; i < list.length; i++) {
|
|
119
122
|
let [func, address, args] = list[i]
|
|
120
|
-
calls[i] = {target: address, callData: func.encode(args)}
|
|
121
|
-
funcs[i] = func
|
|
123
|
+
calls[i] = {target: address, callData: func.encode(args), func}
|
|
122
124
|
}
|
|
123
|
-
return [calls,
|
|
125
|
+
return [calls, page]
|
|
124
126
|
}
|
|
125
127
|
case 2: {
|
|
126
128
|
let func: AnyFunc = args[0]
|
|
127
129
|
let list: [address: string, args: any][] = args[1]
|
|
128
130
|
let calls: Call[] = new Array(list.length)
|
|
129
|
-
let funcs = new Array(list.length)
|
|
130
131
|
for (let i = 0; i < list.length; i++) {
|
|
131
132
|
let [address, args] = list[i]
|
|
132
|
-
calls[i] = {target: address, callData: func.encode(args)}
|
|
133
|
-
funcs[i] = func
|
|
133
|
+
calls[i] = {target: address, callData: func.encode(args), func}
|
|
134
134
|
}
|
|
135
|
-
return [calls,
|
|
135
|
+
return [calls, page]
|
|
136
136
|
}
|
|
137
137
|
case 3: {
|
|
138
138
|
let func: AnyFunc = args[0]
|
|
139
139
|
let address: string = args[1]
|
|
140
140
|
let list: any = args[2]
|
|
141
141
|
let calls: Call[] = new Array(list.length)
|
|
142
|
-
let funcs = new Array(list.length)
|
|
143
142
|
for (let i = 0; i < list.length; i++) {
|
|
144
143
|
let args = list[i]
|
|
145
|
-
calls[i] = {target: address, callData: func.encode(args)}
|
|
146
|
-
funcs[i] = func
|
|
144
|
+
calls[i] = {target: address, callData: func.encode(args), func}
|
|
147
145
|
}
|
|
148
|
-
return [calls,
|
|
146
|
+
return [calls, page]
|
|
149
147
|
}
|
|
150
148
|
default:
|
|
151
|
-
throw new Error(
|
|
149
|
+
throw new Error(`Unexpected number of arguments: ${args.length}`)
|
|
152
150
|
}
|
|
153
151
|
}
|
|
154
152
|
}
|
|
155
153
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
while (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
154
|
+
function* splitSlice(maxSize: number, beg: number, end?: number): Iterable<[beg: number, end: number]> {
|
|
155
|
+
maxSize = Math.max(1, maxSize)
|
|
156
|
+
end = end ?? Number.MAX_SAFE_INTEGER
|
|
157
|
+
while (beg < end) {
|
|
158
|
+
let left = end - beg
|
|
159
|
+
let splits = Math.ceil(left / maxSize)
|
|
160
|
+
let step = Math.round(left / splits)
|
|
161
|
+
yield [beg, beg + step]
|
|
162
|
+
beg += step
|
|
165
163
|
}
|
|
166
164
|
}
|
|
165
|
+
|
|
166
|
+
function* splitArray<T>(maxSize: number, arr: T[]): Iterable<T[]> {
|
|
167
|
+
if (arr.length <= maxSize) {
|
|
168
|
+
yield arr
|
|
169
|
+
} else {
|
|
170
|
+
for (let [beg, end] of splitSlice(maxSize, 0, arr.length)) {
|
|
171
|
+
yield arr.slice(beg, end)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
package/src/typegen.ts
CHANGED
|
@@ -5,16 +5,6 @@ import { getType } from './util/types'
|
|
|
5
5
|
import type { Abi, AbiEvent, AbiFunction, AbiParameter } from 'abitype'
|
|
6
6
|
import { FileOutput, OutDir } from '@subsquid/util-internal-code-printer'
|
|
7
7
|
|
|
8
|
-
function areItemEqual(item1: AbiEvent | AbiFunction, item2: AbiEvent | AbiFunction): boolean {
|
|
9
|
-
if (item1.name !== item2.name || item1.inputs.length !== item2.inputs.length || item1.type !== item2.type) {
|
|
10
|
-
return false
|
|
11
|
-
}
|
|
12
|
-
return item1.inputs.every((input, idx) => {
|
|
13
|
-
const input2 = item2.inputs[idx]
|
|
14
|
-
return input.name === input2.name && input.type === input2.type
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
|
-
|
|
18
8
|
export class Typegen {
|
|
19
9
|
private out: FileOutput
|
|
20
10
|
|
|
@@ -129,35 +119,39 @@ export class Typegen {
|
|
|
129
119
|
})
|
|
130
120
|
}
|
|
131
121
|
|
|
132
|
-
private
|
|
122
|
+
private canonicalType(param: AbiParameter): string {
|
|
133
123
|
if (!param.type.startsWith('tuple')) {
|
|
134
124
|
return param.type
|
|
135
125
|
}
|
|
136
126
|
const arrayBrackets = param.type.slice(5)
|
|
137
127
|
return `(${(param as any).components.map((param: AbiParameter) =>
|
|
138
|
-
this.
|
|
128
|
+
this.canonicalType(param),
|
|
139
129
|
)})${arrayBrackets}`
|
|
140
130
|
}
|
|
141
131
|
|
|
142
132
|
private signature(item: AbiEvent | AbiFunction): string {
|
|
143
133
|
return `${item.name}(${item.inputs
|
|
144
|
-
.map((param) => this.
|
|
134
|
+
.map((param) => this.canonicalType(param))
|
|
145
135
|
.join(',')})`
|
|
146
136
|
}
|
|
147
137
|
|
|
148
138
|
private getPropName(item: AbiEvent | AbiFunction): string {
|
|
149
139
|
if (this.getOverloads(item) == 1) {
|
|
150
140
|
return item.name
|
|
141
|
+
} else if (item.type === 'function') {
|
|
142
|
+
return `'${this.signature(item)}'`
|
|
151
143
|
} else {
|
|
152
|
-
return `
|
|
144
|
+
return `'${item.name}(${item.inputs
|
|
145
|
+
.map((param) => this.canonicalType(param) + (param.indexed ? ` indexed` : ``))
|
|
146
|
+
.join(',')})'`
|
|
153
147
|
}
|
|
154
148
|
}
|
|
155
149
|
|
|
156
150
|
private getPropNameGetter(item: AbiEvent | AbiFunction): string {
|
|
157
151
|
if (this.getOverloads(item) == 1) {
|
|
158
152
|
return '.' + item.name
|
|
159
|
-
} else
|
|
160
|
-
return `[
|
|
153
|
+
} else{
|
|
154
|
+
return `[${this.getPropName(item)}]`
|
|
161
155
|
}
|
|
162
156
|
}
|
|
163
157
|
|
|
@@ -176,7 +170,7 @@ export class Typegen {
|
|
|
176
170
|
private getOverloadIndex(item: AbiEvent | AbiFunction): number {
|
|
177
171
|
const abi = [...this.getEvents(), ...this.getFunctions()]
|
|
178
172
|
const overloads = abi.filter((x) => x.name === item.name)
|
|
179
|
-
return overloads.findIndex((x) =>
|
|
173
|
+
return overloads.findIndex((x) => x === item)
|
|
180
174
|
}
|
|
181
175
|
|
|
182
176
|
private toEventType(e: AbiEvent): string {
|