viem 2.21.13 → 2.21.14
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 -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)
|