viem 2.30.0-jxom-send-calls-fallback-20250514150632 → 2.30.0-jxom-send-calls-fallback-20250515091127
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/CHANGELOG.md +6 -2
- package/_cjs/actions/wallet/getCallsStatus.js +3 -3
- package/_cjs/actions/wallet/getCallsStatus.js.map +1 -1
- package/_cjs/actions/wallet/sendCalls.js +33 -26
- package/_cjs/actions/wallet/sendCalls.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_esm/actions/wallet/getCallsStatus.js +4 -4
- package/_esm/actions/wallet/getCallsStatus.js.map +1 -1
- package/_esm/actions/wallet/sendCalls.js +32 -25
- package/_esm/actions/wallet/sendCalls.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_types/actions/wallet/sendCalls.d.ts +2 -1
- package/_types/actions/wallet/sendCalls.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/types/capabilities.d.ts +3 -5
- package/_types/types/capabilities.d.ts.map +1 -1
- package/actions/wallet/getCallsStatus.ts +4 -4
- package/actions/wallet/sendCalls.ts +47 -33
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/types/capabilities.ts +3 -5
package/CHANGELOG.md
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
# viem
|
2
2
|
|
3
|
-
## 2.30.0-jxom-send-calls-fallback-
|
3
|
+
## 2.30.0-jxom-send-calls-fallback-20250515091127
|
4
4
|
|
5
5
|
### Minor Changes
|
6
6
|
|
7
|
-
- [#3648](https://github.com/wevm/viem/pull/3648) [`
|
7
|
+
- [#3648](https://github.com/wevm/viem/pull/3648) [`a8e6ec8f009c4d12a1e5b67e07a0bda8c983c32b`](https://github.com/wevm/viem/commit/a8e6ec8f009c4d12a1e5b67e07a0bda8c983c32b) Thanks [@jxom](https://github.com/jxom)! - Added `experimental_fallback` property to `sendCalls` for wallets that do not support EIP-5792 (falls back to `eth_sendTransaction`).
|
8
|
+
|
9
|
+
## 2.29.3
|
8
10
|
|
9
11
|
### Patch Changes
|
10
12
|
|
11
13
|
- [#3639](https://github.com/wevm/viem/pull/3639) [`54d5114f7fbdfa4e866f16d8f1fa5ee851bc9979`](https://github.com/wevm/viem/commit/54d5114f7fbdfa4e866f16d8f1fa5ee851bc9979) Thanks [@izayl](https://github.com/izayl)! - Added `account` parameter to multicall.
|
12
14
|
|
15
|
+
- [`ba718e23e3e19a064abc35e31234b7759b0d1b6e`](https://github.com/wevm/viem/commit/ba718e23e3e19a064abc35e31234b7759b0d1b6e) Thanks [@jxom](https://github.com/jxom)! - Fixed ERC-7677 `paymasterService` capability types.
|
16
|
+
|
13
17
|
## 2.29.2
|
14
18
|
|
15
19
|
### Patch Changes
|
@@ -8,10 +8,10 @@ const transactionReceipt_js_1 = require("../../utils/formatters/transactionRecei
|
|
8
8
|
const sendCalls_js_1 = require("./sendCalls.js");
|
9
9
|
async function getCallsStatus(client, parameters) {
|
10
10
|
async function getStatus(id) {
|
11
|
-
const isTransactions = id.
|
11
|
+
const isTransactions = id.endsWith(sendCalls_js_1.fallbackMagicIdentifier.slice(2));
|
12
12
|
if (isTransactions) {
|
13
|
-
const chainId = (0, trim_js_1.trim)((0, slice_js_1.sliceHex)(id,
|
14
|
-
const hashes = (0, slice_js_1.sliceHex)(id, 64)
|
13
|
+
const chainId = (0, trim_js_1.trim)((0, slice_js_1.sliceHex)(id, -64, -32));
|
14
|
+
const hashes = (0, slice_js_1.sliceHex)(id, 0, -64)
|
15
15
|
.slice(2)
|
16
16
|
.match(/.{1,64}/g);
|
17
17
|
const receipts = await Promise.all(hashes.map((hash) => client.request({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":";;AAwDA,wCAqFC;AAlID,wDAAoD;AACpD,sDAA+C;AAC/C,gEAA0E;AAC1E,wFAA8E;AAC9E,
|
1
|
+
{"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"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"}
|
@@ -1,18 +1,20 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.fallbackMagicIdentifier = void 0;
|
4
4
|
exports.sendCalls = sendCalls;
|
5
5
|
const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
|
6
6
|
const account_js_1 = require("../../errors/account.js");
|
7
|
+
const base_js_1 = require("../../errors/base.js");
|
8
|
+
const rpc_js_1 = require("../../errors/rpc.js");
|
7
9
|
const encodeFunctionData_js_1 = require("../../utils/abi/encodeFunctionData.js");
|
8
10
|
const concat_js_1 = require("../../utils/data/concat.js");
|
9
11
|
const fromHex_js_1 = require("../../utils/encoding/fromHex.js");
|
10
12
|
const toHex_js_1 = require("../../utils/encoding/toHex.js");
|
11
13
|
const getTransactionError_js_1 = require("../../utils/errors/getTransactionError.js");
|
12
14
|
const sendTransaction_js_1 = require("./sendTransaction.js");
|
13
|
-
exports.
|
15
|
+
exports.fallbackMagicIdentifier = '0x5792579257925792579257925792579257925792579257925792579257925792';
|
14
16
|
async function sendCalls(client, parameters) {
|
15
|
-
const { account: account_ = client.account, chain = client.chain, forceAtomic = false, id, version = '2.0.0', } = parameters;
|
17
|
+
const { account: account_ = client.account, capabilities, chain = client.chain, experimental_fallback, forceAtomic = false, id, version = '2.0.0', } = parameters;
|
16
18
|
if (typeof account_ === 'undefined')
|
17
19
|
throw new account_js_1.AccountNotFoundError({
|
18
20
|
docsPath: '/docs/actions/wallet/sendCalls',
|
@@ -40,7 +42,7 @@ async function sendCalls(client, parameters) {
|
|
40
42
|
{
|
41
43
|
atomicRequired: forceAtomic,
|
42
44
|
calls,
|
43
|
-
capabilities
|
45
|
+
capabilities,
|
44
46
|
chainId: (0, toHex_js_1.numberToHex)(chain.id),
|
45
47
|
from: account?.address,
|
46
48
|
id,
|
@@ -54,10 +56,31 @@ async function sendCalls(client, parameters) {
|
|
54
56
|
}
|
55
57
|
catch (err) {
|
56
58
|
const error = err;
|
57
|
-
if (
|
58
|
-
error.name === '
|
59
|
-
|
60
|
-
|
59
|
+
if (experimental_fallback &&
|
60
|
+
(error.name === 'MethodNotFoundRpcError' ||
|
61
|
+
error.name === 'MethodNotSupportedRpcError' ||
|
62
|
+
error.details
|
63
|
+
.toLowerCase()
|
64
|
+
.includes('does not exist / is not available') ||
|
65
|
+
error.details.toLowerCase().includes('missing or invalid. request()') ||
|
66
|
+
error.details
|
67
|
+
.toLowerCase()
|
68
|
+
.includes('did not match any variant of untagged enum'))) {
|
69
|
+
if (capabilities) {
|
70
|
+
const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);
|
71
|
+
if (hasNonOptionalCapability) {
|
72
|
+
const message = 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.';
|
73
|
+
throw new rpc_js_1.UnsupportedNonOptionalCapabilityError(new base_js_1.BaseError(message, {
|
74
|
+
details: message,
|
75
|
+
}));
|
76
|
+
}
|
77
|
+
}
|
78
|
+
if (forceAtomic && calls.length > 1) {
|
79
|
+
const message = '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.';
|
80
|
+
throw new rpc_js_1.AtomicityNotSupportedError(new base_js_1.BaseError(message, {
|
81
|
+
details: message,
|
82
|
+
}));
|
83
|
+
}
|
61
84
|
const promises = [];
|
62
85
|
for (const call of calls) {
|
63
86
|
const promise = (0, sendTransaction_js_1.sendTransaction)(client, {
|
@@ -73,9 +96,9 @@ async function sendCalls(client, parameters) {
|
|
73
96
|
const hashes = await Promise.all(promises);
|
74
97
|
return {
|
75
98
|
id: (0, concat_js_1.concat)([
|
76
|
-
exports.transactionMagicIdentifier,
|
77
|
-
(0, toHex_js_1.numberToHex)(chain.id, { size: 32 }),
|
78
99
|
...hashes,
|
100
|
+
(0, toHex_js_1.numberToHex)(chain.id, { size: 32 }),
|
101
|
+
exports.fallbackMagicIdentifier,
|
79
102
|
]),
|
80
103
|
};
|
81
104
|
}
|
@@ -86,20 +109,4 @@ async function sendCalls(client, parameters) {
|
|
86
109
|
});
|
87
110
|
}
|
88
111
|
}
|
89
|
-
function formatRequestCapabilities(capabilities) {
|
90
|
-
const paymasterService = capabilities?.paymasterService
|
91
|
-
? Object.entries(capabilities.paymasterService).reduce((paymasterService, [chainId, value]) => ({
|
92
|
-
...(paymasterService ?? {}),
|
93
|
-
[(0, toHex_js_1.numberToHex)(Number(chainId))]: value,
|
94
|
-
}), {})
|
95
|
-
: undefined;
|
96
|
-
return {
|
97
|
-
...capabilities,
|
98
|
-
...(paymasterService
|
99
|
-
? {
|
100
|
-
paymasterService,
|
101
|
-
}
|
102
|
-
: {}),
|
103
|
-
};
|
104
|
-
}
|
105
112
|
//# sourceMappingURL=sendCalls.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"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"}
|
package/_cjs/errors/version.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.version = void 0;
|
4
|
-
exports.version = '2.30.0-jxom-send-calls-fallback-
|
4
|
+
exports.version = '2.30.0-jxom-send-calls-fallback-20250515091127';
|
5
5
|
//# sourceMappingURL=version.js.map
|
@@ -2,7 +2,7 @@ import { sliceHex } from '../../utils/data/slice.js';
|
|
2
2
|
import { trim } from '../../utils/data/trim.js';
|
3
3
|
import { hexToBigInt, hexToNumber } from '../../utils/encoding/fromHex.js';
|
4
4
|
import { receiptStatuses } from '../../utils/formatters/transactionReceipt.js';
|
5
|
-
import {
|
5
|
+
import { fallbackMagicIdentifier } from './sendCalls.js';
|
6
6
|
/**
|
7
7
|
* Returns the status of a call batch that was sent via `sendCalls`.
|
8
8
|
*
|
@@ -25,10 +25,10 @@ import { transactionMagicIdentifier } from './sendCalls.js';
|
|
25
25
|
*/
|
26
26
|
export async function getCallsStatus(client, parameters) {
|
27
27
|
async function getStatus(id) {
|
28
|
-
const isTransactions = id.
|
28
|
+
const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2));
|
29
29
|
if (isTransactions) {
|
30
|
-
const chainId = trim(sliceHex(id,
|
31
|
-
const hashes = sliceHex(id, 64)
|
30
|
+
const chainId = trim(sliceHex(id, -64, -32));
|
31
|
+
const hashes = sliceHex(id, 0, -64)
|
32
32
|
.slice(2)
|
33
33
|
.match(/.{1,64}/g);
|
34
34
|
const receipts = await Promise.all(hashes.map((hash) => client.request({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAC9E,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"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"}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import { parseAccount } from '../../accounts/utils/parseAccount.js';
|
2
2
|
import { AccountNotFoundError } from '../../errors/account.js';
|
3
|
+
import { BaseError } from '../../errors/base.js';
|
4
|
+
import { AtomicityNotSupportedError, UnsupportedNonOptionalCapabilityError, } from '../../errors/rpc.js';
|
3
5
|
import { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js';
|
4
6
|
import { concat } from '../../utils/data/concat.js';
|
5
7
|
import { hexToBigInt } from '../../utils/encoding/fromHex.js';
|
6
8
|
import { numberToHex } from '../../utils/encoding/toHex.js';
|
7
9
|
import { getTransactionError } from '../../utils/errors/getTransactionError.js';
|
8
10
|
import { sendTransaction } from './sendTransaction.js';
|
9
|
-
export const
|
11
|
+
export const fallbackMagicIdentifier = '0x5792579257925792579257925792579257925792579257925792579257925792';
|
10
12
|
/**
|
11
13
|
* Requests the connected wallet to send a batch of calls.
|
12
14
|
*
|
@@ -40,7 +42,7 @@ export const transactionMagicIdentifier = '0x00000000000000000000000000000000000
|
|
40
42
|
* })
|
41
43
|
*/
|
42
44
|
export async function sendCalls(client, parameters) {
|
43
|
-
const { account: account_ = client.account, chain = client.chain, forceAtomic = false, id, version = '2.0.0', } = parameters;
|
45
|
+
const { account: account_ = client.account, capabilities, chain = client.chain, experimental_fallback, forceAtomic = false, id, version = '2.0.0', } = parameters;
|
44
46
|
if (typeof account_ === 'undefined')
|
45
47
|
throw new AccountNotFoundError({
|
46
48
|
docsPath: '/docs/actions/wallet/sendCalls',
|
@@ -68,7 +70,7 @@ export async function sendCalls(client, parameters) {
|
|
68
70
|
{
|
69
71
|
atomicRequired: forceAtomic,
|
70
72
|
calls,
|
71
|
-
capabilities
|
73
|
+
capabilities,
|
72
74
|
chainId: numberToHex(chain.id),
|
73
75
|
from: account?.address,
|
74
76
|
id,
|
@@ -84,10 +86,31 @@ export async function sendCalls(client, parameters) {
|
|
84
86
|
const error = err;
|
85
87
|
// If the transport does not support EIP-5792, fall back to
|
86
88
|
// `eth_sendTransaction`.
|
87
|
-
if (
|
88
|
-
error.name === '
|
89
|
-
|
90
|
-
|
89
|
+
if (experimental_fallback &&
|
90
|
+
(error.name === 'MethodNotFoundRpcError' ||
|
91
|
+
error.name === 'MethodNotSupportedRpcError' ||
|
92
|
+
error.details
|
93
|
+
.toLowerCase()
|
94
|
+
.includes('does not exist / is not available') ||
|
95
|
+
error.details.toLowerCase().includes('missing or invalid. request()') ||
|
96
|
+
error.details
|
97
|
+
.toLowerCase()
|
98
|
+
.includes('did not match any variant of untagged enum'))) {
|
99
|
+
if (capabilities) {
|
100
|
+
const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);
|
101
|
+
if (hasNonOptionalCapability) {
|
102
|
+
const message = 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.';
|
103
|
+
throw new UnsupportedNonOptionalCapabilityError(new BaseError(message, {
|
104
|
+
details: message,
|
105
|
+
}));
|
106
|
+
}
|
107
|
+
}
|
108
|
+
if (forceAtomic && calls.length > 1) {
|
109
|
+
const message = '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.';
|
110
|
+
throw new AtomicityNotSupportedError(new BaseError(message, {
|
111
|
+
details: message,
|
112
|
+
}));
|
113
|
+
}
|
91
114
|
const promises = [];
|
92
115
|
for (const call of calls) {
|
93
116
|
const promise = sendTransaction(client, {
|
@@ -103,9 +126,9 @@ export async function sendCalls(client, parameters) {
|
|
103
126
|
const hashes = await Promise.all(promises);
|
104
127
|
return {
|
105
128
|
id: concat([
|
106
|
-
transactionMagicIdentifier,
|
107
|
-
numberToHex(chain.id, { size: 32 }),
|
108
129
|
...hashes,
|
130
|
+
numberToHex(chain.id, { size: 32 }),
|
131
|
+
fallbackMagicIdentifier,
|
109
132
|
]),
|
110
133
|
};
|
111
134
|
}
|
@@ -116,20 +139,4 @@ export async function sendCalls(client, parameters) {
|
|
116
139
|
});
|
117
140
|
}
|
118
141
|
}
|
119
|
-
function formatRequestCapabilities(capabilities) {
|
120
|
-
const paymasterService = capabilities?.paymasterService
|
121
|
-
? Object.entries(capabilities.paymasterService).reduce((paymasterService, [chainId, value]) => ({
|
122
|
-
...(paymasterService ?? {}),
|
123
|
-
[numberToHex(Number(chainId))]: value,
|
124
|
-
}), {})
|
125
|
-
: undefined;
|
126
|
-
return {
|
127
|
-
...capabilities,
|
128
|
-
...(paymasterService
|
129
|
-
? {
|
130
|
-
paymasterService,
|
131
|
-
}
|
132
|
-
: {}),
|
133
|
-
};
|
134
|
-
}
|
135
142
|
//# sourceMappingURL=sendCalls.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAGnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"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"}
|
package/_esm/errors/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '2.30.0-jxom-send-calls-fallback-
|
1
|
+
export const version = '2.30.0-jxom-send-calls-fallback-20250515091127';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -9,11 +9,12 @@ import type { Chain, DeriveChain } from '../../types/chain.js';
|
|
9
9
|
import type { WalletSendCallsParameters } from '../../types/eip1193.js';
|
10
10
|
import type { Prettify } from '../../types/utils.js';
|
11
11
|
import type { RequestErrorType } from '../../utils/buildRequest.js';
|
12
|
-
export declare const
|
12
|
+
export declare const fallbackMagicIdentifier = "0x5792579257925792579257925792579257925792579257925792579257925792";
|
13
13
|
export type SendCallsParameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined, chainOverride extends Chain | undefined = Chain | undefined, calls extends readonly unknown[] = readonly unknown[], _chain extends Chain | undefined = DeriveChain<chain, chainOverride>> = {
|
14
14
|
chain?: chainOverride | Chain | undefined;
|
15
15
|
calls: Calls<Narrow<calls>>;
|
16
16
|
capabilities?: ExtractCapabilities<'sendCalls', 'Request'> | undefined;
|
17
|
+
experimental_fallback?: boolean | undefined;
|
17
18
|
forceAtomic?: boolean | undefined;
|
18
19
|
id?: string | undefined;
|
19
20
|
version?: WalletSendCallsParameters[number]['version'] | undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.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;
|
1
|
+
{"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.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;AAO5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAOnE,eAAO,MAAM,uBAAuB,uEACkC,CAAA;AAEtE,MAAM,MAAM,mBAAmB,CAC7B,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACzD,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EAC3D,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAErD,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,IAClE;IACF,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;IACzC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3B,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;IACtE,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3C,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,OAAO,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CACnE,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,SAAS,CAAA;IACzE,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,SAAS,CAC7B,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EACtC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAC/C,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEnD,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,GACpE,OAAO,CAAC,mBAAmB,CAAC,CA4H9B"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "2.30.0-jxom-send-calls-fallback-
|
1
|
+
export declare const version = "2.30.0-jxom-send-calls-fallback-20250515091127";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -37,11 +37,9 @@ export type DefaultCapabilitiesSchema = {
|
|
37
37
|
sendCalls: {
|
38
38
|
Request: {
|
39
39
|
paymasterService?: {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
url: string;
|
44
|
-
};
|
40
|
+
context?: Record<string, any> | undefined;
|
41
|
+
optional?: boolean | undefined;
|
42
|
+
url: string;
|
45
43
|
} | undefined;
|
46
44
|
};
|
47
45
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../types/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,kDAAkD,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEvE,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE;YACP,sBAAsB,CAAC,EACnB;gBACE,OAAO,EAAE,uBAAuB,CAAA;aACjC,GACD,SAAS,CAAA;YACb,2BAA2B,CAAC,EACxB,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,GACrD,SAAS,CAAA;SACd,CAAA;QACD,UAAU,EAAE;YACV,2BAA2B,CAAC,EACxB;gBACE,OAAO,EAAE,MAAM,CAAA;gBACf,SAAS,EAAE,GAAG,CAAA;aACf,GACD,SAAS,CAAA;YACb,oBAAoB,CAAC,EAAE,SAAS,uBAAuB,EAAE,GAAG,SAAS,CAAA;SACtE,CAAA;KACF,CAAA;IACD,eAAe,EAAE;QACf,UAAU,EAAE;YACV,MAAM,CAAC,EACH;gBACE,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,aAAa,CAAA;aAC9C,GACD,SAAS,CAAA;YACb,sBAAsB,CAAC,EACnB;gBACE,QAAQ,EAAE,CACN,SAAS,GACT,MAAM,GACN,gBAAgB,GAChB,eAAe,CAClB,EAAE,CAAA;gBACH,SAAS,EAAE,OAAO,CAAA;aACnB,GACD,SAAS,CAAA;YACb,gBAAgB,CAAC,EACb;gBACE,SAAS,EAAE,OAAO,CAAA;aACnB,GACD,SAAS,CAAA;SACd,CAAA;KACF,CAAA;IACD,SAAS,EAAE;QACT,OAAO,EAAE;YACP,gBAAgB,CAAC,EACb;gBACE,
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../types/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,kDAAkD,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEvE,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE;YACP,sBAAsB,CAAC,EACnB;gBACE,OAAO,EAAE,uBAAuB,CAAA;aACjC,GACD,SAAS,CAAA;YACb,2BAA2B,CAAC,EACxB,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,GACrD,SAAS,CAAA;SACd,CAAA;QACD,UAAU,EAAE;YACV,2BAA2B,CAAC,EACxB;gBACE,OAAO,EAAE,MAAM,CAAA;gBACf,SAAS,EAAE,GAAG,CAAA;aACf,GACD,SAAS,CAAA;YACb,oBAAoB,CAAC,EAAE,SAAS,uBAAuB,EAAE,GAAG,SAAS,CAAA;SACtE,CAAA;KACF,CAAA;IACD,eAAe,EAAE;QACf,UAAU,EAAE;YACV,MAAM,CAAC,EACH;gBACE,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,aAAa,CAAA;aAC9C,GACD,SAAS,CAAA;YACb,sBAAsB,CAAC,EACnB;gBACE,QAAQ,EAAE,CACN,SAAS,GACT,MAAM,GACN,gBAAgB,GAChB,eAAe,CAClB,EAAE,CAAA;gBACH,SAAS,EAAE,OAAO,CAAA;aACnB,GACD,SAAS,CAAA;YACb,gBAAgB,CAAC,EACb;gBACE,SAAS,EAAE,OAAO,CAAA;aACnB,GACD,SAAS,CAAA;SACd,CAAA;KACF,CAAA;IACD,SAAS,EAAE;QACT,OAAO,EAAE;YACP,gBAAgB,CAAC,EACb;gBACE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;gBACzC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;gBAC9B,GAAG,EAAE,MAAM,CAAA;aACZ,GACD,SAAS,CAAA;SACd,CAAA;KACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI;IACxE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,GAAG,YAAY,CAAA;AAEhB,MAAM,MAAM,qBAAqB,CAC/B,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,GAAG,IAC9B;KACD,OAAO,IAAI,EAAE,GAAG,YAAY;CAC9B,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,MAAM,EACrB,GAAG,SAAS,SAAS,GAAG,YAAY,IAClC,QAAQ,CACV,MAAM,SAAS,MAAM,kBAAkB,GACnC,kBAAkB,CAAC,MAAM,CAAC,SAAS;KAChC,CAAC,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CACpD,GACC,YAAY,CAAC,KAAK,CAAC,GACnB,YAAY,GACd,YAAY,CACjB,CAAA"}
|
@@ -13,7 +13,7 @@ import { sliceHex } from '../../utils/data/slice.js'
|
|
13
13
|
import { trim } from '../../utils/data/trim.js'
|
14
14
|
import { hexToBigInt, hexToNumber } from '../../utils/encoding/fromHex.js'
|
15
15
|
import { receiptStatuses } from '../../utils/formatters/transactionReceipt.js'
|
16
|
-
import {
|
16
|
+
import { fallbackMagicIdentifier } from './sendCalls.js'
|
17
17
|
|
18
18
|
export type GetCallsStatusParameters = { id: string }
|
19
19
|
|
@@ -62,10 +62,10 @@ export async function getCallsStatus<
|
|
62
62
|
parameters: GetCallsStatusParameters,
|
63
63
|
): Promise<GetCallsStatusReturnType> {
|
64
64
|
async function getStatus(id: Hex) {
|
65
|
-
const isTransactions = id.
|
65
|
+
const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2))
|
66
66
|
if (isTransactions) {
|
67
|
-
const chainId = trim(sliceHex(id,
|
68
|
-
const hashes = sliceHex(id, 64)
|
67
|
+
const chainId = trim(sliceHex(id, -64, -32))
|
68
|
+
const hashes = sliceHex(id, 0, -64)
|
69
69
|
.slice(2)
|
70
70
|
.match(/.{1,64}/g)
|
71
71
|
|
@@ -3,7 +3,11 @@ import { parseAccount } from '../../accounts/utils/parseAccount.js'
|
|
3
3
|
import type { Client } from '../../clients/createClient.js'
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
5
|
import { AccountNotFoundError } from '../../errors/account.js'
|
6
|
-
import
|
6
|
+
import { BaseError } from '../../errors/base.js'
|
7
|
+
import {
|
8
|
+
AtomicityNotSupportedError,
|
9
|
+
UnsupportedNonOptionalCapabilityError,
|
10
|
+
} from '../../errors/rpc.js'
|
7
11
|
import type { ErrorType } from '../../errors/utils.js'
|
8
12
|
import type { Account, GetAccountParameter } from '../../types/account.js'
|
9
13
|
import type { Call, Calls } from '../../types/calls.js'
|
@@ -20,8 +24,8 @@ import { numberToHex } from '../../utils/encoding/toHex.js'
|
|
20
24
|
import { getTransactionError } from '../../utils/errors/getTransactionError.js'
|
21
25
|
import { sendTransaction } from './sendTransaction.js'
|
22
26
|
|
23
|
-
export const
|
24
|
-
'
|
27
|
+
export const fallbackMagicIdentifier =
|
28
|
+
'0x5792579257925792579257925792579257925792579257925792579257925792'
|
25
29
|
|
26
30
|
export type SendCallsParameters<
|
27
31
|
chain extends Chain | undefined = Chain | undefined,
|
@@ -34,6 +38,7 @@ export type SendCallsParameters<
|
|
34
38
|
chain?: chainOverride | Chain | undefined
|
35
39
|
calls: Calls<Narrow<calls>>
|
36
40
|
capabilities?: ExtractCapabilities<'sendCalls', 'Request'> | undefined
|
41
|
+
experimental_fallback?: boolean | undefined
|
37
42
|
forceAtomic?: boolean | undefined
|
38
43
|
id?: string | undefined
|
39
44
|
version?: WalletSendCallsParameters[number]['version'] | undefined
|
@@ -89,7 +94,9 @@ export async function sendCalls<
|
|
89
94
|
): Promise<SendCallsReturnType> {
|
90
95
|
const {
|
91
96
|
account: account_ = client.account,
|
97
|
+
capabilities,
|
92
98
|
chain = client.chain,
|
99
|
+
experimental_fallback,
|
93
100
|
forceAtomic = false,
|
94
101
|
id,
|
95
102
|
version = '2.0.0',
|
@@ -127,7 +134,7 @@ export async function sendCalls<
|
|
127
134
|
{
|
128
135
|
atomicRequired: forceAtomic,
|
129
136
|
calls,
|
130
|
-
capabilities
|
137
|
+
capabilities,
|
131
138
|
chainId: numberToHex(chain!.id),
|
132
139
|
from: account?.address,
|
133
140
|
id,
|
@@ -145,11 +152,41 @@ export async function sendCalls<
|
|
145
152
|
// If the transport does not support EIP-5792, fall back to
|
146
153
|
// `eth_sendTransaction`.
|
147
154
|
if (
|
148
|
-
|
149
|
-
error.name === '
|
150
|
-
|
151
|
-
|
155
|
+
experimental_fallback &&
|
156
|
+
(error.name === 'MethodNotFoundRpcError' ||
|
157
|
+
error.name === 'MethodNotSupportedRpcError' ||
|
158
|
+
error.details
|
159
|
+
.toLowerCase()
|
160
|
+
.includes('does not exist / is not available') ||
|
161
|
+
error.details.toLowerCase().includes('missing or invalid. request()') ||
|
162
|
+
error.details
|
163
|
+
.toLowerCase()
|
164
|
+
.includes('did not match any variant of untagged enum'))
|
152
165
|
) {
|
166
|
+
if (capabilities) {
|
167
|
+
const hasNonOptionalCapability = Object.values(capabilities).some(
|
168
|
+
(capability) => !capability.optional,
|
169
|
+
)
|
170
|
+
if (hasNonOptionalCapability) {
|
171
|
+
const message =
|
172
|
+
'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.'
|
173
|
+
throw new UnsupportedNonOptionalCapabilityError(
|
174
|
+
new BaseError(message, {
|
175
|
+
details: message,
|
176
|
+
}),
|
177
|
+
)
|
178
|
+
}
|
179
|
+
}
|
180
|
+
if (forceAtomic && calls.length > 1) {
|
181
|
+
const message =
|
182
|
+
'`forceAtomic` is not supported on fallback to `eth_sendTransaction`.'
|
183
|
+
throw new AtomicityNotSupportedError(
|
184
|
+
new BaseError(message, {
|
185
|
+
details: message,
|
186
|
+
}),
|
187
|
+
)
|
188
|
+
}
|
189
|
+
|
153
190
|
const promises: Promise<Hex>[] = []
|
154
191
|
for (const call of calls) {
|
155
192
|
const promise = sendTransaction(client, {
|
@@ -165,9 +202,9 @@ export async function sendCalls<
|
|
165
202
|
const hashes = await Promise.all(promises)
|
166
203
|
return {
|
167
204
|
id: concat([
|
168
|
-
transactionMagicIdentifier,
|
169
|
-
numberToHex(chain!.id, { size: 32 }),
|
170
205
|
...hashes,
|
206
|
+
numberToHex(chain!.id, { size: 32 }),
|
207
|
+
fallbackMagicIdentifier,
|
171
208
|
]),
|
172
209
|
}
|
173
210
|
}
|
@@ -179,26 +216,3 @@ export async function sendCalls<
|
|
179
216
|
})
|
180
217
|
}
|
181
218
|
}
|
182
|
-
|
183
|
-
function formatRequestCapabilities(
|
184
|
-
capabilities: ExtractCapabilities<'sendCalls', 'Request'> | undefined,
|
185
|
-
) {
|
186
|
-
const paymasterService = capabilities?.paymasterService
|
187
|
-
? Object.entries(capabilities.paymasterService).reduce(
|
188
|
-
(paymasterService, [chainId, value]) => ({
|
189
|
-
...(paymasterService ?? {}),
|
190
|
-
[numberToHex(Number(chainId))]: value,
|
191
|
-
}),
|
192
|
-
{},
|
193
|
-
)
|
194
|
-
: undefined
|
195
|
-
|
196
|
-
return {
|
197
|
-
...capabilities,
|
198
|
-
...(paymasterService
|
199
|
-
? {
|
200
|
-
paymasterService,
|
201
|
-
}
|
202
|
-
: {}),
|
203
|
-
}
|
204
|
-
}
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.30.0-jxom-send-calls-fallback-
|
1
|
+
export const version = '2.30.0-jxom-send-calls-fallback-20250515091127'
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "viem",
|
3
3
|
"description": "TypeScript Interface for Ethereum",
|
4
|
-
"version": "2.30.0-jxom-send-calls-fallback-
|
4
|
+
"version": "2.30.0-jxom-send-calls-fallback-20250515091127",
|
5
5
|
"main": "./_cjs/index.js",
|
6
6
|
"module": "./_esm/index.js",
|
7
7
|
"types": "./_types/index.d.ts",
|
package/types/capabilities.ts
CHANGED
@@ -60,11 +60,9 @@ export type DefaultCapabilitiesSchema = {
|
|
60
60
|
Request: {
|
61
61
|
paymasterService?:
|
62
62
|
| {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
url: string
|
67
|
-
}
|
63
|
+
context?: Record<string, any> | undefined
|
64
|
+
optional?: boolean | undefined
|
65
|
+
url: string
|
68
66
|
}
|
69
67
|
| undefined
|
70
68
|
}
|