@subsquid/evm-typegen 4.3.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.
@@ -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>[], paging?: number): Promise<FunctionReturn<TF>[]>;
43
- aggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[], paging?: number): Promise<FunctionReturn<TF>[]>;
44
- aggregate(calls: AggregateTuple[], paging?: number): Promise<any[]>;
45
- tryAggregate<TF extends AnyFunc>(func: TF, address: string, calls: FunctionArguments<TF>[], paging?: number): Promise<MulticallResult<TF>[]>;
46
- tryAggregate<TF extends AnyFunc>(func: TF, calls: (readonly [address: string, args: FunctionArguments<TF>])[], paging?: number): Promise<MulticallResult<TF>[]>;
47
- tryAggregate(calls: AggregateTuple[], paging?: number): Promise<MulticallResult<any>[]>;
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 {};
@@ -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,MAAM,CAAC,EAAE,MAAM,GACd,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,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhC,SAAS,CACP,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBjB,YAAY,CAAC,EAAE,SAAS,OAAO,EAC7B,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,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,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;IAEjC,YAAY,CACV,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IA8BlC,OAAO,CAAC,SAAS;CA2ClB"}
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
@@ -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, funcs, page] = this.makeCalls(args);
42
- let size = calls.length;
43
- let results = new Array(size);
44
- for (let [from, to] of splitIntoPages(size, page)) {
45
- let { returnData } = await this.eth_call(aggregate, { calls: calls.slice(from, to) });
46
- for (let i = from; i < to; i++) {
47
- let data = returnData[i - from];
48
- results[i] = funcs[i].decodeResult(data);
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, funcs, page] = this.makeCalls(args);
55
- let size = calls.length;
56
- let results = new Array(size);
57
- for (let [from, to] of splitIntoPages(size, page)) {
58
- let response = await this.eth_call(tryAggregate, {
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: calls.slice(from, to)
59
+ calls: page,
61
60
  });
62
- for (let i = from; i < to; i++) {
63
- let res = response[i - from];
61
+ return response.map((res, i) => {
64
62
  if (res.success) {
65
63
  try {
66
- results[i] = {
64
+ return {
67
65
  success: true,
68
- value: funcs[i].decodeResult(res.returnData)
66
+ value: page[i].func.decodeResult(res.returnData)
69
67
  };
70
68
  }
71
69
  catch (err) {
72
- results[i] = { success: false, returnData: res.returnData };
70
+ return { success: false, returnData: res.returnData };
73
71
  }
74
72
  }
75
73
  else {
76
- results[i] = { success: false };
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, funcs, page];
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, funcs, page];
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, funcs, page];
111
+ return [calls, page];
120
112
  }
121
113
  default:
122
- throw new Error('unexpected number of arguments');
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* splitIntoPages(size, page) {
130
- let from = 0;
131
- while (size) {
132
- let step = Math.min(page, size);
133
- let to = from + step;
134
- yield [from, to];
135
- size -= step;
136
- from = to;
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
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../src/multicall.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 = void 0;
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
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/util/fetch.ts"],"names":[],"mappings":";;;AAAA,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;AAFD,kBAEC"}
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 = void 0;
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/util/types.ts"],"names":[],"mappings":";;;AAEA,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;AAnCD,0BAmCC"}
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.0",
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.4.0",
20
- "@subsquid/logger": "^1.3.3",
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.0",
25
+ "@subsquid/evm-abi": "^0.3.1",
26
26
  "commander": "^11.1.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^18.18.14",
30
30
  "abitype": "^1.0.4",
31
- "typescript": "~5.3.2"
31
+ "typescript": "~5.5.4"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "rm -rf lib && tsc"
package/src/multicall.ts CHANGED
@@ -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
- paging?: number
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
- paging?: number
43
+ pageSize?: number
44
44
  ): Promise<FunctionReturn<TF>[]>
45
45
 
46
46
  aggregate(
47
47
  calls: AggregateTuple[],
48
- paging?: number
48
+ pageSize?: number
49
49
  ): Promise<any[]>
50
50
 
51
51
  async aggregate(...args: any[]): Promise<any[]> {
52
- let [calls, funcs, page] = this.makeCalls(args)
53
- let size = calls.length
54
- let results = new Array(size)
55
- for (let [from, to] of splitIntoPages(size, page)) {
56
- let {returnData} = await this.eth_call(aggregate, {calls: calls.slice(from, to)})
57
- for (let i = from; i < to; i++) {
58
- let data = returnData[i - from]
59
- results[i] = funcs[i].decodeResult(data)
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
- paging?: number
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
- paging?: number
76
+ pageSize?: number
76
77
  ): Promise<MulticallResult<TF>[]>
77
78
 
78
79
  tryAggregate(
79
80
  calls: AggregateTuple[],
80
- paging?: number
81
+ pageSize?: number
81
82
  ): Promise<MulticallResult<any>[]>
82
83
 
83
84
  async tryAggregate(...args: any[]): Promise<any[]> {
84
- let [calls, funcs, page] = this.makeCalls(args)
85
- let size = calls.length
86
- let results = new Array(size)
87
- for (let [from, to] of splitIntoPages(size, page)) {
88
- let response = await this.eth_call(tryAggregate, {
89
- requireSuccess: false,
90
- calls: calls.slice(from, to)
91
- })
92
- for (let i = from; i < to; i++) {
93
- let res = response[i - from]
94
- if (res.success) {
95
- try {
96
- results[i] = {
97
- success: true,
98
- value: funcs[i].decodeResult(res.returnData)
99
- }
100
- } catch (err: any) {
101
- results[i] = {success: false, returnData: res.returnData}
102
- }
103
- } else {
104
- results[i] = {success: false}
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[], funcs: AnyFunc[], page: number] {
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, funcs, page]
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, funcs, page]
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, funcs, page]
146
+ return [calls, page]
149
147
  }
150
148
  default:
151
- throw new Error('unexpected number of arguments')
149
+ throw new Error(`Unexpected number of arguments: ${args.length}`)
152
150
  }
153
151
  }
154
152
  }
155
153
 
156
-
157
- function* splitIntoPages(size: number, page: number): Iterable<[from: number, to: number]> {
158
- let from = 0
159
- while (size) {
160
- let step = Math.min(page, size)
161
- let to = from + step
162
- yield [from, to]
163
- size -= step
164
- from = to
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
+ }