Add Polkadot RPCs to the Dapp examples and wallet (#44)
Co-authored-by: Ben Kremer <contact@bkrem.dev>
This commit is contained in:
		
							parent
							
								
									6a77191dd3
								
							
						
					
					
						commit
						1406ce3999
					
				| @ -11,6 +11,7 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@ethereumjs/tx": "^3.5.0", |     "@ethereumjs/tx": "^3.5.0", | ||||||
|  |     "@polkadot/util-crypto": "^10.1.2", | ||||||
|     "@solana/web3.js": "^1.36.0", |     "@solana/web3.js": "^1.36.0", | ||||||
|     "@walletconnect/encoding": "^1.0.1", |     "@walletconnect/encoding": "^1.0.1", | ||||||
|     "@walletconnect/qrcode-modal": "^1.7.8", |     "@walletconnect/qrcode-modal": "^1.7.8", | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								dapps/react-dapp-v2/public/assets/westend-logo.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								dapps/react-dapp-v2/public/assets/westend-logo.svg
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 27 KiB | 
| @ -1,12 +1,29 @@ | |||||||
| import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; | import { ChainsMap } from "caip-api"; | ||||||
| import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants"; | import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants"; | ||||||
| 
 | import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; | ||||||
| import { | import { | ||||||
|   NamespaceMetadata, |   NamespaceMetadata, | ||||||
|   ChainMetadata, |   ChainMetadata, | ||||||
|   ChainRequestRender, |   ChainRequestRender, | ||||||
| } from "../helpers"; | } from "../helpers"; | ||||||
| 
 | 
 | ||||||
|  | export const PolkadotChainData: ChainsMap = { | ||||||
|  |   ["91b171bb158e2d3848fa23a9f1c25182"]: { | ||||||
|  |     id: "polkadot:91b171bb158e2d3848fa23a9f1c25182", | ||||||
|  |     name: "Polkadot Mainnet", | ||||||
|  |     rpc: ["wss://rpc.polkadot.io"], | ||||||
|  |     slip44: 0, | ||||||
|  |     testnet: false, | ||||||
|  |   }, | ||||||
|  |   ["e143f23803ac50e8f6f8e62695d1ce9e"]: { | ||||||
|  |     id: "polkadot:e143f23803ac50e8f6f8e62695d1ce9e", | ||||||
|  |     name: "Polkadot Testnet (Westend)", | ||||||
|  |     rpc: ["wss://westend-rpc.polkadot.io"], | ||||||
|  |     slip44: 0, | ||||||
|  |     testnet: false, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| export const PolkadotMetadata: NamespaceMetadata = { | export const PolkadotMetadata: NamespaceMetadata = { | ||||||
|   // eslint-disable-next-line no-useless-computed-key
 |   // eslint-disable-next-line no-useless-computed-key
 | ||||||
|   ["91b171bb158e2d3848fa23a9f1c25182"]: { |   ["91b171bb158e2d3848fa23a9f1c25182"]: { | ||||||
| @ -15,6 +32,10 @@ export const PolkadotMetadata: NamespaceMetadata = { | |||||||
|       "polkadot:91b171bb158e2d3848fa23a9f1c25182.png", |       "polkadot:91b171bb158e2d3848fa23a9f1c25182.png", | ||||||
|     rgb: "230, 1, 122", |     rgb: "230, 1, 122", | ||||||
|   }, |   }, | ||||||
|  |   ["e143f23803ac50e8f6f8e62695d1ce9e"]: { | ||||||
|  |     logo: "/assets/westend-logo.svg", | ||||||
|  |     rgb: "218, 104, 167", | ||||||
|  |   }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function getChainMetadata(chainId: string): ChainMetadata { | export function getChainMetadata(chainId: string): ChainMetadata { | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ export const DEFAULT_MAIN_CHAINS = [ | |||||||
|   "eip155:42220", |   "eip155:42220", | ||||||
|   "cosmos:cosmoshub-4", |   "cosmos:cosmoshub-4", | ||||||
|   "solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ", |   "solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ", | ||||||
|  |   "polkadot:91b171bb158e2d3848fa23a9f1c25182", | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| export const DEFAULT_TEST_CHAINS = [ | export const DEFAULT_TEST_CHAINS = [ | ||||||
| @ -18,6 +19,7 @@ export const DEFAULT_TEST_CHAINS = [ | |||||||
|   "eip155:421611", |   "eip155:421611", | ||||||
|   "eip155:44787", |   "eip155:44787", | ||||||
|   "solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K", |   "solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K", | ||||||
|  |   "polkadot:e143f23803ac50e8f6f8e62695d1ce9e", | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| export const DEFAULT_CHAINS = [...DEFAULT_MAIN_CHAINS, ...DEFAULT_TEST_CHAINS]; | export const DEFAULT_CHAINS = [...DEFAULT_MAIN_CHAINS, ...DEFAULT_TEST_CHAINS]; | ||||||
| @ -71,5 +73,15 @@ export enum DEFAULT_SOLANA_METHODS { | |||||||
| 
 | 
 | ||||||
| export enum DEFAULT_SOLANA_EVENTS {} | export enum DEFAULT_SOLANA_EVENTS {} | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * POLKADOT | ||||||
|  |  */ | ||||||
|  | export enum DEFAULT_POLKADOT_METHODS { | ||||||
|  |   POLKADOT_SIGN_TRANSACTION = "polkadot_signTransaction", | ||||||
|  |   POLKADOT_SIGN_MESSAGE = "polkadot_signMessage", | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export enum DEFAULT_POLKADOT_EVENTS {} | ||||||
|  | 
 | ||||||
| export const DEFAULT_GITHUB_REPO_URL = | export const DEFAULT_GITHUB_REPO_URL = | ||||||
|   "https://github.com/WalletConnect/web-examples/tree/main/dapps/react-dapp-v2"; |   "https://github.com/WalletConnect/web-examples/tree/main/dapps/react-dapp-v2"; | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import { | |||||||
|   useState, |   useState, | ||||||
| } from "react"; | } from "react"; | ||||||
| import { SolanaChainData } from "../chains/solana"; | import { SolanaChainData } from "../chains/solana"; | ||||||
|  | import { PolkadotChainData } from "../chains/polkadot"; | ||||||
| 
 | 
 | ||||||
| import { ChainNamespaces, getAllChainNamespaces } from "../helpers"; | import { ChainNamespaces, getAllChainNamespaces } from "../helpers"; | ||||||
| 
 | 
 | ||||||
| @ -41,6 +42,8 @@ export function ChainDataContextProvider({ | |||||||
|         try { |         try { | ||||||
|           if (namespace === "solana") { |           if (namespace === "solana") { | ||||||
|             chains = SolanaChainData; |             chains = SolanaChainData; | ||||||
|  |           } else if (namespace === "polkadot") { | ||||||
|  |             chains = PolkadotChainData; | ||||||
|           } else { |           } else { | ||||||
|             chains = await apiGetChainNamespace(namespace); |             chains = await apiGetChainNamespace(namespace); | ||||||
|           } |           } | ||||||
|  | |||||||
| @ -29,8 +29,10 @@ import { | |||||||
|   DEFAULT_COSMOS_METHODS, |   DEFAULT_COSMOS_METHODS, | ||||||
|   DEFAULT_EIP155_METHODS, |   DEFAULT_EIP155_METHODS, | ||||||
|   DEFAULT_SOLANA_METHODS, |   DEFAULT_SOLANA_METHODS, | ||||||
|  |   DEFAULT_POLKADOT_METHODS, | ||||||
| } from "../constants"; | } from "../constants"; | ||||||
| import { useChainData } from "./ChainDataContext"; | import { useChainData } from "./ChainDataContext"; | ||||||
|  | import { signatureVerify, cryptoWaitReady } from "@polkadot/util-crypto"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Types |  * Types | ||||||
| @ -61,6 +63,10 @@ interface IContext { | |||||||
|     testSignMessage: TRpcRequestCallback; |     testSignMessage: TRpcRequestCallback; | ||||||
|     testSignTransaction: TRpcRequestCallback; |     testSignTransaction: TRpcRequestCallback; | ||||||
|   }; |   }; | ||||||
|  |   polkadotRpc: { | ||||||
|  |     testSignMessage: TRpcRequestCallback; | ||||||
|  |     testSignTransaction: TRpcRequestCallback; | ||||||
|  |   }; | ||||||
|   rpcResult?: IFormattedRpcResponse | null; |   rpcResult?: IFormattedRpcResponse | null; | ||||||
|   isRpcRequestPending: boolean; |   isRpcRequestPending: boolean; | ||||||
|   isTestnet: boolean; |   isTestnet: boolean; | ||||||
| @ -613,7 +619,77 @@ export function JsonRpcContextProvider({ | |||||||
|       } |       } | ||||||
|     ), |     ), | ||||||
|   }; |   }; | ||||||
|  |   // -------- POLKADOT RPC METHODS --------
 | ||||||
| 
 | 
 | ||||||
|  |   const polkadotRpc = { | ||||||
|  |     testSignTransaction: _createJsonRpcRequestHandler( | ||||||
|  |       async (chainId: string, address: string): Promise<IFormattedRpcResponse> => { | ||||||
|  |         // Below example is a scale encoded payload for system.remark("this is a test wallet-connect remark") transaction.
 | ||||||
|  |         // decode url: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/extrinsics/decode/0x00019074686973206973206120746573742077616c6c65742d636f6e6e6563742072656d61726b
 | ||||||
|  |         const transactionPayload = | ||||||
|  |           "0x00019074686973206973206120746573742077616c6c65742d636f6e6e6563742072656d61726b05010000222400000d00000091b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3dc1f37ce7899cf20f63f5ea343f33e9e7b229c7e245049c2a7afc236861fc8b4"; | ||||||
|  |         try { | ||||||
|  |           const result = await client!.request<{ payload: string; signature: string }>({ | ||||||
|  |             chainId, | ||||||
|  |             topic: session!.topic, | ||||||
|  |             request: { | ||||||
|  |               method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION, | ||||||
|  |               params: { | ||||||
|  |                 address, | ||||||
|  |                 transactionPayload, | ||||||
|  |               }, | ||||||
|  |             }, | ||||||
|  |           }); | ||||||
|  |            | ||||||
|  |           // sr25519 signatures need to wait for WASM to load
 | ||||||
|  |           await cryptoWaitReady(); | ||||||
|  |           const { isValid: valid } = signatureVerify(transactionPayload, result.signature, address); | ||||||
|  |            | ||||||
|  |           return { | ||||||
|  |             method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION, | ||||||
|  |             address, | ||||||
|  |             valid, | ||||||
|  |             result: result.signature, | ||||||
|  |           }; | ||||||
|  |         } catch (error: any) { | ||||||
|  |           throw new Error(error); | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |     ), | ||||||
|  |     testSignMessage: _createJsonRpcRequestHandler( | ||||||
|  |       async (chainId: string, address: string): Promise<IFormattedRpcResponse> => { | ||||||
|  |          | ||||||
|  |         const message = `This is an example message to be signed - ${Date.now()}`; | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |           const result = await client!.request<{ signature: string }>({ | ||||||
|  |             chainId, | ||||||
|  |             topic: session!.topic, | ||||||
|  |             request: { | ||||||
|  |               method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE, | ||||||
|  |               params: { | ||||||
|  |                 address, | ||||||
|  |                 message, | ||||||
|  |               }, | ||||||
|  |             }, | ||||||
|  |           }); | ||||||
|  | 
 | ||||||
|  |           // sr25519 signatures need to wait for WASM to load
 | ||||||
|  |           await cryptoWaitReady(); | ||||||
|  |           const { isValid: valid } = signatureVerify(message, result.signature, address); | ||||||
|  | 
 | ||||||
|  |           return { | ||||||
|  |             method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE, | ||||||
|  |             address, | ||||||
|  |             valid, | ||||||
|  |             result: result.signature, | ||||||
|  |           }; | ||||||
|  |         } catch (error: any) { | ||||||
|  |           throw new Error(error); | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |     ), | ||||||
|  |   }; | ||||||
|   return ( |   return ( | ||||||
|     <JsonRpcContext.Provider |     <JsonRpcContext.Provider | ||||||
|       value={{ |       value={{ | ||||||
| @ -621,6 +697,7 @@ export function JsonRpcContextProvider({ | |||||||
|         ethereumRpc, |         ethereumRpc, | ||||||
|         cosmosRpc, |         cosmosRpc, | ||||||
|         solanaRpc, |         solanaRpc, | ||||||
|  |         polkadotRpc, | ||||||
|         rpcResult: result, |         rpcResult: result, | ||||||
|         isRpcRequestPending: pending, |         isRpcRequestPending: pending, | ||||||
|         isTestnet, |         isTestnet, | ||||||
|  | |||||||
| @ -6,6 +6,8 @@ import { | |||||||
|   DEFAULT_EIP_155_EVENTS, |   DEFAULT_EIP_155_EVENTS, | ||||||
|   DEFAULT_SOLANA_EVENTS, |   DEFAULT_SOLANA_EVENTS, | ||||||
|   DEFAULT_SOLANA_METHODS, |   DEFAULT_SOLANA_METHODS, | ||||||
|  |   DEFAULT_POLKADOT_EVENTS, | ||||||
|  |   DEFAULT_POLKADOT_METHODS, | ||||||
| } from "../constants"; | } from "../constants"; | ||||||
| 
 | 
 | ||||||
| export const getNamespacesFromChains = (chains: string[]) => { | export const getNamespacesFromChains = (chains: string[]) => { | ||||||
| @ -28,6 +30,8 @@ export const getSupportedMethodsByNamespace = (namespace: string) => { | |||||||
|       return Object.values(DEFAULT_COSMOS_METHODS); |       return Object.values(DEFAULT_COSMOS_METHODS); | ||||||
|     case "solana": |     case "solana": | ||||||
|       return Object.values(DEFAULT_SOLANA_METHODS); |       return Object.values(DEFAULT_SOLANA_METHODS); | ||||||
|  |     case "polkadot": | ||||||
|  |       return Object.values(DEFAULT_POLKADOT_METHODS); | ||||||
|     default: |     default: | ||||||
|       throw new Error(`No default methods for namespace: ${namespace}`); |       throw new Error(`No default methods for namespace: ${namespace}`); | ||||||
|   } |   } | ||||||
| @ -41,6 +45,8 @@ export const getSupportedEventsByNamespace = (namespace: string) => { | |||||||
|       return Object.values(DEFAULT_COSMOS_EVENTS); |       return Object.values(DEFAULT_COSMOS_EVENTS); | ||||||
|     case "solana": |     case "solana": | ||||||
|       return Object.values(DEFAULT_SOLANA_EVENTS); |       return Object.values(DEFAULT_SOLANA_EVENTS); | ||||||
|  |     case "polkadot": | ||||||
|  |       return Object.values(DEFAULT_POLKADOT_EVENTS); | ||||||
|     default: |     default: | ||||||
|       throw new Error(`No default events for namespace: ${namespace}`); |       throw new Error(`No default events for namespace: ${namespace}`); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ import { | |||||||
|   DEFAULT_EIP155_METHODS, |   DEFAULT_EIP155_METHODS, | ||||||
|   DEFAULT_MAIN_CHAINS, |   DEFAULT_MAIN_CHAINS, | ||||||
|   DEFAULT_SOLANA_METHODS, |   DEFAULT_SOLANA_METHODS, | ||||||
|  |   DEFAULT_POLKADOT_METHODS, | ||||||
|   DEFAULT_TEST_CHAINS, |   DEFAULT_TEST_CHAINS, | ||||||
| } from "../constants"; | } from "../constants"; | ||||||
| import { AccountAction, setLocaleStorageTestnetFlag } from "../helpers"; | import { AccountAction, setLocaleStorageTestnetFlag } from "../helpers"; | ||||||
| @ -64,6 +65,7 @@ const Home: NextPage = () => { | |||||||
|     ethereumRpc, |     ethereumRpc, | ||||||
|     cosmosRpc, |     cosmosRpc, | ||||||
|     solanaRpc, |     solanaRpc, | ||||||
|  |     polkadotRpc, | ||||||
|     isRpcRequestPending, |     isRpcRequestPending, | ||||||
|     rpcResult, |     rpcResult, | ||||||
|     isTestnet, |     isTestnet, | ||||||
| @ -185,6 +187,26 @@ const Home: NextPage = () => { | |||||||
|     ]; |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   const getPolkadotActions = (): AccountAction[] => { | ||||||
|  |     const onSignTransaction = async (chainId: string, address: string) => { | ||||||
|  |       openRequestModal(); | ||||||
|  |       await polkadotRpc.testSignTransaction(chainId, address); | ||||||
|  |     }; | ||||||
|  |     const onSignMessage = async (chainId: string, address: string) => { | ||||||
|  |       openRequestModal(); | ||||||
|  |       await polkadotRpc.testSignMessage(chainId, address); | ||||||
|  |     }; | ||||||
|  |     return [ | ||||||
|  |       { | ||||||
|  |         method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION, | ||||||
|  |         callback: onSignTransaction, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE, | ||||||
|  |         callback: onSignMessage, | ||||||
|  |       }, | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|   const getBlockchainActions = (chainId: string) => { |   const getBlockchainActions = (chainId: string) => { | ||||||
|     const [namespace] = chainId.split(":"); |     const [namespace] = chainId.split(":"); | ||||||
|     switch (namespace) { |     switch (namespace) { | ||||||
| @ -194,6 +216,8 @@ const Home: NextPage = () => { | |||||||
|         return getCosmosActions(); |         return getCosmosActions(); | ||||||
|       case "solana": |       case "solana": | ||||||
|         return getSolanaActions(); |         return getSolanaActions(); | ||||||
|  |       case "polkadot": | ||||||
|  |         return getPolkadotActions(); | ||||||
|       default: |       default: | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1966,6 +1966,16 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4.tgz#0134c4cd5df39033347614ce5fc26af485ac9048" |   resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4.tgz#0134c4cd5df39033347614ce5fc26af485ac9048" | ||||||
|   integrity sha512-5Pl1tdMJWLy4rvzU1ecx0nHWgDPqoYuvYoXE/5X0Clu9si/yOuBIj573F2kOTY7mu0LX2wgCJVSnyK0abHBxIw== |   integrity sha512-5Pl1tdMJWLy4rvzU1ecx0nHWgDPqoYuvYoXE/5X0Clu9si/yOuBIj573F2kOTY7mu0LX2wgCJVSnyK0abHBxIw== | ||||||
| 
 | 
 | ||||||
|  | "@noble/hashes@1.1.2": | ||||||
|  |   version "1.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" | ||||||
|  |   integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== | ||||||
|  | 
 | ||||||
|  | "@noble/secp256k1@1.6.3": | ||||||
|  |   version "1.6.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" | ||||||
|  |   integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== | ||||||
|  | 
 | ||||||
| "@nodelib/fs.scandir@2.1.5": | "@nodelib/fs.scandir@2.1.5": | ||||||
|   version "2.1.5" |   version "2.1.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" |   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" | ||||||
| @ -2015,6 +2025,135 @@ | |||||||
|     schema-utils "^2.6.5" |     schema-utils "^2.6.5" | ||||||
|     source-map "^0.7.3" |     source-map "^0.7.3" | ||||||
| 
 | 
 | ||||||
|  | "@polkadot/networks@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.1.2.tgz#a42c93c5dd1f56b99ca50ec9d4e8076088148086" | ||||||
|  |   integrity sha512-67ZPqdhLYDGNX1jMEa3+hujh9j30Dr9AdqgdjE8Z3GdWoEVRp9Zda3DXMnDIQlRBQ32pRZty7dFhIq61Bv/whQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/util" "10.1.2" | ||||||
|  |     "@substrate/ss58-registry" "^1.25.0" | ||||||
|  | 
 | ||||||
|  | "@polkadot/util-crypto@^10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.1.2.tgz#60779ad64e79542a06302ae7d9a2515482b563f4" | ||||||
|  |   integrity sha512-lSgxSLF/XkksL8St3kyw8SCLic0JvyIf8uOezQZYyjSJKT3Gl8gGu9wCAKNAmboU0FgO8cnLO9AcAEkhCHvnyw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@noble/hashes" "1.1.2" | ||||||
|  |     "@noble/secp256k1" "1.6.3" | ||||||
|  |     "@polkadot/networks" "10.1.2" | ||||||
|  |     "@polkadot/util" "10.1.2" | ||||||
|  |     "@polkadot/wasm-crypto" "^6.3.1" | ||||||
|  |     "@polkadot/x-bigint" "10.1.2" | ||||||
|  |     "@polkadot/x-randomvalues" "10.1.2" | ||||||
|  |     "@scure/base" "1.1.1" | ||||||
|  |     ed2curve "^0.3.0" | ||||||
|  |     tweetnacl "^1.0.3" | ||||||
|  | 
 | ||||||
|  | "@polkadot/util@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.1.2.tgz#2eded0c159c16c4a3c48ff45c4ced05c62fb4660" | ||||||
|  |   integrity sha512-gYSpJyrrw5gZWgTVu6PJ1PBUzi3GqwmaK6XRgi4deHmQRn9TEXTToGtHmleJWnaTCRW8Vvh5B5RNNV2C/+va4w== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-bigint" "10.1.2" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  |     "@polkadot/x-textdecoder" "10.1.2" | ||||||
|  |     "@polkadot/x-textencoder" "10.1.2" | ||||||
|  |     "@types/bn.js" "^5.1.0" | ||||||
|  |     bn.js "^5.2.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-bridge@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz#439fa78e80947a7cb695443e1f64b25c30bb1487" | ||||||
|  |   integrity sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-asmjs@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz#e8f469c9cf4a7709c8131a96f857291953f3e30a" | ||||||
|  |   integrity sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-init@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz#b590220c53c94b9a54d5dc236d0cbe943db76706" | ||||||
|  |   integrity sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-bridge" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-asmjs" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-wasm" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-wasm@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz#67f720e7f9694fef096abe9d60abbac02e032383" | ||||||
|  |   integrity sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-util" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto@^6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz#63f5798aca2b2ff0696f190e6862d9781d8f280c" | ||||||
|  |   integrity sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-bridge" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-asmjs" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-init" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-wasm" "6.3.1" | ||||||
|  |     "@polkadot/wasm-util" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-util@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz#439ebb68a436317af388ed6438b8f879df3afcda" | ||||||
|  |   integrity sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-bigint@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.1.2.tgz#5070af6a3a5aa66eba85597837ce6eb44ad7dc02" | ||||||
|  |   integrity sha512-TCwv3NjQdfLb7CBYR8EA5t0CrMfYx3IF4hKjctuplL+mDNI0VzNn4qVKW62AjouI8kMbn7VyBPfoBeuYX8Ixrw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-global@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.1.2.tgz#66c2ceb6ef5043bc6bddd5e944f35e64e9d6a0a9" | ||||||
|  |   integrity sha512-//r3NVLYdYQs0So0IK8Pa0pnL5pPi0geQWE6qjTtPD0oszuN9SUDqDlFQj3I3vqQOwgybbzBGNYRRinP8B2xUg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-randomvalues@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.1.2.tgz#8a0f15eb0558f837dd10060ad808707fe8b64c05" | ||||||
|  |   integrity sha512-KOu6iZWye9KD6qoahiqZ0alrT/5FSGL4XXLhVSg69xAqD6yG2oi2aKA6cZpDU19uZGqVneqsgpebDsrZ0nLUEg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-textdecoder@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.1.2.tgz#833627fc55b388483857de922b534b70fc349a0a" | ||||||
|  |   integrity sha512-liMlSSKfLGTvcUPz1fMicH2HoKLgSjzxFYsbNfXJOe9GobQfSrAOcprM0j4gNJqN5EoZhze9Sf1rMTORQwomtg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-textencoder@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.1.2.tgz#a728a89d117456749211fcf520ca0e846654df89" | ||||||
|  |   integrity sha512-bSMvesZ43Er6+jogt9IfwWN/E8bhkl4a9nNnpyS/vTh+j6n/DfDQrvYpKDpRIn7oJA6lfs/mL9Jo5jjJTngaxg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
| "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": | ||||||
|   version "1.1.2" |   version "1.1.2" | ||||||
|   resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" |   resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" | ||||||
| @ -2101,6 +2240,11 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz#0c8b74c50f29ee44f423f7416829c0bf8bb5eb27" |   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz#0c8b74c50f29ee44f423f7416829c0bf8bb5eb27" | ||||||
|   integrity sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA== |   integrity sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA== | ||||||
| 
 | 
 | ||||||
|  | "@scure/base@1.1.1": | ||||||
|  |   version "1.1.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" | ||||||
|  |   integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== | ||||||
|  | 
 | ||||||
| "@sinonjs/commons@^1.7.0": | "@sinonjs/commons@^1.7.0": | ||||||
|   version "1.8.3" |   version "1.8.3" | ||||||
|   resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" |   resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" | ||||||
| @ -2279,6 +2423,11 @@ | |||||||
|     "@stablelib/random" "^1.0.1" |     "@stablelib/random" "^1.0.1" | ||||||
|     "@stablelib/wipe" "^1.0.1" |     "@stablelib/wipe" "^1.0.1" | ||||||
| 
 | 
 | ||||||
|  | "@substrate/ss58-registry@^1.25.0": | ||||||
|  |   version "1.25.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz#0fcd8c9c0e53963a88fbed41f2cbd8a1a5c74cde" | ||||||
|  |   integrity sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg== | ||||||
|  | 
 | ||||||
| "@surma/rollup-plugin-off-main-thread@^1.1.1": | "@surma/rollup-plugin-off-main-thread@^1.1.1": | ||||||
|   version "1.4.2" |   version "1.4.2" | ||||||
|   resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" |   resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" | ||||||
| @ -5652,6 +5801,13 @@ duplexify@^3.4.2, duplexify@^3.6.0: | |||||||
|     readable-stream "^2.0.0" |     readable-stream "^2.0.0" | ||||||
|     stream-shift "^1.0.0" |     stream-shift "^1.0.0" | ||||||
| 
 | 
 | ||||||
|  | ed2curve@^0.3.0: | ||||||
|  |   version "0.3.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" | ||||||
|  |   integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== | ||||||
|  |   dependencies: | ||||||
|  |     tweetnacl "1.x.x" | ||||||
|  | 
 | ||||||
| ee-first@1.1.1: | ee-first@1.1.1: | ||||||
|   version "1.1.1" |   version "1.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" |   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" | ||||||
| @ -12947,7 +13103,7 @@ tweetnacl-util@^0.15.0: | |||||||
|   resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" |   resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" | ||||||
|   integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== |   integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== | ||||||
| 
 | 
 | ||||||
| tweetnacl@^1.0.0, tweetnacl@^1.0.3: | tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: | ||||||
|   version "1.0.3" |   version "1.0.3" | ||||||
|   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" |   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" | ||||||
|   integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== |   integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== | ||||||
|  | |||||||
| @ -13,6 +13,7 @@ | |||||||
|     "@cosmjs/proto-signing": "0.28.4", |     "@cosmjs/proto-signing": "0.28.4", | ||||||
|     "@json-rpc-tools/utils": "1.7.6", |     "@json-rpc-tools/utils": "1.7.6", | ||||||
|     "@nextui-org/react": "1.0.8-beta.5", |     "@nextui-org/react": "1.0.8-beta.5", | ||||||
|  |     "@polkadot/keyring": "^10.1.2", | ||||||
|     "@solana/web3.js": "1.43.0", |     "@solana/web3.js": "1.43.0", | ||||||
|     "@walletconnect/sign-client": "2.0.0-rc.1", |     "@walletconnect/sign-client": "2.0.0-rc.1", | ||||||
|     "@walletconnect/utils": "2.0.0-rc.1", |     "@walletconnect/utils": "2.0.0-rc.1", | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								wallets/react-wallet-v2/public/chain-logos/polkadot.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								wallets/react-wallet-v2/public/chain-logos/polkadot.svg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | <svg width="800" height="800" viewBox="0 0 800 800" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  | <rect width="800" height="800" rx="400" fill="#E6007A"/> | ||||||
|  | <path d="M400.072 246.038C452.666 246.038 495.302 221.181 495.302 190.519C495.302 159.857 452.666 135 400.072 135C347.478 135 304.843 159.857 304.843 190.519C304.843 221.181 347.478 246.038 400.072 246.038Z" fill="white"/> | ||||||
|  | <path d="M400.072 664.364C452.666 664.364 495.302 639.507 495.302 608.845C495.302 578.183 452.666 553.326 400.072 553.326C347.478 553.326 304.843 578.183 304.843 608.845C304.843 639.507 347.478 664.364 400.072 664.364Z" fill="white"/> | ||||||
|  | <path d="M267.363 322.89C293.66 277.233 293.489 227.785 266.982 212.443C240.475 197.102 197.668 221.677 171.371 267.333C145.074 312.989 145.245 362.438 171.753 377.779C198.26 393.121 241.066 368.546 267.363 322.89Z" fill="white"/> | ||||||
|  | <path d="M628.731 532.027C655.028 486.371 654.872 436.931 628.382 421.6C601.893 406.269 559.101 430.852 532.804 476.508C506.507 522.165 506.663 571.605 533.153 586.936C559.643 602.267 602.434 577.684 628.731 532.027Z" fill="white"/> | ||||||
|  | <path d="M266.996 586.923C293.503 571.582 293.674 522.133 267.377 476.477C241.08 430.821 198.274 406.246 171.766 421.587C145.259 436.929 145.088 486.377 171.385 532.034C197.682 577.69 240.488 602.265 266.996 586.923Z" fill="white"/> | ||||||
|  | <path d="M628.405 377.792C654.894 362.461 655.051 313.02 628.754 267.364C602.457 221.708 559.665 197.124 533.175 212.455C506.686 227.787 506.53 277.227 532.827 322.883C559.124 368.539 601.915 393.123 628.405 377.792Z" fill="white"/> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										17
									
								
								wallets/react-wallet-v2/public/chain-logos/westend.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								wallets/react-wallet-v2/public/chain-logos/westend.svg
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 27 KiB | 
| @ -3,6 +3,7 @@ import SessionProposalModal from '@/views/SessionProposalModal' | |||||||
| import SessionSendTransactionModal from '@/views/SessionSendTransactionModal' | import SessionSendTransactionModal from '@/views/SessionSendTransactionModal' | ||||||
| import SessionSignCosmosModal from '@/views/SessionSignCosmosModal' | import SessionSignCosmosModal from '@/views/SessionSignCosmosModal' | ||||||
| import SessionRequestModal from '@/views/SessionSignModal' | import SessionRequestModal from '@/views/SessionSignModal' | ||||||
|  | import SessionSignPolkadotModal from '@/views/SessionSignPolkadotModal' | ||||||
| import SessionSignSolanaModal from '@/views/SessionSignSolanaModal' | import SessionSignSolanaModal from '@/views/SessionSignSolanaModal' | ||||||
| import SessionSignTypedDataModal from '@/views/SessionSignTypedDataModal' | import SessionSignTypedDataModal from '@/views/SessionSignTypedDataModal' | ||||||
| import SessionUnsuportedMethodModal from '@/views/SessionUnsuportedMethodModal' | import SessionUnsuportedMethodModal from '@/views/SessionUnsuportedMethodModal' | ||||||
| @ -21,6 +22,7 @@ export default function Modal() { | |||||||
|       {view === 'SessionUnsuportedMethodModal' && <SessionUnsuportedMethodModal />} |       {view === 'SessionUnsuportedMethodModal' && <SessionUnsuportedMethodModal />} | ||||||
|       {view === 'SessionSignCosmosModal' && <SessionSignCosmosModal />} |       {view === 'SessionSignCosmosModal' && <SessionSignCosmosModal />} | ||||||
|       {view === 'SessionSignSolanaModal' && <SessionSignSolanaModal />} |       {view === 'SessionSignSolanaModal' && <SessionSignSolanaModal />} | ||||||
|  |       {view === 'SessionSignPolkadotModal' && <SessionSignPolkadotModal />} | ||||||
|     </NextModal> |     </NextModal> | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								wallets/react-wallet-v2/src/data/PolkadotData.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								wallets/react-wallet-v2/src/data/PolkadotData.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | /** | ||||||
|  |  * Types | ||||||
|  |  */ | ||||||
|  | export type TPolkadotChain = keyof typeof POLKADOT_MAINNET_CHAINS | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Chains | ||||||
|  |  */ | ||||||
|  | export const POLKADOT_MAINNET_CHAINS = { | ||||||
|  |   'polkadot:91b171bb158e2d3848fa23a9f1c25182': { | ||||||
|  |     chainId: '91b171bb158e2d3848fa23a9f1c25182', | ||||||
|  |     name: 'Polkadot', | ||||||
|  |     logo: '/chain-logos/polkadot.svg', | ||||||
|  |     rgb: '230, 1, 122', | ||||||
|  |     rpc: '' | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export const POLKADOT_TEST_CHAINS = { | ||||||
|  |   'polkadot:e143f23803ac50e8f6f8e62695d1ce9e': { | ||||||
|  |     chainId: 'e143f23803ac50e8f6f8e62695d1ce9e', | ||||||
|  |     name: 'Polkadot Westend', | ||||||
|  |     logo: '/chain-logos/westend.svg', | ||||||
|  |     rgb: '218, 104, 167', | ||||||
|  |     rpc: '' | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Methods | ||||||
|  |  */ | ||||||
|  | export const POLKADOT_SIGNING_METHODS = { | ||||||
|  |   POLKADOT_SIGN_TRANSACTION: 'polkadot_signTransaction', | ||||||
|  |   POLKADOT_SIGN_MESSAGE: 'polkadot_signMessage' | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ import SettingsStore from '@/store/SettingsStore' | |||||||
| import { createOrRestoreCosmosWallet } from '@/utils/CosmosWalletUtil' | import { createOrRestoreCosmosWallet } from '@/utils/CosmosWalletUtil' | ||||||
| import { createOrRestoreEIP155Wallet } from '@/utils/EIP155WalletUtil' | import { createOrRestoreEIP155Wallet } from '@/utils/EIP155WalletUtil' | ||||||
| import { createOrRestoreSolanaWallet } from '@/utils/SolanaWalletUtil' | import { createOrRestoreSolanaWallet } from '@/utils/SolanaWalletUtil' | ||||||
|  | import { createOrRestorePolkadotWallet } from '@/utils/PolkadotWalletUtil' | ||||||
| import { createSignClient } from '@/utils/WalletConnectUtil' | import { createSignClient } from '@/utils/WalletConnectUtil' | ||||||
| import { useCallback, useEffect, useState } from 'react' | import { useCallback, useEffect, useState } from 'react' | ||||||
| 
 | 
 | ||||||
| @ -13,10 +14,12 @@ export default function useInitialization() { | |||||||
|       const { eip155Addresses } = createOrRestoreEIP155Wallet() |       const { eip155Addresses } = createOrRestoreEIP155Wallet() | ||||||
|       const { cosmosAddresses } = await createOrRestoreCosmosWallet() |       const { cosmosAddresses } = await createOrRestoreCosmosWallet() | ||||||
|       const { solanaAddresses } = await createOrRestoreSolanaWallet() |       const { solanaAddresses } = await createOrRestoreSolanaWallet() | ||||||
|  |       const { polkadotAddresses } = await createOrRestorePolkadotWallet() | ||||||
| 
 | 
 | ||||||
|       SettingsStore.setEIP155Address(eip155Addresses[0]) |       SettingsStore.setEIP155Address(eip155Addresses[0]) | ||||||
|       SettingsStore.setCosmosAddress(cosmosAddresses[0]) |       SettingsStore.setCosmosAddress(cosmosAddresses[0]) | ||||||
|       SettingsStore.setSolanaAddress(solanaAddresses[0]) |       SettingsStore.setSolanaAddress(solanaAddresses[0]) | ||||||
|  |       SettingsStore.setPolkadotAddress(polkadotAddresses[0]) | ||||||
| 
 | 
 | ||||||
|       await createSignClient() |       await createSignClient() | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| import { COSMOS_SIGNING_METHODS } from '@/data/COSMOSData' | import { COSMOS_SIGNING_METHODS } from '@/data/COSMOSData' | ||||||
| import { EIP155_SIGNING_METHODS } from '@/data/EIP155Data' | import { EIP155_SIGNING_METHODS } from '@/data/EIP155Data' | ||||||
| import { SOLANA_SIGNING_METHODS } from '@/data/SolanaData' | import { SOLANA_SIGNING_METHODS } from '@/data/SolanaData' | ||||||
|  | import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData' | ||||||
| import ModalStore from '@/store/ModalStore' | import ModalStore from '@/store/ModalStore' | ||||||
| import { signClient } from '@/utils/WalletConnectUtil' | import { signClient } from '@/utils/WalletConnectUtil' | ||||||
| import { SignClientTypes } from '@walletconnect/types' | import { SignClientTypes } from '@walletconnect/types' | ||||||
| @ -48,7 +49,9 @@ export default function useWalletConnectEventsManager(initialized: boolean) { | |||||||
|         case SOLANA_SIGNING_METHODS.SOLANA_SIGN_MESSAGE: |         case SOLANA_SIGNING_METHODS.SOLANA_SIGN_MESSAGE: | ||||||
|         case SOLANA_SIGNING_METHODS.SOLANA_SIGN_TRANSACTION: |         case SOLANA_SIGNING_METHODS.SOLANA_SIGN_TRANSACTION: | ||||||
|           return ModalStore.open('SessionSignSolanaModal', { requestEvent, requestSession }) |           return ModalStore.open('SessionSignSolanaModal', { requestEvent, requestSession }) | ||||||
| 
 |         case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE: | ||||||
|  |         case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION: | ||||||
|  |           return ModalStore.open('SessionSignPolkadotModal', { requestEvent, requestSession }) | ||||||
|         default: |         default: | ||||||
|           return ModalStore.open('SessionUnsuportedMethodModal', { requestEvent, requestSession }) |           return ModalStore.open('SessionUnsuportedMethodModal', { requestEvent, requestSession }) | ||||||
|       } |       } | ||||||
|  | |||||||
							
								
								
									
										60
									
								
								wallets/react-wallet-v2/src/lib/PolkadotLib.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								wallets/react-wallet-v2/src/lib/PolkadotLib.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | import { Keyring } from '@polkadot/keyring' | ||||||
|  | import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto' | ||||||
|  | import { KeyringPair } from '@polkadot/keyring/types' | ||||||
|  | import { stringToU8a, u8aToHex, hexToU8a } from '@polkadot/util' | ||||||
|  | import { HexString } from '@polkadot/util/types' | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Types | ||||||
|  |  */ | ||||||
|  | interface IInitArguments { | ||||||
|  |   mnemonic?: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Library | ||||||
|  |  */ | ||||||
|  | export default class PolkadotLib { | ||||||
|  |   keypair: KeyringPair | ||||||
|  |   mnemonic: string | ||||||
|  | 
 | ||||||
|  |   constructor(keypair: KeyringPair, mnemonic: string) { | ||||||
|  |     this.keypair = keypair | ||||||
|  |     this.mnemonic = mnemonic | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static async init({ mnemonic }: IInitArguments) { | ||||||
|  |     // wait till  WASM is initialized, in case it is not initialized already (WASM is required for 'sr25519').
 | ||||||
|  |     await cryptoWaitReady() | ||||||
|  | 
 | ||||||
|  |     // create a keyring to load the account.
 | ||||||
|  |     const keyring = new Keyring({ type: 'sr25519', ss58Format: 1 }) | ||||||
|  | 
 | ||||||
|  |     mnemonic = mnemonic || mnemonicGenerate() | ||||||
|  |     const keypair = keyring.createFromUri(mnemonic) | ||||||
|  | 
 | ||||||
|  |     return new PolkadotLib(keypair, mnemonic) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public getAddress() { | ||||||
|  |     return this.keypair.address | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public getMnemonic() { | ||||||
|  |     return this.mnemonic | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public async signMessage(message: string) { | ||||||
|  |     // create the message, actual signature and verify
 | ||||||
|  |     const messageU8a = stringToU8a(message) | ||||||
|  |     const sigU8a = this.keypair.sign(messageU8a) | ||||||
|  |     const signature = u8aToHex(sigU8a) | ||||||
|  |     return { signature } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public async signTransaction(payload: HexString) { | ||||||
|  |     const sigU8a = this.keypair.sign(hexToU8a(payload), { withType: true }) | ||||||
|  |     const signature = u8aToHex(sigU8a) | ||||||
|  |     return { payload, signature } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -4,13 +4,16 @@ import PageHeader from '@/components/PageHeader' | |||||||
| import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData' | import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData' | ||||||
| import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data' | import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data' | ||||||
| import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' | import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' | ||||||
|  | import { POLKADOT_MAINNET_CHAINS, POLKADOT_TEST_CHAINS } from '@/data/PolkadotData' | ||||||
| import SettingsStore from '@/store/SettingsStore' | import SettingsStore from '@/store/SettingsStore' | ||||||
| import { Text } from '@nextui-org/react' | import { Text } from '@nextui-org/react' | ||||||
| import { Fragment } from 'react' | import { Fragment } from 'react' | ||||||
| import { useSnapshot } from 'valtio' | import { useSnapshot } from 'valtio' | ||||||
| 
 | 
 | ||||||
| export default function HomePage() { | export default function HomePage() { | ||||||
|   const { testNets, eip155Address, cosmosAddress, solanaAddress } = useSnapshot(SettingsStore.state) |   const { testNets, eip155Address, cosmosAddress, solanaAddress, polkadotAddress } = useSnapshot( | ||||||
|  |     SettingsStore.state | ||||||
|  |   ) | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <Fragment> |     <Fragment> | ||||||
| @ -29,6 +32,9 @@ export default function HomePage() { | |||||||
|       {Object.values(SOLANA_MAINNET_CHAINS).map(({ name, logo, rgb }) => ( |       {Object.values(SOLANA_MAINNET_CHAINS).map(({ name, logo, rgb }) => ( | ||||||
|         <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} /> |         <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} /> | ||||||
|       ))} |       ))} | ||||||
|  |       {Object.values(POLKADOT_MAINNET_CHAINS).map(({ name, logo, rgb }) => ( | ||||||
|  |         <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={polkadotAddress} /> | ||||||
|  |       ))} | ||||||
| 
 | 
 | ||||||
|       {testNets ? ( |       {testNets ? ( | ||||||
|         <Fragment> |         <Fragment> | ||||||
| @ -41,6 +47,9 @@ export default function HomePage() { | |||||||
|           {Object.values(SOLANA_TEST_CHAINS).map(({ name, logo, rgb }) => ( |           {Object.values(SOLANA_TEST_CHAINS).map(({ name, logo, rgb }) => ( | ||||||
|             <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} /> |             <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} /> | ||||||
|           ))} |           ))} | ||||||
|  |           {Object.values(POLKADOT_TEST_CHAINS).map(({ name, logo, rgb }) => ( | ||||||
|  |             <AccountCard key={name} name={name} logo={logo} rgb={rgb} address={polkadotAddress} /> | ||||||
|  |           ))} | ||||||
|         </Fragment> |         </Fragment> | ||||||
|       ) : null} |       ) : null} | ||||||
|     </Fragment> |     </Fragment> | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ interface State { | |||||||
|     | 'SessionUnsuportedMethodModal' |     | 'SessionUnsuportedMethodModal' | ||||||
|     | 'SessionSignCosmosModal' |     | 'SessionSignCosmosModal' | ||||||
|     | 'SessionSignSolanaModal' |     | 'SessionSignSolanaModal' | ||||||
|  |     | 'SessionSignPolkadotModal' | ||||||
|   data?: ModalData |   data?: ModalData | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ interface State { | |||||||
|   eip155Address: string |   eip155Address: string | ||||||
|   cosmosAddress: string |   cosmosAddress: string | ||||||
|   solanaAddress: string |   solanaAddress: string | ||||||
|  |   polkadotAddress: string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -19,7 +20,8 @@ const state = proxy<State>({ | |||||||
|   account: 0, |   account: 0, | ||||||
|   eip155Address: '', |   eip155Address: '', | ||||||
|   cosmosAddress: '', |   cosmosAddress: '', | ||||||
|   solanaAddress: '' |   solanaAddress: '', | ||||||
|  |   polkadotAddress: '' | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -44,6 +46,10 @@ const SettingsStore = { | |||||||
|     state.solanaAddress = solanaAddress |     state.solanaAddress = solanaAddress | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|  |   setPolkadotAddress(polkadotAddress: string) { | ||||||
|  |     state.polkadotAddress = polkadotAddress | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|   toggleTestNets() { |   toggleTestNets() { | ||||||
|     state.testNets = !state.testNets |     state.testNets = !state.testNets | ||||||
|     if (state.testNets) { |     if (state.testNets) { | ||||||
|  | |||||||
| @ -94,6 +94,13 @@ export function isSolanaChain(chain: string) { | |||||||
|   return chain.includes('solana') |   return chain.includes('solana') | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Check if chain is part of POLKADOT standard | ||||||
|  |  */ | ||||||
|  | export function isPolkadotChain(chain: string) { | ||||||
|  |   return chain.includes('polkadot') | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Formats chainId to its name |  * Formats chainId to its name | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -0,0 +1,33 @@ | |||||||
|  | import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData' | ||||||
|  | import { getWalletAddressFromParams } from '@/utils/HelperUtil' | ||||||
|  | import { polkadotAddresses, polkadotWallets } from '@/utils/PolkadotWalletUtil' | ||||||
|  | import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' | ||||||
|  | import { SignClientTypes } from '@walletconnect/types' | ||||||
|  | import { getSdkError } from '@walletconnect/utils' | ||||||
|  | 
 | ||||||
|  | export async function approvePolkadotRequest( | ||||||
|  |   requestEvent: SignClientTypes.EventArguments['session_request'] | ||||||
|  | ) { | ||||||
|  |   const { params, id } = requestEvent | ||||||
|  |   const { request } = params | ||||||
|  |   const wallet = polkadotWallets[getWalletAddressFromParams(polkadotAddresses, params)] | ||||||
|  | 
 | ||||||
|  |   switch (request.method) { | ||||||
|  |     case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE: | ||||||
|  |       const signature = await wallet.signMessage(request.params.message) | ||||||
|  |       return formatJsonRpcResult(id, signature) | ||||||
|  | 
 | ||||||
|  |     case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION: | ||||||
|  |       const signedTx = await wallet.signTransaction(request.params.transactionPayload) | ||||||
|  |       return formatJsonRpcResult(id, signedTx) | ||||||
|  | 
 | ||||||
|  |     default: | ||||||
|  |       throw new Error(getSdkError('INVALID_METHOD').message) | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function rejectPolkadotRequest(request: SignClientTypes.EventArguments['session_request']) { | ||||||
|  |   const { id } = request | ||||||
|  | 
 | ||||||
|  |   return formatJsonRpcError(id, getSdkError('USER_REJECTED_METHODS').message) | ||||||
|  | } | ||||||
							
								
								
									
										43
									
								
								wallets/react-wallet-v2/src/utils/PolkadotWalletUtil.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								wallets/react-wallet-v2/src/utils/PolkadotWalletUtil.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | import PolkadotLib from '@/lib/PolkadotLib' | ||||||
|  | 
 | ||||||
|  | export let wallet1: PolkadotLib | ||||||
|  | export let wallet2: PolkadotLib | ||||||
|  | export let polkadotWallets: Record<string, PolkadotLib> | ||||||
|  | export let polkadotAddresses: string[] | ||||||
|  | 
 | ||||||
|  | let address1: string | ||||||
|  | let address2: string | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Utilities | ||||||
|  |  */ | ||||||
|  | export async function createOrRestorePolkadotWallet() { | ||||||
|  |   const mnemonic1 = localStorage.getItem('POLKADOT_MNEMONIC_1') | ||||||
|  |   const mnemonic2 = localStorage.getItem('POLKADOT_MNEMONIC_2') | ||||||
|  | 
 | ||||||
|  |   if (mnemonic1 && mnemonic2) { | ||||||
|  |     wallet1 = await PolkadotLib.init({ mnemonic: mnemonic1 }) | ||||||
|  |     wallet2 = await PolkadotLib.init({ mnemonic: mnemonic2 }) | ||||||
|  |   } else { | ||||||
|  |     wallet1 = await PolkadotLib.init({}) | ||||||
|  |     wallet2 = await PolkadotLib.init({}) | ||||||
|  | 
 | ||||||
|  |     // Don't store mnemonic in local storage in a production project!
 | ||||||
|  |     localStorage.setItem('POLKADOT_MNEMONIC_1', wallet1.getMnemonic()) | ||||||
|  |     localStorage.setItem('POLKADOT_MNEMONIC_2', wallet2.getMnemonic()) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   address1 = wallet1.getAddress() | ||||||
|  |   address2 = wallet2.getAddress() | ||||||
|  | 
 | ||||||
|  |   polkadotWallets = { | ||||||
|  |     [address1]: wallet1, | ||||||
|  |     [address2]: wallet2 | ||||||
|  |   } | ||||||
|  |   polkadotAddresses = Object.keys(polkadotWallets) | ||||||
|  | 
 | ||||||
|  |   return { | ||||||
|  |     polkadotWallets, | ||||||
|  |     polkadotAddresses | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -5,7 +5,8 @@ import SessionProposalChainCard from '@/components/SessionProposalChainCard' | |||||||
| import ModalStore from '@/store/ModalStore' | import ModalStore from '@/store/ModalStore' | ||||||
| import { cosmosAddresses } from '@/utils/CosmosWalletUtil' | import { cosmosAddresses } from '@/utils/CosmosWalletUtil' | ||||||
| import { eip155Addresses } from '@/utils/EIP155WalletUtil' | import { eip155Addresses } from '@/utils/EIP155WalletUtil' | ||||||
| import { isCosmosChain, isEIP155Chain, isSolanaChain } from '@/utils/HelperUtil' | import { polkadotAddresses } from '@/utils/PolkadotWalletUtil' | ||||||
|  | import { isCosmosChain, isEIP155Chain, isSolanaChain, isPolkadotChain } from '@/utils/HelperUtil' | ||||||
| import { solanaAddresses } from '@/utils/SolanaWalletUtil' | import { solanaAddresses } from '@/utils/SolanaWalletUtil' | ||||||
| import { signClient } from '@/utils/WalletConnectUtil' | import { signClient } from '@/utils/WalletConnectUtil' | ||||||
| import { Button, Divider, Modal, Text } from '@nextui-org/react' | import { Button, Divider, Modal, Text } from '@nextui-org/react' | ||||||
| @ -112,6 +113,15 @@ export default function SessionProposalModal() { | |||||||
|           chain={chain} |           chain={chain} | ||||||
|         /> |         /> | ||||||
|       ) |       ) | ||||||
|  |     } else if (isPolkadotChain(chain)) { | ||||||
|  |       return ( | ||||||
|  |         <ProposalSelectSection | ||||||
|  |           addresses={polkadotAddresses} | ||||||
|  |           selectedAddresses={selectedAccounts[chain]} | ||||||
|  |           onSelect={onSelectAccount} | ||||||
|  |           chain={chain} | ||||||
|  |         /> | ||||||
|  |       ) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,78 @@ | |||||||
|  | import ProjectInfoCard from '@/components/ProjectInfoCard' | ||||||
|  | import RequestDataCard from '@/components/RequestDataCard' | ||||||
|  | import RequesDetailsCard from '@/components/RequestDetalilsCard' | ||||||
|  | import RequestMethodCard from '@/components/RequestMethodCard' | ||||||
|  | import RequestModalContainer from '@/components/RequestModalContainer' | ||||||
|  | import ModalStore from '@/store/ModalStore' | ||||||
|  | import { approvePolkadotRequest, rejectPolkadotRequest } from '@/utils/PolkadotRequestHandlerUtil' | ||||||
|  | import { signClient } from '@/utils/WalletConnectUtil' | ||||||
|  | import { Button, Divider, Modal, Text } from '@nextui-org/react' | ||||||
|  | import { Fragment } from 'react' | ||||||
|  | 
 | ||||||
|  | export default function SessionSignPolkadotModal() { | ||||||
|  |   // Get request and wallet data from store
 | ||||||
|  |   const requestEvent = ModalStore.state.data?.requestEvent | ||||||
|  |   const requestSession = ModalStore.state.data?.requestSession | ||||||
|  | 
 | ||||||
|  |   // Ensure request and wallet are defined
 | ||||||
|  |   if (!requestEvent || !requestSession) { | ||||||
|  |     return <Text>Missing request data</Text> | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Get required request data
 | ||||||
|  |   const { topic, params } = requestEvent | ||||||
|  |   const { request, chainId } = params | ||||||
|  | 
 | ||||||
|  |   // Handle approve action (logic varies based on request method)
 | ||||||
|  |   async function onApprove() { | ||||||
|  |     if (requestEvent) { | ||||||
|  |       const response = await approvePolkadotRequest(requestEvent) | ||||||
|  |       await signClient.respond({ | ||||||
|  |         topic, | ||||||
|  |         response | ||||||
|  |       }) | ||||||
|  |       ModalStore.close() | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Handle reject action
 | ||||||
|  |   async function onReject() { | ||||||
|  |     if (requestEvent) { | ||||||
|  |       const response = rejectPolkadotRequest(requestEvent) | ||||||
|  |       await signClient.respond({ | ||||||
|  |         topic, | ||||||
|  |         response | ||||||
|  |       }) | ||||||
|  |       ModalStore.close() | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <Fragment> | ||||||
|  |       <RequestModalContainer title="Sign Message"> | ||||||
|  |         <ProjectInfoCard metadata={requestSession.peer.metadata} /> | ||||||
|  | 
 | ||||||
|  |         <Divider y={2} /> | ||||||
|  | 
 | ||||||
|  |         <RequesDetailsCard chains={[chainId ?? '']} protocol={requestSession.relay.protocol} /> | ||||||
|  | 
 | ||||||
|  |         <Divider y={2} /> | ||||||
|  | 
 | ||||||
|  |         <RequestDataCard data={params} /> | ||||||
|  | 
 | ||||||
|  |         <Divider y={2} /> | ||||||
|  | 
 | ||||||
|  |         <RequestMethodCard methods={[request.method]} /> | ||||||
|  |       </RequestModalContainer> | ||||||
|  | 
 | ||||||
|  |       <Modal.Footer> | ||||||
|  |         <Button auto flat color="error" onClick={onReject}> | ||||||
|  |           Reject | ||||||
|  |         </Button> | ||||||
|  |         <Button auto flat color="success" onClick={onApprove}> | ||||||
|  |           Approve | ||||||
|  |         </Button> | ||||||
|  |       </Modal.Footer> | ||||||
|  |     </Fragment> | ||||||
|  |   ) | ||||||
|  | } | ||||||
| @ -100,6 +100,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     regenerator-runtime "^0.13.4" |     regenerator-runtime "^0.13.4" | ||||||
| 
 | 
 | ||||||
|  | "@babel/runtime@^7.18.9": | ||||||
|  |   version "7.18.9" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" | ||||||
|  |   integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== | ||||||
|  |   dependencies: | ||||||
|  |     regenerator-runtime "^0.13.4" | ||||||
|  | 
 | ||||||
| "@babel/template@^7.16.7": | "@babel/template@^7.16.7": | ||||||
|   version "7.16.7" |   version "7.16.7" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" |   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" | ||||||
| @ -1106,11 +1113,21 @@ | |||||||
|     "@react-types/shared" "3.11.0" |     "@react-types/shared" "3.11.0" | ||||||
|     "@stitches/react" "1.2.7" |     "@stitches/react" "1.2.7" | ||||||
| 
 | 
 | ||||||
|  | "@noble/hashes@1.1.2": | ||||||
|  |   version "1.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" | ||||||
|  |   integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== | ||||||
|  | 
 | ||||||
| "@noble/hashes@^1": | "@noble/hashes@^1": | ||||||
|   version "1.0.0" |   version "1.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae" |   resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae" | ||||||
|   integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg== |   integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg== | ||||||
| 
 | 
 | ||||||
|  | "@noble/secp256k1@1.6.3": | ||||||
|  |   version "1.6.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" | ||||||
|  |   integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== | ||||||
|  | 
 | ||||||
| "@nodelib/fs.scandir@2.1.5": | "@nodelib/fs.scandir@2.1.5": | ||||||
|   version "2.1.5" |   version "2.1.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" |   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" | ||||||
| @ -1146,6 +1163,144 @@ | |||||||
|     enc-utils "^3.0.0" |     enc-utils "^3.0.0" | ||||||
|     randombytes "^2.1.0" |     randombytes "^2.1.0" | ||||||
| 
 | 
 | ||||||
|  | "@polkadot/keyring@^10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-10.1.2.tgz#a7e70bd091d2ceb48e7fee005cc3dbe6cf8c8d32" | ||||||
|  |   integrity sha512-b6hP3JFGYjsNNT3NO7I8fWRPqovgL4IvjvLttkfzpM6eM1zRRupqQ+Q50Jdl/3YUcr26PcxQcdRqJku4WyDABg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/util" "10.1.2" | ||||||
|  |     "@polkadot/util-crypto" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/networks@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.1.2.tgz#a42c93c5dd1f56b99ca50ec9d4e8076088148086" | ||||||
|  |   integrity sha512-67ZPqdhLYDGNX1jMEa3+hujh9j30Dr9AdqgdjE8Z3GdWoEVRp9Zda3DXMnDIQlRBQ32pRZty7dFhIq61Bv/whQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/util" "10.1.2" | ||||||
|  |     "@substrate/ss58-registry" "^1.25.0" | ||||||
|  | 
 | ||||||
|  | "@polkadot/util-crypto@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.1.2.tgz#60779ad64e79542a06302ae7d9a2515482b563f4" | ||||||
|  |   integrity sha512-lSgxSLF/XkksL8St3kyw8SCLic0JvyIf8uOezQZYyjSJKT3Gl8gGu9wCAKNAmboU0FgO8cnLO9AcAEkhCHvnyw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@noble/hashes" "1.1.2" | ||||||
|  |     "@noble/secp256k1" "1.6.3" | ||||||
|  |     "@polkadot/networks" "10.1.2" | ||||||
|  |     "@polkadot/util" "10.1.2" | ||||||
|  |     "@polkadot/wasm-crypto" "^6.3.1" | ||||||
|  |     "@polkadot/x-bigint" "10.1.2" | ||||||
|  |     "@polkadot/x-randomvalues" "10.1.2" | ||||||
|  |     "@scure/base" "1.1.1" | ||||||
|  |     ed2curve "^0.3.0" | ||||||
|  |     tweetnacl "^1.0.3" | ||||||
|  | 
 | ||||||
|  | "@polkadot/util@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.1.2.tgz#2eded0c159c16c4a3c48ff45c4ced05c62fb4660" | ||||||
|  |   integrity sha512-gYSpJyrrw5gZWgTVu6PJ1PBUzi3GqwmaK6XRgi4deHmQRn9TEXTToGtHmleJWnaTCRW8Vvh5B5RNNV2C/+va4w== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-bigint" "10.1.2" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  |     "@polkadot/x-textdecoder" "10.1.2" | ||||||
|  |     "@polkadot/x-textencoder" "10.1.2" | ||||||
|  |     "@types/bn.js" "^5.1.0" | ||||||
|  |     bn.js "^5.2.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-bridge@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz#439fa78e80947a7cb695443e1f64b25c30bb1487" | ||||||
|  |   integrity sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-asmjs@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz#e8f469c9cf4a7709c8131a96f857291953f3e30a" | ||||||
|  |   integrity sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-init@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz#b590220c53c94b9a54d5dc236d0cbe943db76706" | ||||||
|  |   integrity sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-bridge" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-asmjs" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-wasm" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto-wasm@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz#67f720e7f9694fef096abe9d60abbac02e032383" | ||||||
|  |   integrity sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-util" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-crypto@^6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz#63f5798aca2b2ff0696f190e6862d9781d8f280c" | ||||||
|  |   integrity sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/wasm-bridge" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-asmjs" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-init" "6.3.1" | ||||||
|  |     "@polkadot/wasm-crypto-wasm" "6.3.1" | ||||||
|  |     "@polkadot/wasm-util" "6.3.1" | ||||||
|  | 
 | ||||||
|  | "@polkadot/wasm-util@6.3.1": | ||||||
|  |   version "6.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz#439ebb68a436317af388ed6438b8f879df3afcda" | ||||||
|  |   integrity sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-bigint@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.1.2.tgz#5070af6a3a5aa66eba85597837ce6eb44ad7dc02" | ||||||
|  |   integrity sha512-TCwv3NjQdfLb7CBYR8EA5t0CrMfYx3IF4hKjctuplL+mDNI0VzNn4qVKW62AjouI8kMbn7VyBPfoBeuYX8Ixrw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-global@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.1.2.tgz#66c2ceb6ef5043bc6bddd5e944f35e64e9d6a0a9" | ||||||
|  |   integrity sha512-//r3NVLYdYQs0So0IK8Pa0pnL5pPi0geQWE6qjTtPD0oszuN9SUDqDlFQj3I3vqQOwgybbzBGNYRRinP8B2xUg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-randomvalues@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.1.2.tgz#8a0f15eb0558f837dd10060ad808707fe8b64c05" | ||||||
|  |   integrity sha512-KOu6iZWye9KD6qoahiqZ0alrT/5FSGL4XXLhVSg69xAqD6yG2oi2aKA6cZpDU19uZGqVneqsgpebDsrZ0nLUEg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-textdecoder@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.1.2.tgz#833627fc55b388483857de922b534b70fc349a0a" | ||||||
|  |   integrity sha512-liMlSSKfLGTvcUPz1fMicH2HoKLgSjzxFYsbNfXJOe9GobQfSrAOcprM0j4gNJqN5EoZhze9Sf1rMTORQwomtg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
|  | "@polkadot/x-textencoder@10.1.2": | ||||||
|  |   version "10.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.1.2.tgz#a728a89d117456749211fcf520ca0e846654df89" | ||||||
|  |   integrity sha512-bSMvesZ43Er6+jogt9IfwWN/E8bhkl4a9nNnpyS/vTh+j6n/DfDQrvYpKDpRIn7oJA6lfs/mL9Jo5jjJTngaxg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/runtime" "^7.18.9" | ||||||
|  |     "@polkadot/x-global" "10.1.2" | ||||||
|  | 
 | ||||||
| "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": | ||||||
|   version "1.1.2" |   version "1.1.2" | ||||||
|   resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" |   resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" | ||||||
| @ -1635,6 +1790,11 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0" |   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0" | ||||||
|   integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw== |   integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw== | ||||||
| 
 | 
 | ||||||
|  | "@scure/base@1.1.1": | ||||||
|  |   version "1.1.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" | ||||||
|  |   integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== | ||||||
|  | 
 | ||||||
| "@solana/buffer-layout-utils@^0.2.0": | "@solana/buffer-layout-utils@^0.2.0": | ||||||
|   version "0.2.0" |   version "0.2.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" |   resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" | ||||||
| @ -1835,6 +1995,18 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.7.tgz#aea2403fac726db66d1740d29557e3910b1a1dc7" |   resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.7.tgz#aea2403fac726db66d1740d29557e3910b1a1dc7" | ||||||
|   integrity sha512-6AxpUag7OW55ANzRnuy7R15FEyQeZ66fytVo3BBilFIU0mfo3t49CAMcEAL/A1SbhSj/FCdWkn/XrbjGBTJTzg== |   integrity sha512-6AxpUag7OW55ANzRnuy7R15FEyQeZ66fytVo3BBilFIU0mfo3t49CAMcEAL/A1SbhSj/FCdWkn/XrbjGBTJTzg== | ||||||
| 
 | 
 | ||||||
|  | "@substrate/ss58-registry@^1.25.0": | ||||||
|  |   version "1.25.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz#0fcd8c9c0e53963a88fbed41f2cbd8a1a5c74cde" | ||||||
|  |   integrity sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg== | ||||||
|  | 
 | ||||||
|  | "@types/bn.js@^5.1.0": | ||||||
|  |   version "5.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" | ||||||
|  |   integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== | ||||||
|  |   dependencies: | ||||||
|  |     "@types/node" "*" | ||||||
|  | 
 | ||||||
| "@types/connect@^3.4.33": | "@types/connect@^3.4.33": | ||||||
|   version "3.4.35" |   version "3.4.35" | ||||||
|   resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" |   resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" | ||||||
| @ -2832,6 +3004,13 @@ doctrine@^3.0.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     esutils "^2.0.2" |     esutils "^2.0.2" | ||||||
| 
 | 
 | ||||||
|  | ed2curve@^0.3.0: | ||||||
|  |   version "0.3.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" | ||||||
|  |   integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== | ||||||
|  |   dependencies: | ||||||
|  |     tweetnacl "1.x.x" | ||||||
|  | 
 | ||||||
| elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: | elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: | ||||||
|   version "6.5.4" |   version "6.5.4" | ||||||
|   resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" |   resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" | ||||||
| @ -5131,7 +5310,7 @@ tunnel-agent@^0.6.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     safe-buffer "^5.0.1" |     safe-buffer "^5.0.1" | ||||||
| 
 | 
 | ||||||
| tweetnacl@^1.0.0, tweetnacl@^1.0.3: | tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: | ||||||
|   version "1.0.3" |   version "1.0.3" | ||||||
|   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" |   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" | ||||||
|   integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== |   integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user