@0xsequence/provider
Advanced tools
Comparing version 0.0.0-20240321210738 to 0.0.0-20240402220106
import { Account } from '@0xsequence/account'; | ||
import { commons } from '@0xsequence/core'; | ||
import { ChainIdLike, NetworkConfig, EIP1193Provider } from '@0xsequence/network'; | ||
import { ConnectDetails, ConnectOptions, MessageToSign, NetworkedConnectOptions, OpenWalletIntent, PromptConnectDetails, ProviderEventTypes, ProviderMessageRequest, ProviderMessageRequestHandler, ProviderRpcError, WalletSession } from "../types.js"; | ||
import { ConnectDetails, ConnectOptions, MessageToSign, NetworkedConnectOptions, OpenWalletIntent, PromptConnectDetails, ProviderEventTypes, ProviderMessageRequest, ProviderMessageRequestHandler, ProviderMessageResponse, ProviderRpcError, WalletSession } from "../types.js"; | ||
export interface WalletSignInOptions { | ||
@@ -26,3 +26,3 @@ connect?: boolean; | ||
promptConnect: (options?: NetworkedConnectOptions) => Promise<ConnectDetails>; | ||
sendMessageRequest(message: ProviderMessageRequest): Promise<any>; | ||
sendMessageRequest(message: ProviderMessageRequest): Promise<ProviderMessageResponse>; | ||
request(request: { | ||
@@ -29,0 +29,0 @@ method: string; |
@@ -42,3 +42,3 @@ import { ETHAuthProof as AuthETHAuthProof } from '@0xsequence/auth'; | ||
export type ProviderMessageRequest = ProviderMessage<JsonRpcRequest>; | ||
export type ProviderMessageResponse = ProviderMessage<JsonRpcResponse>; | ||
export type ProviderMessageResponse = ProviderMessage<JsonRpcResponse | any>; | ||
export type ProviderMessageResponseCallback = (error?: ProviderRpcError, response?: ProviderMessageResponse) => void; | ||
@@ -45,0 +45,0 @@ export type ProviderRpcError = _JsonRpcErrorPayload; |
{ | ||
"name": "@0xsequence/provider", | ||
"version": "0.0.0-20240321210738", | ||
"version": "0.0.0-20240402220106", | ||
"description": "provider sub-package for Sequence", | ||
@@ -15,11 +15,11 @@ "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider", | ||
"webextension-polyfill": "^0.10.0", | ||
"@0xsequence/abi": "0.0.0-20240321210738", | ||
"@0xsequence/account": "0.0.0-20240321210738", | ||
"@0xsequence/auth": "0.0.0-20240321210738", | ||
"@0xsequence/core": "0.0.0-20240321210738", | ||
"@0xsequence/migration": "0.0.0-20240321210738", | ||
"@0xsequence/network": "0.0.0-20240321210738", | ||
"@0xsequence/relayer": "0.0.0-20240321210738", | ||
"@0xsequence/utils": "0.0.0-20240321210738", | ||
"@0xsequence/wallet": "0.0.0-20240321210738" | ||
"@0xsequence/abi": "0.0.0-20240402220106", | ||
"@0xsequence/account": "0.0.0-20240402220106", | ||
"@0xsequence/auth": "0.0.0-20240402220106", | ||
"@0xsequence/core": "0.0.0-20240402220106", | ||
"@0xsequence/migration": "0.0.0-20240402220106", | ||
"@0xsequence/network": "0.0.0-20240402220106", | ||
"@0xsequence/relayer": "0.0.0-20240402220106", | ||
"@0xsequence/utils": "0.0.0-20240402220106", | ||
"@0xsequence/wallet": "0.0.0-20240402220106" | ||
}, | ||
@@ -26,0 +26,0 @@ "peerDependencies": { |
@@ -383,3 +383,3 @@ import { NetworkConfig } from '@0xsequence/network' | ||
request(request: { method: string; params?: any[]; chainId?: number }): Promise<any> { | ||
async request(request: { method: string; params?: any[]; chainId?: number }): Promise<any> { | ||
// Internally when sending requests we use `legacy_sign` | ||
@@ -386,0 +386,0 @@ // to avoid the default EIP6492 behavior overriding an explicit |
@@ -20,3 +20,3 @@ import { EventEmitter2 as EventEmitter } from 'eventemitter2' | ||
import { NetworkConfig } from '@0xsequence/network' | ||
import { JsonRpcResponse, NetworkConfig } from '@0xsequence/network' | ||
import { logger } from '@0xsequence/utils' | ||
@@ -23,0 +23,0 @@ import { ethers } from 'ethers' |
@@ -17,2 +17,3 @@ import { | ||
import { WindowMessageProvider } from '../window-transport' | ||
import { JsonRpcResponse } from '@0xsequence/network' | ||
@@ -19,0 +20,0 @@ export type MuxTransportTemplate = { |
@@ -10,3 +10,4 @@ import { Account, AccountStatus } from '@0xsequence/account' | ||
NetworkConfig, | ||
EIP1193Provider | ||
EIP1193Provider, | ||
JsonRpcResponse | ||
} from '@0xsequence/network' | ||
@@ -30,2 +31,3 @@ import { logger, toHexString, TypedData } from '@0xsequence/utils' | ||
ProviderMessageRequestHandler, | ||
ProviderMessageResponse, | ||
ProviderRpcError, | ||
@@ -214,3 +216,13 @@ TypedEventEmitter, | ||
// ProviderMessageResponse to be sent over the transport | ||
async sendMessageRequest(message: ProviderMessageRequest): Promise<any> { | ||
async sendMessageRequest(message: ProviderMessageRequest): Promise<ProviderMessageResponse> { | ||
// Older versions of the client require the response to be jsonrpc wrapped | ||
const majorVersion = Number(this.connectOptions?.clientVersion?.split('.')[0] || '2') | ||
const isJsonRpcResponse = majorVersion <= 1 | ||
const jsonRpcResponse: JsonRpcResponse = { | ||
id: message.data.id!, | ||
jsonrpc: '2.0', | ||
result: null, | ||
error: undefined | ||
} | ||
try { | ||
@@ -225,8 +237,8 @@ const result = await this.request({ | ||
...message, | ||
data: result | ||
data: isJsonRpcResponse ? { ...jsonRpcResponse, result } : result | ||
} | ||
} catch (err) { | ||
} catch (error) { | ||
return { | ||
...message, | ||
data: err | ||
data: isJsonRpcResponse ? { ...jsonRpcResponse, error } : error | ||
} | ||
@@ -233,0 +245,0 @@ } |
@@ -14,2 +14,3 @@ import { | ||
import { logger, base64DecodeObject } from '@0xsequence/utils' | ||
import { ethers } from 'ethers' | ||
@@ -96,3 +97,10 @@ export class WindowMessageHandler extends BaseWalletTransport { | ||
try { | ||
request = JSON.parse(event.data) | ||
request = JSON.parse(event.data, (key, value) => { | ||
// BigNumber compatibility with older versions of sequence.js | ||
if (isBigNumberSerialized(value)) { | ||
return BigInt(value.hex) | ||
} | ||
return value | ||
}) | ||
} catch (err) { | ||
@@ -166,1 +174,7 @@ // event is not a ProviderMessage JSON object, skip | ||
} | ||
const isBigNumberSerialized = (value: any): boolean => { | ||
return ( | ||
typeof value === 'object' && 'type' in value && value.type === 'BigNumber' && 'hex' in value && ethers.isHexString(value.hex) | ||
) | ||
} |
@@ -68,3 +68,4 @@ import { ETHAuthProof as AuthETHAuthProof } from '@0xsequence/auth' | ||
export type ProviderMessageResponse = ProviderMessage<JsonRpcResponse> | ||
// Older versions of sequence.js will require a JsonRpcResponse result type, but newer versions use raw EIP1193 results | ||
export type ProviderMessageResponse = ProviderMessage<JsonRpcResponse | any> | ||
@@ -71,0 +72,0 @@ // ProviderMessageCallback is used to respond to ProviderMessage requests. The error |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
702601
17923
+ Added@0xsequence/abi@0.0.0-20240402220106(transitive)
+ Added@0xsequence/account@0.0.0-20240402220106(transitive)
+ Added@0xsequence/api@0.0.0-20240402220106(transitive)
+ Added@0xsequence/auth@0.0.0-20240402220106(transitive)
+ Added@0xsequence/core@0.0.0-20240402220106(transitive)
+ Added@0xsequence/indexer@0.0.0-20240402220106(transitive)
+ Added@0xsequence/metadata@0.0.0-20240402220106(transitive)
+ Added@0xsequence/migration@0.0.0-20240402220106(transitive)
+ Added@0xsequence/network@0.0.0-20240402220106(transitive)
+ Added@0xsequence/relayer@0.0.0-20240402220106(transitive)
+ Added@0xsequence/replacer@0.0.0-20240402220106(transitive)
+ Added@0xsequence/sessions@0.0.0-20240402220106(transitive)
+ Added@0xsequence/signhub@0.0.0-20240402220106(transitive)
+ Added@0xsequence/utils@0.0.0-20240402220106(transitive)
+ Added@0xsequence/wallet@0.0.0-20240402220106(transitive)
- Removed@0xsequence/abi@0.0.0-20240321210738(transitive)
- Removed@0xsequence/account@0.0.0-20240321210738(transitive)
- Removed@0xsequence/api@0.0.0-20240321210738(transitive)
- Removed@0xsequence/auth@0.0.0-20240321210738(transitive)
- Removed@0xsequence/core@0.0.0-20240321210738(transitive)
- Removed@0xsequence/indexer@0.0.0-20240321210738(transitive)
- Removed@0xsequence/metadata@0.0.0-20240321210738(transitive)
- Removed@0xsequence/migration@0.0.0-20240321210738(transitive)
- Removed@0xsequence/network@0.0.0-20240321210738(transitive)
- Removed@0xsequence/relayer@0.0.0-20240321210738(transitive)
- Removed@0xsequence/replacer@0.0.0-20240321210738(transitive)
- Removed@0xsequence/sessions@0.0.0-20240321210738(transitive)
- Removed@0xsequence/signhub@0.0.0-20240321210738(transitive)
- Removed@0xsequence/utils@0.0.0-20240321210738(transitive)
- Removed@0xsequence/wallet@0.0.0-20240321210738(transitive)