@pancakeswap/multicall 3.6.2 → 3.6.4
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/getGasLimit.d.ts +2 -1
- package/dist/getGasLimit.d.ts.map +1 -1
- package/dist/index.js +8 -45
- package/dist/index.mjs +9 -46
- package/dist/multicall.d.ts +1 -1
- package/dist/multicall.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/getGasLimit.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BigintIsh } from '@pancakeswap/sdk';
|
|
2
1
|
import { ChainId } from '@pancakeswap/chains';
|
|
2
|
+
import { BigintIsh } from '@pancakeswap/sdk';
|
|
3
3
|
import { PublicClient } from 'viem';
|
|
4
4
|
export type GetGasLimitParams = {
|
|
5
5
|
chainId: ChainId;
|
|
@@ -7,6 +7,7 @@ export type GetGasLimitParams = {
|
|
|
7
7
|
gasLimit?: BigintIsh;
|
|
8
8
|
maxGasLimit?: BigintIsh;
|
|
9
9
|
gasBuffer?: BigintIsh;
|
|
10
|
+
account?: `0x${string}`;
|
|
10
11
|
};
|
|
11
12
|
export declare function getDefaultGasLimit(chainId?: ChainId): bigint;
|
|
12
13
|
export declare function getDefaultGasBuffer(chainId?: ChainId): bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGasLimit.d.ts","sourceRoot":"","sources":["../src/getGasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getGasLimit.d.ts","sourceRoot":"","sources":["../src/getGasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAUnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IAGrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IAGpB,WAAW,CAAC,EAAE,SAAS,CAAA;IAEvB,SAAS,CAAC,EAAE,SAAS,CAAA;IAGrB,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CACxB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGpD;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAA;AAEpF,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,wBAAwB,mBAIrF;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,gBAA8C,EAC3D,SAAS,EAAE,cAA6C,EACxD,MAAM,GACP,EAAE,iBAAiB,mBAQnB"}
|
package/dist/index.js
CHANGED
|
@@ -386,47 +386,6 @@ function abortInvariant(signal, message) {
|
|
|
386
386
|
function isViemAbortError(e) {
|
|
387
387
|
return e instanceof viem.BaseError && e.walk((err) => err instanceof viem.TimeoutError) instanceof viem.TimeoutError;
|
|
388
388
|
}
|
|
389
|
-
var stats = {};
|
|
390
|
-
var statsCalls = [];
|
|
391
|
-
var uniqTargets = /* @__PURE__ */ new Set();
|
|
392
|
-
var last = Date.now();
|
|
393
|
-
function logStatsInDev(calls, windowMs = 5e3) {
|
|
394
|
-
if (process.env.NODE_ENV !== "development") {
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
statsCalls.push({
|
|
398
|
-
timestamp: Date.now(),
|
|
399
|
-
callNumber: calls.length,
|
|
400
|
-
targets: [...new Set(calls.map((call2) => call2.target))]
|
|
401
|
-
});
|
|
402
|
-
statsCalls = statsCalls.filter((call2) => call2.timestamp >= Date.now() - windowMs);
|
|
403
|
-
const now = Date.now();
|
|
404
|
-
for (const call2 of calls) {
|
|
405
|
-
const { target } = call2;
|
|
406
|
-
if (!uniqTargets.has(target)) {
|
|
407
|
-
console.log("target", call2.target);
|
|
408
|
-
uniqTargets.add(target);
|
|
409
|
-
}
|
|
410
|
-
const h = viem.keccak256(`0x${target}${call2.callData}`);
|
|
411
|
-
if (!stats[target]) {
|
|
412
|
-
stats[target] = { events: [], total: 0, uniq: 0 };
|
|
413
|
-
}
|
|
414
|
-
stats[target].events.push({ timestamp: now, hash: h });
|
|
415
|
-
}
|
|
416
|
-
const cutoff = now - windowMs;
|
|
417
|
-
for (const [target, stat] of Object.entries(stats)) {
|
|
418
|
-
stat.events = stat.events.filter((e) => e.timestamp >= cutoff);
|
|
419
|
-
stat.total = stat.events.length;
|
|
420
|
-
const uniqHashes = new Set(stat.events.map((e) => e.hash));
|
|
421
|
-
stat.uniq = uniqHashes.size;
|
|
422
|
-
}
|
|
423
|
-
const elapsed = Date.now() - last;
|
|
424
|
-
if (elapsed > 5e3) {
|
|
425
|
-
last = Date.now();
|
|
426
|
-
console.log(`Sliding call stats`, stats);
|
|
427
|
-
console.log(`history calls`, statsCalls);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
389
|
|
|
431
390
|
// src/getBlockConflictTolerance.ts
|
|
432
391
|
function getBlockConflictTolerance(chainId) {
|
|
@@ -441,9 +400,9 @@ async function multicallByGasLimit(calls, {
|
|
|
441
400
|
dropUnexecutedCalls,
|
|
442
401
|
signal,
|
|
443
402
|
retryFailedCallsWithGreaterLimit,
|
|
403
|
+
account,
|
|
444
404
|
...rest
|
|
445
405
|
}) {
|
|
446
|
-
logStatsInDev(calls);
|
|
447
406
|
const gasLimit = await getGasLimit({
|
|
448
407
|
chainId,
|
|
449
408
|
gasBuffer,
|
|
@@ -455,7 +414,8 @@ async function multicallByGasLimit(calls, {
|
|
|
455
414
|
client,
|
|
456
415
|
chainId,
|
|
457
416
|
dropUnexecutedCalls,
|
|
458
|
-
signal
|
|
417
|
+
signal,
|
|
418
|
+
account
|
|
459
419
|
});
|
|
460
420
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
461
421
|
return callResult;
|
|
@@ -522,7 +482,8 @@ async function call(calls, params) {
|
|
|
522
482
|
gasBuffer = getDefaultGasBuffer(chainId),
|
|
523
483
|
blockConflictTolerance = getBlockConflictTolerance(chainId),
|
|
524
484
|
dropUnexecutedCalls = false,
|
|
525
|
-
signal
|
|
485
|
+
signal,
|
|
486
|
+
account
|
|
526
487
|
} = params;
|
|
527
488
|
if (!calls.length) {
|
|
528
489
|
return {
|
|
@@ -533,7 +494,9 @@ async function call(calls, params) {
|
|
|
533
494
|
abortInvariant(signal, "Multicall aborted");
|
|
534
495
|
const contract = getMulticallContract({ chainId, client });
|
|
535
496
|
try {
|
|
536
|
-
const { result } = await contract.simulate.multicallWithGasLimitation([calls, gasBuffer]
|
|
497
|
+
const { result } = await contract.simulate.multicallWithGasLimitation([calls, gasBuffer], {
|
|
498
|
+
account
|
|
499
|
+
});
|
|
537
500
|
const { results, lastSuccessIndex, blockNumber } = formatCallReturn(result);
|
|
538
501
|
if (lastSuccessIndex === calls.length - 1) {
|
|
539
502
|
return {
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChainId } from '@pancakeswap/chains';
|
|
2
|
-
import { getContract,
|
|
2
|
+
import { getContract, BaseError, TimeoutError } from 'viem';
|
|
3
3
|
|
|
4
4
|
// ../utils/toBigInt.ts
|
|
5
5
|
function toBigInt(num) {
|
|
@@ -384,47 +384,6 @@ function abortInvariant(signal, message) {
|
|
|
384
384
|
function isViemAbortError(e) {
|
|
385
385
|
return e instanceof BaseError && e.walk((err) => err instanceof TimeoutError) instanceof TimeoutError;
|
|
386
386
|
}
|
|
387
|
-
var stats = {};
|
|
388
|
-
var statsCalls = [];
|
|
389
|
-
var uniqTargets = /* @__PURE__ */ new Set();
|
|
390
|
-
var last = Date.now();
|
|
391
|
-
function logStatsInDev(calls, windowMs = 5e3) {
|
|
392
|
-
if (process.env.NODE_ENV !== "development") {
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
statsCalls.push({
|
|
396
|
-
timestamp: Date.now(),
|
|
397
|
-
callNumber: calls.length,
|
|
398
|
-
targets: [...new Set(calls.map((call2) => call2.target))]
|
|
399
|
-
});
|
|
400
|
-
statsCalls = statsCalls.filter((call2) => call2.timestamp >= Date.now() - windowMs);
|
|
401
|
-
const now = Date.now();
|
|
402
|
-
for (const call2 of calls) {
|
|
403
|
-
const { target } = call2;
|
|
404
|
-
if (!uniqTargets.has(target)) {
|
|
405
|
-
console.log("target", call2.target);
|
|
406
|
-
uniqTargets.add(target);
|
|
407
|
-
}
|
|
408
|
-
const h = keccak256(`0x${target}${call2.callData}`);
|
|
409
|
-
if (!stats[target]) {
|
|
410
|
-
stats[target] = { events: [], total: 0, uniq: 0 };
|
|
411
|
-
}
|
|
412
|
-
stats[target].events.push({ timestamp: now, hash: h });
|
|
413
|
-
}
|
|
414
|
-
const cutoff = now - windowMs;
|
|
415
|
-
for (const [target, stat] of Object.entries(stats)) {
|
|
416
|
-
stat.events = stat.events.filter((e) => e.timestamp >= cutoff);
|
|
417
|
-
stat.total = stat.events.length;
|
|
418
|
-
const uniqHashes = new Set(stat.events.map((e) => e.hash));
|
|
419
|
-
stat.uniq = uniqHashes.size;
|
|
420
|
-
}
|
|
421
|
-
const elapsed = Date.now() - last;
|
|
422
|
-
if (elapsed > 5e3) {
|
|
423
|
-
last = Date.now();
|
|
424
|
-
console.log(`Sliding call stats`, stats);
|
|
425
|
-
console.log(`history calls`, statsCalls);
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
387
|
|
|
429
388
|
// src/getBlockConflictTolerance.ts
|
|
430
389
|
function getBlockConflictTolerance(chainId) {
|
|
@@ -439,9 +398,9 @@ async function multicallByGasLimit(calls, {
|
|
|
439
398
|
dropUnexecutedCalls,
|
|
440
399
|
signal,
|
|
441
400
|
retryFailedCallsWithGreaterLimit,
|
|
401
|
+
account,
|
|
442
402
|
...rest
|
|
443
403
|
}) {
|
|
444
|
-
logStatsInDev(calls);
|
|
445
404
|
const gasLimit = await getGasLimit({
|
|
446
405
|
chainId,
|
|
447
406
|
gasBuffer,
|
|
@@ -453,7 +412,8 @@ async function multicallByGasLimit(calls, {
|
|
|
453
412
|
client,
|
|
454
413
|
chainId,
|
|
455
414
|
dropUnexecutedCalls,
|
|
456
|
-
signal
|
|
415
|
+
signal,
|
|
416
|
+
account
|
|
457
417
|
});
|
|
458
418
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
459
419
|
return callResult;
|
|
@@ -520,7 +480,8 @@ async function call(calls, params) {
|
|
|
520
480
|
gasBuffer = getDefaultGasBuffer(chainId),
|
|
521
481
|
blockConflictTolerance = getBlockConflictTolerance(chainId),
|
|
522
482
|
dropUnexecutedCalls = false,
|
|
523
|
-
signal
|
|
483
|
+
signal,
|
|
484
|
+
account
|
|
524
485
|
} = params;
|
|
525
486
|
if (!calls.length) {
|
|
526
487
|
return {
|
|
@@ -531,7 +492,9 @@ async function call(calls, params) {
|
|
|
531
492
|
abortInvariant(signal, "Multicall aborted");
|
|
532
493
|
const contract = getMulticallContract({ chainId, client });
|
|
533
494
|
try {
|
|
534
|
-
const { result } = await contract.simulate.multicallWithGasLimitation([calls, gasBuffer]
|
|
495
|
+
const { result } = await contract.simulate.multicallWithGasLimitation([calls, gasBuffer], {
|
|
496
|
+
account
|
|
497
|
+
});
|
|
535
498
|
const { results, lastSuccessIndex, blockNumber } = formatCallReturn(result);
|
|
536
499
|
if (lastSuccessIndex === calls.length - 1) {
|
|
537
500
|
return {
|
package/dist/multicall.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type CallByGasLimitParams = AbortControl & GetGasLimitParams & {
|
|
|
9
9
|
maxRetry?: number;
|
|
10
10
|
} | undefined;
|
|
11
11
|
};
|
|
12
|
-
export declare function multicallByGasLimit(calls: MulticallRequestWithGas[], { chainId, gasBuffer, client, dropUnexecutedCalls, signal, retryFailedCallsWithGreaterLimit, ...rest }: CallByGasLimitParams): Promise<CallResult>;
|
|
12
|
+
export declare function multicallByGasLimit(calls: MulticallRequestWithGas[], { chainId, gasBuffer, client, dropUnexecutedCalls, signal, retryFailedCallsWithGreaterLimit, account, ...rest }: CallByGasLimitParams): Promise<CallResult>;
|
|
13
13
|
export type SingleCallResult = {
|
|
14
14
|
result: string;
|
|
15
15
|
gasUsed: bigint;
|
package/dist/multicall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,iCAAiC,CAAA;AAK1F,OAAO,EAAE,iBAAiB,EAAoC,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAC7C,iBAAiB,GAAG;IAIlB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAG/B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAG7B,gCAAgC,CAAC,EAC7B;QACE,kBAAkB,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACD,SAAS,CAAA;CACd,CAAA;AAEH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,uBAAuB,EAAE,EAChC,EACE,OAAO,EACP,SAAwC,EACxC,MAAM,EACN,mBAAmB,EACnB,MAAM,EACN,gCAAgC,EAChC,OAAO,EACP,GAAG,IAAI,EACR,EAAE,oBAAoB,uBAgExB;AAOD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAE3B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IACzC,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pancakeswap/multicall",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.4",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
"module": "dist/index.mjs",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"viem": "^2.22.23",
|
|
13
|
-
"@pancakeswap/chains": "0.5.
|
|
14
|
-
"@pancakeswap/sdk": "5.8.
|
|
13
|
+
"@pancakeswap/chains": "0.5.2",
|
|
14
|
+
"@pancakeswap/sdk": "5.8.14"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"tsup": "^6.7.0",
|
|
18
18
|
"@pancakeswap/tsconfig": "0.0.0",
|
|
19
|
-
"@pancakeswap/utils": "6.1.
|
|
19
|
+
"@pancakeswap/utils": "6.1.3"
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
"./package.json": "./package.json",
|