@0xsequence/provider 1.10.15 → 2.0.0
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/0xsequence-provider.cjs.dev.js +656 -648
- package/dist/0xsequence-provider.cjs.prod.js +656 -648
- package/dist/0xsequence-provider.esm.js +660 -652
- package/dist/declarations/src/client.d.ts +7 -3
- package/dist/declarations/src/provider.d.ts +31 -22
- package/dist/declarations/src/signer.d.ts +15 -14
- package/dist/declarations/src/transports/base-provider-transport.d.ts +6 -2
- package/dist/declarations/src/transports/base-wallet-transport.d.ts +6 -2
- package/dist/declarations/src/transports/mux-transport/mux-message-provider.d.ts +5 -2
- package/dist/declarations/src/transports/wallet-request-handler.d.ts +7 -6
- package/dist/declarations/src/types.d.ts +6 -11
- package/dist/declarations/src/utils/index.d.ts +3 -3
- package/dist/declarations/src/utils.d.ts +7 -7
- package/package.json +12 -12
- package/src/client.ts +29 -51
- package/src/eip191exceptions.ts +2 -2
- package/src/extended.ts +5 -5
- package/src/init.ts +9 -10
- package/src/provider.ts +112 -66
- package/src/signer.ts +38 -43
- package/src/transactions.ts +4 -4
- package/src/transports/base-provider-transport.ts +19 -23
- package/src/transports/base-wallet-transport.ts +22 -13
- package/src/transports/mux-transport/mux-message-provider.ts +5 -6
- package/src/transports/proxy-transport/proxy-message-provider.ts +5 -2
- package/src/transports/wallet-request-handler.ts +91 -130
- package/src/transports/window-transport/window-message-handler.ts +15 -3
- package/src/transports/window-transport/window-message-provider.ts +1 -1
- package/src/types.ts +8 -11
- package/src/utils/index.ts +4 -4
- package/src/utils.ts +16 -18
package/src/utils.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { ethers
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
2
|
import { messageIsExemptFromEIP191Prefix } from './eip191exceptions'
|
|
3
3
|
import { AccountStatus } from '@0xsequence/account'
|
|
4
4
|
import { commons } from '@0xsequence/core'
|
|
5
5
|
import { encodeMessageDigest, TypedData, encodeTypedDataDigest } from '@0xsequence/utils'
|
|
6
6
|
|
|
7
|
-
const eip191prefix = ethers.
|
|
7
|
+
const eip191prefix = ethers.toUtf8Bytes('\x19Ethereum Signed Message:\n')
|
|
8
8
|
|
|
9
|
-
export const messageToBytes = (message: BytesLike): Uint8Array => {
|
|
10
|
-
if (ethers.
|
|
11
|
-
return ethers.
|
|
9
|
+
export const messageToBytes = (message: ethers.BytesLike): Uint8Array => {
|
|
10
|
+
if (ethers.isBytesLike(message)) {
|
|
11
|
+
return ethers.getBytes(message)
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
return ethers.
|
|
14
|
+
return ethers.toUtf8Bytes(message)
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export const prefixEIP191Message = (message: BytesLike): Uint8Array => {
|
|
17
|
+
export const prefixEIP191Message = (message: ethers.BytesLike): Uint8Array => {
|
|
18
18
|
const messageBytes = messageToBytes(message)
|
|
19
19
|
if (messageIsExemptFromEIP191Prefix(messageBytes)) {
|
|
20
20
|
return messageBytes
|
|
21
21
|
} else {
|
|
22
|
-
return ethers.
|
|
22
|
+
return ethers.getBytes(ethers.concat([eip191prefix, ethers.toUtf8Bytes(String(messageBytes.length)), messageBytes]))
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -47,9 +47,9 @@ export const trimEIP191Prefix = (prefixedMessage: Uint8Array): Uint8Array => {
|
|
|
47
47
|
let prefixAsNumber: number
|
|
48
48
|
|
|
49
49
|
try {
|
|
50
|
-
prefixAsNumber = Number(ethers.
|
|
50
|
+
prefixAsNumber = Number(ethers.toUtf8String(ethereumSignedMessagePartSlicedArray.slice(0, maxPrefixCharLength)))
|
|
51
51
|
} catch {
|
|
52
|
-
prefixAsNumber = Number(ethers.
|
|
52
|
+
prefixAsNumber = Number(ethers.hexlify(ethereumSignedMessagePartSlicedArray.slice(0, maxPrefixCharLength)))
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
if (prefixAsNumber > ethereumSignedMessagePartSlicedArray.length || !Number.isInteger(prefixAsNumber)) {
|
|
@@ -67,7 +67,7 @@ export const isValidSignature = async (
|
|
|
67
67
|
address: string,
|
|
68
68
|
digest: Uint8Array,
|
|
69
69
|
sig: string,
|
|
70
|
-
provider: ethers.
|
|
70
|
+
provider: ethers.Provider
|
|
71
71
|
): Promise<boolean> => {
|
|
72
72
|
const reader = new commons.reader.OnChainReader(provider)
|
|
73
73
|
return reader.isValidSignature(address, digest, sig)
|
|
@@ -78,7 +78,7 @@ export const isValidMessageSignature = async (
|
|
|
78
78
|
address: string,
|
|
79
79
|
message: string | Uint8Array,
|
|
80
80
|
signature: string,
|
|
81
|
-
provider: ethers.
|
|
81
|
+
provider: ethers.Provider
|
|
82
82
|
): Promise<boolean> => {
|
|
83
83
|
const prefixed = prefixEIP191Message(message)
|
|
84
84
|
const digest = encodeMessageDigest(prefixed)
|
|
@@ -90,7 +90,7 @@ export const isValidTypedDataSignature = (
|
|
|
90
90
|
address: string,
|
|
91
91
|
typedData: TypedData,
|
|
92
92
|
signature: string,
|
|
93
|
-
provider: ethers.
|
|
93
|
+
provider: ethers.Provider
|
|
94
94
|
): Promise<boolean> => {
|
|
95
95
|
return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider)
|
|
96
96
|
}
|
|
@@ -200,13 +200,11 @@ export function useBestStore(): ItemStore {
|
|
|
200
200
|
return new MemoryItemStore()
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
export async function resolveArrayProperties<T>(
|
|
204
|
-
object: Readonly<ethers.utils.Deferrable<T>> | Readonly<ethers.utils.Deferrable<T>>[]
|
|
205
|
-
): Promise<T> {
|
|
203
|
+
export async function resolveArrayProperties<T>(object: Readonly<T> | Readonly<T>[]): Promise<T> {
|
|
206
204
|
if (Array.isArray(object)) {
|
|
207
205
|
// T must include array type
|
|
208
|
-
return Promise.all(object.map(o => ethers.
|
|
206
|
+
return Promise.all(object.map(o => ethers.resolveProperties(o))) as any
|
|
209
207
|
}
|
|
210
208
|
|
|
211
|
-
return ethers.
|
|
209
|
+
return ethers.resolveProperties(object)
|
|
212
210
|
}
|