viem 1.9.5 → 1.10.1
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/cjs/accounts/index.js +19 -19
- package/dist/cjs/accounts/index.js.map +1 -1
- package/dist/cjs/actions/wallet/signTypedData.js +1 -13
- package/dist/cjs/actions/wallet/signTypedData.js.map +1 -1
- package/dist/cjs/chains/definitions/base.js +1 -3
- package/dist/cjs/chains/definitions/base.js.map +1 -1
- package/dist/cjs/chains/definitions/baseGoerli.js +1 -3
- package/dist/cjs/chains/definitions/baseGoerli.js.map +1 -1
- package/dist/cjs/chains/definitions/meter.js +22 -0
- package/dist/cjs/chains/definitions/meter.js.map +1 -0
- package/dist/cjs/chains/definitions/meterTestnet.js +25 -0
- package/dist/cjs/chains/definitions/meterTestnet.js.map +1 -0
- package/dist/cjs/chains/definitions/opBNB.js +28 -0
- package/dist/cjs/chains/definitions/opBNB.js.map +1 -0
- package/dist/cjs/chains/definitions/opBNBTestnet.js +29 -0
- package/dist/cjs/chains/definitions/opBNBTestnet.js.map +1 -0
- package/dist/cjs/chains/definitions/optimism.js +0 -2
- package/dist/cjs/chains/definitions/optimism.js.map +1 -1
- package/dist/cjs/chains/definitions/optimismGoerli.js +0 -2
- package/dist/cjs/chains/definitions/optimismGoerli.js.map +1 -1
- package/dist/cjs/chains/definitions/plinga.js +31 -0
- package/dist/cjs/chains/definitions/plinga.js.map +1 -0
- package/dist/cjs/chains/definitions/scrollSepolia.js +6 -0
- package/dist/cjs/chains/definitions/scrollSepolia.js.map +1 -1
- package/dist/cjs/chains/definitions/zora.js +0 -2
- package/dist/cjs/chains/definitions/zora.js.map +1 -1
- package/dist/cjs/chains/definitions/zoraTestnet.js +0 -2
- package/dist/cjs/chains/definitions/zoraTestnet.js.map +1 -1
- package/dist/cjs/chains/index.js +12 -2
- package/dist/cjs/chains/index.js.map +1 -1
- package/dist/cjs/errors/node.js +1 -1
- package/dist/cjs/errors/node.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/errors/version.js.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/buildRequest.js +2 -0
- package/dist/cjs/utils/buildRequest.js.map +1 -1
- package/dist/cjs/utils/errors/getCallError.js +4 -3
- package/dist/cjs/utils/errors/getCallError.js.map +1 -1
- package/dist/cjs/utils/errors/getContractError.js +2 -1
- package/dist/cjs/utils/errors/getContractError.js.map +1 -1
- package/dist/cjs/utils/errors/getEstimateGasError.js +4 -3
- package/dist/cjs/utils/errors/getEstimateGasError.js.map +1 -1
- package/dist/cjs/utils/errors/getNodeError.js +16 -10
- package/dist/cjs/utils/errors/getNodeError.js.map +1 -1
- package/dist/cjs/utils/errors/getTransactionError.js +4 -3
- package/dist/cjs/utils/errors/getTransactionError.js.map +1 -1
- package/dist/cjs/utils/rpc.js +10 -16
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/cjs/utils/signature/hashTypedData.js +3 -14
- package/dist/cjs/utils/signature/hashTypedData.js.map +1 -1
- package/dist/cjs/utils/typedData.js +27 -1
- package/dist/cjs/utils/typedData.js.map +1 -1
- package/dist/esm/accounts/index.js +9 -9
- package/dist/esm/accounts/index.js.map +1 -1
- package/dist/esm/actions/wallet/signTypedData.js +2 -14
- package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
- package/dist/esm/chains/definitions/base.js +1 -3
- package/dist/esm/chains/definitions/base.js.map +1 -1
- package/dist/esm/chains/definitions/baseGoerli.js +1 -3
- package/dist/esm/chains/definitions/baseGoerli.js.map +1 -1
- package/dist/esm/chains/definitions/meter.js +19 -0
- package/dist/esm/chains/definitions/meter.js.map +1 -0
- package/dist/esm/chains/definitions/meterTestnet.js +22 -0
- package/dist/esm/chains/definitions/meterTestnet.js.map +1 -0
- package/dist/esm/chains/definitions/opBNB.js +25 -0
- package/dist/esm/chains/definitions/opBNB.js.map +1 -0
- package/dist/esm/chains/definitions/opBNBTestnet.js +26 -0
- package/dist/esm/chains/definitions/opBNBTestnet.js.map +1 -0
- package/dist/esm/chains/definitions/optimism.js +0 -2
- package/dist/esm/chains/definitions/optimism.js.map +1 -1
- package/dist/esm/chains/definitions/optimismGoerli.js +0 -2
- package/dist/esm/chains/definitions/optimismGoerli.js.map +1 -1
- package/dist/esm/chains/definitions/plinga.js +28 -0
- package/dist/esm/chains/definitions/plinga.js.map +1 -0
- package/dist/esm/chains/definitions/scrollSepolia.js +6 -0
- package/dist/esm/chains/definitions/scrollSepolia.js.map +1 -1
- package/dist/esm/chains/definitions/zora.js +0 -2
- package/dist/esm/chains/definitions/zora.js.map +1 -1
- package/dist/esm/chains/definitions/zoraTestnet.js +0 -2
- package/dist/esm/chains/definitions/zoraTestnet.js.map +1 -1
- package/dist/esm/chains/index.js +5 -0
- package/dist/esm/chains/index.js.map +1 -1
- package/dist/esm/errors/node.js +1 -1
- package/dist/esm/errors/node.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/errors/version.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/buildRequest.js +4 -0
- package/dist/esm/utils/buildRequest.js.map +1 -1
- package/dist/esm/utils/errors/getCallError.js +5 -4
- package/dist/esm/utils/errors/getCallError.js.map +1 -1
- package/dist/esm/utils/errors/getContractError.js +2 -1
- package/dist/esm/utils/errors/getContractError.js.map +1 -1
- package/dist/esm/utils/errors/getEstimateGasError.js +5 -4
- package/dist/esm/utils/errors/getEstimateGasError.js.map +1 -1
- package/dist/esm/utils/errors/getNodeError.js +16 -10
- package/dist/esm/utils/errors/getNodeError.js.map +1 -1
- package/dist/esm/utils/errors/getTransactionError.js +5 -4
- package/dist/esm/utils/errors/getTransactionError.js.map +1 -1
- package/dist/esm/utils/rpc.js +7 -16
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/esm/utils/signature/hashTypedData.js +3 -15
- package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
- package/dist/esm/utils/typedData.js +24 -0
- package/dist/esm/utils/typedData.js.map +1 -1
- package/dist/types/accounts/index.d.ts +9 -9
- package/dist/types/accounts/index.d.ts.map +1 -1
- package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
- package/dist/types/chains/definitions/base.d.ts +1 -1
- package/dist/types/chains/definitions/base.d.ts.map +1 -1
- package/dist/types/chains/definitions/baseGoerli.d.ts +1 -1
- package/dist/types/chains/definitions/baseGoerli.d.ts.map +1 -1
- package/dist/types/chains/definitions/meter.d.ts +25 -0
- package/dist/types/chains/definitions/meter.d.ts.map +1 -0
- package/dist/types/chains/definitions/meterTestnet.d.ts +25 -0
- package/dist/types/chains/definitions/meterTestnet.d.ts.map +1 -0
- package/dist/types/chains/definitions/opBNB.d.ts +31 -0
- package/dist/types/chains/definitions/opBNB.d.ts.map +1 -0
- package/dist/types/chains/definitions/opBNBTestnet.d.ts +32 -0
- package/dist/types/chains/definitions/opBNBTestnet.d.ts.map +1 -0
- package/dist/types/chains/definitions/optimism.d.ts.map +1 -1
- package/dist/types/chains/definitions/optimismGoerli.d.ts.map +1 -1
- package/dist/types/chains/definitions/plinga.d.ts +31 -0
- package/dist/types/chains/definitions/plinga.d.ts.map +1 -0
- package/dist/types/chains/definitions/scrollSepolia.d.ts +6 -0
- package/dist/types/chains/definitions/scrollSepolia.d.ts.map +1 -1
- package/dist/types/chains/definitions/zora.d.ts.map +1 -1
- package/dist/types/chains/definitions/zoraTestnet.d.ts.map +1 -1
- package/dist/types/chains/index.d.ts +5 -0
- package/dist/types/chains/index.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/errors/version.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/chain.d.ts +4 -0
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/utils/buildRequest.d.ts.map +1 -1
- package/dist/types/utils/errors/getCallError.d.ts.map +1 -1
- package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
- package/dist/types/utils/errors/getEstimateGasError.d.ts.map +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts.map +1 -1
- package/dist/types/utils/errors/getTransactionError.d.ts.map +1 -1
- package/dist/types/utils/rpc.d.ts +3 -1
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/dist/types/utils/signature/hashTypedData.d.ts +10 -1
- package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
- package/dist/types/utils/signature/verifyMessage.d.ts +2 -2
- package/dist/types/utils/signature/verifyMessage.d.ts.map +1 -1
- package/dist/types/utils/typedData.d.ts +8 -1
- package/dist/types/utils/typedData.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/accounts/index.ts +10 -9
- package/src/actions/wallet/signTypedData.ts +5 -14
- package/src/chains/definitions/base.ts +1 -3
- package/src/chains/definitions/baseGoerli.ts +1 -3
- package/src/chains/definitions/meter.ts +19 -0
- package/src/chains/definitions/meterTestnet.ts +22 -0
- package/src/chains/definitions/opBNB.ts +26 -0
- package/src/chains/definitions/opBNBTestnet.ts +26 -0
- package/src/chains/definitions/optimism.ts +0 -2
- package/src/chains/definitions/optimismGoerli.ts +0 -2
- package/src/chains/definitions/plinga.ts +28 -0
- package/src/chains/definitions/scrollSepolia.ts +6 -0
- package/src/chains/definitions/zora.ts +0 -2
- package/src/chains/definitions/zoraTestnet.ts +0 -2
- package/src/chains/index.ts +5 -0
- package/src/errors/node.ts +1 -1
- package/src/errors/version.ts +1 -1
- package/src/index.ts +1 -1
- package/src/types/chain.ts +2 -0
- package/src/utils/buildRequest.ts +4 -0
- package/src/utils/errors/getCallError.ts +4 -8
- package/src/utils/errors/getContractError.ts +2 -1
- package/src/utils/errors/getEstimateGasError.ts +4 -8
- package/src/utils/errors/getNodeError.ts +18 -13
- package/src/utils/errors/getTransactionError.ts +4 -8
- package/src/utils/rpc.ts +9 -20
- package/src/utils/signature/hashTypedData.ts +3 -15
- package/src/utils/signature/verifyMessage.ts +2 -2
- package/src/utils/typedData.ts +34 -1
- package/chains/dist/cjs/celo/formatters.js +0 -57
- package/chains/dist/cjs/celo/formatters.js.map +0 -1
- package/chains/dist/cjs/celo/parsers.js +0 -72
- package/chains/dist/cjs/celo/parsers.js.map +0 -1
- package/chains/dist/cjs/celo/serializers.js +0 -75
- package/chains/dist/cjs/celo/serializers.js.map +0 -1
- package/chains/dist/cjs/celo/types.js +0 -3
- package/chains/dist/cjs/celo/types.js.map +0 -1
- package/chains/dist/cjs/index.js +0 -135
- package/chains/dist/cjs/index.js.map +0 -1
- package/chains/dist/cjs/optimism/fees.js +0 -7
- package/chains/dist/cjs/optimism/fees.js.map +0 -1
- package/chains/dist/cjs/optimism/formatters.js +0 -51
- package/chains/dist/cjs/optimism/formatters.js.map +0 -1
- package/chains/dist/cjs/optimism/types.js +0 -3
- package/chains/dist/cjs/optimism/types.js.map +0 -1
- package/chains/dist/cjs/types.js +0 -3
- package/chains/dist/cjs/types.js.map +0 -1
- package/chains/dist/cjs/utils.js +0 -23
- package/chains/dist/cjs/utils.js.map +0 -1
- package/chains/dist/tsconfig.build.tsbuildinfo +0 -1
- package/chains/tsconfig.tsbuildinfo +0 -1
- package/dist/cjs/accounts/wordlists/czech.js +0 -6
- package/dist/cjs/accounts/wordlists/czech.js.map +0 -1
- package/dist/cjs/accounts/wordlists/english.js +0 -6
- package/dist/cjs/accounts/wordlists/english.js.map +0 -1
- package/dist/cjs/accounts/wordlists/french.js +0 -6
- package/dist/cjs/accounts/wordlists/french.js.map +0 -1
- package/dist/cjs/accounts/wordlists/italian.js +0 -6
- package/dist/cjs/accounts/wordlists/italian.js.map +0 -1
- package/dist/cjs/accounts/wordlists/japanese.js +0 -6
- package/dist/cjs/accounts/wordlists/japanese.js.map +0 -1
- package/dist/cjs/accounts/wordlists/korean.js +0 -6
- package/dist/cjs/accounts/wordlists/korean.js.map +0 -1
- package/dist/cjs/accounts/wordlists/simplifiedChinese.js +0 -6
- package/dist/cjs/accounts/wordlists/simplifiedChinese.js.map +0 -1
- package/dist/cjs/accounts/wordlists/spanish.js +0 -6
- package/dist/cjs/accounts/wordlists/spanish.js.map +0 -1
- package/dist/cjs/accounts/wordlists/traditionalChinese.js +0 -6
- package/dist/cjs/accounts/wordlists/traditionalChinese.js.map +0 -1
- package/dist/cjs/chains/optimism/fees.js +0 -7
- package/dist/cjs/chains/optimism/fees.js.map +0 -1
- package/dist/esm/accounts/wordlists/czech.js +0 -2
- package/dist/esm/accounts/wordlists/czech.js.map +0 -1
- package/dist/esm/accounts/wordlists/english.js +0 -2
- package/dist/esm/accounts/wordlists/english.js.map +0 -1
- package/dist/esm/accounts/wordlists/french.js +0 -2
- package/dist/esm/accounts/wordlists/french.js.map +0 -1
- package/dist/esm/accounts/wordlists/italian.js +0 -2
- package/dist/esm/accounts/wordlists/italian.js.map +0 -1
- package/dist/esm/accounts/wordlists/japanese.js +0 -2
- package/dist/esm/accounts/wordlists/japanese.js.map +0 -1
- package/dist/esm/accounts/wordlists/korean.js +0 -2
- package/dist/esm/accounts/wordlists/korean.js.map +0 -1
- package/dist/esm/accounts/wordlists/simplifiedChinese.js +0 -2
- package/dist/esm/accounts/wordlists/simplifiedChinese.js.map +0 -1
- package/dist/esm/accounts/wordlists/spanish.js +0 -2
- package/dist/esm/accounts/wordlists/spanish.js.map +0 -1
- package/dist/esm/accounts/wordlists/traditionalChinese.js +0 -2
- package/dist/esm/accounts/wordlists/traditionalChinese.js.map +0 -1
- package/dist/esm/chains/optimism/fees.js +0 -4
- package/dist/esm/chains/optimism/fees.js.map +0 -1
- package/dist/types/accounts/wordlists/czech.d.ts +0 -2
- package/dist/types/accounts/wordlists/czech.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/english.d.ts +0 -2
- package/dist/types/accounts/wordlists/english.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/french.d.ts +0 -2
- package/dist/types/accounts/wordlists/french.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/italian.d.ts +0 -2
- package/dist/types/accounts/wordlists/italian.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/japanese.d.ts +0 -2
- package/dist/types/accounts/wordlists/japanese.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/korean.d.ts +0 -2
- package/dist/types/accounts/wordlists/korean.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/simplifiedChinese.d.ts +0 -2
- package/dist/types/accounts/wordlists/simplifiedChinese.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/spanish.d.ts +0 -2
- package/dist/types/accounts/wordlists/spanish.d.ts.map +0 -1
- package/dist/types/accounts/wordlists/traditionalChinese.d.ts +0 -2
- package/dist/types/accounts/wordlists/traditionalChinese.d.ts.map +0 -1
- package/dist/types/chains/optimism/fees.d.ts +0 -4
- package/dist/types/chains/optimism/fees.d.ts.map +0 -1
- package/src/accounts/wordlists/czech.ts +0 -1
- package/src/accounts/wordlists/english.ts +0 -1
- package/src/accounts/wordlists/french.ts +0 -1
- package/src/accounts/wordlists/italian.ts +0 -1
- package/src/accounts/wordlists/japanese.ts +0 -1
- package/src/accounts/wordlists/korean.ts +0 -1
- package/src/accounts/wordlists/simplifiedChinese.ts +0 -1
- package/src/accounts/wordlists/spanish.ts +0 -1
- package/src/accounts/wordlists/traditionalChinese.ts +0 -1
- package/src/chains/optimism/fees.ts +0 -5
package/src/chains/index.ts
CHANGED
@@ -65,6 +65,8 @@ export { localhost } from './definitions/localhost.js'
|
|
65
65
|
export { mainnet } from './definitions/mainnet.js'
|
66
66
|
export { mantle } from './definitions/mantle.js'
|
67
67
|
export { mantleTestnet } from './definitions/mantleTestnet.js'
|
68
|
+
export { meter } from './definitions/meter.js'
|
69
|
+
export { meterTestnet } from './definitions/meterTestnet.js'
|
68
70
|
export { metis } from './definitions/metis.js'
|
69
71
|
export { metisGoerli } from './definitions/metisGoerli.js'
|
70
72
|
export { mev } from './definitions/mev.js'
|
@@ -80,6 +82,9 @@ export { oasys } from './definitions/oasys.js'
|
|
80
82
|
export { okc } from './definitions/okc.js'
|
81
83
|
export { optimism } from './definitions/optimism.js'
|
82
84
|
export { optimismGoerli } from './definitions/optimismGoerli.js'
|
85
|
+
export { opBNB } from './definitions/opBNB.js'
|
86
|
+
export { opBNBTestnet } from './definitions/opBNBTestnet.js'
|
87
|
+
export { plinga } from './definitions/plinga.js'
|
83
88
|
export { polygon } from './definitions/polygon.js'
|
84
89
|
export { polygonMumbai } from './definitions/polygonMumbai.js'
|
85
90
|
export { polygonZkEvmTestnet } from './definitions/polygonZkEvmTestnet.js'
|
package/src/errors/node.ts
CHANGED
@@ -216,7 +216,7 @@ export class UnknownNodeError extends BaseError {
|
|
216
216
|
override name = 'UnknownNodeError'
|
217
217
|
|
218
218
|
constructor({ cause }: { cause?: BaseError }) {
|
219
|
-
super(`An error occurred while executing: ${cause?.
|
219
|
+
super(`An error occurred while executing: ${cause?.shortMessage}`, {
|
220
220
|
cause,
|
221
221
|
})
|
222
222
|
}
|
package/src/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '1.
|
1
|
+
export const version = '1.10.1'
|
package/src/index.ts
CHANGED
@@ -878,4 +878,4 @@ export { size } from './utils/data/size.js'
|
|
878
878
|
export { slice, sliceBytes, sliceHex } from './utils/data/slice.js'
|
879
879
|
export { stringify } from './utils/stringify.js'
|
880
880
|
export { trim } from './utils/data/trim.js'
|
881
|
-
export { validateTypedData } from './utils/typedData.js'
|
881
|
+
export { validateTypedData, domainSeparator } from './utils/typedData.js'
|
package/src/types/chain.ts
CHANGED
@@ -34,6 +34,8 @@ export type ChainConstants = {
|
|
34
34
|
}
|
35
35
|
/** Collection of contracts */
|
36
36
|
contracts?: {
|
37
|
+
[key: string]: ChainContract | { [chainId: number]: ChainContract }
|
38
|
+
} & {
|
37
39
|
ensRegistry?: ChainContract
|
38
40
|
ensUniversalResolver?: ChainContract
|
39
41
|
multicall3?: ChainContract
|
@@ -126,6 +126,10 @@ export function buildRequest<TRequest extends (args: any) => Promise<any>>(
|
|
126
126
|
// 4902
|
127
127
|
case SwitchChainError.code:
|
128
128
|
throw new SwitchChainError(err)
|
129
|
+
// CAIP-25: User Rejected Error
|
130
|
+
// https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25
|
131
|
+
case 5000:
|
132
|
+
throw new UserRejectedRequestError(err)
|
129
133
|
default:
|
130
134
|
if (err_ instanceof BaseError) throw err_
|
131
135
|
throw new UnknownRpcError(err as Error)
|
@@ -1,13 +1,10 @@
|
|
1
1
|
import type { CallParameters } from '../../actions/public/call.js'
|
2
2
|
import type { BaseError } from '../../errors/base.js'
|
3
3
|
import { CallExecutionError } from '../../errors/contract.js'
|
4
|
+
import { UnknownNodeError } from '../../errors/node.js'
|
4
5
|
import type { Chain } from '../../types/chain.js'
|
5
6
|
|
6
|
-
import {
|
7
|
-
type GetNodeErrorParameters,
|
8
|
-
containsNodeError,
|
9
|
-
getNodeError,
|
10
|
-
} from './getNodeError.js'
|
7
|
+
import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
|
11
8
|
|
12
9
|
export function getCallError(
|
13
10
|
err: BaseError,
|
@@ -19,9 +16,8 @@ export function getCallError(
|
|
19
16
|
docsPath?: string
|
20
17
|
},
|
21
18
|
) {
|
22
|
-
let cause = err
|
23
|
-
if (
|
24
|
-
cause = getNodeError(err, args as GetNodeErrorParameters)
|
19
|
+
let cause = getNodeError(err, args as GetNodeErrorParameters)
|
20
|
+
if (cause instanceof UnknownNodeError) cause = err
|
25
21
|
return new CallExecutionError(cause, {
|
26
22
|
docsPath,
|
27
23
|
...args,
|
@@ -8,6 +8,7 @@ import {
|
|
8
8
|
ContractFunctionZeroDataError,
|
9
9
|
RawContractError,
|
10
10
|
} from '../../errors/contract.js'
|
11
|
+
import { InternalRpcError } from '../../errors/rpc.js'
|
11
12
|
|
12
13
|
const EXECUTION_REVERTED_ERROR_CODE = 3
|
13
14
|
|
@@ -41,7 +42,7 @@ export function getContractError(
|
|
41
42
|
if (err instanceof AbiDecodingZeroDataError) {
|
42
43
|
cause = new ContractFunctionZeroDataError({ functionName })
|
43
44
|
} else if (
|
44
|
-
code
|
45
|
+
[EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&
|
45
46
|
(data || message || shortMessage)
|
46
47
|
) {
|
47
48
|
cause = new ContractFunctionRevertedError({
|
@@ -2,13 +2,10 @@ import type { Account } from '../../accounts/types.js'
|
|
2
2
|
import type { EstimateGasParameters } from '../../actions/public/estimateGas.js'
|
3
3
|
import type { BaseError } from '../../errors/base.js'
|
4
4
|
import { EstimateGasExecutionError } from '../../errors/estimateGas.js'
|
5
|
+
import { UnknownNodeError } from '../../errors/node.js'
|
5
6
|
import type { Chain } from '../../types/chain.js'
|
6
7
|
|
7
|
-
import {
|
8
|
-
type GetNodeErrorParameters,
|
9
|
-
containsNodeError,
|
10
|
-
getNodeError,
|
11
|
-
} from './getNodeError.js'
|
8
|
+
import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
|
12
9
|
|
13
10
|
export function getEstimateGasError(
|
14
11
|
err: BaseError,
|
@@ -21,9 +18,8 @@ export function getEstimateGasError(
|
|
21
18
|
docsPath?: string
|
22
19
|
},
|
23
20
|
) {
|
24
|
-
let cause = err
|
25
|
-
if (
|
26
|
-
cause = getNodeError(err, args as GetNodeErrorParameters)
|
21
|
+
let cause = getNodeError(err, args as GetNodeErrorParameters)
|
22
|
+
if (cause instanceof UnknownNodeError) cause = err
|
27
23
|
return new EstimateGasExecutionError(cause, {
|
28
24
|
docsPath,
|
29
25
|
...args,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
|
2
|
-
import
|
2
|
+
import { BaseError } from '../../errors/base.js'
|
3
3
|
import {
|
4
4
|
ExecutionRevertedError,
|
5
5
|
FeeCapTooHighError,
|
@@ -31,8 +31,22 @@ export function containsNodeError(err: BaseError) {
|
|
31
31
|
export type GetNodeErrorParameters = Partial<SendTransactionParameters<any>>
|
32
32
|
|
33
33
|
export function getNodeError(err: BaseError, args: GetNodeErrorParameters) {
|
34
|
-
const message = err.details.toLowerCase()
|
35
|
-
|
34
|
+
const message = (err.details || '').toLowerCase()
|
35
|
+
|
36
|
+
const executionRevertedError = err.walk(
|
37
|
+
(e) => (e as { code: number }).code === ExecutionRevertedError.code,
|
38
|
+
)
|
39
|
+
if (executionRevertedError instanceof BaseError) {
|
40
|
+
return new ExecutionRevertedError({
|
41
|
+
cause: err,
|
42
|
+
message: executionRevertedError.details,
|
43
|
+
})
|
44
|
+
} else if (ExecutionRevertedError.nodeMessage.test(message))
|
45
|
+
return new ExecutionRevertedError({
|
46
|
+
cause: err,
|
47
|
+
message: err.details,
|
48
|
+
})
|
49
|
+
else if (FeeCapTooHighError.nodeMessage.test(message))
|
36
50
|
return new FeeCapTooHighError({
|
37
51
|
cause: err,
|
38
52
|
maxFeePerGas: args?.maxFeePerGas,
|
@@ -62,16 +76,7 @@ export function getNodeError(err: BaseError, args: GetNodeErrorParameters) {
|
|
62
76
|
maxFeePerGas: args?.maxFeePerGas,
|
63
77
|
maxPriorityFeePerGas: args?.maxPriorityFeePerGas,
|
64
78
|
})
|
65
|
-
else if (
|
66
|
-
message.match(ExecutionRevertedError.nodeMessage) ||
|
67
|
-
('code' in (err.cause as BaseError) &&
|
68
|
-
(err.cause as { code: number })?.code === ExecutionRevertedError.code)
|
69
|
-
)
|
70
|
-
return new ExecutionRevertedError({
|
71
|
-
cause: err,
|
72
|
-
message: (err.cause as BaseError).details || err.details,
|
73
|
-
})
|
74
79
|
return new UnknownNodeError({
|
75
|
-
cause:
|
80
|
+
cause: err,
|
76
81
|
})
|
77
82
|
}
|
@@ -1,14 +1,11 @@
|
|
1
1
|
import type { Account } from '../../accounts/types.js'
|
2
2
|
import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
|
3
3
|
import type { BaseError } from '../../errors/base.js'
|
4
|
+
import { UnknownNodeError } from '../../errors/node.js'
|
4
5
|
import { TransactionExecutionError } from '../../errors/transaction.js'
|
5
6
|
import type { Chain } from '../../types/chain.js'
|
6
7
|
|
7
|
-
import {
|
8
|
-
type GetNodeErrorParameters,
|
9
|
-
containsNodeError,
|
10
|
-
getNodeError,
|
11
|
-
} from './getNodeError.js'
|
8
|
+
import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
|
12
9
|
|
13
10
|
export type GetTransactionErrorParameters = Omit<
|
14
11
|
SendTransactionParameters,
|
@@ -23,9 +20,8 @@ export function getTransactionError(
|
|
23
20
|
err: BaseError,
|
24
21
|
{ docsPath, ...args }: GetTransactionErrorParameters,
|
25
22
|
) {
|
26
|
-
let cause = err
|
27
|
-
if (
|
28
|
-
cause = getNodeError(err, args as GetNodeErrorParameters)
|
23
|
+
let cause = getNodeError(err, args as GetNodeErrorParameters)
|
24
|
+
if (cause instanceof UnknownNodeError) cause = err
|
29
25
|
return new TransactionExecutionError(cause, {
|
30
26
|
docsPath,
|
31
27
|
...args,
|
package/src/utils/rpc.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import
|
1
|
+
import WebSocket from 'isomorphic-ws'
|
2
|
+
import type { MessageEvent } from 'isomorphic-ws'
|
2
3
|
|
3
4
|
import {
|
4
5
|
HttpRequestError,
|
@@ -40,7 +41,7 @@ type Subscription<TResult, TError> = {
|
|
40
41
|
)
|
41
42
|
}
|
42
43
|
|
43
|
-
export type RpcRequest = { method: string; params?: any }
|
44
|
+
export type RpcRequest = { method: string; params?: any; id?: number }
|
44
45
|
|
45
46
|
export type RpcResponse<TResult = any, TError = any> = {
|
46
47
|
jsonrpc: `${number}`
|
@@ -82,11 +83,11 @@ async function http<TBody extends RpcRequest | RpcRequest[]>(
|
|
82
83
|
? stringify(
|
83
84
|
body.map((body) => ({
|
84
85
|
jsonrpc: '2.0',
|
85
|
-
id: id++,
|
86
|
+
id: body.id ?? id++,
|
86
87
|
...body,
|
87
88
|
})),
|
88
89
|
)
|
89
|
-
: stringify({ jsonrpc: '2.0', id: id++, ...body }),
|
90
|
+
: stringify({ jsonrpc: '2.0', id: body.id ?? id++, ...body }),
|
90
91
|
headers: {
|
91
92
|
...headers,
|
92
93
|
'Content-Type': 'application/json',
|
@@ -144,10 +145,10 @@ export type Socket = WebSocket & {
|
|
144
145
|
subscriptions: CallbackMap
|
145
146
|
}
|
146
147
|
|
147
|
-
const
|
148
|
+
export const socketsCache = /*#__PURE__*/ new Map<string, Socket>()
|
148
149
|
|
149
150
|
export async function getSocket(url: string) {
|
150
|
-
let socket =
|
151
|
+
let socket = socketsCache.get(url)
|
151
152
|
|
152
153
|
// If the socket already exists, return it.
|
153
154
|
if (socket) return socket
|
@@ -155,18 +156,6 @@ export async function getSocket(url: string) {
|
|
155
156
|
const { schedule } = createBatchScheduler<undefined, [Socket]>({
|
156
157
|
id: url,
|
157
158
|
fn: async () => {
|
158
|
-
let WebSocket = await import('isomorphic-ws')
|
159
|
-
// Workaround for Vite.
|
160
|
-
// https://github.com/vitejs/vite/issues/9703
|
161
|
-
// TODO: Remove when issue is resolved.
|
162
|
-
if (
|
163
|
-
(WebSocket as unknown as { default?: typeof WebSocket }).default
|
164
|
-
?.constructor
|
165
|
-
)
|
166
|
-
WebSocket = (WebSocket as unknown as { default: typeof WebSocket })
|
167
|
-
.default
|
168
|
-
else WebSocket = WebSocket.WebSocket
|
169
|
-
|
170
159
|
const webSocket = new WebSocket(url)
|
171
160
|
|
172
161
|
// Set up a cache for incoming "synchronous" requests.
|
@@ -185,7 +174,7 @@ export async function getSocket(url: string) {
|
|
185
174
|
if (!isSubscription) cache.delete(id)
|
186
175
|
}
|
187
176
|
const onClose = () => {
|
188
|
-
|
177
|
+
socketsCache.delete(url)
|
189
178
|
webSocket.removeEventListener('close', onClose)
|
190
179
|
webSocket.removeEventListener('message', onMessage)
|
191
180
|
}
|
@@ -208,7 +197,7 @@ export async function getSocket(url: string) {
|
|
208
197
|
requests,
|
209
198
|
subscriptions,
|
210
199
|
})
|
211
|
-
|
200
|
+
socketsCache.set(url, socket)
|
212
201
|
|
213
202
|
return [socket]
|
214
203
|
},
|
@@ -8,7 +8,7 @@ import { encodeAbiParameters } from '../abi/encodeAbiParameters.js'
|
|
8
8
|
import { concat } from '../data/concat.js'
|
9
9
|
import { toHex } from '../encoding/toHex.js'
|
10
10
|
import { keccak256 } from '../hash/keccak256.js'
|
11
|
-
import { validateTypedData } from '../typedData.js'
|
11
|
+
import { getTypesForEIP712Domain, validateTypedData } from '../typedData.js'
|
12
12
|
|
13
13
|
type MessageTypeProperty = {
|
14
14
|
name: string
|
@@ -33,19 +33,7 @@ export function hashTypedData<
|
|
33
33
|
}: HashTypedDataParameters<TTypedData, TPrimaryType>): HashTypedDataReturnType {
|
34
34
|
const domain: TypedDataDomain = typeof domain_ === 'undefined' ? {} : domain_
|
35
35
|
const types = {
|
36
|
-
EIP712Domain:
|
37
|
-
typeof domain?.name === 'string' && { name: 'name', type: 'string' },
|
38
|
-
domain?.version && { name: 'version', type: 'string' },
|
39
|
-
typeof domain?.chainId === 'number' && {
|
40
|
-
name: 'chainId',
|
41
|
-
type: 'uint256',
|
42
|
-
},
|
43
|
-
domain?.verifyingContract && {
|
44
|
-
name: 'verifyingContract',
|
45
|
-
type: 'address',
|
46
|
-
},
|
47
|
-
domain?.salt && { name: 'salt', type: 'bytes32' },
|
48
|
-
].filter(Boolean),
|
36
|
+
EIP712Domain: getTypesForEIP712Domain({ domain }),
|
49
37
|
...(types_ as TTypedData),
|
50
38
|
}
|
51
39
|
|
@@ -80,7 +68,7 @@ export function hashTypedData<
|
|
80
68
|
return keccak256(concat(parts))
|
81
69
|
}
|
82
70
|
|
83
|
-
function hashDomain({
|
71
|
+
export function hashDomain({
|
84
72
|
domain,
|
85
73
|
types,
|
86
74
|
}: {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
3
|
+
import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js'
|
4
4
|
import { getAddress } from '../address/getAddress.js'
|
5
5
|
import { isAddressEqual } from '../address/isAddressEqual.js'
|
6
6
|
|
@@ -10,7 +10,7 @@ export type VerifyMessageParameters = {
|
|
10
10
|
/** The address that signed the original message. */
|
11
11
|
address: Address
|
12
12
|
/** The message to be verified. */
|
13
|
-
message:
|
13
|
+
message: SignableMessage
|
14
14
|
/** The signature that was generated by signing the message with the address's private key. */
|
15
15
|
signature: Hex | ByteArray
|
16
16
|
}
|
package/src/utils/typedData.ts
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
import type {
|
1
|
+
import type {
|
2
|
+
TypedData,
|
3
|
+
TypedDataDomain,
|
4
|
+
TypedDataParameter,
|
5
|
+
TypedDataType,
|
6
|
+
} from 'abitype'
|
2
7
|
|
3
8
|
import { BytesSizeMismatchError } from '../errors/abi.js'
|
4
9
|
import { InvalidAddressError } from '../errors/address.js'
|
@@ -9,6 +14,7 @@ import { isAddress } from './address/isAddress.js'
|
|
9
14
|
import { size } from './data/size.js'
|
10
15
|
import { numberToHex } from './encoding/toHex.js'
|
11
16
|
import { bytesRegex, integerRegex } from './regex.js'
|
17
|
+
import { hashDomain } from './signature/hashTypedData.js'
|
12
18
|
|
13
19
|
export function validateTypedData<
|
14
20
|
const TTypedData extends TypedData | { [key: string]: unknown },
|
@@ -71,3 +77,30 @@ export function validateTypedData<
|
|
71
77
|
validateData(type, message as Record<string, unknown>)
|
72
78
|
}
|
73
79
|
}
|
80
|
+
|
81
|
+
export function getTypesForEIP712Domain({
|
82
|
+
domain,
|
83
|
+
}: { domain?: TypedDataDomain }): TypedDataParameter[] {
|
84
|
+
return [
|
85
|
+
typeof domain?.name === 'string' && { name: 'name', type: 'string' },
|
86
|
+
domain?.version && { name: 'version', type: 'string' },
|
87
|
+
typeof domain?.chainId === 'number' && {
|
88
|
+
name: 'chainId',
|
89
|
+
type: 'uint256',
|
90
|
+
},
|
91
|
+
domain?.verifyingContract && {
|
92
|
+
name: 'verifyingContract',
|
93
|
+
type: 'address',
|
94
|
+
},
|
95
|
+
domain?.salt && { name: 'salt', type: 'bytes32' },
|
96
|
+
].filter(Boolean) as TypedDataParameter[]
|
97
|
+
}
|
98
|
+
|
99
|
+
export function domainSeparator({ domain }: { domain: TypedDataDomain }): Hex {
|
100
|
+
return hashDomain({
|
101
|
+
domain,
|
102
|
+
types: {
|
103
|
+
EIP712Domain: getTypesForEIP712Domain({ domain }),
|
104
|
+
},
|
105
|
+
})
|
106
|
+
}
|
@@ -1,57 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.formattersCelo = void 0;
|
4
|
-
const viem_1 = require("viem");
|
5
|
-
exports.formattersCelo = {
|
6
|
-
block: (0, viem_1.defineBlock)({
|
7
|
-
exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'],
|
8
|
-
format(args) {
|
9
|
-
const transactions = args.transactions?.map((transaction) => {
|
10
|
-
if (typeof transaction === 'string')
|
11
|
-
return transaction;
|
12
|
-
return {
|
13
|
-
...(0, viem_1.formatTransaction)(transaction),
|
14
|
-
feeCurrency: transaction.feeCurrency,
|
15
|
-
gatewayFee: transaction.gatewayFee
|
16
|
-
? (0, viem_1.hexToBigInt)(transaction.gatewayFee)
|
17
|
-
: null,
|
18
|
-
gatewayFeeRecipient: transaction.gatewayFeeRecipient,
|
19
|
-
};
|
20
|
-
});
|
21
|
-
return {
|
22
|
-
randomness: args.randomness,
|
23
|
-
transactions,
|
24
|
-
};
|
25
|
-
},
|
26
|
-
}),
|
27
|
-
transaction: (0, viem_1.defineTransaction)({
|
28
|
-
format(args) {
|
29
|
-
return {
|
30
|
-
feeCurrency: args.feeCurrency,
|
31
|
-
gatewayFee: args.gatewayFee ? (0, viem_1.hexToBigInt)(args.gatewayFee) : null,
|
32
|
-
gatewayFeeRecipient: args.gatewayFeeRecipient,
|
33
|
-
};
|
34
|
-
},
|
35
|
-
}),
|
36
|
-
transactionReceipt: (0, viem_1.defineTransactionReceipt)({
|
37
|
-
format(args) {
|
38
|
-
return {
|
39
|
-
feeCurrency: args.feeCurrency,
|
40
|
-
gatewayFee: args.gatewayFee ? (0, viem_1.hexToBigInt)(args.gatewayFee) : null,
|
41
|
-
gatewayFeeRecipient: args.gatewayFeeRecipient,
|
42
|
-
};
|
43
|
-
},
|
44
|
-
}),
|
45
|
-
transactionRequest: (0, viem_1.defineTransactionRequest)({
|
46
|
-
format(args) {
|
47
|
-
return {
|
48
|
-
feeCurrency: args.feeCurrency,
|
49
|
-
gatewayFee: typeof args.gatewayFee !== 'undefined'
|
50
|
-
? (0, viem_1.numberToHex)(args.gatewayFee)
|
51
|
-
: undefined,
|
52
|
-
gatewayFeeRecipient: args.gatewayFeeRecipient,
|
53
|
-
};
|
54
|
-
},
|
55
|
-
}),
|
56
|
-
};
|
57
|
-
//# sourceMappingURL=formatters.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/celo/formatters.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AAcA,QAAA,cAAc,GAAG;IAC5B,KAAK,EAAgB,IAAA,kBAAW,EAAC;QAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;QACjE,MAAM,CACJ,IAEC;YAID,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC1D,IAAI,OAAO,WAAW,KAAK,QAAQ;oBAAE,OAAO,WAAW,CAAA;gBACvD,OAAO;oBACL,GAAG,IAAA,wBAAiB,EAAC,WAAW,CAAC;oBACjC,WAAW,EAAE,WAAW,CAAC,WAAW;oBACpC,UAAU,EAAE,WAAW,CAAC,UAAU;wBAChC,CAAC,CAAC,IAAA,kBAAW,EAAC,WAAW,CAAC,UAAU,CAAC;wBACrC,CAAC,CAAC,IAAI;oBACR,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;iBACrD,CAAA;YACH,CAAC,CAA+B,CAAA;YAChC,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY;aACb,CAAA;QACH,CAAC;KACF,CAAC;IACF,WAAW,EAAgB,IAAA,wBAAiB,EAAC;QAC3C,MAAM,CAAC,IAAiC;YACtC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;IACF,kBAAkB,EAAgB,IAAA,+BAAwB,EAAC;QACzD,MAAM,CACJ,IAAwC;YAExC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;IACF,kBAAkB,EAAgB,IAAA,+BAAwB,EAAC;QACzD,MAAM,CACJ,IAAqC;YAErC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EACR,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW;oBACpC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC;oBAC9B,CAAC,CAAC,SAAS;gBACf,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;CACgC,CAAA"}
|
@@ -1,72 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.parseTransactionCelo = void 0;
|
4
|
-
const viem_1 = require("viem");
|
5
|
-
const serializers_js_1 = require("./serializers.js");
|
6
|
-
function parseTransactionCelo(serializedTransaction) {
|
7
|
-
const serializedType = (0, viem_1.sliceHex)(serializedTransaction, 0, 1);
|
8
|
-
if (serializedType === '0x7c')
|
9
|
-
return parseTransactionCIP42(serializedTransaction);
|
10
|
-
return (0, viem_1.parseTransaction)(serializedTransaction);
|
11
|
-
}
|
12
|
-
exports.parseTransactionCelo = parseTransactionCelo;
|
13
|
-
function parseTransactionCIP42(serializedTransaction) {
|
14
|
-
const transactionArray = (0, viem_1.toTransactionArray)(serializedTransaction);
|
15
|
-
const [chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gas, feeCurrency, gatewayFeeRecipient, gatewayFee, to, value, data, accessList, v, r, s,] = transactionArray;
|
16
|
-
if (transactionArray.length !== 15 && transactionArray.length !== 12) {
|
17
|
-
throw new viem_1.InvalidSerializedTransactionError({
|
18
|
-
attributes: {
|
19
|
-
chainId,
|
20
|
-
nonce,
|
21
|
-
maxPriorityFeePerGas,
|
22
|
-
maxFeePerGas,
|
23
|
-
gas,
|
24
|
-
feeCurrency,
|
25
|
-
to,
|
26
|
-
gatewayFeeRecipient,
|
27
|
-
gatewayFee,
|
28
|
-
value,
|
29
|
-
data,
|
30
|
-
accessList,
|
31
|
-
...(transactionArray.length > 12
|
32
|
-
? {
|
33
|
-
v,
|
34
|
-
r,
|
35
|
-
s,
|
36
|
-
}
|
37
|
-
: {}),
|
38
|
-
},
|
39
|
-
serializedTransaction,
|
40
|
-
type: 'cip42',
|
41
|
-
});
|
42
|
-
}
|
43
|
-
const transaction = {
|
44
|
-
chainId: (0, viem_1.hexToNumber)(chainId),
|
45
|
-
type: 'cip42',
|
46
|
-
};
|
47
|
-
if ((0, viem_1.isHex)(to) && to !== '0x')
|
48
|
-
transaction.to = to;
|
49
|
-
if ((0, viem_1.isHex)(gas) && gas !== '0x')
|
50
|
-
transaction.gas = (0, viem_1.hexToBigInt)(gas);
|
51
|
-
if ((0, viem_1.isHex)(data) && data !== '0x')
|
52
|
-
transaction.data = data;
|
53
|
-
if ((0, viem_1.isHex)(nonce) && nonce !== '0x')
|
54
|
-
transaction.nonce = (0, viem_1.hexToNumber)(nonce);
|
55
|
-
if ((0, viem_1.isHex)(value) && value !== '0x')
|
56
|
-
transaction.value = (0, viem_1.hexToBigInt)(value);
|
57
|
-
if ((0, viem_1.isHex)(feeCurrency) && feeCurrency !== '0x')
|
58
|
-
transaction.feeCurrency = feeCurrency;
|
59
|
-
if ((0, viem_1.isHex)(gatewayFeeRecipient) && gatewayFeeRecipient !== '0x')
|
60
|
-
transaction.gatewayFeeRecipient = gatewayFeeRecipient;
|
61
|
-
if ((0, viem_1.isHex)(gatewayFee) && gatewayFee !== '0x')
|
62
|
-
transaction.gatewayFee = (0, viem_1.hexToBigInt)(gatewayFee);
|
63
|
-
if ((0, viem_1.isHex)(maxFeePerGas) && maxFeePerGas !== '0x')
|
64
|
-
transaction.maxFeePerGas = (0, viem_1.hexToBigInt)(maxFeePerGas);
|
65
|
-
if ((0, viem_1.isHex)(maxPriorityFeePerGas) && maxPriorityFeePerGas !== '0x')
|
66
|
-
transaction.maxPriorityFeePerGas = (0, viem_1.hexToBigInt)(maxPriorityFeePerGas);
|
67
|
-
if (accessList.length !== 0 && accessList !== '0x')
|
68
|
-
transaction.accessList = (0, viem_1.parseAccessList)(accessList);
|
69
|
-
(0, serializers_js_1.assertTransactionCIP42)(transaction);
|
70
|
-
return transaction;
|
71
|
-
}
|
72
|
-
//# sourceMappingURL=parsers.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/celo/parsers.ts"],"names":[],"mappings":"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"}
|
@@ -1,75 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.assertTransactionCIP42 = exports.serializersCelo = exports.serializeTransactionCelo = void 0;
|
4
|
-
const viem_1 = require("viem");
|
5
|
-
const serializeTransactionCelo = (tx, signature) => {
|
6
|
-
if (isCIP42(tx))
|
7
|
-
return serializeTransactionCIP42(tx, signature);
|
8
|
-
return (0, viem_1.serializeTransaction)(tx, signature);
|
9
|
-
};
|
10
|
-
exports.serializeTransactionCelo = serializeTransactionCelo;
|
11
|
-
exports.serializersCelo = {
|
12
|
-
transaction: exports.serializeTransactionCelo,
|
13
|
-
};
|
14
|
-
function serializeTransactionCIP42(transaction, signature) {
|
15
|
-
assertTransactionCIP42(transaction);
|
16
|
-
const { chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, feeCurrency, gatewayFeeRecipient, gatewayFee, data, } = transaction;
|
17
|
-
const serializedTransaction = [
|
18
|
-
(0, viem_1.toHex)(chainId),
|
19
|
-
nonce ? (0, viem_1.toHex)(nonce) : '0x',
|
20
|
-
maxPriorityFeePerGas ? (0, viem_1.toHex)(maxPriorityFeePerGas) : '0x',
|
21
|
-
maxFeePerGas ? (0, viem_1.toHex)(maxFeePerGas) : '0x',
|
22
|
-
gas ? (0, viem_1.toHex)(gas) : '0x',
|
23
|
-
feeCurrency ?? '0x',
|
24
|
-
gatewayFeeRecipient ?? '0x',
|
25
|
-
gatewayFee ? (0, viem_1.toHex)(gatewayFee) : '0x',
|
26
|
-
to ?? '0x',
|
27
|
-
value ? (0, viem_1.toHex)(value) : '0x',
|
28
|
-
data ?? '0x',
|
29
|
-
(0, viem_1.serializeAccessList)(accessList),
|
30
|
-
];
|
31
|
-
if (signature) {
|
32
|
-
serializedTransaction.push(signature.v === 27n ? '0x' : (0, viem_1.toHex)(1), (0, viem_1.trim)(signature.r), (0, viem_1.trim)(signature.s));
|
33
|
-
}
|
34
|
-
return (0, viem_1.concatHex)([
|
35
|
-
'0x7c',
|
36
|
-
(0, viem_1.toRlp)(serializedTransaction),
|
37
|
-
]);
|
38
|
-
}
|
39
|
-
function isCIP42(transaction) {
|
40
|
-
if ('maxFeePerGas' in transaction &&
|
41
|
-
'maxPriorityFeePerGas' in transaction &&
|
42
|
-
('feeCurrency' in transaction ||
|
43
|
-
'gatewayFee' in transaction ||
|
44
|
-
'gatewayFeeRecipient' in transaction))
|
45
|
-
return true;
|
46
|
-
return false;
|
47
|
-
}
|
48
|
-
const MAX_MAX_FEE_PER_GAS = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
|
49
|
-
function assertTransactionCIP42(transaction) {
|
50
|
-
const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to, feeCurrency, gatewayFee, gatewayFeeRecipient, } = transaction;
|
51
|
-
if (chainId <= 0)
|
52
|
-
throw new viem_1.InvalidChainIdError({ chainId });
|
53
|
-
if (to && !(0, viem_1.isAddress)(to))
|
54
|
-
throw new viem_1.InvalidAddressError({ address: to });
|
55
|
-
if (gasPrice)
|
56
|
-
throw new viem_1.BaseError('`gasPrice` is not a valid CIP-42 Transaction attribute.');
|
57
|
-
if (maxFeePerGas && maxFeePerGas > MAX_MAX_FEE_PER_GAS)
|
58
|
-
throw new viem_1.FeeCapTooHighError({ maxFeePerGas });
|
59
|
-
if (maxPriorityFeePerGas &&
|
60
|
-
maxFeePerGas &&
|
61
|
-
maxPriorityFeePerGas > maxFeePerGas)
|
62
|
-
throw new viem_1.TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });
|
63
|
-
if ((gatewayFee && !gatewayFeeRecipient) ||
|
64
|
-
(gatewayFeeRecipient && !gatewayFee)) {
|
65
|
-
throw new viem_1.BaseError('`gatewayFee` and `gatewayFeeRecipient` must be provided together.');
|
66
|
-
}
|
67
|
-
if (feeCurrency && !feeCurrency?.startsWith('0x')) {
|
68
|
-
throw new viem_1.BaseError('`feeCurrency` MUST be a token address for CIP-42 transactions.');
|
69
|
-
}
|
70
|
-
if (!feeCurrency && !gatewayFeeRecipient) {
|
71
|
-
throw new viem_1.BaseError('Either `feeCurrency` or `gatewayFeeRecipient` must be provided for CIP-42 transactions.');
|
72
|
-
}
|
73
|
-
}
|
74
|
-
exports.assertTransactionCIP42 = assertTransactionCIP42;
|
75
|
-
//# sourceMappingURL=serializers.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../../src/celo/serializers.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/celo/types.ts"],"names":[],"mappings":""}
|