@0xsequence/provider
Advanced tools
Comparing version 0.11.2 to 0.11.3
# @0xsequence/provider | ||
## 0.11.3 | ||
### Patch Changes | ||
- improve openWindow state options handling | ||
- Updated dependencies [undefined] | ||
- @0xsequence/abi@0.11.3 | ||
- @0xsequence/auth@0.11.3 | ||
- @0xsequence/config@0.11.3 | ||
- @0xsequence/network@0.11.3 | ||
- @0xsequence/transactions@0.11.3 | ||
- @0xsequence/utils@0.11.3 | ||
- @0xsequence/wallet@0.11.3 | ||
## 0.11.2 | ||
@@ -4,0 +18,0 @@ |
import EventEmitter from 'eventemitter3'; | ||
import { ProviderTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageEvent, ProviderMessageResponse, ProviderMessageResponseCallback, WalletSession, ConnectionState } from '../types'; | ||
import { ProviderTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageEvent, ProviderMessageResponse, ProviderMessageResponseCallback, WalletSession, ConnectionState, OpenWalletIntent } from '../types'; | ||
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network'; | ||
@@ -21,3 +21,3 @@ export declare const PROVIDER_CONNECT_TIMEOUT = 8000; | ||
unregister(): void; | ||
openWallet(path?: string, state?: any, defaultNetworkId?: string | number): void; | ||
openWallet(path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void; | ||
closeWallet(): void; | ||
@@ -24,0 +24,0 @@ isConnected(): boolean; |
@@ -1,2 +0,2 @@ | ||
import { ProviderMessage, ProviderTransport, ProviderMessageEvent, ProviderMessageRequest, ProviderMessageResponse, WalletSession } from '../../types'; | ||
import { ProviderMessage, ProviderTransport, ProviderMessageEvent, ProviderMessageRequest, ProviderMessageResponse, WalletSession, OpenWalletIntent } from '../../types'; | ||
import { JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network'; | ||
@@ -10,3 +10,3 @@ export declare class MuxMessageProvider implements ProviderTransport { | ||
unregister: () => void; | ||
openWallet: (path?: string | undefined, state?: any, defaultNetworkId?: string | number | undefined) => void; | ||
openWallet: (path?: string | undefined, state?: OpenWalletIntent | undefined, defaultNetworkId?: string | number | undefined) => void; | ||
closeWallet(): void; | ||
@@ -13,0 +13,0 @@ isConnected(): boolean; |
import { BaseProviderTransport } from '../base-provider-transport'; | ||
import { ProviderMessage } from '../../types'; | ||
import { ProviderMessage, OpenWalletIntent } from '../../types'; | ||
import { ProxyMessageChannelPort } from './proxy-message-channel'; | ||
@@ -9,5 +9,5 @@ export declare class ProxyMessageProvider extends BaseProviderTransport { | ||
unregister: () => void; | ||
openWallet: (path?: string | undefined, state?: any, defaultNetworkId?: string | number | undefined) => void; | ||
openWallet: (path?: string | undefined, state?: OpenWalletIntent | undefined, defaultNetworkId?: string | number | undefined) => void; | ||
closeWallet(): void; | ||
sendMessage(message: ProviderMessage<any>): void; | ||
} |
import { ProviderMessage } from '../../types'; | ||
import { WalletRequestHandler } from '../wallet-request-handler'; | ||
import { BaseWalletTransport } from '../base-wallet-transport'; | ||
export interface RegisterOptions { | ||
loadingPath: string; | ||
} | ||
export declare class WindowMessageHandler extends BaseWalletTransport { | ||
@@ -9,3 +12,3 @@ protected parentWindow: Window; | ||
constructor(walletRequestHandler: WalletRequestHandler); | ||
register(): void; | ||
register(options?: RegisterOptions): void; | ||
unregister(): void; | ||
@@ -12,0 +15,0 @@ private onWindowEvent; |
@@ -1,2 +0,2 @@ | ||
import { ProviderMessage } from '../../types'; | ||
import { OpenWalletIntent, ProviderMessage } from '../../types'; | ||
import { BaseProviderTransport } from '../base-provider-transport'; | ||
@@ -9,3 +9,3 @@ export declare class WindowMessageProvider extends BaseProviderTransport { | ||
unregister: () => void; | ||
openWallet: (path?: string | undefined, state?: any, defaultNetworkId?: string | number | undefined) => void; | ||
openWallet: (path?: string | undefined, state?: OpenWalletIntent | undefined, defaultNetworkId?: string | number | undefined) => void; | ||
closeWallet(): void; | ||
@@ -12,0 +12,0 @@ private onWindowEvent; |
@@ -14,3 +14,3 @@ import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network'; | ||
unregister(): void; | ||
openWallet(path?: string, state?: any, defaultNetworkId?: string | number): void; | ||
openWallet(path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void; | ||
closeWallet(): void; | ||
@@ -79,1 +79,7 @@ isConnected(): boolean; | ||
} | ||
export declare type OpenWalletIntent = { | ||
type: 'login'; | ||
} | { | ||
type: 'jsonRpcRequest'; | ||
method: string; | ||
}; |
@@ -5,3 +5,3 @@ import { NetworkConfig, WalletContext, ChainId } from '@0xsequence/network'; | ||
import { ProxyMessageChannelPort } from './transports'; | ||
import { WalletSession, ProviderMessageEvent } from './types'; | ||
import { WalletSession, ProviderMessageEvent, OpenWalletIntent } from './types'; | ||
import { WalletCommands } from './commands'; | ||
@@ -19,3 +19,3 @@ export interface WalletProvider { | ||
getAuthChainId(): Promise<number>; | ||
openWallet(path?: string, state?: any): Promise<boolean>; | ||
openWallet(path?: string, state?: OpenWalletIntent): Promise<boolean>; | ||
closeWallet(): void; | ||
@@ -51,3 +51,3 @@ getProvider(chainId?: ChainId): Web3Provider | undefined; | ||
getAuthChainId: () => Promise<number>; | ||
openWallet: (path?: string | undefined, state?: any) => Promise<boolean>; | ||
openWallet: (path?: string | undefined, state?: OpenWalletIntent | undefined) => Promise<boolean>; | ||
closeWallet: () => void; | ||
@@ -54,0 +54,0 @@ getProvider(chainId?: ChainId): Web3Provider | undefined; |
{ | ||
"name": "@0xsequence/provider", | ||
"version": "0.11.2", | ||
"version": "0.11.3", | ||
"description": "provider sub-package for Sequence", | ||
@@ -16,9 +16,9 @@ "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider", | ||
"dependencies": { | ||
"@0xsequence/abi": "^0.11.2", | ||
"@0xsequence/auth": "^0.11.2", | ||
"@0xsequence/config": "^0.11.2", | ||
"@0xsequence/network": "^0.11.2", | ||
"@0xsequence/transactions": "^0.11.2", | ||
"@0xsequence/utils": "^0.11.2", | ||
"@0xsequence/wallet": "^0.11.2", | ||
"@0xsequence/abi": "^0.11.3", | ||
"@0xsequence/auth": "^0.11.3", | ||
"@0xsequence/config": "^0.11.3", | ||
"@0xsequence/network": "^0.11.3", | ||
"@0xsequence/transactions": "^0.11.3", | ||
"@0xsequence/utils": "^0.11.3", | ||
"@0xsequence/wallet": "^0.11.3", | ||
"@ethersproject/abstract-signer": "5.0.14", | ||
@@ -25,0 +25,0 @@ "@ethersproject/hash": "^5.0.12", |
@@ -7,3 +7,3 @@ import EventEmitter from 'eventemitter3' | ||
ProviderMessageResponseCallback, ProviderMessageTransport, | ||
WalletSession, ConnectionState | ||
WalletSession, ConnectionState, OpenWalletIntent | ||
} from '../types' | ||
@@ -53,3 +53,3 @@ | ||
openWallet(path?: string, state?: any, defaultNetworkId?: string | number) { | ||
openWallet(path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number) { | ||
throw new Error('abstract method') | ||
@@ -77,6 +77,6 @@ } | ||
// automatically open the wallet when a provider request makes it here. | ||
await this.openWallet() | ||
await this.openWallet(undefined, { type: 'jsonRpcRequest', method: request.method }) | ||
if (!this.isConnected()) { | ||
await this.waitUntilConnected() | ||
} | ||
} | ||
@@ -83,0 +83,0 @@ // send message request, await, and then execute callback after receiving the response |
import { | ||
ProviderMessage, ProviderMessageType, ProviderTransport, | ||
ProviderMessageEvent, ProviderMessageRequest, ProviderMessageResponse, WalletSession | ||
ProviderMessageEvent, ProviderMessageRequest, ProviderMessageResponse, WalletSession, OpenWalletIntent | ||
} from '../../types' | ||
@@ -53,3 +53,3 @@ | ||
openWallet = (path?: string, state?: any, defaultNetworkId?: string | number): void => { | ||
openWallet = (path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void => { | ||
if (this.provider) { | ||
@@ -56,0 +56,0 @@ this.provider.openWallet(path, state, defaultNetworkId) |
import { BaseProviderTransport } from '../base-provider-transport' | ||
import { | ||
ProviderMessage, ConnectionState | ||
ProviderMessage, ConnectionState, OpenWalletIntent | ||
} from '../../types' | ||
@@ -45,3 +45,3 @@ | ||
openWallet = (path?: string, state?: any, defaultNetworkId?: string | number): void => { | ||
openWallet = (path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void => { | ||
this.connect(defaultNetworkId) | ||
@@ -48,0 +48,0 @@ } |
@@ -6,2 +6,6 @@ import { ProviderMessageRequest, ProviderMessage, ProviderMessageType, ProviderMessageResponse } from '../../types' | ||
export interface RegisterOptions { | ||
loadingPath: string | ||
} | ||
export class WindowMessageHandler extends BaseWalletTransport { | ||
@@ -17,3 +21,3 @@ protected parentWindow: Window | ||
register() { | ||
register(options?: RegisterOptions) { | ||
const isPopup = parent.window.opener !== null | ||
@@ -29,4 +33,11 @@ this._isPopup = isPopup | ||
location.searchParams.delete('sid') | ||
window.history.replaceState({}, document.title, location.pathname) | ||
const jsonRpcRequest = location.searchParams.get('jsonRpcRequest') | ||
if (options?.loadingPath && !!jsonRpcRequest) { | ||
window.history.replaceState({}, document.title, options.loadingPath) | ||
} else { | ||
window.history.replaceState({}, document.title, location.pathname) | ||
} | ||
// record parent window instance for communication | ||
@@ -88,3 +99,2 @@ this.parentWindow = parent.window.opener | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
import { ProviderMessage } from '../../types' | ||
import { OpenWalletIntent, ProviderMessage } from '../../types' | ||
import { BaseProviderTransport } from '../base-provider-transport' | ||
@@ -51,3 +51,3 @@ | ||
openWallet = (path?: string, state?: any, defaultNetworkId?: string | number): void => { | ||
openWallet = (path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void => { | ||
if (this.walletWindow && this.isConnected()) { | ||
@@ -61,2 +61,8 @@ // TODO: update the location of window to path | ||
this.walletURL.searchParams.set('sid', this.sessionId) | ||
if(state?.type === 'jsonRpcRequest') { | ||
this.walletURL.searchParams.set('jsonRpcRequest', state.method) | ||
} else { | ||
this.walletURL.searchParams.delete('jsonRpcRequest') | ||
} | ||
@@ -63,0 +69,0 @@ const walletURL = new URL(this.walletURL.href) |
@@ -24,3 +24,3 @@ import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network' | ||
unregister(): void | ||
openWallet(path?: string, state?: any, defaultNetworkId?: string | number): void | ||
openWallet(path?: string, state?: OpenWalletIntent, defaultNetworkId?: string | number): void | ||
closeWallet(): void | ||
@@ -108,1 +108,3 @@ isConnected(): boolean | ||
} | ||
export type OpenWalletIntent = { type: 'login' } | { type: 'jsonRpcRequest'; method: string } |
@@ -10,3 +10,3 @@ import { Networks, NetworkConfig, WalletContext, sequenceContext, ChainId, getNetworkId, JsonRpcSender, | ||
import { MuxMessageProvider, WindowMessageProvider, ProxyMessageProvider, ProxyMessageChannelPort } from './transports' | ||
import { WalletSession, ProviderMessageEvent, ProviderTransport } from './types' | ||
import { WalletSession, ProviderMessageEvent, ProviderTransport, OpenWalletIntent } from './types' | ||
import { WalletCommands } from './commands' | ||
@@ -29,3 +29,3 @@ import { ethers } from 'ethers' | ||
openWallet(path?: string, state?: any): Promise<boolean> | ||
openWallet(path?: string, state?: OpenWalletIntent): Promise<boolean> | ||
closeWallet(): void | ||
@@ -188,3 +188,3 @@ | ||
await this.openWallet('', { login: true }) | ||
await this.openWallet(undefined, { type: 'login' }) | ||
const sessionPayload = await this.transport.messageProvider!.waitUntilLoggedIn() | ||
@@ -276,4 +276,4 @@ this.useSession(sessionPayload, true) | ||
openWallet = async (path?: string, state?: any): Promise<boolean> => { | ||
if (state?.login !== true && !this.isLoggedIn()) { | ||
openWallet = async (path?: string, state?: OpenWalletIntent): Promise<boolean> => { | ||
if (state?.type !== 'login' && !this.isLoggedIn()) { | ||
throw new Error('login first') | ||
@@ -280,0 +280,0 @@ } |
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
378261
9133
Updated@0xsequence/abi@^0.11.3
Updated@0xsequence/auth@^0.11.3
Updated@0xsequence/config@^0.11.3
Updated@0xsequence/network@^0.11.3
Updated@0xsequence/utils@^0.11.3
Updated@0xsequence/wallet@^0.11.3