Socket
Socket
Sign inDemoInstall

@0xsequence/provider

Package Overview
Dependencies
Maintainers
2
Versions
498
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@0xsequence/provider - npm Package Compare versions

Comparing version 0.9.1 to 0.9.3

14

CHANGELOG.md
# @0xsequence/provider
## 0.9.3
### Patch Changes
- - minor improvements
- Updated dependencies [undefined]
- @0xsequence/abi@0.9.3
- @0xsequence/auth@0.9.3
- @0xsequence/config@0.9.3
- @0xsequence/network@0.9.3
- @0xsequence/transactions@0.9.3
- @0xsequence/utils@0.9.3
- @0xsequence/wallet@0.9.3
## 0.9.1

@@ -4,0 +18,0 @@

6

dist/declarations/src/transports/base-provider-transport.d.ts
import EventEmitter from 'eventemitter3';
import { ProviderTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageEvent, ProviderMessageResponse, ProviderMessageResponseCallback, WalletSession, ConnectionState } from '../types';
import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
export declare const PROVIDER_CONNECT_TIMEOUT = 8000;

@@ -15,4 +15,6 @@ export declare const nextMessageIdx: () => number;

protected networksPayload: NetworkConfig[];
protected registered: boolean;
protected walletContextPayload: WalletContext;
protected _registered: boolean;
constructor();
get registered(): boolean;
register(): void;

@@ -19,0 +21,0 @@ unregister(): void;

import { WalletTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageResponse } from '../types';
import { WalletRequestHandler } from './wallet-request-handler';
import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
export declare abstract class BaseWalletTransport implements WalletTransport {
protected walletRequestHandler: WalletRequestHandler;
protected _sessionId: string;
protected registered: boolean;
protected _registered: boolean;
constructor(walletRequestHandler: WalletRequestHandler);
get registered(): boolean;
register(): void;

@@ -23,2 +24,3 @@ unregister(): void;

notifyNetworks(networks: NetworkConfig[]): void;
notifyWalletContext(walletContext: WalletContext): void;
}

@@ -11,3 +11,3 @@ import { ProviderMessageRequest, ProviderMessageResponse, WalletMessageEvent, ProviderMessageRequestHandler, MessageToSign } from '../types';

private testnetNetworks;
private defaultNetworkId?;
private _defaultNetworkId?;
private events;

@@ -22,3 +22,4 @@ constructor(signer: Signer | null, prompter: WalletUserPrompter | null, mainnetNetworks: Networks, testnetNetworks?: Networks);

getChainId(): Promise<number>;
setDefaultChain(chainId: string | number): Promise<boolean>;
setDefaultNetwork(chainId: string | number): Promise<boolean>;
get defaultNetworkId(): string | number | undefined;
getNetworks(jsonRpcResponse?: boolean): Promise<NetworkConfig[]>;

@@ -28,2 +29,3 @@ notifyLogin(accountAddress: string): void;

notifyNetworks(networks?: NetworkConfig[]): Promise<void>;
notifyWalletContext(): Promise<void>;
getSigner(): Signer | null;

@@ -30,0 +32,0 @@ setSigner(signer: Signer | null): void;

@@ -1,4 +0,5 @@

