+ Unstoppable Humanity: {instance.user.humanity_check_id || ''}
+
+ {/if}
+
{#each accounts as { address, ens, balance }}
+
+
+
+
+
+
+
+
+
+`
diff --git a/packages/enkrypt/src/index.ts b/packages/enkrypt/src/index.ts
new file mode 100644
index 000000000..3373a1ad2
--- /dev/null
+++ b/packages/enkrypt/src/index.ts
@@ -0,0 +1,45 @@
+import type {
+ WalletInit,
+ SimpleEventEmitter,
+ EIP1193Provider
+} from '@web3-onboard/common'
+import { createEIP1193Provider } from '@web3-onboard/common'
+import { CustomWindow } from './types.js'
+declare const window: CustomWindow
+
+function enkrypt(): WalletInit {
+ if (typeof window === 'undefined') return () => null
+ return () => {
+ return {
+ label: 'Enkrypt',
+ getIcon: async () => (await import('./icon.js')).default,
+ getInterface: async () => {
+ const enkryptExists = window.hasOwnProperty('enkrypt')
+
+ if (enkryptExists) {
+ const enkryptProvider: EIP1193Provider = window.enkrypt.providers
+ .ethereum as EIP1193Provider
+ const addListener: SimpleEventEmitter['on'] =
+ enkryptProvider.on.bind(enkryptProvider)
+
+ enkryptProvider.on = (event, func) => {
+ addListener(event, func)
+ }
+
+ const provider = createEIP1193Provider(enkryptProvider)
+
+ provider.removeListener = (event, func) => {}
+
+ return {
+ provider
+ }
+ } else {
+ window.open('https://enkrypt.com', '_blank')
+ throw new Error('Please Install Enkrypt to use this wallet')
+ }
+ }
+ }
+ }
+}
+
+export default enkrypt
diff --git a/packages/enkrypt/src/types.ts b/packages/enkrypt/src/types.ts
new file mode 100644
index 000000000..8b7b33127
--- /dev/null
+++ b/packages/enkrypt/src/types.ts
@@ -0,0 +1,6 @@
+import type { ExternalProvider } from '@ethersproject/providers'
+export interface CustomWindow extends Window {
+ enkrypt: {
+ providers: { ethereum: ExternalProvider }
+ }
+}
diff --git a/packages/enkrypt/tsconfig.json b/packages/enkrypt/tsconfig.json
new file mode 100644
index 000000000..09ae989f9
--- /dev/null
+++ b/packages/enkrypt/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": ["src/**/*"],
+
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "declaration": true,
+ "declarationDir": "dist",
+ "paths": {
+ "*": ["./src/*", "./node_modules/*"]
+ },
+ "typeRoots": ["node_modules/@types"]
+ }
+}
\ No newline at end of file
diff --git a/packages/gnosis/package.json b/packages/gnosis/package.json
index 9b62b0ad8..b9ffc7994 100644
--- a/packages/gnosis/package.json
+++ b/packages/gnosis/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/gnosis",
- "version": "2.1.4",
+ "version": "2.1.5",
"description": "Gnosis Safe module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
diff --git a/packages/gnosis/src/icon.ts b/packages/gnosis/src/icon.ts
index 99bd18a8a..1bd36fd17 100644
--- a/packages/gnosis/src/icon.ts
+++ b/packages/gnosis/src/icon.ts
@@ -1,5 +1,5 @@
export default `
-
`
diff --git a/packages/injected/src/icons/enkrypt.ts b/packages/injected/src/icons/enkrypt.ts
new file mode 100644
index 000000000..3e65f53d5
--- /dev/null
+++ b/packages/injected/src/icons/enkrypt.ts
@@ -0,0 +1,17 @@
+export default `
+
+
+
+
+
+
+
+`
diff --git a/packages/injected/src/types.ts b/packages/injected/src/types.ts
index 42db002ca..f12098925 100644
--- a/packages/injected/src/types.ts
+++ b/packages/injected/src/types.ts
@@ -48,7 +48,8 @@ export enum ProviderIdentityFlag {
Sequence = 'isSequence',
Core = 'isAvalanche',
Opera = 'isOpera',
- Bitski = 'isBitski'
+ Bitski = 'isBitski',
+ Enkrypt = 'isEnkrypt'
}
export enum ProviderLabel {
@@ -87,7 +88,8 @@ export enum ProviderLabel {
GameStop = 'GameStop Wallet',
BitKeep = 'BitKeep',
Sequence = 'Sequence',
- Core = 'Core'
+ Core = 'Core',
+ Enkrypt = 'Enkrypt'
}
export interface MeetOneProvider extends ExternalProvider {
@@ -110,7 +112,8 @@ export enum InjectedNameSpace {
GameStop = 'gamestop',
BitKeep = 'bitkeep',
Avalanche = 'avalanche',
- Bitski = 'Bitski'
+ Bitski = 'Bitski',
+ Enkrypt = 'enkrypt'
}
export interface CustomWindow extends Window {
@@ -130,6 +133,11 @@ export interface CustomWindow extends Window {
Bitski: {
getProvider(): InjectedProvider
}
+ enkrypt: {
+ providers: {
+ ethereum: InjectedProvider
+ }
+ }
}
export type InjectedProvider = ExternalProvider &
diff --git a/packages/injected/src/wallets.ts b/packages/injected/src/wallets.ts
index d241ec836..d470a77dc 100644
--- a/packages/injected/src/wallets.ts
+++ b/packages/injected/src/wallets.ts
@@ -578,6 +578,46 @@ const bitski: InjectedWalletModule = {
platforms: ['all']
}
+const enkrypt: InjectedWalletModule = {
+ label: ProviderLabel.Enkrypt,
+ injectedNamespace: InjectedNameSpace.Enkrypt,
+ checkProviderIdentity: ({ provider }) =>
+ !!provider && !!provider.providers && !!provider.providers.ethereum,
+ getIcon: async () => (await import('./icons/enkrypt.js')).default,
+ getInterface: async () => {
+ const addListener: SimpleEventEmitter['on'] =
+ window.enkrypt.providers.ethereum.on.bind(
+ window.enkrypt.providers.ethereum
+ )
+
+ window.enkrypt.providers.ethereum.on = (event, func) => {
+ // intercept chainChanged event and format string
+ if (event === 'chainChanged') {
+ addListener(event, (chainId: ChainId) => {
+ const cb = func as ChainListener
+ cb(`0x${parseInt(chainId as string).toString(16)}`)
+ })
+ } else {
+ addListener(event, func)
+ }
+ }
+
+ const provider = createEIP1193Provider(window.enkrypt.providers.ethereum, {
+ eth_chainId: ({ baseRequest }) =>
+ baseRequest({ method: 'eth_chainId' }).then(
+ id => `0x${parseInt(id as string).toString(16)}`
+ )
+ })
+
+ provider.removeListener = (event, func) => {}
+
+ return {
+ provider
+ }
+ },
+ platforms: ['all']
+}
+
const wallets = [
exodus,
metamask,
@@ -612,7 +652,8 @@ const wallets = [
bitkeep,
sequence,
core,
- bitski
+ bitski,
+ enkrypt
]
export default wallets
diff --git a/packages/mew-wallet/README.md b/packages/mew-wallet/README.md
new file mode 100644
index 000000000..51f9b8f96
--- /dev/null
+++ b/packages/mew-wallet/README.md
@@ -0,0 +1,31 @@
+# @web3-onboard/mew-wallet
+
+## Wallet module for connecting Mew wallet through web3-onboard
+
+### Install
+
+**NPM**
+`npm i @web3-onboard/core @web3-onboard/mew-wallet`
+
+**Yarn**
+`yarn add @web3-onboard/core @web3-onboard/mew-wallet`
+
+## Usage
+
+```typescript
+import Onboard from '@web3-onboard/core'
+import mewWallet from '@web3-onboard/mew-wallet'
+
+const mewWalletModule = mewWallet()
+
+const onboard = Onboard({
+ // ... other Onboard options
+ wallets: [
+ mewWalletModule
+ //... other wallets
+ ]
+})
+
+const connectedWallets = await onboard.connectWallet()
+console.log(connectedWallets)
+```
diff --git a/packages/mew-wallet/package.json b/packages/mew-wallet/package.json
new file mode 100644
index 000000000..59e4ba969
--- /dev/null
+++ b/packages/mew-wallet/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "@web3-onboard/mew-wallet",
+ "version": "2.0.0",
+ "description": "MEW (MyEtherWallet) Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
+ "keywords": [
+ "Ethereum",
+ "Web3",
+ "EVM",
+ "dapp",
+ "Multichain",
+ "Wallet",
+ "Transaction",
+ "Provider",
+ "Hardware Wallet",
+ "Notifications",
+ "React",
+ "Svelte",
+ "Vue",
+ "Next",
+ "Nuxt",
+ "MetaMask",
+ "Coinbase",
+ "WalletConnect",
+ "Ledger",
+ "Trezor",
+ "Connect Wallet",
+ "Ethereum Hooks",
+ "Blocknative",
+ "Mempool",
+ "pending",
+ "confirmed",
+ "Injected Wallet",
+ "Crypto",
+ "Crypto Wallet",
+ "MEW wallet"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/blocknative/web3-onboard.git",
+ "directory": "packages/core"
+ },
+ "homepage": "https://www.blocknative.com/onboard",
+ "bugs": "https://github.com/blocknative/web3-onboard/issues",
+ "module": "dist/index.js",
+ "browser": "dist/index.js",
+ "main": "dist/index.js",
+ "type": "module",
+ "typings": "dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "dev": "tsc -w",
+ "type-check": "tsc --noEmit"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "@ethersproject/providers": "^5.5.0",
+ "@types/lodash.uniqby": "^4.7.6",
+ "@types/node": "^17.0.21",
+ "ts-node": "^10.2.1",
+ "typescript": "^4.5.5",
+ "window": "^4.2.7"
+ },
+ "dependencies": {
+ "@web3-onboard/common": "^2.2.3",
+ "lodash.uniqby": "^4.7.0"
+ }
+}
diff --git a/packages/mew-wallet/src/icon.ts b/packages/mew-wallet/src/icon.ts
new file mode 100644
index 000000000..6938be49a
--- /dev/null
+++ b/packages/mew-wallet/src/icon.ts
@@ -0,0 +1,24 @@
+export default `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`
diff --git a/packages/mew-wallet/src/index.ts b/packages/mew-wallet/src/index.ts
new file mode 100644
index 000000000..bb5170408
--- /dev/null
+++ b/packages/mew-wallet/src/index.ts
@@ -0,0 +1,46 @@
+import { ProviderRpcError, WalletInit } from '@web3-onboard/common'
+import { createEIP1193Provider } from '@web3-onboard/common'
+import { CustomWindow } from './types.js'
+declare const window: CustomWindow
+
+function mewWallet(): WalletInit {
+ if (typeof window === 'undefined') return () => null
+ return ({ device }) => {
+ return device.type === 'mobile'
+ ? {
+ label: 'MEW wallet',
+ getIcon: async () => (await import('./icon.js')).default,
+ getInterface: async () => {
+ const provider =
+ window.hasOwnProperty('ethereum') && window.ethereum.isMEWwallet
+ if (provider) {
+ return {
+ provider: createEIP1193Provider(window.ethereum, {
+ wallet_switchEthereumChain: async ({ params }) => {
+ if (device.os.name.toLowerCase() === 'ios') {
+ throw new ProviderRpcError({
+ message: 'MEW Wallet iOS only supports ETH network',
+ code: 4200
+ })
+ }
+ window.ethereum.setChainId(parseInt(params[0].chainId))
+ return null
+ }
+ })
+ }
+ } else {
+ window.open(
+ 'https://download.mewwallet.com?source=onboard',
+ '_blank'
+ )
+ throw new Error(
+ 'Please Install MEW wallet and use within the MEW DApp browser'
+ )
+ }
+ }
+ }
+ : null
+ }
+}
+
+export default mewWallet
diff --git a/packages/mew-wallet/src/types.ts b/packages/mew-wallet/src/types.ts
new file mode 100644
index 000000000..8163cf1de
--- /dev/null
+++ b/packages/mew-wallet/src/types.ts
@@ -0,0 +1,8 @@
+import type { ExternalProvider } from '@ethersproject/providers'
+interface CustomExternalProvider extends ExternalProvider {
+ isMEWwallet: boolean
+ setChainId: (param: number) => {}
+}
+export interface CustomWindow extends Window {
+ ethereum: CustomExternalProvider
+}
diff --git a/packages/mew-wallet/tsconfig.json b/packages/mew-wallet/tsconfig.json
new file mode 100644
index 000000000..1877915c8
--- /dev/null
+++ b/packages/mew-wallet/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": ["src/**/*"],
+
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "declaration": true,
+ "declarationDir": "dist",
+ "allowSyntheticDefaultImports": true,
+ "paths": {
+ "*": ["./src/*", "./node_modules/*"]
+ },
+ "typeRoots": ["node_modules/@types"]
+ }
+}
\ No newline at end of file
diff --git a/packages/mew/README.md b/packages/mew/README.md
index 49b7f25d7..dd1248385 100644
--- a/packages/mew/README.md
+++ b/packages/mew/README.md
@@ -1,5 +1,8 @@
# @web3-onboard/mew
+## (Deprecated) Wallet module for connecting WalletLink to web3-onboard
+_Use [@web3-onboard/mew-wallet](../mew-wallet/README.md)_
+
## Wallet module for connecting Mew wallet to web3-onboard
### Install
diff --git a/packages/mew/package.json b/packages/mew/package.json
index 58c47fe40..cff0d049e 100644
--- a/packages/mew/package.json
+++ b/packages/mew/package.json
@@ -1,7 +1,7 @@
{
"name": "@web3-onboard/mew",
- "version": "2.1.3",
- "description": "MEW (My Ether Wallet) SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
+ "version": "2.1.4",
+ "description": "(DEPRECATED. Use @web3-onboard/mew-wallet instead) MEW (My Ether Wallet) SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
"Web3",
diff --git a/packages/mew/src/index.ts b/packages/mew/src/index.ts
index abc930e9b..d099ed12d 100644
--- a/packages/mew/src/index.ts
+++ b/packages/mew/src/index.ts
@@ -68,4 +68,7 @@ function mew(): WalletInit {
}
}
+/**
+ * @deprecated Use @web3-onboard/mew-wallet
+ */
export default mew
diff --git a/packages/react/package.json b/packages/react/package.json
index f8ded9c7e..2ddc80554 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/react",
- "version": "2.4.0",
+ "version": "2.4.1",
"description": "A collection of React hooks for integrating Web3-Onboard in to React and Next.js projects. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
@@ -62,7 +62,7 @@
"typescript": "^4.5.5"
},
"dependencies": {
- "@web3-onboard/core": "^2.10.0",
+ "@web3-onboard/core": "^2.10.1",
"@web3-onboard/common": "^2.2.3",
"use-sync-external-store": "1.0.0"
},
diff --git a/packages/sequence/README.md b/packages/sequence/README.md
index 03bed1cb4..9af0a1b12 100644
--- a/packages/sequence/README.md
+++ b/packages/sequence/README.md
@@ -4,7 +4,7 @@
### Install
-`npm i @web3-onboard/sequence`
+`npm i @web3-onboard/sequence @0xsequence`
## Options
diff --git a/packages/sequence/package.json b/packages/sequence/package.json
index bbce69c6d..e75ba8bba 100644
--- a/packages/sequence/package.json
+++ b/packages/sequence/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/sequence",
- "version": "2.0.2",
+ "version": "2.0.3",
"description": "Sequence is the smartest Web3 wallet. Easy, fun and secure.",
"keywords": [
"Ethereum",
@@ -58,5 +58,8 @@
"dependencies": {
"@web3-onboard/common": "^2.2.3",
"0xsequence": "^0.40.5"
+ },
+ "peerDependencies": {
+ "0xsequence": ">=0.40.5"
}
}
diff --git a/packages/uauth/README.md b/packages/uauth/README.md
new file mode 100644
index 000000000..f18fc0427
--- /dev/null
+++ b/packages/uauth/README.md
@@ -0,0 +1,82 @@
+# @web3-onboard/uauth
+
+## Wallet module for connecting Unstoppable Domains to web3-onboard
+
+### Install
+
+**NPM**
+`npm i @web3-onboard/core @web3-onboard/uauth`
+
+**Yarn**
+`yarn add @web3-onboard/core @web3-onboard/uauth`
+
+## Options
+
+Follow the [Login Client Congifuration Docs](https://docs.unstoppabledomains.com/login-with-unstoppable/login-integration-guides/login-client-configuration/) on the Unstoppable Domains website to get setup with your clientID and redirectUri.
+**Note:** The Redirection URI value(s) in the client configuration MUST exactly match the redirect_uri parameter value used in `UauthInitOptions`. More specifics can be found in the [Rules for Redirect URIs Docs](https://docs.unstoppabledomains.com/login-with-unstoppable/login-integration-guides/login-client-configuration/#rules-for-redirect-uris).
+
+```typescript
+type UauthInitOptions = {
+ clientID: string // required and will throw an error if not included: links dapp to Unstoppable Domains for customization
+ redirectUri: string // required and will throw an error if not included: used for pop-up and callback redirection
+ scope?: string // default = 'openid wallet'
+ shouldLoginWithRedirect?: boolean // if true, redirects to your callback page
+ bridge?: string // default = 'https://bridge.walletconnect.org'
+ qrcodeModalOptions?: {
+ mobileLinks: string[] // set the order and list of mobile linking wallets
+ }
+ connectFirstChainId?: boolean // if true, connects to the first network chain provided
+}
+```
+
+## Usage
+
+```typescript
+import Onboard from '@web3-onboard/core'
+import uauthModule from '@web3-onboard/uauth'
+
+// initialize the module with options
+const uauth = uauthModule({
+ clientID: 'YOUR_CLIENT_ID',
+ redirectUri: 'YOUR_REDIRECT_URI',
+ scope?: 'YOUR_SCOPES',
+ shouldLoginWithRedirect?: false
+ bridge?: 'YOUR_CUSTOM_BRIDGE_SERVER',
+ qrcodeModalOptions?: {
+ mobileLinks: ['rainbow', 'metamask', 'argent', 'trust', 'imtoken', 'pillar']
+ },
+ connectFirstChainId?: true
+})
+
+// can also initialize with basic options...
+// const uauth = uauthModule({
+// clientID: "YOUR_CLIENT_ID",
+// redirectUri: "YOUR_REDIRECT_URI"
+// })
+
+const onboard = Onboard({
+ // ... other Onboard options
+ wallets: [
+ uauth
+ //... other wallets
+ ]
+})
+
+const connectedWallets = await onboard.connectWallet()
+console.log(connectedWallets)
+```
+
+### Accessing the UAuth configuration
+
+When Unstoppable Domains is connected the UAuth user instance is exposed.
+This can be used to get information related to the user scopes requested through the `UauthInitOptions`.
+
+```typescript
+const wallets$ = onboard.state.select('wallets').pipe(share())
+wallets$.subscribe(wallet => {
+ const unstoppableUser = wallet.find(
+ provider => provider.label === 'Unstoppable'
+ )
+ if (unstoppableUser) console.log(unstoppableUser.instance.user)
+})
+```
diff --git a/packages/uauth/package.json b/packages/uauth/package.json
new file mode 100644
index 000000000..dce113240
--- /dev/null
+++ b/packages/uauth/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "@web3-onboard/uauth",
+ "version": "2.0.0",
+ "description": "Unstoppable Domains module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
+ "keywords": [
+ "Ethereum",
+ "Web3",
+ "EVM",
+ "dapp",
+ "Multichain",
+ "Wallet",
+ "Transaction",
+ "Provider",
+ "Hardware Wallet",
+ "Notifications",
+ "React",
+ "Svelte",
+ "Vue",
+ "Next",
+ "Nuxt",
+ "MetaMask",
+ "Coinbase",
+ "WalletConnect",
+ "Ledger",
+ "Trezor",
+ "Connect Wallet",
+ "Ethereum Hooks",
+ "Blocknative",
+ "Mempool",
+ "pending",
+ "confirmed",
+ "Injected Wallet",
+ "Crypto",
+ "Crypto Wallet",
+ "Domain Name",
+ "Unstoppable Domains",
+ "Unstoppable"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/blocknative/web3-onboard.git",
+ "directory": "packages/uauth"
+ },
+ "homepage": "https://onboard.blocknative.com",
+ "bugs": "https://github.com/blocknative/web3-onboard/issues",
+ "module": "dist/index.js",
+ "browser": "dist/index.js",
+ "main": "dist/index.js",
+ "type": "module",
+ "typings": "dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "dev": "tsc -w",
+ "type-check": "tsc --noEmit"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "typescript": "^4.5.5"
+ },
+ "dependencies": {
+ "@uauth/js": "^2.4.0",
+ "@ethersproject/providers": "^5.5.0",
+ "@walletconnect/client": "^1.7.1",
+ "@walletconnect/qrcode-modal": "^1.7.1",
+ "@web3-onboard/common": "^2.2.3",
+ "joi": "^17.6.1",
+ "rxjs": "^7.5.2"
+ }
+}
diff --git a/packages/uauth/src/icon.ts b/packages/uauth/src/icon.ts
new file mode 100644
index 000000000..072d5a609
--- /dev/null
+++ b/packages/uauth/src/icon.ts
@@ -0,0 +1,6 @@
+export default `
+
+
+
+
+`
diff --git a/packages/uauth/src/index.ts b/packages/uauth/src/index.ts
new file mode 100644
index 000000000..8158c9342
--- /dev/null
+++ b/packages/uauth/src/index.ts
@@ -0,0 +1,368 @@
+/* eslint-disable @typescript-eslint/ban-ts-comment */
+import type { StaticJsonRpcProvider as StaticJsonRpcProviderType } from '@ethersproject/providers'
+import type { UserInfo } from '@uauth/js'
+import type { UauthInitOptions } from './types.js'
+import { validateUauthInitOptions } from './validation.js'
+import {
+ WalletInit,
+ createEIP1193Provider,
+ EIP1193Provider,
+ Chain,
+ ProviderAccounts
+} from '@web3-onboard/common'
+
+const isHexString = (value: string | number) => {
+ if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
+ return false
+ }
+
+ return true
+}
+
+function uauth(options: UauthInitOptions): WalletInit {
+ return () => {
+ if (options) {
+ const error = validateUauthInitOptions(options)
+
+ if (error) {
+ throw error
+ }
+ }
+
+ const {
+ clientID,
+ redirectUri,
+ scope = 'openid wallet',
+ shouldLoginWithRedirect,
+ bridge = 'https://bridge.walletconnect.org',
+ qrcodeModalOptions,
+ connectFirstChainId
+ } = options || {}
+
+ return {
+ label: 'Unstoppable',
+ getIcon: async () => (await import('./icon.js')).default,
+ getInterface: async ({ chains, EventEmitter }) => {
+ const UAuth = await import('@uauth/js')
+ const uauthInstance = new UAuth.default({
+ clientID: clientID,
+ redirectUri: redirectUri,
+ scope: scope
+ })
+
+ let user: UserInfo
+ try {
+ user = await uauthInstance.user()
+ } catch (error) {
+ if (!uauthInstance.fallbackLoginOptions.scope.includes('wallet')) {
+ throw new Error(
+ 'Must request the "wallet" scope for connector to work.'
+ )
+ }
+
+ if (!uauthInstance.fallbackLoginOptions.scope.includes('openid')) {
+ throw new Error(
+ 'Must request the "openid" scope for connector to work.'
+ )
+ }
+
+ if (shouldLoginWithRedirect) {
+ await uauthInstance.login()
+ // NOTE: We don't want to throw because the page will take some time to
+ // load the redirect page.
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ await new Promise
(() => {})
+ // We need to throw here otherwise typescript won't know that user isn't null.
+ throw new Error('Should never get here.')
+ } else {
+ await uauthInstance.loginWithPopup()
+ user = await uauthInstance.user()
+ }
+ }
+
+ if (!user.wallet_type_hint) {
+ throw new Error('no wallet type hint')
+ }
+
+ // @ts-ignore
+ let provider: EIP1193Provider | EthProvider
+
+ if (['web3', 'injected'].includes(user.wallet_type_hint)) {
+ provider =
+ (window as any).ethereum ||
+ ((window as any).web3 && (window as any).web3.currentProvider)
+ provider = createEIP1193Provider(provider)
+ } else if (user.wallet_type_hint === 'walletconnect') {
+ const { StaticJsonRpcProvider } = await import(
+ '@ethersproject/providers'
+ )
+
+ const { ProviderRpcError, ProviderRpcErrorCode } = await import(
+ '@web3-onboard/common'
+ )
+
+ const { default: WalletConnect } = await import(
+ '@walletconnect/client'
+ )
+
+ // This is a cjs module and therefor depending on build tooling
+ // sometimes it will be nested in the { default } object and
+ // other times it will be the actual import
+ let QRCodeModal = (await import('@walletconnect/qrcode-modal'))
+ .default
+
+ // @ts-ignore - TS thinks that there is no default property on the `QRCodeModal` but sometimes there is
+ QRCodeModal = QRCodeModal.default || QRCodeModal
+
+ const { Subject, fromEvent } = await import('rxjs')
+ const { takeUntil, take } = await import('rxjs/operators')
+
+ const connector = new WalletConnect({
+ bridge
+ })
+
+ const emitter = new EventEmitter()
+
+ class EthProvider {
+ public request: EIP1193Provider['request']
+ public connector: InstanceType
+ public chains: Chain[]
+ public disconnect: EIP1193Provider['disconnect']
+ public emit: typeof EventEmitter['emit']
+ public on: typeof EventEmitter['on']
+ public removeListener: typeof EventEmitter['removeListener']
+
+ private disconnected$: InstanceType
+ private providers: Record
+
+ constructor({
+ connector,
+ chains
+ }: {
+ connector: InstanceType
+ chains: Chain[]
+ }) {
+ this.emit = emitter.emit.bind(emitter)
+ this.on = emitter.on.bind(emitter)
+ this.removeListener = emitter.removeListener.bind(emitter)
+
+ this.connector = connector
+ this.chains = chains
+ this.disconnected$ = new Subject()
+ this.providers = {}
+
+ // @ts-ignore listen for session updates
+ fromEvent(this.connector, 'session_update', (error, payload) => {
+ if (error) {
+ throw error
+ }
+
+ return payload
+ })
+ .pipe(takeUntil(this.disconnected$))
+ .subscribe({
+ next: ({ params }) => {
+ const [{ accounts, chainId }] = params
+ this.emit('accountsChanged', accounts)
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
+ },
+ error: console.warn
+ })
+
+ // @ts-ignore listen for disconnect event
+ fromEvent(this.connector, 'disconnect', (error, payload) => {
+ if (error) {
+ throw error
+ }
+
+ return payload
+ })
+ .pipe(takeUntil(this.disconnected$))
+ .subscribe({
+ next: () => {
+ this.emit('accountsChanged', [])
+ this.disconnected$.next(true)
+ typeof localStorage !== 'undefined' &&
+ localStorage.removeItem('walletconnect')
+ },
+ error: console.warn
+ })
+
+ this.disconnect = () => this.connector.killSession()
+
+ this.request = async ({ method, params }) => {
+ if (method === 'eth_chainId') {
+ return isHexString(this.connector.chainId)
+ ? this.connector.chainId
+ : `0x${this.connector.chainId.toString(16)}`
+ }
+
+ if (method === 'eth_requestAccounts') {
+ return new Promise((resolve, reject) => {
+ // Check if connection is already established
+ if (!this.connector.connected) {
+ // create new session
+ this.connector
+ .createSession(
+ connectFirstChainId
+ ? { chainId: parseInt(chains[0].id, 16) }
+ : undefined
+ )
+ .then(() => {
+ QRCodeModal.open(
+ this.connector.uri,
+ () =>
+ reject(
+ new ProviderRpcError({
+ code: 4001,
+ message: 'User rejected the request.'
+ })
+ ),
+ qrcodeModalOptions
+ )
+ })
+ } else {
+ const { accounts, chainId } = this.connector.session
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
+ return resolve(accounts)
+ }
+
+ // @ts-ignore Subscribe to connection events
+ fromEvent(this.connector, 'connect', (error, payload) => {
+ if (error) {
+ throw error
+ }
+
+ return payload
+ })
+ .pipe(take(1))
+ .subscribe({
+ next: ({ params }) => {
+ const [{ accounts, chainId }] = params
+ this.emit('accountsChanged', accounts)
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
+ QRCodeModal.close()
+ resolve(accounts)
+ },
+ error: reject
+ })
+ })
+ }
+
+ if (method === 'eth_selectAccounts') {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.UNSUPPORTED_METHOD,
+ message: `The Provider does not support the requested method: ${method}`
+ })
+ }
+
+ if (method == 'wallet_switchEthereumChain') {
+ if (!params) {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.INVALID_PARAMS,
+ message: `The Provider requires a chainId to be passed in as an argument`
+ })
+ }
+ const chainIdObj = params[0] as { chainId?: number }
+ if (
+ !chainIdObj.hasOwnProperty('chainId') ||
+ typeof chainIdObj['chainId'] === 'undefined'
+ ) {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.INVALID_PARAMS,
+ message: `The Provider requires a chainId to be passed in as an argument`
+ })
+ }
+ return this.connector.updateSession({
+ chainId: chainIdObj.chainId,
+ accounts: this.connector.accounts
+ })
+ }
+
+ // @ts-ignore
+ if (method === 'eth_sendTransaction') {
+ // @ts-ignore
+ return this.connector.sendTransaction(params[0])
+ }
+
+ // @ts-ignore
+ if (method === 'eth_signTransaction') {
+ // @ts-ignore
+ return this.connector.signTransaction(params[0])
+ }
+
+ // @ts-ignore
+ if (method === 'personal_sign') {
+ // @ts-ignore
+ return this.connector.signPersonalMessage(params)
+ }
+
+ // @ts-ignore
+ if (method === 'eth_sign') {
+ // @ts-ignore
+ return this.connector.signMessage(params)
+ }
+
+ // @ts-ignore
+ if (method.includes('eth_signTypedData')) {
+ // @ts-ignore
+ return this.connector.signTypedData(params)
+ }
+
+ if (method === 'eth_accounts') {
+ return this.connector.sendCustomRequest({
+ id: 1337,
+ jsonrpc: '2.0',
+ method,
+ params
+ })
+ }
+
+ const chainId = await this.request({ method: 'eth_chainId' })
+
+ if (!this.providers[chainId]) {
+ const currentChain = chains.find(({ id }) => id === chainId)
+
+ if (!currentChain) {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.CHAIN_NOT_ADDED,
+ message: `The Provider does not have a rpcUrl to make a request for the requested method: ${method}`
+ })
+ }
+
+ this.providers[chainId] = new StaticJsonRpcProvider(
+ currentChain.rpcUrl
+ )
+ }
+
+ return this.providers[chainId].send(
+ method,
+ // @ts-ignore
+ params
+ )
+ }
+ }
+ }
+ provider = new EthProvider({ chains, connector })
+ }
+ return {
+ provider,
+ instance: {
+ user
+ }
+ }
+ }
+ }
+ }
+}
+
+export default uauth
diff --git a/packages/uauth/src/types.ts b/packages/uauth/src/types.ts
new file mode 100644
index 000000000..def42a1a1
--- /dev/null
+++ b/packages/uauth/src/types.ts
@@ -0,0 +1,32 @@
+export type UauthInitOptions = {
+ /**
+ * Required and will throw an error if not included: links dapp to Unstoppable Domains for customization
+ */
+ clientID: string
+ /**
+ * Required and will throw an error if not included: used for pop-up and callback redirection
+ */
+ redirectUri: string
+ /**
+ * Optional string: Default = 'openid wallet'
+ */
+ scope?: string
+ /**
+ * Optional boolean: If true, redirects to your callback page
+ */
+ shouldLoginWithRedirect?: boolean
+ /**
+ * Optional url string: default = 'https://bridge.walletconnect.org'
+ */
+ bridge?: string
+ qrcodeModalOptions?: {
+ /**
+ * Optional array of strings: Set the order and list of mobile linking wallets
+ */
+ mobileLinks: string[]
+ }
+ /**
+ * Optional boolean: If true, connects to the first network chain provided
+ */
+ connectFirstChainId?: boolean
+}
diff --git a/packages/uauth/src/validation.ts b/packages/uauth/src/validation.ts
new file mode 100644
index 000000000..e0623819a
--- /dev/null
+++ b/packages/uauth/src/validation.ts
@@ -0,0 +1,27 @@
+import * as Joi from 'joi'
+import type { UauthInitOptions } from './types.js'
+
+const uauthOptions = Joi.object({
+ clientID: Joi.string().required(),
+ redirectUri: Joi.string().required(),
+ scope: Joi.string().allow(null),
+ shouldLoginWithRedirect: Joi.boolean().allow(null),
+ bridge: Joi.string().allow(null),
+ qrcodeModalOptions: {
+ mobileLinks: Joi.array().allow(null)
+ },
+ connectFirstChainId: Joi.boolean().allow(null)
+})
+
+type ValidateReturn = Joi.ValidationResult | null
+
+const validate = (validator: Joi.Schema, data: unknown): ValidateReturn => {
+ const result = validator.validate(data)
+ return result.error ? result : null
+}
+
+export const validateUauthInitOptions = (
+ data: UauthInitOptions
+): ValidateReturn => {
+ return validate(uauthOptions, data)
+}
diff --git a/packages/uauth/tsconfig.json b/packages/uauth/tsconfig.json
new file mode 100644
index 000000000..eb2bd2951
--- /dev/null
+++ b/packages/uauth/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": ["src/**/*"],
+
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "declarationDir": "dist",
+ "paths": {
+ "*": ["./src/*", "./node_modules/*"]
+ },
+ "typeRoots": ["node_modules/@types"]
+ }
+}
diff --git a/packages/vue/package.json b/packages/vue/package.json
index c3b50cedc..ef8c95a36 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/vue",
- "version": "2.3.0",
+ "version": "2.3.1",
"description": "A collection of Vue Composables for integrating Web3-Onboard in to a Vue or Nuxt project. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
@@ -63,7 +63,7 @@
"@vueuse/core": "^8.4.2",
"@vueuse/rxjs": "^8.2.0",
"@web3-onboard/common": "^2.2.3",
- "@web3-onboard/core": "^2.10.0",
+ "@web3-onboard/core": "^2.10.1",
"vue-demi": "^0.12.4"
},
"peerDependencies": {
diff --git a/packages/walletconnect/package.json b/packages/walletconnect/package.json
index bbd10b83d..ccfbd0845 100644
--- a/packages/walletconnect/package.json
+++ b/packages/walletconnect/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/walletconnect",
- "version": "2.1.3",
+ "version": "2.2.0",
"description": "WalletConnect SDK module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
diff --git a/packages/walletconnect/src/index.ts b/packages/walletconnect/src/index.ts
index 9ac95cf54..a419ea840 100644
--- a/packages/walletconnect/src/index.ts
+++ b/packages/walletconnect/src/index.ts
@@ -15,6 +15,14 @@ interface WalletConnectOptions {
connectFirstChainId?: boolean
}
+const isHexString = (value: string | number) => {
+ if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
+ return false
+ }
+
+ return true
+}
+
function walletConnect(options?: WalletConnectOptions): WalletInit {
const {
bridge = 'https://bridge.walletconnect.org',
@@ -97,7 +105,10 @@ function walletConnect(options?: WalletConnectOptions): WalletInit {
next: ({ params }) => {
const [{ accounts, chainId }] = params
this.emit('accountsChanged', accounts)
- this.emit('chainChanged', `0x${chainId.toString(16)}`)
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
},
error: console.warn
})
@@ -125,7 +136,9 @@ function walletConnect(options?: WalletConnectOptions): WalletInit {
this.request = async ({ method, params }) => {
if (method === 'eth_chainId') {
- return `0x${this.connector.chainId.toString(16)}`
+ return isHexString(this.connector.chainId)
+ ? this.connector.chainId
+ : `0x${this.connector.chainId.toString(16)}`
}
if (method === 'eth_requestAccounts') {
@@ -154,7 +167,10 @@ function walletConnect(options?: WalletConnectOptions): WalletInit {
})
} else {
const { accounts, chainId } = this.connector.session
- this.emit('chainChanged', `0x${chainId.toString(16)}`)
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
return resolve(accounts)
}
@@ -171,7 +187,10 @@ function walletConnect(options?: WalletConnectOptions): WalletInit {
next: ({ params }) => {
const [{ accounts, chainId }] = params
this.emit('accountsChanged', accounts)
- this.emit('chainChanged', `0x${chainId.toString(16)}`)
+ const hexChainId = isHexString(chainId)
+ ? chainId
+ : `0x${chainId.toString(16)}`
+ this.emit('chainChanged', hexChainId)
QRCodeModal.close()
resolve(accounts)
},
@@ -180,16 +199,36 @@ function walletConnect(options?: WalletConnectOptions): WalletInit {
})
}
- if (
- method === 'wallet_switchEthereumChain' ||
- method === 'eth_selectAccounts'
- ) {
+ if (method === 'eth_selectAccounts') {
throw new ProviderRpcError({
code: ProviderRpcErrorCode.UNSUPPORTED_METHOD,
message: `The Provider does not support the requested method: ${method}`
})
}
+ if (method == 'wallet_switchEthereumChain') {
+ if (!params) {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.INVALID_PARAMS,
+ message: `The Provider requires a chainId to be passed in as an argument`
+ })
+ }
+ const chainIdObj = params[0] as { chainId?: number }
+ if (
+ !chainIdObj.hasOwnProperty('chainId') ||
+ typeof chainIdObj['chainId'] === 'undefined'
+ ) {
+ throw new ProviderRpcError({
+ code: ProviderRpcErrorCode.INVALID_PARAMS,
+ message: `The Provider requires a chainId to be passed in as an argument`
+ })
+ }
+ return this.connector.updateSession({
+ chainId: chainIdObj.chainId,
+ accounts: this.connector.accounts
+ })
+ }
+
// @ts-ignore
if (method === 'eth_sendTransaction') {
// @ts-ignore
diff --git a/yarn.lock b/yarn.lock
index 33ec05902..94f1bf1b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -549,6 +549,21 @@
"@ethersproject/properties" "^5.6.0"
"@ethersproject/strings" "^5.6.1"
+"@ethersproject/abi@^5.0.1":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
+ integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0":
version "5.5.1"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5"
@@ -575,6 +590,19 @@
"@ethersproject/transactions" "^5.6.2"
"@ethersproject/web" "^5.6.1"
+"@ethersproject/abstract-provider@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef"
+ integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/networks" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/web" "^5.7.0"
+
"@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d"
@@ -597,6 +625,17 @@
"@ethersproject/logger" "^5.6.0"
"@ethersproject/properties" "^5.6.0"
+"@ethersproject/abstract-signer@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2"
+ integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+
"@ethersproject/address@5.5.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f"
@@ -619,6 +658,17 @@
"@ethersproject/logger" "^5.6.0"
"@ethersproject/rlp" "^5.6.1"
+"@ethersproject/address@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37"
+ integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+
"@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090"
@@ -633,6 +683,13 @@
dependencies:
"@ethersproject/bytes" "^5.6.1"
+"@ethersproject/base64@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c"
+ integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+
"@ethersproject/basex@5.5.0", "@ethersproject/basex@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3"
@@ -667,6 +724,15 @@
"@ethersproject/logger" "^5.6.0"
bn.js "^5.2.1"
+"@ethersproject/bignumber@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2"
+ integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ bn.js "^5.2.1"
+
"@ethersproject/bytes@5.5.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c"
@@ -681,6 +747,13 @@
dependencies:
"@ethersproject/logger" "^5.6.0"
+"@ethersproject/bytes@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d"
+ integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
"@ethersproject/constants@5.5.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e"
@@ -695,6 +768,13 @@
dependencies:
"@ethersproject/bignumber" "^5.6.2"
+"@ethersproject/constants@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e"
+ integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+
"@ethersproject/contracts@5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197"
@@ -755,6 +835,21 @@
"@ethersproject/properties" "^5.6.0"
"@ethersproject/strings" "^5.6.1"
+"@ethersproject/hash@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7"
+ integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
"@ethersproject/hdnode@5.5.0", "@ethersproject/hdnode@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6"
@@ -845,6 +940,14 @@
"@ethersproject/bytes" "^5.6.1"
js-sha3 "0.8.0"
+"@ethersproject/keccak256@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a"
+ integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ js-sha3 "0.8.0"
+
"@ethersproject/logger@5.5.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d"
@@ -855,6 +958,11 @@
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a"
integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==
+"@ethersproject/logger@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
+ integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
+
"@ethersproject/networks@5.5.2", "@ethersproject/networks@^5.5.0":
version "5.5.2"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b"
@@ -869,6 +977,13 @@
dependencies:
"@ethersproject/logger" "^5.6.0"
+"@ethersproject/networks@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6"
+ integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
"@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050"
@@ -899,6 +1014,13 @@
dependencies:
"@ethersproject/logger" "^5.6.0"
+"@ethersproject/properties@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30"
+ integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
"@ethersproject/providers@5.5.2":
version "5.5.2"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99"
@@ -1007,6 +1129,14 @@
"@ethersproject/bytes" "^5.6.1"
"@ethersproject/logger" "^5.6.0"
+"@ethersproject/rlp@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304"
+ integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
"@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7"
@@ -1049,6 +1179,18 @@
elliptic "6.5.4"
hash.js "1.1.7"
+"@ethersproject/signing-key@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3"
+ integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ bn.js "^5.2.1"
+ elliptic "6.5.4"
+ hash.js "1.1.7"
+
"@ethersproject/solidity@5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f"
@@ -1091,6 +1233,15 @@
"@ethersproject/constants" "^5.6.1"
"@ethersproject/logger" "^5.6.0"
+"@ethersproject/strings@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2"
+ integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
"@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908"
@@ -1121,6 +1272,21 @@
"@ethersproject/rlp" "^5.6.1"
"@ethersproject/signing-key" "^5.6.2"
+"@ethersproject/transactions@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b"
+ integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+
"@ethersproject/units@5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e"
@@ -1203,6 +1369,17 @@
"@ethersproject/properties" "^5.6.0"
"@ethersproject/strings" "^5.6.1"
+"@ethersproject/web@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae"
+ integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==
+ dependencies:
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
"@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f"
@@ -2585,6 +2762,32 @@
"@typescript-eslint/types" "4.33.0"
eslint-visitor-keys "^2.0.0"
+"@uauth/common@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@uauth/common/-/common-2.3.0.tgz#de0018503614e993af9f6373983bc53828bf9b80"
+ integrity sha512-RuRYd8UgVN1eotoZjj2YhgHHP7PlEGxPEKSqUbmtJYumb6DLrlR0HNRF+wM8LQz/x4SBBo+hdm0ueC5bAHcXBg==
+
+"@uauth/js@^2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@uauth/js/-/js-2.4.0.tgz#f69d3221f560b0984955432f6de5e6eb089f36a6"
+ integrity sha512-KYWnEa2+Waa216TNhKmd1M78A8VnEjL6TbfaFHUKtixzKHYMYPIGj3zrD2Am3KHKIyq3bP11++ozoos6551Qrw==
+ dependencies:
+ "@uauth/common" "2.3.0"
+ "@unstoppabledomains/resolution" "^8.0"
+ global "^4.4.0"
+ jose "^4.5.0"
+
+"@unstoppabledomains/resolution@^8.0":
+ version "8.3.3"
+ resolved "https://registry.yarnpkg.com/@unstoppabledomains/resolution/-/resolution-8.3.3.tgz#599c5e2f068a36e24bd19c0f9e2f753036264a3b"
+ integrity sha512-jQ9757Lvx/xqU7Lg7JT4L9WQZuElHkMiJmtph0e6TSwfguIlkv1i5UgzURgVXDvVizVKpDejGS60kuvICkz9ZQ==
+ dependencies:
+ "@ethersproject/abi" "^5.0.1"
+ bn.js "^4.4.0"
+ cross-fetch "^3.1.4"
+ crypto-js "^4.1.1"
+ elliptic "^6.5.4"
+
"@vue/compiler-core@3.2.31":
version "3.2.31"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.31.tgz#d38f06c2cf845742403b523ab4596a3fda152e89"
@@ -3806,7 +4009,7 @@ bn.js@4.11.8:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9:
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
@@ -4634,7 +4837,7 @@ crypto-js@^3.1.9-1:
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
-crypto-js@^4.0.0:
+crypto-js@^4.0.0, crypto-js@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
@@ -6407,7 +6610,7 @@ glob@^7.1.3, glob@^7.1.6, glob@^7.2.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
-global@~4.4.0:
+global@^4.4.0, global@~4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
@@ -7200,6 +7403,11 @@ joi@^17.6.1:
"@sideway/formula" "^3.0.0"
"@sideway/pinpoint" "^2.0.0"
+jose@^4.5.0:
+ version "4.10.3"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-4.10.3.tgz#36ffeae395f14624a99961db6ada957476eccb19"
+ integrity sha512-3S4wQnaoJKSAx9uHSoyf8B/lxjs1qCntHWL6wNFszJazo+FtWe+qD0zVfY0BlqJ5HHK4jcnM98k3BQzVLbzE4g==
+
js-base64@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745"
@@ -7344,11 +7552,9 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json5@^2.1.2:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
- integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
- dependencies:
- minimist "^1.2.5"
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
jsonfile@^4.0.0:
version "4.0.0"
@@ -7503,9 +7709,9 @@ loader-runner@^4.2.0:
integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
loader-utils@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129"
- integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
+ integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"