viem 2.21.13 → 2.21.14
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +6 -0
- package/_cjs/errors/version.js +1 -1
- package/_cjs/experimental/eip7702/actions/signAuthorization.js +5 -1
- package/_cjs/experimental/eip7702/actions/signAuthorization.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/experimental/eip7702/actions/signAuthorization.js +5 -1
- package/_esm/experimental/eip7702/actions/signAuthorization.js.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/eip7702/actions/signAuthorization.d.ts +5 -1
- package/_types/experimental/eip7702/actions/signAuthorization.d.ts.map +1 -1
- package/errors/version.ts +1 -1
- package/experimental/eip7702/actions/signAuthorization.ts +12 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# viem
|
2
2
|
|
3
|
+
## 2.21.14
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- [`c7c737a4`](https://github.com/wevm/viem/commit/c7c737a472a7b5a46b12340071f9e9480d3975dd) Thanks [@jxom](https://github.com/jxom)! - Added `delegate` parameter to `signAuthorization`.
|
8
|
+
|
3
9
|
## 2.21.13
|
4
10
|
|
5
11
|
### Patch Changes
|
package/_cjs/errors/version.js
CHANGED
@@ -5,14 +5,16 @@ const parseAccount_js_1 = require("../../../accounts/utils/parseAccount.js");
|
|
5
5
|
const getChainId_js_1 = require("../../../actions/public/getChainId.js");
|
6
6
|
const getTransactionCount_js_1 = require("../../../actions/public/getTransactionCount.js");
|
7
7
|
const account_js_1 = require("../../../errors/account.js");
|
8
|
+
const isAddressEqual_js_1 = require("../../../utils/address/isAddressEqual.js");
|
8
9
|
const getAction_js_1 = require("../../../utils/getAction.js");
|
9
10
|
async function signAuthorization(client, parameters) {
|
10
|
-
const { account: account_ = client.account, contractAddress, chainId, nonce, } = parameters;
|
11
|
+
const { account: account_ = client.account, contractAddress, chainId, nonce, delegate: delegate_, } = parameters;
|
11
12
|
if (!account_)
|
12
13
|
throw new account_js_1.AccountNotFoundError({
|
13
14
|
docsPath: '/experimental/eip7702/signAuthorization',
|
14
15
|
});
|
15
16
|
const account = (0, parseAccount_js_1.parseAccount)(account_);
|
17
|
+
const delegate = delegate_ ? (0, parseAccount_js_1.parseAccount)(delegate_) : undefined;
|
16
18
|
if (!account.experimental_signAuthorization)
|
17
19
|
throw new account_js_1.AccountTypeNotSupportedError({
|
18
20
|
docsPath: '/experimental/eip7702/signAuthorization',
|
@@ -35,6 +37,8 @@ async function signAuthorization(client, parameters) {
|
|
35
37
|
address: account.address,
|
36
38
|
blockTag: 'pending',
|
37
39
|
});
|
40
|
+
if (!delegate || (0, isAddressEqual_js_1.isAddressEqual)(account.address, delegate.address))
|
41
|
+
authorization.nonce += 1;
|
38
42
|
}
|
39
43
|
return account.experimental_signAuthorization(authorization);
|
40
44
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":";;AAyFA,8CAyDC;AAhJD,6EAGgD;AAKhD,yEAAkE;AAClE,2FAAoF;AAGpF,2DAKmC;AAKnC,gFAAyE;AAEzE,8DAAuD;AA+DhD,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,EACL,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,iCAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,8BAAY,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,yCAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,IAAA,wBAAS,EAAC,MAAM,EAAE,0BAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,IAAA,wBAAS,EACnC,MAAM,EACN,4CAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,IAAI,IAAA,kCAAc,EAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAChE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
|
package/_esm/errors/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '2.21.
|
1
|
+
export const version = '2.21.14';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -2,6 +2,7 @@ import { parseAccount, } from '../../../accounts/utils/parseAccount.js';
|
|
2
2
|
import { getChainId } from '../../../actions/public/getChainId.js';
|
3
3
|
import { getTransactionCount } from '../../../actions/public/getTransactionCount.js';
|
4
4
|
import { AccountNotFoundError, AccountTypeNotSupportedError, } from '../../../errors/account.js';
|
5
|
+
import { isAddressEqual } from '../../../utils/address/isAddressEqual.js';
|
5
6
|
import { getAction } from '../../../utils/getAction.js';
|
6
7
|
/**
|
7
8
|
* Signs an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object.
|
@@ -46,12 +47,13 @@ import { getAction } from '../../../utils/getAction.js';
|
|
46
47
|
* })
|
47
48
|
*/
|
48
49
|
export async function signAuthorization(client, parameters) {
|
49
|
-
const { account: account_ = client.account, contractAddress, chainId, nonce, } = parameters;
|
50
|
+
const { account: account_ = client.account, contractAddress, chainId, nonce, delegate: delegate_, } = parameters;
|
50
51
|
if (!account_)
|
51
52
|
throw new AccountNotFoundError({
|
52
53
|
docsPath: '/experimental/eip7702/signAuthorization',
|
53
54
|
});
|
54
55
|
const account = parseAccount(account_);
|
56
|
+
const delegate = delegate_ ? parseAccount(delegate_) : undefined;
|
55
57
|
if (!account.experimental_signAuthorization)
|
56
58
|
throw new AccountTypeNotSupportedError({
|
57
59
|
docsPath: '/experimental/eip7702/signAuthorization',
|
@@ -74,6 +76,8 @@ export async function signAuthorization(client, parameters) {
|
|
74
76
|
address: account.address,
|
75
77
|
blockTag: 'pending',
|
76
78
|
});
|
79
|
+
if (!delegate || isAddressEqual(account.address, delegate.address))
|
80
|
+
authorization.nonce += 1;
|
77
81
|
}
|
78
82
|
return account.experimental_signAuthorization(authorization);
|
79
83
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAKhD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAGpF,OAAO,EACL,oBAAoB,EAEpB,4BAA4B,GAE7B,MAAM,4BAA4B,CAAA;AAKnC,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAqBvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,EACL,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,oBAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,4BAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,SAAS,CACnC,MAAM,EACN,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAChE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "2.21.
|
1
|
+
export declare const version = "2.21.14";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { Address } from 'abitype';
|
1
2
|
import type { Account } from '../../../accounts/types.js';
|
2
3
|
import { type ParseAccountErrorType } from '../../../accounts/utils/parseAccount.js';
|
3
4
|
import type { SignAuthorizationErrorType as SignAuthorizationErrorType_account, SignAuthorizationReturnType as SignAuthorizationReturnType_account } from '../../../accounts/utils/signAuthorization.js';
|
@@ -10,7 +11,10 @@ import type { Chain } from '../../../types/chain.js';
|
|
10
11
|
import type { PartialBy } from '../../../types/utils.js';
|
11
12
|
import type { RequestErrorType } from '../../../utils/buildRequest.js';
|
12
13
|
import type { Authorization } from '../types/authorization.js';
|
13
|
-
export type SignAuthorizationParameters<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'
|
14
|
+
export type SignAuthorizationParameters<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'> & {
|
15
|
+
/** Delegate of the EIP-7702 Authorization Transaction. @default `account` */
|
16
|
+
delegate?: Address | Account | undefined;
|
17
|
+
};
|
14
18
|
export type SignAuthorizationReturnType = SignAuthorizationReturnType_account;
|
15
19
|
export type SignAuthorizationErrorType = ParseAccountErrorType | RequestErrorType | AccountNotFoundErrorType | AccountTypeNotSupportedErrorType | SignAuthorizationErrorType_account | ErrorType;
|
16
20
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signAuthorization.d.ts","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EACV,0BAA0B,IAAI,kCAAkC,EAChE,2BAA2B,IAAI,mCAAmC,EACnE,MAAM,8CAA8C,CAAA;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,gCAAgC,EACtC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"signAuthorization.d.ts","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EACV,0BAA0B,IAAI,kCAAkC,EAChE,2BAA2B,IAAI,mCAAmC,EACnE,MAAM,8CAA8C,CAAA;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,gCAAgC,EACtC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,IACvD,mBAAmB,CAAC,OAAO,CAAC,GAC9B,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;CACzC,CAAA;AAEH,MAAM,MAAM,2BAA2B,GAAG,mCAAmC,CAAA;AAE7E,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,gBAAgB,GAChB,wBAAwB,GACxB,gCAAgC,GAChC,kCAAkC,GAClC,SAAS,CAAA;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,EAEnC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC/C,OAAO,CAAC,2BAA2B,CAAC,CAmDtC"}
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.21.
|
1
|
+
export const version = '2.21.14'
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { Address } from 'abitype'
|
1
2
|
import type { Account } from '../../../accounts/types.js'
|
2
3
|
import {
|
3
4
|
type ParseAccountErrorType,
|
@@ -21,13 +22,18 @@ import type { ErrorType } from '../../../errors/utils.js'
|
|
21
22
|
import type { GetAccountParameter } from '../../../types/account.js'
|
22
23
|
import type { Chain } from '../../../types/chain.js'
|
23
24
|
import type { PartialBy } from '../../../types/utils.js'
|
25
|
+
import { isAddressEqual } from '../../../utils/address/isAddressEqual.js'
|
24
26
|
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
25
27
|
import { getAction } from '../../../utils/getAction.js'
|
26
28
|
import type { Authorization } from '../types/authorization.js'
|
27
29
|
|
28
30
|
export type SignAuthorizationParameters<
|
29
31
|
account extends Account | undefined = Account | undefined,
|
30
|
-
> = GetAccountParameter<account> &
|
32
|
+
> = GetAccountParameter<account> &
|
33
|
+
PartialBy<Authorization, 'chainId' | 'nonce'> & {
|
34
|
+
/** Delegate of the EIP-7702 Authorization Transaction. @default `account` */
|
35
|
+
delegate?: Address | Account | undefined
|
36
|
+
}
|
31
37
|
|
32
38
|
export type SignAuthorizationReturnType = SignAuthorizationReturnType_account
|
33
39
|
|
@@ -93,6 +99,7 @@ export async function signAuthorization<
|
|
93
99
|
contractAddress,
|
94
100
|
chainId,
|
95
101
|
nonce,
|
102
|
+
delegate: delegate_,
|
96
103
|
} = parameters
|
97
104
|
|
98
105
|
if (!account_)
|
@@ -101,6 +108,8 @@ export async function signAuthorization<
|
|
101
108
|
})
|
102
109
|
const account = parseAccount(account_)
|
103
110
|
|
111
|
+
const delegate = delegate_ ? parseAccount(delegate_) : undefined
|
112
|
+
|
104
113
|
if (!account.experimental_signAuthorization)
|
105
114
|
throw new AccountTypeNotSupportedError({
|
106
115
|
docsPath: '/experimental/eip7702/signAuthorization',
|
@@ -130,6 +139,8 @@ export async function signAuthorization<
|
|
130
139
|
address: account.address,
|
131
140
|
blockTag: 'pending',
|
132
141
|
})
|
142
|
+
if (!delegate || isAddressEqual(account.address, delegate.address))
|
143
|
+
authorization.nonce += 1
|
133
144
|
}
|
134
145
|
|
135
146
|
return account.experimental_signAuthorization(authorization)
|