import { NetworkConfig, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network';
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network';
import { TypedData } from '@0xsequence/utils';
export interface WalletSession {
walletContext?: WalletContext;
accountAddress?: string;

@@ -54,4 +55,4 @@ networks?: NetworkConfig[];

}
export declare type WalletMessageEvent = 'chainChanged' | 'accountsChanged' | 'login' | 'logout' | 'networks' | 'debug';
export declare type ProviderMessageEvent = 'message' | 'connect' | 'disconnect' | 'debug' | WalletMessageEvent;
export declare type WalletMessageEvent = 'chainChanged' | 'accountsChanged' | 'login' | 'logout' | 'networks' | 'walletContext' | '_debug';
export declare type ProviderMessageEvent = 'message' | 'connect' | 'disconnect' | '_debug' | WalletMessageEvent;
export declare enum ProviderMessageType {

@@ -64,2 +65,3 @@ MESSAGE = "message",

NETWORKS = "networks",
WALLET_CONTEXT = "walletContext",
DEBUG = "_debug"

@@ -66,0 +68,0 @@ }

@@ -74,3 +74,2 @@ import { NetworkConfig, WalletContext, ChainId } from '@0xsequence/network';

walletAppURL: string;
walletContext?: WalletContext;
networks?: Partial<NetworkConfig>[];

@@ -88,3 +87,4 @@ networkRpcUrl?: string;

};
walletContext?: WalletContext;
}
export declare const DefaultProviderConfig: ProviderConfig;
{
"name": "@0xsequence/provider",
"version": "0.9.1",
"version": "0.9.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.9.1",
"@0xsequence/auth": "^0.9.1",
"@0xsequence/config": "^0.9.1",
"@0xsequence/network": "^0.9.1",
"@0xsequence/transactions": "^0.9.1",
"@0xsequence/utils": "^0.9.1",
"@0xsequence/wallet": "^0.9.1",
"@0xsequence/abi": "^0.9.3",
"@0xsequence/auth": "^0.9.3",
"@0xsequence/config": "^0.9.3",
"@0xsequence/network": "^0.9.3",
"@0xsequence/transactions": "^0.9.3",
"@0xsequence/utils": "^0.9.3",
"@0xsequence/wallet": "^0.9.3",
"@ethersproject/abstract-signer": "5.0.12",

@@ -29,4 +29,3 @@ "@ethersproject/hash": "^5.0.11",

"ethers": "^5.0.27",
"eventemitter3": "^4.0.7",
"platform": "^1.3.6"
"eventemitter3": "^4.0.7"
},

@@ -33,0 +32,0 @@ "peerDependencies": {},

@@ -10,3 +10,3 @@ import EventEmitter from 'eventemitter3'

import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback, JsonRpcResponse } from '@0xsequence/network'
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponseCallback, JsonRpcResponse } from '@0xsequence/network'

@@ -31,10 +31,15 @@ export const PROVIDER_CONNECT_TIMEOUT = 8000 // in ms

protected networksPayload: NetworkConfig[]
protected walletContextPayload: WalletContext
protected registered: boolean
protected _registered: boolean
constructor() {
this.connection = ConnectionState.DISCONNECTED
this.registered = false
this._registered = false
}
get registered(): boolean {
return this._registered
}
register() {

@@ -187,2 +192,10 @@ throw new Error('abstract method')

}
// NOTIFY WALLET_CONTEXT -- when a user connects or logs in
if (message.type === ProviderMessageType.WALLET_CONTEXT) {
this.walletContextPayload = message.data
this.events.emit('walletContext', this.walletContextPayload)
return
}
}

@@ -285,6 +298,16 @@

})
}),
new Promise<WalletContext>(resolve => {
if (this.walletContextPayload) {
resolve(this.walletContextPayload)
return
}
this.events.once('walletContext', (walletContext) => {
resolve(walletContext)
})
})
]).then(values => {
const [ accountAddress, networks ] = values
return { accountAddress, networks }
const [ accountAddress, networks, walletContext ] = values
return { accountAddress, networks, walletContext }
})

@@ -354,2 +377,3 @@

this.networksPayload = undefined
this.walletContextPayload = undefined

@@ -356,0 +380,0 @@ this.events.emit('disconnect')

@@ -9,3 +9,3 @@ import { ethers } from 'ethers'

import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network'
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network'

@@ -16,3 +16,3 @@ export abstract class BaseWalletTransport implements WalletTransport {

protected _sessionId: string
protected registered: boolean
protected _registered: boolean

@@ -39,4 +39,13 @@ constructor(walletRequestHandler: WalletRequestHandler) {

this.walletRequestHandler.on('walletContext', (walletContext: WalletContext) => {
if (!this.registered || !walletContext) return
this.notifyWalletContext(walletContext)
})
}
get registered(): boolean {
return this._registered
}
register() {

@@ -64,2 +73,5 @@ throw new Error('abstract method')

// notify wallet context
await this.walletRequestHandler.notifyWalletContext()
// notify account and network details depending on state

@@ -79,3 +91,8 @@ const accountAddress = await this.walletRequestHandler.getAddress()

if (defaultNetworkId) {
await this.walletRequestHandler.setDefaultChain(defaultNetworkId)
// sets dapp network on the remote wallet, which will then notify
// the dapp with its networks list
await this.walletRequestHandler.setDefaultNetwork(defaultNetworkId)
} else {
// notify networks list
await this.walletRequestHandler.notifyNetworks()
}

@@ -147,2 +164,10 @@

notifyWalletContext(walletContext: WalletContext) {
this.sendMessage({
idx: -1,
type: ProviderMessageType.WALLET_CONTEXT,
data: walletContext
})
}
}

@@ -19,3 +19,3 @@ import { BaseWalletTransport } from '../base-wallet-transport'

}
this.registered = true
this._registered = true
}

