viem 1.9.0 → 1.9.3
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/README.md +6 -0
- package/dist/cjs/actions/public/multicall.js +54 -31
- package/dist/cjs/actions/public/multicall.js.map +1 -1
- package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/esm/actions/public/multicall.js +66 -31
- package/dist/esm/actions/public/multicall.js.map +1 -1
- package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/types/actions/public/multicall.d.ts.map +1 -1
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +1 -1
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/actions/public/multicall.ts +71 -31
- package/src/actions/wallet/prepareTransactionRequest.ts +3 -6
- package/src/errors/version.ts +1 -1
package/README.md
CHANGED
@@ -188,6 +188,12 @@ Check out the following places for more viem-related content:
|
|
188
188
|
<img alt="celo logo" src="https://raw.githubusercontent.com/wagmi-dev/.github/main/content/sponsors/celo-light.svg" width="auto" height="50">
|
189
189
|
</picture>
|
190
190
|
</a>
|
191
|
+
<a href="https://pimlico.io/">
|
192
|
+
<picture>
|
193
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/wagmi-dev/.github/main/content/sponsors/pimlico-dark.svg">
|
194
|
+
<img alt="pimlico logo" src="https://raw.githubusercontent.com/wagmi-dev/.github/main/content/sponsors/pimlico-light.svg" width="auto" height="50">
|
195
|
+
</picture>
|
196
|
+
</a>
|
191
197
|
<a href="https://zora.co/">
|
192
198
|
<picture>
|
193
199
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/wagmi-dev/.github/main/content/sponsors/zora-dark.svg">
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.multicall = void 0;
|
4
4
|
const abis_js_1 = require("../../constants/abis.js");
|
5
5
|
const abi_js_1 = require("../../errors/abi.js");
|
6
|
+
const base_js_1 = require("../../errors/base.js");
|
6
7
|
const contract_js_1 = require("../../errors/contract.js");
|
7
8
|
const decodeFunctionResult_js_1 = require("../../utils/abi/decodeFunctionResult.js");
|
8
9
|
const encodeFunctionData_js_1 = require("../../utils/abi/encodeFunctionData.js");
|
@@ -36,8 +37,10 @@ async function multicall(client, args) {
|
|
36
37
|
args,
|
37
38
|
functionName,
|
38
39
|
});
|
39
|
-
currentChunkSize += callData.length;
|
40
|
-
if (batchSize > 0 &&
|
40
|
+
currentChunkSize += (callData.length - 2) / 2;
|
41
|
+
if (batchSize > 0 &&
|
42
|
+
currentChunkSize > batchSize &&
|
43
|
+
chunkedCalls[currentChunk].length > 0) {
|
41
44
|
currentChunk++;
|
42
45
|
currentChunkSize = (callData.length - 2) / 2;
|
43
46
|
chunkedCalls[currentChunk] = [];
|
@@ -71,7 +74,7 @@ async function multicall(client, args) {
|
|
71
74
|
];
|
72
75
|
}
|
73
76
|
}
|
74
|
-
const
|
77
|
+
const aggregate3Results = await Promise.allSettled(chunkedCalls.map((calls) => (0, readContract_js_1.readContract)(client, {
|
75
78
|
abi: abis_js_1.multicall3Abi,
|
76
79
|
address: multicallAddress,
|
77
80
|
args: [calls],
|
@@ -79,36 +82,56 @@ async function multicall(client, args) {
|
|
79
82
|
blockTag,
|
80
83
|
functionName: 'aggregate3',
|
81
84
|
})));
|
82
|
-
|
83
|
-
|
84
|
-
const
|
85
|
-
|
86
|
-
try {
|
87
|
-
if (callData === '0x')
|
88
|
-
throw new abi_js_1.AbiDecodingZeroDataError();
|
89
|
-
if (!success)
|
90
|
-
throw new contract_js_1.RawContractError({ data: returnData });
|
91
|
-
const result = (0, decodeFunctionResult_js_1.decodeFunctionResult)({
|
92
|
-
abi,
|
93
|
-
args,
|
94
|
-
data: returnData,
|
95
|
-
functionName,
|
96
|
-
});
|
97
|
-
return allowFailure ? { result, status: 'success' } : result;
|
98
|
-
}
|
99
|
-
catch (err) {
|
100
|
-
const error = (0, getContractError_js_1.getContractError)(err, {
|
101
|
-
abi,
|
102
|
-
address,
|
103
|
-
args,
|
104
|
-
docsPath: '/docs/contract/multicall',
|
105
|
-
functionName,
|
106
|
-
});
|
85
|
+
const results = [];
|
86
|
+
for (let i = 0; i < aggregate3Results.length; i++) {
|
87
|
+
const result = aggregate3Results[i];
|
88
|
+
if (result.status === 'rejected') {
|
107
89
|
if (!allowFailure)
|
108
|
-
throw
|
109
|
-
|
90
|
+
throw result.reason;
|
91
|
+
for (let j = 0; j < chunkedCalls[i].length; j++) {
|
92
|
+
results.push({
|
93
|
+
status: 'failure',
|
94
|
+
error: result.reason,
|
95
|
+
result: undefined,
|
96
|
+
});
|
97
|
+
}
|
98
|
+
continue;
|
110
99
|
}
|
111
|
-
|
100
|
+
const aggregate3Result = result.value;
|
101
|
+
for (let j = 0; j < aggregate3Result.length; j++) {
|
102
|
+
const { returnData, success } = aggregate3Result[j];
|
103
|
+
const { callData } = chunkedCalls[i][j];
|
104
|
+
const { abi, address, functionName, args } = contracts[results.length];
|
105
|
+
try {
|
106
|
+
if (callData === '0x')
|
107
|
+
throw new abi_js_1.AbiDecodingZeroDataError();
|
108
|
+
if (!success)
|
109
|
+
throw new contract_js_1.RawContractError({ data: returnData });
|
110
|
+
const result = (0, decodeFunctionResult_js_1.decodeFunctionResult)({
|
111
|
+
abi,
|
112
|
+
args,
|
113
|
+
data: returnData,
|
114
|
+
functionName,
|
115
|
+
});
|
116
|
+
results.push(allowFailure ? { result, status: 'success' } : result);
|
117
|
+
}
|
118
|
+
catch (err) {
|
119
|
+
const error = (0, getContractError_js_1.getContractError)(err, {
|
120
|
+
abi,
|
121
|
+
address,
|
122
|
+
args,
|
123
|
+
docsPath: '/docs/contract/multicall',
|
124
|
+
functionName,
|
125
|
+
});
|
126
|
+
if (!allowFailure)
|
127
|
+
throw error;
|
128
|
+
results.push({ error, result: undefined, status: 'failure' });
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
132
|
+
if (results.length !== contracts.length)
|
133
|
+
throw new base_js_1.BaseError('multicall results mismatch');
|
134
|
+
return results;
|
112
135
|
}
|
113
136
|
exports.multicall = multicall;
|
114
137
|
//# sourceMappingURL=multicall.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":";;;AAIA,qDAAuD;AACvD,gDAA8D;
|
1
|
+
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"prepareTransactionRequest.js","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":";;;AACA,0EAAmE;AACnE,sFAAwF;AACxF,wEAG4C;AAC5C,kEAA2D;AAC3D,wFAAiF;AAGjF,wDAA8D;AAC9D,gDAG4B;AAQ5B,+EAAwE;AACxE,yFAAkF;
|
1
|
+
{"version":3,"file":"prepareTransactionRequest.js","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":";;;AACA,0EAAmE;AACnE,sFAAwF;AACxF,wEAG4C;AAC5C,kEAA2D;AAC3D,wFAAiF;AAGjF,wDAA8D;AAC9D,gDAG4B;AAQ5B,+EAAwE;AACxE,yFAAkF;AAiE3E,KAAK,UAAU,yBAAyB,CAK7C,MAA2C,EAC3C,IAA2E;IAI3E,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAC5E,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,iCAAoB,EAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAQ,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAE5D,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;IAElD,IAAI,OAAO,KAAK,KAAK,WAAW;QAC9B,OAAO,CAAC,KAAK,GAAG,MAAM,IAAA,4CAAmB,EAAC,MAAM,EAAE;YAChD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;IAEJ,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,IAAI;YACF,OAAO,CAAC,IAAI,GAAG,IAAA,0CAAkB,EAC/B,OAAkC,CAC5B,CAAA;SACT;QAAC,MAAM;YAEN,OAAO,CAAC,IAAI;gBACV,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;SACjE;KACF;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;QAE9B,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAC1C,MAAM,IAAA,mDAA2B,EAAC,MAAM,EAAE;YACxC,KAAK;YACL,KAAK;YACL,OAAO,EAAE,OAA8C;SACxD,CAAC,CAAA;QAEJ,IACE,OAAO,IAAI,CAAC,oBAAoB,KAAK,WAAW;YAChD,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,GAAG,oBAAoB;YAExC,MAAM,IAAI,gCAAuB,CAAC;gBAChC,oBAAoB;aACrB,CAAC,CAAA;QAEJ,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QACnD,OAAO,CAAC,YAAY,GAAG,YAAY,CAAA;KACpC;SAAM;QAEL,IACE,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW;YACxC,OAAO,IAAI,CAAC,oBAAoB,KAAK,WAAW;YAEhD,MAAM,IAAI,qCAA4B,EAAE,CAAA;QAE1C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,mDAA2B,EAAC,MAAM,EAAE;YACxE,KAAK;YACL,KAAK;YACL,OAAO,EAAE,OAA8C;YACvD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QACF,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAA;KAC7B;IAED,IAAI,OAAO,GAAG,KAAK,WAAW;QAC5B,OAAO,CAAC,GAAG,GAAG,MAAM,IAAA,4BAAW,EAAC,MAAM,EAAE;YACtC,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;SAC/B,CAAC,CAAA;IAE7B,IAAA,gCAAa,EAAC,OAAkC,CAAC,CAAA;IAEjD,OAAO,OAIN,CAAA;AACH,CAAC;AAtFD,8DAsFC"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { multicall3Abi } from '../../constants/abis.js';
|
2
2
|
import { AbiDecodingZeroDataError } from '../../errors/abi.js';
|
3
|
+
import { BaseError } from '../../errors/base.js';
|
3
4
|
import { RawContractError } from '../../errors/contract.js';
|
4
5
|
import { decodeFunctionResult } from '../../utils/abi/decodeFunctionResult.js';
|
5
6
|
import { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';
|
@@ -72,8 +73,15 @@ export async function multicall(client, args) {
|
|
72
73
|
args,
|
73
74
|
functionName,
|
74
75
|
});
|
75
|
-
currentChunkSize += callData.length;
|
76
|
-
if
|
76
|
+
currentChunkSize += (callData.length - 2) / 2;
|
77
|
+
// Check to see if we need to create a new chunk.
|
78
|
+
if (
|
79
|
+
// Check if batching is enabled.
|
80
|
+
batchSize > 0 &&
|
81
|
+
// Check if the current size of the batch exceeds the size limit.
|
82
|
+
currentChunkSize > batchSize &&
|
83
|
+
// Check if the current chunk is not already empty.
|
84
|
+
chunkedCalls[currentChunk].length > 0) {
|
77
85
|
currentChunk++;
|
78
86
|
currentChunkSize = (callData.length - 2) / 2;
|
79
87
|
chunkedCalls[currentChunk] = [];
|
@@ -107,7 +115,7 @@ export async function multicall(client, args) {
|
|
107
115
|
];
|
108
116
|
}
|
109
117
|
}
|
110
|
-
const
|
118
|
+
const aggregate3Results = await Promise.allSettled(chunkedCalls.map((calls) => readContract(client, {
|
111
119
|
abi: multicall3Abi,
|
112
120
|
address: multicallAddress,
|
113
121
|
args: [calls],
|
@@ -115,35 +123,62 @@ export async function multicall(client, args) {
|
|
115
123
|
blockTag,
|
116
124
|
functionName: 'aggregate3',
|
117
125
|
})));
|
118
|
-
|
119
|
-
|
120
|
-
const
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
throw new AbiDecodingZeroDataError();
|
125
|
-
if (!success)
|
126
|
-
throw new RawContractError({ data: returnData });
|
127
|
-
const result = decodeFunctionResult({
|
128
|
-
abi,
|
129
|
-
args,
|
130
|
-
data: returnData,
|
131
|
-
functionName,
|
132
|
-
});
|
133
|
-
return allowFailure ? { result, status: 'success' } : result;
|
134
|
-
}
|
135
|
-
catch (err) {
|
136
|
-
const error = getContractError(err, {
|
137
|
-
abi,
|
138
|
-
address,
|
139
|
-
args,
|
140
|
-
docsPath: '/docs/contract/multicall',
|
141
|
-
functionName,
|
142
|
-
});
|
126
|
+
const results = [];
|
127
|
+
for (let i = 0; i < aggregate3Results.length; i++) {
|
128
|
+
const result = aggregate3Results[i];
|
129
|
+
// If an error occurred in a `readContract` invocation (ie. network error),
|
130
|
+
// then append the failure reason to each contract result.
|
131
|
+
if (result.status === 'rejected') {
|
143
132
|
if (!allowFailure)
|
144
|
-
throw
|
145
|
-
|
133
|
+
throw result.reason;
|
134
|
+
for (let j = 0; j < chunkedCalls[i].length; j++) {
|
135
|
+
results.push({
|
136
|
+
status: 'failure',
|
137
|
+
error: result.reason,
|
138
|
+
result: undefined,
|
139
|
+
});
|
140
|
+
}
|
141
|
+
continue;
|
146
142
|
}
|
147
|
-
|
143
|
+
// If the `readContract` call was successful, then decode the results.
|
144
|
+
const aggregate3Result = result.value;
|
145
|
+
for (let j = 0; j < aggregate3Result.length; j++) {
|
146
|
+
// Extract the response from `readContract`
|
147
|
+
const { returnData, success } = aggregate3Result[j];
|
148
|
+
// Extract the request call data from the original call.
|
149
|
+
const { callData } = chunkedCalls[i][j];
|
150
|
+
// Extract the contract config for this call from the `contracts` argument
|
151
|
+
// for decoding.
|
152
|
+
const { abi, address, functionName, args } = contracts[results.length];
|
153
|
+
try {
|
154
|
+
if (callData === '0x')
|
155
|
+
throw new AbiDecodingZeroDataError();
|
156
|
+
if (!success)
|
157
|
+
throw new RawContractError({ data: returnData });
|
158
|
+
const result = decodeFunctionResult({
|
159
|
+
abi,
|
160
|
+
args,
|
161
|
+
data: returnData,
|
162
|
+
functionName,
|
163
|
+
});
|
164
|
+
results.push(allowFailure ? { result, status: 'success' } : result);
|
165
|
+
}
|
166
|
+
catch (err) {
|
167
|
+
const error = getContractError(err, {
|
168
|
+
abi,
|
169
|
+
address,
|
170
|
+
args,
|
171
|
+
docsPath: '/docs/contract/multicall',
|
172
|
+
functionName,
|
173
|
+
});
|
174
|
+
if (!allowFailure)
|
175
|
+
throw error;
|
176
|
+
results.push({ error, result: undefined, status: 'failure' });
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
if (results.length !== contracts.length)
|
181
|
+
throw new BaseError('multicall results mismatch');
|
182
|
+
return results;
|
148
183
|
}
|
149
184
|
//# sourceMappingURL=multicall.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"prepareTransactionRequest.js","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAA;AACxF,OAAO,EAEL,WAAW,GACZ,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAA;
|
1
|
+
{"version":3,"file":"prepareTransactionRequest.js","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '1.9.
|
1
|
+
export const version = '1.9.3';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAK5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAErE,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,SAAS,CAC7B,UAAU,SAAS,sBAAsB,EAAE,EAC3C,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,aAAa,SAAS,OAAO,GAAG,IAAI,EAEpC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,GACnD,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAK5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAErE,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,SAAS,CAC7B,UAAU,SAAS,sBAAsB,EAAE,EAC3C,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,aAAa,SAAS,OAAO,GAAG,IAAI,EAEpC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,GACnD,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAsKzD"}
|
@@ -7,7 +7,7 @@ import type { GetChain } from '../../types/chain.js';
|
|
7
7
|
import type { UnionOmit } from '../../types/utils.js';
|
8
8
|
import type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js';
|
9
9
|
export type PrepareTransactionRequestParameters<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = UnionOmit<FormattedTransactionRequest<TChainOverride extends Chain ? TChainOverride : TChain>, 'from'> & GetAccountParameter<TAccount> & GetChain<TChain, TChainOverride>;
|
10
|
-
export type PrepareTransactionRequestReturnType<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> =
|
10
|
+
export type PrepareTransactionRequestReturnType<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = FormattedTransactionRequest<TChainOverride extends Chain ? TChainOverride : TChain> & GetAccountParameter<TAccount> & GetChain<TChain, TChainOverride>;
|
11
11
|
/**
|
12
12
|
* Prepares a transaction request for signing.
|
13
13
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"prepareTransactionRequest.d.ts","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAStD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAM5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAK/F,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC1D,SAAS,CACX,2BAA2B,CACzB,cAAc,SAAS,KAAK,GAAG,cAAc,GAAG,MAAM,CACvD,EACD,MAAM,CACP,GACC,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAElC,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC1D,
|
1
|
+
{"version":3,"file":"prepareTransactionRequest.d.ts","sourceRoot":"","sources":["../../../../src/actions/wallet/prepareTransactionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAStD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAM5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAK/F,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC1D,SAAS,CACX,2BAA2B,CACzB,cAAc,SAAS,KAAK,GAAG,cAAc,GAAG,MAAM,CACvD,EACD,MAAM,CACP,GACC,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAElC,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC1D,2BAA2B,CAC7B,cAAc,SAAS,KAAK,GAAG,cAAc,GAAG,MAAM,CACvD,GACC,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,cAAc,SAAS,KAAK,GAAG,SAAS,EAExC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAC3C,IAAI,EAAE,mCAAmC,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,GAC1E,OAAO,CACR,mCAAmC,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CACtE,CA6EA"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "1.9.
|
1
|
+
export declare const version = "1.9.3";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
@@ -4,7 +4,7 @@ import type { Client } from '../../clients/createClient.js'
|
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
5
|
import { multicall3Abi } from '../../constants/abis.js'
|
6
6
|
import { AbiDecodingZeroDataError } from '../../errors/abi.js'
|
7
|
-
import
|
7
|
+
import { BaseError } from '../../errors/base.js'
|
8
8
|
import { RawContractError } from '../../errors/contract.js'
|
9
9
|
import type { Chain } from '../../types/chain.js'
|
10
10
|
import type { ContractFunctionConfig } from '../../types/contract.js'
|
@@ -136,8 +136,16 @@ export async function multicall<
|
|
136
136
|
functionName,
|
137
137
|
} as unknown as EncodeFunctionDataParameters)
|
138
138
|
|
139
|
-
currentChunkSize += callData.length
|
140
|
-
if
|
139
|
+
currentChunkSize += (callData.length - 2) / 2
|
140
|
+
// Check to see if we need to create a new chunk.
|
141
|
+
if (
|
142
|
+
// Check if batching is enabled.
|
143
|
+
batchSize > 0 &&
|
144
|
+
// Check if the current size of the batch exceeds the size limit.
|
145
|
+
currentChunkSize > batchSize &&
|
146
|
+
// Check if the current chunk is not already empty.
|
147
|
+
chunkedCalls[currentChunk].length > 0
|
148
|
+
) {
|
141
149
|
currentChunk++
|
142
150
|
currentChunkSize = (callData.length - 2) / 2
|
143
151
|
chunkedCalls[currentChunk] = []
|
@@ -171,7 +179,7 @@ export async function multicall<
|
|
171
179
|
}
|
172
180
|
}
|
173
181
|
|
174
|
-
const
|
182
|
+
const aggregate3Results = await Promise.allSettled(
|
175
183
|
chunkedCalls.map((calls) =>
|
176
184
|
readContract(client, {
|
177
185
|
abi: multicall3Abi,
|
@@ -184,32 +192,64 @@ export async function multicall<
|
|
184
192
|
),
|
185
193
|
)
|
186
194
|
|
187
|
-
|
188
|
-
|
189
|
-
const
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
if (
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
}
|
202
|
-
|
203
|
-
} catch (err) {
|
204
|
-
const error = getContractError(err as BaseError, {
|
205
|
-
abi,
|
206
|
-
address,
|
207
|
-
args,
|
208
|
-
docsPath: '/docs/contract/multicall',
|
209
|
-
functionName,
|
210
|
-
})
|
211
|
-
if (!allowFailure) throw error
|
212
|
-
return { error, result: undefined, status: 'failure' }
|
195
|
+
const results = []
|
196
|
+
for (let i = 0; i < aggregate3Results.length; i++) {
|
197
|
+
const result = aggregate3Results[i]
|
198
|
+
|
199
|
+
// If an error occurred in a `readContract` invocation (ie. network error),
|
200
|
+
// then append the failure reason to each contract result.
|
201
|
+
if (result.status === 'rejected') {
|
202
|
+
if (!allowFailure) throw result.reason
|
203
|
+
for (let j = 0; j < chunkedCalls[i].length; j++) {
|
204
|
+
results.push({
|
205
|
+
status: 'failure',
|
206
|
+
error: result.reason,
|
207
|
+
result: undefined,
|
208
|
+
})
|
209
|
+
}
|
210
|
+
continue
|
213
211
|
}
|
214
|
-
|
212
|
+
|
213
|
+
// If the `readContract` call was successful, then decode the results.
|
214
|
+
const aggregate3Result = result.value
|
215
|
+
for (let j = 0; j < aggregate3Result.length; j++) {
|
216
|
+
// Extract the response from `readContract`
|
217
|
+
const { returnData, success } = aggregate3Result[j]
|
218
|
+
|
219
|
+
// Extract the request call data from the original call.
|
220
|
+
const { callData } = chunkedCalls[i][j]
|
221
|
+
|
222
|
+
// Extract the contract config for this call from the `contracts` argument
|
223
|
+
// for decoding.
|
224
|
+
const { abi, address, functionName, args } = contracts[
|
225
|
+
results.length
|
226
|
+
] as ContractFunctionConfig
|
227
|
+
|
228
|
+
try {
|
229
|
+
if (callData === '0x') throw new AbiDecodingZeroDataError()
|
230
|
+
if (!success) throw new RawContractError({ data: returnData })
|
231
|
+
const result = decodeFunctionResult({
|
232
|
+
abi,
|
233
|
+
args,
|
234
|
+
data: returnData,
|
235
|
+
functionName,
|
236
|
+
})
|
237
|
+
results.push(allowFailure ? { result, status: 'success' } : result)
|
238
|
+
} catch (err) {
|
239
|
+
const error = getContractError(err as BaseError, {
|
240
|
+
abi,
|
241
|
+
address,
|
242
|
+
args,
|
243
|
+
docsPath: '/docs/contract/multicall',
|
244
|
+
functionName,
|
245
|
+
})
|
246
|
+
if (!allowFailure) throw error
|
247
|
+
results.push({ error, result: undefined, status: 'failure' })
|
248
|
+
}
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
if (results.length !== contracts.length)
|
253
|
+
throw new BaseError('multicall results mismatch')
|
254
|
+
return results as MulticallResults<TContracts, TAllowFailure>
|
215
255
|
}
|
@@ -41,11 +41,8 @@ export type PrepareTransactionRequestReturnType<
|
|
41
41
|
TChain extends Chain | undefined = Chain | undefined,
|
42
42
|
TAccount extends Account | undefined = Account | undefined,
|
43
43
|
TChainOverride extends Chain | undefined = Chain | undefined,
|
44
|
-
> =
|
45
|
-
|
46
|
-
TChainOverride extends Chain ? TChainOverride : TChain
|
47
|
-
>,
|
48
|
-
'from'
|
44
|
+
> = FormattedTransactionRequest<
|
45
|
+
TChainOverride extends Chain ? TChainOverride : TChain
|
49
46
|
> &
|
50
47
|
GetAccountParameter<TAccount> &
|
51
48
|
GetChain<TChain, TChainOverride>
|
@@ -171,7 +168,7 @@ export async function prepareTransactionRequest<
|
|
171
168
|
|
172
169
|
assertRequest(request as AssertRequestParameters)
|
173
170
|
|
174
|
-
return request as PrepareTransactionRequestReturnType<
|
171
|
+
return request as unknown as PrepareTransactionRequestReturnType<
|
175
172
|
TChain,
|
176
173
|
TAccount,
|
177
174
|
TChainOverride
|
package/src/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '1.9.
|
1
|
+
export const version = '1.9.3'
|