viem 2.7.9 → 2.7.10
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 +10 -0
- package/_cjs/accounts/toAccount.js +2 -2
- package/_cjs/accounts/toAccount.js.map +1 -1
- package/_cjs/actions/public/call.js +1 -1
- package/_cjs/actions/public/call.js.map +1 -1
- package/_cjs/chains/definitions/base.js +6 -0
- package/_cjs/chains/definitions/base.js.map +1 -1
- package/_cjs/chains/definitions/baseGoerli.js +5 -0
- package/_cjs/chains/definitions/baseGoerli.js.map +1 -1
- package/_cjs/chains/definitions/baseSepolia.js +6 -0
- package/_cjs/chains/definitions/baseSepolia.js.map +1 -1
- package/_cjs/chains/definitions/optimism.js +5 -0
- package/_cjs/chains/definitions/optimism.js.map +1 -1
- package/_cjs/chains/definitions/optimismGoerli.js +5 -0
- package/_cjs/chains/definitions/optimismGoerli.js.map +1 -1
- package/_cjs/chains/definitions/optimismSepolia.js +5 -0
- package/_cjs/chains/definitions/optimismSepolia.js.map +1 -1
- package/_cjs/chains/definitions/pgn.js +5 -0
- package/_cjs/chains/definitions/pgn.js.map +1 -1
- package/_cjs/chains/definitions/pgnTestnet.js +10 -0
- package/_cjs/chains/definitions/pgnTestnet.js.map +1 -1
- package/_cjs/chains/definitions/xdc.js +6 -0
- package/_cjs/chains/definitions/xdc.js.map +1 -1
- package/_cjs/chains/definitions/xdcTestnet.js +6 -0
- package/_cjs/chains/definitions/xdcTestnet.js.map +1 -1
- package/_cjs/chains/definitions/zora.js +5 -0
- package/_cjs/chains/definitions/zora.js.map +1 -1
- package/_cjs/chains/definitions/zoraSepolia.js +5 -0
- package/_cjs/chains/definitions/zoraSepolia.js.map +1 -1
- package/_cjs/chains/opStack/abis.js +458 -1
- package/_cjs/chains/opStack/abis.js.map +1 -1
- package/_cjs/errors/address.js +6 -1
- package/_cjs/errors/address.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_cjs/utils/abi/getAbiItem.js +3 -3
- package/_cjs/utils/abi/getAbiItem.js.map +1 -1
- package/_cjs/utils/address/isAddress.js +17 -2
- package/_cjs/utils/address/isAddress.js.map +1 -1
- package/_cjs/utils/address/isAddressEqual.js +2 -2
- package/_cjs/utils/address/isAddressEqual.js.map +1 -1
- package/_cjs/utils/lru.js +23 -0
- package/_cjs/utils/lru.js.map +1 -0
- package/_cjs/utils/transaction/parseTransaction.js +1 -1
- package/_cjs/utils/transaction/parseTransaction.js.map +1 -1
- package/_cjs/utils/transaction/serializeAccessList.js +1 -1
- package/_cjs/utils/transaction/serializeAccessList.js.map +1 -1
- package/_esm/accounts/toAccount.js +2 -2
- package/_esm/accounts/toAccount.js.map +1 -1
- package/_esm/actions/public/call.js +1 -1
- package/_esm/actions/public/call.js.map +1 -1
- package/_esm/chains/definitions/base.js +6 -0
- package/_esm/chains/definitions/base.js.map +1 -1
- package/_esm/chains/definitions/baseGoerli.js +5 -0
- package/_esm/chains/definitions/baseGoerli.js.map +1 -1
- package/_esm/chains/definitions/baseSepolia.js +6 -0
- package/_esm/chains/definitions/baseSepolia.js.map +1 -1
- package/_esm/chains/definitions/optimism.js +5 -0
- package/_esm/chains/definitions/optimism.js.map +1 -1
- package/_esm/chains/definitions/optimismGoerli.js +5 -0
- package/_esm/chains/definitions/optimismGoerli.js.map +1 -1
- package/_esm/chains/definitions/optimismSepolia.js +5 -0
- package/_esm/chains/definitions/optimismSepolia.js.map +1 -1
- package/_esm/chains/definitions/pgn.js +5 -0
- package/_esm/chains/definitions/pgn.js.map +1 -1
- package/_esm/chains/definitions/pgnTestnet.js +10 -0
- package/_esm/chains/definitions/pgnTestnet.js.map +1 -1
- package/_esm/chains/definitions/xdc.js +6 -0
- package/_esm/chains/definitions/xdc.js.map +1 -1
- package/_esm/chains/definitions/xdcTestnet.js +6 -0
- package/_esm/chains/definitions/xdcTestnet.js.map +1 -1
- package/_esm/chains/definitions/zora.js +5 -0
- package/_esm/chains/definitions/zora.js.map +1 -1
- package/_esm/chains/definitions/zoraSepolia.js +5 -0
- package/_esm/chains/definitions/zoraSepolia.js.map +1 -1
- package/_esm/chains/opStack/abis.js +457 -0
- package/_esm/chains/opStack/abis.js.map +1 -1
- package/_esm/errors/address.js +6 -1
- package/_esm/errors/address.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_esm/utils/abi/getAbiItem.js +3 -3
- package/_esm/utils/abi/getAbiItem.js.map +1 -1
- package/_esm/utils/address/isAddress.js +17 -2
- package/_esm/utils/address/isAddress.js.map +1 -1
- package/_esm/utils/address/isAddressEqual.js +2 -2
- package/_esm/utils/address/isAddressEqual.js.map +1 -1
- package/_esm/utils/lru.js +24 -0
- package/_esm/utils/lru.js.map +1 -0
- package/_esm/utils/transaction/parseTransaction.js +1 -1
- package/_esm/utils/transaction/parseTransaction.js.map +1 -1
- package/_esm/utils/transaction/serializeAccessList.js +1 -1
- package/_esm/utils/transaction/serializeAccessList.js.map +1 -1
- package/_types/accounts/toAccount.d.ts.map +1 -1
- package/_types/actions/public/call.d.ts.map +1 -1
- package/_types/chains/definitions/base.d.ts +6 -0
- package/_types/chains/definitions/base.d.ts.map +1 -1
- package/_types/chains/definitions/baseGoerli.d.ts +5 -0
- package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/baseSepolia.d.ts +6 -0
- package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/optimism.d.ts +5 -0
- package/_types/chains/definitions/optimism.d.ts.map +1 -1
- package/_types/chains/definitions/optimismGoerli.d.ts +5 -0
- package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/optimismSepolia.d.ts +5 -0
- package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/pgn.d.ts +5 -0
- package/_types/chains/definitions/pgn.d.ts.map +1 -1
- package/_types/chains/definitions/pgnTestnet.d.ts +10 -0
- package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/xdc.d.ts +6 -8
- package/_types/chains/definitions/xdc.d.ts.map +1 -1
- package/_types/chains/definitions/xdcTestnet.d.ts +6 -8
- package/_types/chains/definitions/xdcTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zora.d.ts +5 -0
- package/_types/chains/definitions/zora.d.ts.map +1 -1
- package/_types/chains/definitions/zoraSepolia.d.ts +5 -0
- package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
- package/_types/chains/opStack/abis.d.ts +626 -0
- package/_types/chains/opStack/abis.d.ts.map +1 -1
- package/_types/errors/address.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/utils/address/isAddress.d.ts +9 -1
- package/_types/utils/address/isAddress.d.ts.map +1 -1
- package/_types/utils/address/isAddressEqual.d.ts.map +1 -1
- package/_types/utils/lru.d.ts +11 -0
- package/_types/utils/lru.d.ts.map +1 -0
- package/_types/utils/transaction/parseTransaction.d.ts.map +1 -1
- package/accounts/toAccount.ts +3 -2
- package/actions/public/call.ts +2 -1
- package/chains/definitions/base.ts +6 -0
- package/chains/definitions/baseGoerli.ts +5 -0
- package/chains/definitions/baseSepolia.ts +6 -0
- package/chains/definitions/optimism.ts +5 -0
- package/chains/definitions/optimismGoerli.ts +5 -0
- package/chains/definitions/optimismSepolia.ts +5 -0
- package/chains/definitions/pgn.ts +5 -0
- package/chains/definitions/pgnTestnet.ts +10 -0
- package/chains/definitions/xdc.ts +6 -0
- package/chains/definitions/xdcTestnet.ts +6 -0
- package/chains/definitions/zora.ts +5 -0
- package/chains/definitions/zoraSepolia.ts +5 -0
- package/chains/opStack/abis.ts +458 -0
- package/errors/address.ts +6 -1
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/utils/abi/getAbiItem.ts +3 -3
- package/utils/address/isAddress.ts +27 -2
- package/utils/address/isAddressEqual.ts +4 -2
- package/utils/lru.ts +20 -0
- package/utils/transaction/parseTransaction.ts +2 -1
- package/utils/transaction/serializeAccessList.ts +1 -1
package/package.json
CHANGED
package/utils/abi/getAbiItem.ts
CHANGED
@@ -155,7 +155,7 @@ export function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean {
|
|
155
155
|
const abiParameterType = abiParameter.type
|
156
156
|
switch (abiParameterType) {
|
157
157
|
case 'address':
|
158
|
-
return isAddress(arg as Address)
|
158
|
+
return isAddress(arg as Address, { strict: false })
|
159
159
|
case 'bool':
|
160
160
|
return argType === 'boolean'
|
161
161
|
case 'function':
|
@@ -233,9 +233,9 @@ export function getAmbiguousTypes(
|
|
233
233
|
const ambiguous = (() => {
|
234
234
|
if (types.includes('address') && types.includes('bytes20')) return true
|
235
235
|
if (types.includes('address') && types.includes('string'))
|
236
|
-
return isAddress(args[parameterIndex] as Address)
|
236
|
+
return isAddress(args[parameterIndex] as Address, { strict: false })
|
237
237
|
if (types.includes('address') && types.includes('bytes'))
|
238
|
-
return isAddress(args[parameterIndex] as Address)
|
238
|
+
return isAddress(args[parameterIndex] as Address, { strict: false })
|
239
239
|
return false
|
240
240
|
})()
|
241
241
|
|
@@ -1,10 +1,35 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
import type { ErrorType } from '../../errors/utils.js'
|
3
|
+
import { LruMap } from '../lru.js'
|
4
|
+
import { checksumAddress } from './getAddress.js'
|
3
5
|
|
4
6
|
const addressRegex = /^0x[a-fA-F0-9]{40}$/
|
5
7
|
|
8
|
+
const isAddressCache = /*#__PURE__*/ new LruMap<boolean>(8192)
|
9
|
+
|
10
|
+
export type IsAddressOptions = {
|
11
|
+
/**
|
12
|
+
* Enables strict mode. Whether or not to compare the address against its checksum.
|
13
|
+
*
|
14
|
+
* @default true
|
15
|
+
*/
|
16
|
+
strict?: boolean
|
17
|
+
}
|
18
|
+
|
6
19
|
export type IsAddressErrorType = ErrorType
|
7
20
|
|
8
|
-
export function isAddress(
|
9
|
-
|
21
|
+
export function isAddress(
|
22
|
+
address: string,
|
23
|
+
{ strict = true }: IsAddressOptions = {},
|
24
|
+
): address is Address {
|
25
|
+
if (isAddressCache.has(address)) return isAddressCache.get(address)!
|
26
|
+
|
27
|
+
const result = (() => {
|
28
|
+
if (!addressRegex.test(address)) return false
|
29
|
+
if (address.toLowerCase() === address) return true
|
30
|
+
if (strict) return checksumAddress(address as Address) === address
|
31
|
+
return true
|
32
|
+
})()
|
33
|
+
isAddressCache.set(address, result)
|
34
|
+
return result
|
10
35
|
}
|
@@ -11,7 +11,9 @@ export type IsAddressEqualReturnType = boolean
|
|
11
11
|
export type IsAddressEqualErrorType = InvalidAddressErrorType | ErrorType
|
12
12
|
|
13
13
|
export function isAddressEqual(a: Address, b: Address) {
|
14
|
-
if (!isAddress(a
|
15
|
-
|
14
|
+
if (!isAddress(a, { strict: false }))
|
15
|
+
throw new InvalidAddressError({ address: a })
|
16
|
+
if (!isAddress(b, { strict: false }))
|
17
|
+
throw new InvalidAddressError({ address: b })
|
16
18
|
return a.toLowerCase() === b.toLowerCase()
|
17
19
|
}
|
package/utils/lru.ts
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
/**
|
2
|
+
* Map with a LRU (Least recently used) policy.
|
3
|
+
*
|
4
|
+
* @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU
|
5
|
+
*/
|
6
|
+
export class LruMap<value = unknown> extends Map<string, value> {
|
7
|
+
maxSize: number
|
8
|
+
|
9
|
+
constructor(size: number) {
|
10
|
+
super()
|
11
|
+
this.maxSize = size
|
12
|
+
}
|
13
|
+
|
14
|
+
override set(key: string, value: value) {
|
15
|
+
super.set(key, value)
|
16
|
+
if (this.maxSize && this.size > this.maxSize)
|
17
|
+
this.delete(this.keys().next().value)
|
18
|
+
return this
|
19
|
+
}
|
20
|
+
}
|
@@ -326,7 +326,8 @@ export function parseAccessList(accessList_: RecursiveArray<Hex>): AccessList {
|
|
326
326
|
for (let i = 0; i < accessList_.length; i++) {
|
327
327
|
const [address, storageKeys] = accessList_[i] as [Hex, Hex[]]
|
328
328
|
|
329
|
-
if (!isAddress(address
|
329
|
+
if (!isAddress(address, { strict: false }))
|
330
|
+
throw new InvalidAddressError({ address })
|
330
331
|
|
331
332
|
accessList.push({
|
332
333
|
address: address,
|