@@ -25,3 +25,3 @@

this.port.handleMessage = undefined
this.registered = false
this._registered = false
}

@@ -28,0 +28,0 @@

@@ -36,7 +36,7 @@ import { BaseProviderTransport, nextMessageIdx } from '../base-provider-transport'

this.registered = true
this._registered = true
}
unregister = () => {
this.registered = false
this._registered = false
this.closeWallet()

@@ -43,0 +43,0 @@ this.events.removeAllListeners()

@@ -25,3 +25,3 @@ import EventEmitter from 'eventemitter3'

private defaultNetworkId?: string | number
private _defaultNetworkId?: string | number

@@ -49,5 +49,5 @@ private events: EventEmitter<WalletMessageEvent, any> = new EventEmitter()

}
if (this.defaultNetworkId) {
if (!(await this.setDefaultChain(this.defaultNetworkId))) {
throw new Error(`WalletRequestHandler setup unable to set defaulNetworkId ${this.defaultNetworkId}`)
if (this._defaultNetworkId) {
if (!(await this.setDefaultNetwork(this._defaultNetworkId))) {
throw new Error(`WalletRequestHandler setup unable to set defaulNetworkId ${this._defaultNetworkId}`)
}

@@ -89,3 +89,3 @@ }

// only allow public json rpc method to the provider when user is not logged in, aka signer is not set
if ((!this.signer || this.signer === null) && !publicJsonRpcMethods.includes(request.method)) {
if ((!this.signer || this.signer === null) && !permittedJsonRpcMethods.includes(request.method)) {
throw new Error(`not logged in. ${request.method} is unavailable`)

@@ -382,3 +382,3 @@ }

// set default network of wallet
case 'sequence_setDefaultChain': {
case 'sequence_setDefaultNetwork': {
const [defaultNetworkId] = request.params

@@ -389,3 +389,3 @@

}
const ok = await this.setDefaultChain(defaultNetworkId)
const ok = await this.setDefaultNetwork(defaultNetworkId)
if (!ok) {

@@ -445,5 +445,5 @@ throw new Error(`unable to set default network ${defaultNetworkId}`)

async setDefaultChain(chainId: string | number): Promise<boolean> {
async setDefaultNetwork(chainId: string | number): Promise<boolean> {
if (!chainId) return
this.defaultNetworkId = chainId
this._defaultNetworkId = chainId
if (this.signer && (<any>this.signer).setNetworks) {

@@ -458,2 +458,6 @@ (<any>this.signer).setNetworks(this.mainnetNetworks, this.testnetNetworks, chainId)

get defaultNetworkId(): string | number | undefined {
return this._defaultNetworkId
}
async getNetworks(jsonRpcResponse?: boolean): Promise<NetworkConfig[]> {

@@ -504,2 +508,11 @@ if (!this.signer) {

async notifyWalletContext() {
if (!this.signer) {
console.warn('signer is not set, skipping to notify wallet context')
return
}
const walletContext = await this.signer.getWalletContext()
this.events.emit('walletContext', walletContext)
}
getSigner(): Signer | null {

@@ -522,3 +535,3 @@ return this.signer

const publicJsonRpcMethods = [
const permittedJsonRpcMethods = [
'net_version', 'eth_chainId', 'eth_getBalance', 'eth_getTransactionCount',

@@ -528,3 +541,3 @@ 'eth_blockNumber', 'eth_getBlockByNumber', 'eth_getBlockByHash', 'eth_getTransactionByHash',

'sequence_getWalletContext', 'sequence_getNetworks', 'sequence_setDefaultChain'
'sequence_getWalletContext', 'sequence_getNetworks', 'sequence_setDefaultNetwork'
]

@@ -34,3 +34,3 @@ import { ProviderMessageRequest, ProviderMessage, ProviderMessageType, ProviderMessageResponse } from '../../types'

window.addEventListener('message', this.onWindowEvent, false)
this.registered = true
this._registered = true
}

@@ -40,3 +40,3 @@

window.removeEventListener('message', this.onWindowEvent)
this.registered = false
this._registered = false
}

@@ -43,0 +43,0 @@

@@ -33,7 +33,7 @@ import { ProviderMessage } from '../../types'

this.registered = true
this._registered = true
}
unregister = () => {
this.registered = false
this._registered = false
this.closeWallet()

@@ -40,0 +40,0 @@

@@ -1,2 +0,2 @@

import { NetworkConfig, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network'
import { NetworkConfig, WalletContext, JsonRpcRequest, JsonRpcResponse, JsonRpcHandler } from '@0xsequence/network'
import { TypedData } from '@0xsequence/utils'

@@ -7,2 +7,5 @@

export interface WalletSession {
// Wallet context
walletContext?: WalletContext
// Account address of the wallet

@@ -76,5 +79,5 @@ accountAddress?: string

export type WalletMessageEvent = 'chainChanged' | 'accountsChanged' | 'login' | 'logout' | 'networks' | 'debug'
export type WalletMessageEvent = 'chainChanged' | 'accountsChanged' | 'login' | 'logout' | 'networks' | 'walletContext' | '_debug'
export type ProviderMessageEvent = 'message' | 'connect' | 'disconnect' | 'debug' | WalletMessageEvent
export type ProviderMessageEvent = 'message' | 'connect' | 'disconnect' | '_debug' | WalletMessageEvent

@@ -88,2 +91,3 @@ export enum ProviderMessageType {

NETWORKS = 'networks',
WALLET_CONTEXT = 'walletContext',

@@ -90,0 +94,0 @@ DEBUG = '_debug'

@@ -113,3 +113,3 @@ import { Networks, NetworkConfig, WalletContext, sequenceContext, ChainId, getNetworkId, JsonRpcSender,

this.transport.allowProvider = allowProviderMiddleware((request: JsonRpcRequest): boolean => {
if (request.method === 'sequence_setDefaultChain') return true
if (request.method === 'sequence_setDefaultNetwork') return true

@@ -166,2 +166,7 @@ const isLoggedIn = this.isLoggedIn()

// below will update the wallet context automatically
this.transport.messageProvider.on('walletContext', (walletContext: WalletContext) => {
this.useSession({ walletContext: walletContext }, true)
})
// Load existing session from localStorage

@@ -316,3 +321,3 @@ const session = this.loadSession()

exceptionProviderMiddleware,
new EagerProvider(this.session.accountAddress),
new EagerProvider({ accountAddress: this.session.accountAddress, walletContext: this.session.walletContext }),
new SigningProvider(this.transport.provider),

@@ -330,3 +335,3 @@ this.transport.cachedProvider,

exceptionProviderMiddleware,
new EagerProvider(this.session.accountAddress, network.chainId),
new EagerProvider({ accountAddress: this.session.accountAddress, walletContext: this.session.walletContext, chainId: network.chainId }),
new SigningProvider(this.transport.provider),

@@ -409,2 +414,9 @@ new CachedProvider(network.chainId),

// setup wallet context
if (this.config.walletContext) {
this.session.walletContext = this.config.walletContext
} else {
this.session.walletContext = session.walletContext
}
// setup account

@@ -441,5 +453,5 @@ if (session.accountAddress) {

// confirm default network is set correctly
if (this.config.defaultNetworkId) {
if (this.config.defaultNetworkId && networks && networks.length > 0) {
if (!checkNetworkConfig(networks[0], this.config.defaultNetworkId)) {
throw new Error(`expecting defaultNetworkId ${this.config.defaultNetworkId} but is set to ${networks[0]}`)
throw new Error(`expecting defaultNetworkId '${this.config.defaultNetworkId}' but is set to '${networks[0].name}'`)
}

@@ -451,2 +463,7 @@ }

// short-circuit if setting empty network list (aka logged out state)
if (!this.session.networks || this.session.networks.length === 0) {
return
}
// check if any custom network settings, otherwise return early

@@ -488,6 +505,2 @@ if (!this.config.networks && !this.config.networkRpcUrl) {

// Sequence Wallet Modules Context override. By default (and recommended), the
// WalletContext is returned by the wallet app upon login.
walletContext?: WalletContext
// networks is a configuration list of networks used by the wallet. This list

@@ -521,2 +534,9 @@ // is combined with the network list supplied from the wallet upon login,

}
// Sequence Wallet Modules Context override. By default (and recommended), the
// WalletContext used the one returned by the wallet app upon login.
//
// NOTE: do not use this option unless you know what you're doing
walletContext?: WalletContext
}

@@ -523,0 +543,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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc