@walletconnect/ethereum-provider 2.3.2-1 → 2.3.2-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +22 -22
- package/dist/index.umd.js.map +1 -1
- package/dist/types/EthereumProvider.d.ts +2 -0
- package/dist/types/EthereumProvider.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("events"),a=require("@walletconnect/utils"),h=require("@walletconnect/universal-provider"),o=require("@web3modal/standalone");const d="https://rpc.walletconnect.com/v1/",p=["eth_requestAccounts","eth_accounts","eth_chainId","eth_sendTransaction","eth_signTransaction","eth_sign","eth_signTypedData","personal_sign"],l=["chainChanged","accountsChanged"];function u(c){return Number(c[0].split(":")[1])}class n{constructor(){this.events=new r.EventEmitter,this.namespace="eip155",this.accounts=[],this.chainId=1,this.signer={},this.rpc={}}static async init(t){const s=new n;return await s.initialize(t),s}async request(t){return await this.signer.request(t,this.formatChainId(this.chainId))}sendAsync(t,s){this.signer.sendAsync(t,s,this.formatChainId(this.chainId))}get connected(){return this.signer.client?this.signer.client.core.relayer.connected:!1}get connecting(){return this.signer.client?this.signer.client.core.relayer.connecting:!1}async enable(){return this.session||await this.connect(),await this.request({method:"eth_requestAccounts"})}async connect(t){if(!this.signer.client)throw new Error("Provider not initialized. Call init() first");this.loadConnectOpts(t);try{const s=await this.signer.connect({namespaces:{[this.namespace]:{chains:this.rpc.chains,methods:this.rpc.methods,events:this.rpc.events,rpcMap:this.rpc.rpcMap}},pairingTopic:t?.pairingTopic});if(!s)return;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("events"),a=require("@walletconnect/utils"),h=require("@walletconnect/universal-provider"),o=require("@web3modal/standalone");const d="https://rpc.walletconnect.com/v1/",p=["eth_requestAccounts","eth_accounts","eth_chainId","eth_sendTransaction","eth_signTransaction","eth_sign","eth_signTypedData","personal_sign"],l=["chainChanged","accountsChanged"];function u(c){return Number(c[0].split(":")[1])}class n{constructor(){this.events=new r.EventEmitter,this.namespace="eip155",this.accounts=[],this.chainId=1,this.signer={},this.rpc={}}static async init(t){const s=new n;return await s.initialize(t),s}async request(t){return await this.signer.request(t,this.formatChainId(this.chainId))}sendAsync(t,s){this.signer.sendAsync(t,s,this.formatChainId(this.chainId))}get connected(){return this.signer.client?this.signer.client.core.relayer.connected:!1}get connecting(){return this.signer.client?this.signer.client.core.relayer.connecting:!1}async enable(){return this.session||await this.connect(),await this.request({method:"eth_requestAccounts"})}async connect(t){if(!this.signer.client)throw new Error("Provider not initialized. Call init() first");this.loadConnectOpts(t);try{const s=await this.signer.connect({namespaces:{[this.namespace]:{chains:this.rpc.chains,methods:this.rpc.methods,events:this.rpc.events,rpcMap:this.rpc.rpcMap}},pairingTopic:t?.pairingTopic});if(!s)return;this.setChainIds(this.rpc.chains);const i=a.getAccountsFromNamespaces(s.namespaces,[this.namespace]);this.setAccounts(i),this.events.emit("connect",{chainId:this.chainId,accounts:this.accounts})}catch(s){throw new Error(s.message)}finally{this.modal&&this.modal.closeModal()}}async disconnect(){await this.signer.disconnect()}on(t,s){this.events.on(t,s)}once(t,s){this.events.once(t,s)}removeListener(t,s){this.events.removeListener(t,s)}off(t,s){this.events.off(t,s)}get isWalletConnect(){return!0}get session(){return this.signer.session}registerEventListeners(){this.signer.on("session_event",t=>{const{params:s}=t;if(!this.rpc.chains.includes(s.chainId))return;const{event:i}=s;i.name==="accountsChanged"?(this.accounts=i.data,this.events.emit("accountsChanged",this.accounts)):i.name==="chainChanged"?this.setChainId(this.formatChainId(i.data)):this.events.emit(i.name,i.data),this.events.emit("session_event",t)}),this.signer.on("chainChanged",t=>this.events.emit("chainChanged",t)),this.signer.on("session_update",t=>{this.events.emit("session_update",t)}),this.signer.on("session_delete",t=>{this.reset(),this.events.emit("session_delete",t)}),this.signer.on("display_uri",t=>{var s;this.rpc.showQrModal&&((s=this.modal)==null||s.openModal({uri:t})),this.events.emit("display_uri",t)})}setHttpProvider(t){const s=this.formatChainId(t);this.signer.setDefaultChain(s,this.getRpcUrl(t))}isCompatibleChainId(t){return typeof t=="string"?t.startsWith(`${this.namespace}:`):!1}formatChainId(t){return`${this.namespace}:${t}`}parseChainId(t){return Number(t.split(":")[1])}setChainIds(t){const s=t.filter(i=>this.isCompatibleChainId(i)).map(i=>this.parseChainId(i));s.length&&(this.chainId=s[0],this.events.emit("chainChanged",this.chainId))}setChainId(t){if(this.isCompatibleChainId(t)){const s=this.parseChainId(t);this.chainId=s,this.setHttpProvider(s)}}parseAccountId(t){const[s,i,e]=t.split(":");return{chainId:`${s}:${i}`,address:e}}setAccounts(t){this.accounts=t.filter(s=>this.parseChainId(this.parseAccountId(s).chainId)===this.chainId).map(s=>this.parseAccountId(s).address),this.events.emit("accountsChanged",this.accounts)}getRpcConfig(t){return{chains:t.chains.map(s=>this.formatChainId(s))||[`${this.namespace}:1`],methods:t?.methods||p,events:t?.events||l,rpcMap:t?.rpcMap||this.buildRpcMap(t.chains,t.projectId),showQrModal:t?.showQrModal||!0,projectId:t.projectId,metadata:t.metadata}}buildRpcMap(t,s){const i={};return t.forEach(e=>{i[e]=this.getRpcUrl(e,s)}),i}async initialize(t){this.rpc=this.getRpcConfig(t),this.chainId=u(this.rpc.chains),this.signer=await h.UniversalProvider.init({projectId:this.rpc.projectId}),this.registerEventListeners(),this.loadPersistedSession(),this.rpc.showQrModal&&(this.modal=new o.Web3Modal({projectId:this.rpc.projectId,standaloneChains:this.rpc.chains}))}loadConnectOpts(t){if(!t)return;const{chains:s,rpcMap:i}=t;!a.isValidArray(s)||!s||(this.rpc.chains=this.rpc.chains.concat(s.map(e=>this.formatChainId(e))),this.rpc.chains=[...new Set(this.rpc.chains)],s.forEach(e=>{this.rpc.rpcMap[e]=i?.[e]||this.getRpcUrl(e)}))}getRpcUrl(t,s){var i;return((i=this.rpc.rpcMap)==null?void 0:i[t])||`${d}?chainId=eip155:${t}&projectId=${s||this.rpc.projectId}`}loadPersistedSession(){this.session&&(this.setChainIds(this.session.namespaces[this.namespace].accounts),this.setAccounts(this.session.namespaces[this.namespace].accounts))}reset(){this.chainId=1,this.accounts=[]}}const m=n;exports.EthereumProvider=m,exports.default=n;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/EthereumProvider.ts","../src/index.ts"],"sourcesContent":["import { EventEmitter } from \"events\";\nimport {\n getChainsFromNamespaces,\n getAccountsFromNamespaces,\n isValidArray,\n} from \"@walletconnect/utils\";\nimport {\n IEthereumProvider as IProvider,\n ProviderAccounts,\n RequestArguments,\n} from \"eip1193-provider\";\nimport { Metadata, UniversalProvider } from \"@walletconnect/universal-provider\";\nimport { Web3Modal } from \"@web3modal/standalone\";\n\nexport const RPC_URL = \"https://rpc.walletconnect.com/v1/\";\n\nexport const signerMethods = [\n \"eth_requestAccounts\",\n \"eth_accounts\",\n \"eth_chainId\",\n \"eth_sendTransaction\",\n \"eth_signTransaction\",\n \"eth_sign\",\n \"eth_signTypedData\",\n \"personal_sign\",\n];\n\nexport const signerEvents = [\"chainChanged\", \"accountsChanged\"];\n\nexport interface EthereumRpcMap {\n [chainId: string]: string;\n}\n\nexport interface SessionEvent {\n event: { name: string; data: any };\n chainId: string;\n}\n\nexport interface EthereumRpcConfig {\n chains: string[];\n methods: string[];\n events: string[];\n rpcMap: EthereumRpcMap;\n projectId: string;\n metadata?: Metadata;\n showQrModal: boolean;\n}\n\nexport interface ConnectOps {\n chains?: number[];\n rpcMap?: EthereumRpcMap;\n pairingTopic?: string;\n}\n\nexport interface IEthereumProvider extends IProvider {\n connect(opts?: ConnectOps | undefined): Promise<void>;\n}\n\nexport function getRpcUrl(chainId: string, rpc: EthereumRpcConfig): string | undefined {\n let rpcUrl: string | undefined;\n if (rpc.rpcMap) {\n rpcUrl = rpc.rpcMap[getEthereumChainId([chainId])];\n }\n return rpcUrl;\n}\n\nexport function getEthereumChainId(chains: string[]): number {\n return Number(chains[0].split(\":\")[1]);\n}\nexport interface EthereumProviderOptions {\n projectId: string;\n chains: number[];\n methods?: string[];\n events?: string[];\n rpcMap?: EthereumRpcMap;\n metadata?: Metadata;\n showQrModal?: boolean;\n}\n\nexport class EthereumProvider implements IEthereumProvider {\n public events: any = new EventEmitter();\n public namespace = \"eip155\";\n public accounts: string[] = [];\n public signer: InstanceType<typeof UniversalProvider>;\n public chainId = 1;\n public modal?: Web3Modal;\n\n private rpc: EthereumRpcConfig;\n\n constructor() {\n // assigned during initialize\n this.signer = {} as InstanceType<typeof UniversalProvider>;\n this.rpc = {} as EthereumRpcConfig;\n }\n\n static async init(opts: EthereumProviderOptions): Promise<EthereumProvider> {\n const provider = new EthereumProvider();\n await provider.initialize(opts);\n return provider;\n }\n\n public async request<T = unknown>(args: RequestArguments): Promise<T> {\n return await this.signer.request(args, this.formatChainId(this.chainId));\n }\n\n public sendAsync(\n args: RequestArguments,\n callback: (error: Error | null, response: any) => void,\n ): void {\n this.signer.sendAsync(args, callback, this.formatChainId(this.chainId));\n }\n\n get connected(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connected;\n }\n\n get connecting(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connecting;\n }\n\n public async enable(): Promise<ProviderAccounts> {\n if (!this.session) await this.connect();\n const accounts = await this.request({ method: \"eth_requestAccounts\" });\n return accounts as ProviderAccounts;\n }\n\n public async connect(opts?: ConnectOps): Promise<void> {\n if (!this.signer.client) {\n throw new Error(\"Provider not initialized. Call init() first\");\n }\n\n this.loadConnectOpts(opts);\n\n try {\n const session = await this.signer.connect({\n namespaces: {\n [this.namespace]: {\n chains: this.rpc.chains,\n methods: this.rpc.methods,\n events: this.rpc.events,\n rpcMap: this.rpc.rpcMap,\n },\n },\n pairingTopic: opts?.pairingTopic,\n });\n if (!session) return;\n const chains = getChainsFromNamespaces(session.namespaces, [this.namespace]);\n this.setChainIds(chains);\n const accounts = getAccountsFromNamespaces(session.namespaces, [this.namespace]);\n this.setAccounts(accounts);\n this.events.emit(\"connect\", { chainId: this.chainId, accounts: this.accounts });\n } catch (error) {\n throw new Error((error as Error).message);\n } finally {\n if (this.modal) this.modal.closeModal();\n }\n }\n\n public async disconnect(): Promise<void> {\n await this.signer.disconnect();\n }\n\n public on(event: any, listener: any): void {\n this.events.on(event, listener);\n }\n\n public once(event: string, listener: any): void {\n this.events.once(event, listener);\n }\n\n public removeListener(event: string, listener: any): void {\n this.events.removeListener(event, listener);\n }\n\n public off(event: string, listener: any): void {\n this.events.off(event, listener);\n }\n\n get isWalletConnect() {\n return true;\n }\n\n get session() {\n return this.signer.session;\n }\n // ---------- Private ----------------------------------------------- //\n\n private registerEventListeners() {\n this.signer.on(\"session_event\", (payload: any) => {\n const { params } = payload;\n if (!this.rpc.chains.includes(params.chainId)) return;\n const { event } = params;\n if (event.name === \"accountsChanged\") {\n this.accounts = event.data;\n this.events.emit(\"accountsChanged\", this.accounts);\n } else if (event.name === \"chainChanged\") {\n this.setChainId(event.data);\n } else {\n this.events.emit(event.name, event.data);\n }\n this.events.emit(\"session_event\", payload);\n });\n\n this.signer.on(\"disconnect\", () => {\n this.events.emit(\"disconnect\");\n });\n\n this.signer.on(\"display_uri\", (uri: string) => {\n if (this.rpc.showQrModal) {\n this.modal?.openModal({ uri });\n }\n this.events.emit(\"display_uri\", uri);\n });\n }\n\n private setHttpProvider(chainId: number): void {\n const formattedChain = this.formatChainId(chainId);\n this.signer.setDefaultChain(formattedChain, this.getRpcUrl(chainId));\n }\n\n private isCompatibleChainId(chainId: string): boolean {\n return typeof chainId === \"string\" ? chainId.startsWith(`${this.namespace}:`) : false;\n }\n\n private formatChainId(chainId: number): string {\n return `${this.namespace}:${chainId}`;\n }\n\n private parseChainId(chainId: string): number {\n return Number(chainId.split(\":\")[1]);\n }\n\n private setChainIds(chains: string[]) {\n const compatible = chains.filter((x) => this.isCompatibleChainId(x));\n const chainIds = compatible.map((c) => this.parseChainId(c)).filter((c) => c !== this.chainId);\n if (chainIds.length) {\n this.chainId = chainIds[0];\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private setChainId(chain: string) {\n if (this.isCompatibleChainId(chain)) {\n const chainId = this.parseChainId(chain);\n this.chainId = chainId;\n this.setHttpProvider(chainId);\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private parseAccountId(account: string): { chainId: string; address: string } {\n const [namespace, reference, address] = account.split(\":\");\n const chainId = `${namespace}:${reference}`;\n return { chainId, address };\n }\n\n private setAccounts(accounts: string[]) {\n this.accounts = accounts\n .filter((x) => this.parseChainId(this.parseAccountId(x).chainId) === this.chainId)\n .map((x) => this.parseAccountId(x).address);\n this.events.emit(\"accountsChanged\", this.accounts);\n }\n\n private getRpcConfig(opts: EthereumProviderOptions): EthereumRpcConfig {\n return {\n chains: opts.chains.map((chain) => this.formatChainId(chain)) || [`${this.namespace}:1`],\n methods: opts?.methods || signerMethods,\n events: opts?.events || signerEvents,\n rpcMap: opts?.rpcMap || this.buildRpcMap(opts.chains, opts.projectId),\n showQrModal: opts?.showQrModal || true,\n projectId: opts.projectId,\n metadata: opts.metadata,\n };\n }\n\n private buildRpcMap(chains: number[], projectId: string): EthereumRpcMap {\n const map: EthereumRpcMap = {};\n chains.forEach((chain) => {\n map[chain] = this.getRpcUrl(chain, projectId);\n });\n return map;\n }\n\n private async initialize(opts: EthereumProviderOptions) {\n this.rpc = this.getRpcConfig(opts);\n this.chainId = getEthereumChainId(this.rpc.chains);\n this.signer = await UniversalProvider.init({ projectId: this.rpc.projectId });\n this.registerEventListeners();\n if (this.rpc.showQrModal)\n this.modal = new Web3Modal({\n projectId: this.rpc.projectId,\n standaloneChains: this.rpc.chains,\n });\n }\n\n private loadConnectOpts(opts?: ConnectOps) {\n if (!opts) return;\n const { chains, rpcMap } = opts;\n if (!isValidArray(chains) || !chains) return;\n this.rpc.chains = this.rpc.chains.concat(chains.map((chain) => this.formatChainId(chain)));\n // filter duplicate chains\n this.rpc.chains = [...new Set(this.rpc.chains)];\n chains.forEach((chain) => {\n this.rpc.rpcMap[chain] = rpcMap?.[chain] || this.getRpcUrl(chain);\n });\n }\n\n private getRpcUrl(chainId: number, projectId?: string): string {\n const providedRpc = this.rpc.rpcMap?.[chainId];\n return (\n providedRpc ||\n `${RPC_URL}?chainId=eip155:${chainId}&projectId=${projectId || this.rpc.projectId}`\n );\n }\n}\n\nexport default EthereumProvider;\n","import { EthereumProvider as Provider } from \"./EthereumProvider\";\nexport const EthereumProvider = Provider;\nexport default Provider;\n"],"names":["chains","EthereumProvider","EventEmitter","opts","provider","args","callback","session","getChainsFromNamespaces","accounts","getAccountsFromNamespaces","error","event","listener","payload","params","uri","_a","chainId","formattedChain","chainIds","x","c","chain","account","namespace","reference","address","projectId","map","UniversalProvider","Web3Modal","rpcMap","isValidArray","Provider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/EthereumProvider.ts","../src/index.ts"],"sourcesContent":["import { EventEmitter } from \"events\";\nimport { getAccountsFromNamespaces, isValidArray } from \"@walletconnect/utils\";\nimport {\n IEthereumProvider as IProvider,\n ProviderAccounts,\n RequestArguments,\n} from \"eip1193-provider\";\nimport { Metadata, UniversalProvider } from \"@walletconnect/universal-provider\";\nimport { Web3Modal } from \"@web3modal/standalone\";\nimport { SignClientTypes } from \"@walletconnect/types\";\n\nexport const RPC_URL = \"https://rpc.walletconnect.com/v1/\";\n\nexport const signerMethods = [\n \"eth_requestAccounts\",\n \"eth_accounts\",\n \"eth_chainId\",\n \"eth_sendTransaction\",\n \"eth_signTransaction\",\n \"eth_sign\",\n \"eth_signTypedData\",\n \"personal_sign\",\n];\n\nexport const signerEvents = [\"chainChanged\", \"accountsChanged\"];\n\nexport interface EthereumRpcMap {\n [chainId: string]: string;\n}\n\nexport interface SessionEvent {\n event: { name: string; data: any };\n chainId: string;\n}\n\nexport interface EthereumRpcConfig {\n chains: string[];\n methods: string[];\n events: string[];\n rpcMap: EthereumRpcMap;\n projectId: string;\n metadata?: Metadata;\n showQrModal: boolean;\n}\n\nexport interface ConnectOps {\n chains?: number[];\n rpcMap?: EthereumRpcMap;\n pairingTopic?: string;\n}\n\nexport interface IEthereumProvider extends IProvider {\n connect(opts?: ConnectOps | undefined): Promise<void>;\n}\n\nexport function getRpcUrl(chainId: string, rpc: EthereumRpcConfig): string | undefined {\n let rpcUrl: string | undefined;\n if (rpc.rpcMap) {\n rpcUrl = rpc.rpcMap[getEthereumChainId([chainId])];\n }\n return rpcUrl;\n}\n\nexport function getEthereumChainId(chains: string[]): number {\n return Number(chains[0].split(\":\")[1]);\n}\nexport interface EthereumProviderOptions {\n projectId: string;\n chains: number[];\n methods?: string[];\n events?: string[];\n rpcMap?: EthereumRpcMap;\n metadata?: Metadata;\n showQrModal?: boolean;\n}\n\nexport class EthereumProvider implements IEthereumProvider {\n public events: any = new EventEmitter();\n public namespace = \"eip155\";\n public accounts: string[] = [];\n public signer: InstanceType<typeof UniversalProvider>;\n public chainId = 1;\n public modal?: Web3Modal;\n\n private rpc: EthereumRpcConfig;\n\n constructor() {\n // assigned during initialize\n this.signer = {} as InstanceType<typeof UniversalProvider>;\n this.rpc = {} as EthereumRpcConfig;\n }\n\n static async init(opts: EthereumProviderOptions): Promise<EthereumProvider> {\n const provider = new EthereumProvider();\n await provider.initialize(opts);\n return provider;\n }\n\n public async request<T = unknown>(args: RequestArguments): Promise<T> {\n return await this.signer.request(args, this.formatChainId(this.chainId));\n }\n\n public sendAsync(\n args: RequestArguments,\n callback: (error: Error | null, response: any) => void,\n ): void {\n this.signer.sendAsync(args, callback, this.formatChainId(this.chainId));\n }\n\n get connected(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connected;\n }\n\n get connecting(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connecting;\n }\n\n public async enable(): Promise<ProviderAccounts> {\n if (!this.session) await this.connect();\n const accounts = await this.request({ method: \"eth_requestAccounts\" });\n return accounts as ProviderAccounts;\n }\n\n public async connect(opts?: ConnectOps): Promise<void> {\n if (!this.signer.client) {\n throw new Error(\"Provider not initialized. Call init() first\");\n }\n\n this.loadConnectOpts(opts);\n\n try {\n const session = await this.signer.connect({\n namespaces: {\n [this.namespace]: {\n chains: this.rpc.chains,\n methods: this.rpc.methods,\n events: this.rpc.events,\n rpcMap: this.rpc.rpcMap,\n },\n },\n pairingTopic: opts?.pairingTopic,\n });\n if (!session) return;\n this.setChainIds(this.rpc.chains);\n const accounts = getAccountsFromNamespaces(session.namespaces, [this.namespace]);\n this.setAccounts(accounts);\n this.events.emit(\"connect\", { chainId: this.chainId, accounts: this.accounts });\n } catch (error) {\n throw new Error((error as Error).message);\n } finally {\n if (this.modal) this.modal.closeModal();\n }\n }\n\n public async disconnect(): Promise<void> {\n await this.signer.disconnect();\n }\n\n public on(event: any, listener: any): void {\n this.events.on(event, listener);\n }\n\n public once(event: string, listener: any): void {\n this.events.once(event, listener);\n }\n\n public removeListener(event: string, listener: any): void {\n this.events.removeListener(event, listener);\n }\n\n public off(event: string, listener: any): void {\n this.events.off(event, listener);\n }\n\n get isWalletConnect() {\n return true;\n }\n\n get session() {\n return this.signer.session;\n }\n // ---------- Private ----------------------------------------------- //\n\n private registerEventListeners() {\n this.signer.on(\"session_event\", (payload: SignClientTypes.EventArguments[\"session_event\"]) => {\n const { params } = payload;\n if (!this.rpc.chains.includes(params.chainId)) return;\n const { event } = params;\n if (event.name === \"accountsChanged\") {\n this.accounts = event.data;\n this.events.emit(\"accountsChanged\", this.accounts);\n } else if (event.name === \"chainChanged\") {\n this.setChainId(this.formatChainId(event.data));\n } else {\n this.events.emit(event.name, event.data);\n }\n this.events.emit(\"session_event\", payload);\n });\n\n this.signer.on(\"chainChanged\", (chainId: number) => this.events.emit(\"chainChanged\", chainId));\n\n this.signer.on(\n \"session_update\",\n (payload: SignClientTypes.EventArguments[\"session_update\"]) => {\n this.events.emit(\"session_update\", payload);\n },\n );\n\n this.signer.on(\n \"session_delete\",\n (payload: SignClientTypes.EventArguments[\"session_delete\"]) => {\n this.reset();\n this.events.emit(\"session_delete\", payload);\n },\n );\n\n this.signer.on(\"display_uri\", (uri: string) => {\n if (this.rpc.showQrModal) {\n this.modal?.openModal({ uri });\n }\n this.events.emit(\"display_uri\", uri);\n });\n }\n\n private setHttpProvider(chainId: number): void {\n const formattedChain = this.formatChainId(chainId);\n this.signer.setDefaultChain(formattedChain, this.getRpcUrl(chainId));\n }\n\n private isCompatibleChainId(chainId: string): boolean {\n return typeof chainId === \"string\" ? chainId.startsWith(`${this.namespace}:`) : false;\n }\n\n private formatChainId(chainId: number): string {\n return `${this.namespace}:${chainId}`;\n }\n\n private parseChainId(chainId: string): number {\n return Number(chainId.split(\":\")[1]);\n }\n\n private setChainIds(chains: string[]) {\n const compatible = chains.filter((x) => this.isCompatibleChainId(x));\n const chainIds = compatible.map((c) => this.parseChainId(c));\n if (chainIds.length) {\n this.chainId = chainIds[0];\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private setChainId(chain: string) {\n if (this.isCompatibleChainId(chain)) {\n const chainId = this.parseChainId(chain);\n this.chainId = chainId;\n this.setHttpProvider(chainId);\n }\n }\n\n private parseAccountId(account: string): { chainId: string; address: string } {\n const [namespace, reference, address] = account.split(\":\");\n const chainId = `${namespace}:${reference}`;\n return { chainId, address };\n }\n\n private setAccounts(accounts: string[]) {\n this.accounts = accounts\n .filter((x) => this.parseChainId(this.parseAccountId(x).chainId) === this.chainId)\n .map((x) => this.parseAccountId(x).address);\n this.events.emit(\"accountsChanged\", this.accounts);\n }\n\n private getRpcConfig(opts: EthereumProviderOptions): EthereumRpcConfig {\n return {\n chains: opts.chains.map((chain) => this.formatChainId(chain)) || [`${this.namespace}:1`],\n methods: opts?.methods || signerMethods,\n events: opts?.events || signerEvents,\n rpcMap: opts?.rpcMap || this.buildRpcMap(opts.chains, opts.projectId),\n showQrModal: opts?.showQrModal || true,\n projectId: opts.projectId,\n metadata: opts.metadata,\n };\n }\n\n private buildRpcMap(chains: number[], projectId: string): EthereumRpcMap {\n const map: EthereumRpcMap = {};\n chains.forEach((chain) => {\n map[chain] = this.getRpcUrl(chain, projectId);\n });\n return map;\n }\n\n private async initialize(opts: EthereumProviderOptions) {\n this.rpc = this.getRpcConfig(opts);\n this.chainId = getEthereumChainId(this.rpc.chains);\n this.signer = await UniversalProvider.init({ projectId: this.rpc.projectId });\n this.registerEventListeners();\n this.loadPersistedSession();\n if (this.rpc.showQrModal)\n this.modal = new Web3Modal({\n projectId: this.rpc.projectId,\n standaloneChains: this.rpc.chains,\n });\n }\n\n private loadConnectOpts(opts?: ConnectOps) {\n if (!opts) return;\n const { chains, rpcMap } = opts;\n if (!isValidArray(chains) || !chains) return;\n this.rpc.chains = this.rpc.chains.concat(chains.map((chain) => this.formatChainId(chain)));\n // filter duplicate chains\n this.rpc.chains = [...new Set(this.rpc.chains)];\n chains.forEach((chain) => {\n this.rpc.rpcMap[chain] = rpcMap?.[chain] || this.getRpcUrl(chain);\n });\n }\n\n private getRpcUrl(chainId: number, projectId?: string): string {\n const providedRpc = this.rpc.rpcMap?.[chainId];\n return (\n providedRpc ||\n `${RPC_URL}?chainId=eip155:${chainId}&projectId=${projectId || this.rpc.projectId}`\n );\n }\n\n private loadPersistedSession() {\n if (!this.session) return;\n this.setChainIds(this.session.namespaces[this.namespace].accounts);\n this.setAccounts(this.session.namespaces[this.namespace].accounts);\n }\n\n private reset() {\n this.chainId = 1;\n this.accounts = [];\n }\n}\n\nexport default EthereumProvider;\n","import { EthereumProvider as Provider } from \"./EthereumProvider\";\nexport const EthereumProvider = Provider;\nexport default Provider;\n"],"names":["chains","EthereumProvider","EventEmitter","opts","provider","args","callback","session","accounts","getAccountsFromNamespaces","error","event","listener","payload","params","chainId","uri","_a","formattedChain","chainIds","x","c","chain","account","namespace","reference","address","projectId","map","UniversalProvider","Web3Modal","rpcMap","isValidArray","Provider"],"mappings":"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"}
|
package/dist/index.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EventEmitter as c}from"events";import{
|
|
1
|
+
import{EventEmitter as c}from"events";import{getAccountsFromNamespaces as h,isValidArray as r}from"@walletconnect/utils";import{UniversalProvider as o}from"@walletconnect/universal-provider";import{Web3Modal as d}from"@web3modal/standalone";const p="https://rpc.walletconnect.com/v1/",l=["eth_requestAccounts","eth_accounts","eth_chainId","eth_sendTransaction","eth_signTransaction","eth_sign","eth_signTypedData","personal_sign"],u=["chainChanged","accountsChanged"];function m(a){return Number(a[0].split(":")[1])}class n{constructor(){this.events=new c,this.namespace="eip155",this.accounts=[],this.chainId=1,this.signer={},this.rpc={}}static async init(t){const s=new n;return await s.initialize(t),s}async request(t){return await this.signer.request(t,this.formatChainId(this.chainId))}sendAsync(t,s){this.signer.sendAsync(t,s,this.formatChainId(this.chainId))}get connected(){return this.signer.client?this.signer.client.core.relayer.connected:!1}get connecting(){return this.signer.client?this.signer.client.core.relayer.connecting:!1}async enable(){return this.session||await this.connect(),await this.request({method:"eth_requestAccounts"})}async connect(t){if(!this.signer.client)throw new Error("Provider not initialized. Call init() first");this.loadConnectOpts(t);try{const s=await this.signer.connect({namespaces:{[this.namespace]:{chains:this.rpc.chains,methods:this.rpc.methods,events:this.rpc.events,rpcMap:this.rpc.rpcMap}},pairingTopic:t?.pairingTopic});if(!s)return;this.setChainIds(this.rpc.chains);const i=h(s.namespaces,[this.namespace]);this.setAccounts(i),this.events.emit("connect",{chainId:this.chainId,accounts:this.accounts})}catch(s){throw new Error(s.message)}finally{this.modal&&this.modal.closeModal()}}async disconnect(){await this.signer.disconnect()}on(t,s){this.events.on(t,s)}once(t,s){this.events.once(t,s)}removeListener(t,s){this.events.removeListener(t,s)}off(t,s){this.events.off(t,s)}get isWalletConnect(){return!0}get session(){return this.signer.session}registerEventListeners(){this.signer.on("session_event",t=>{const{params:s}=t;if(!this.rpc.chains.includes(s.chainId))return;const{event:i}=s;i.name==="accountsChanged"?(this.accounts=i.data,this.events.emit("accountsChanged",this.accounts)):i.name==="chainChanged"?this.setChainId(this.formatChainId(i.data)):this.events.emit(i.name,i.data),this.events.emit("session_event",t)}),this.signer.on("chainChanged",t=>this.events.emit("chainChanged",t)),this.signer.on("session_update",t=>{this.events.emit("session_update",t)}),this.signer.on("session_delete",t=>{this.reset(),this.events.emit("session_delete",t)}),this.signer.on("display_uri",t=>{var s;this.rpc.showQrModal&&((s=this.modal)==null||s.openModal({uri:t})),this.events.emit("display_uri",t)})}setHttpProvider(t){const s=this.formatChainId(t);this.signer.setDefaultChain(s,this.getRpcUrl(t))}isCompatibleChainId(t){return typeof t=="string"?t.startsWith(`${this.namespace}:`):!1}formatChainId(t){return`${this.namespace}:${t}`}parseChainId(t){return Number(t.split(":")[1])}setChainIds(t){const s=t.filter(i=>this.isCompatibleChainId(i)).map(i=>this.parseChainId(i));s.length&&(this.chainId=s[0],this.events.emit("chainChanged",this.chainId))}setChainId(t){if(this.isCompatibleChainId(t)){const s=this.parseChainId(t);this.chainId=s,this.setHttpProvider(s)}}parseAccountId(t){const[s,i,e]=t.split(":");return{chainId:`${s}:${i}`,address:e}}setAccounts(t){this.accounts=t.filter(s=>this.parseChainId(this.parseAccountId(s).chainId)===this.chainId).map(s=>this.parseAccountId(s).address),this.events.emit("accountsChanged",this.accounts)}getRpcConfig(t){return{chains:t.chains.map(s=>this.formatChainId(s))||[`${this.namespace}:1`],methods:t?.methods||l,events:t?.events||u,rpcMap:t?.rpcMap||this.buildRpcMap(t.chains,t.projectId),showQrModal:t?.showQrModal||!0,projectId:t.projectId,metadata:t.metadata}}buildRpcMap(t,s){const i={};return t.forEach(e=>{i[e]=this.getRpcUrl(e,s)}),i}async initialize(t){this.rpc=this.getRpcConfig(t),this.chainId=m(this.rpc.chains),this.signer=await o.init({projectId:this.rpc.projectId}),this.registerEventListeners(),this.loadPersistedSession(),this.rpc.showQrModal&&(this.modal=new d({projectId:this.rpc.projectId,standaloneChains:this.rpc.chains}))}loadConnectOpts(t){if(!t)return;const{chains:s,rpcMap:i}=t;!r(s)||!s||(this.rpc.chains=this.rpc.chains.concat(s.map(e=>this.formatChainId(e))),this.rpc.chains=[...new Set(this.rpc.chains)],s.forEach(e=>{this.rpc.rpcMap[e]=i?.[e]||this.getRpcUrl(e)}))}getRpcUrl(t,s){var i;return((i=this.rpc.rpcMap)==null?void 0:i[t])||`${p}?chainId=eip155:${t}&projectId=${s||this.rpc.projectId}`}loadPersistedSession(){this.session&&(this.setChainIds(this.session.namespaces[this.namespace].accounts),this.setAccounts(this.session.namespaces[this.namespace].accounts))}reset(){this.chainId=1,this.accounts=[]}}const g=n;export{g as EthereumProvider,n as default};
|
|
2
2
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/EthereumProvider.ts","../src/index.ts"],"sourcesContent":["import { EventEmitter } from \"events\";\nimport {\n getChainsFromNamespaces,\n getAccountsFromNamespaces,\n isValidArray,\n} from \"@walletconnect/utils\";\nimport {\n IEthereumProvider as IProvider,\n ProviderAccounts,\n RequestArguments,\n} from \"eip1193-provider\";\nimport { Metadata, UniversalProvider } from \"@walletconnect/universal-provider\";\nimport { Web3Modal } from \"@web3modal/standalone\";\n\nexport const RPC_URL = \"https://rpc.walletconnect.com/v1/\";\n\nexport const signerMethods = [\n \"eth_requestAccounts\",\n \"eth_accounts\",\n \"eth_chainId\",\n \"eth_sendTransaction\",\n \"eth_signTransaction\",\n \"eth_sign\",\n \"eth_signTypedData\",\n \"personal_sign\",\n];\n\nexport const signerEvents = [\"chainChanged\", \"accountsChanged\"];\n\nexport interface EthereumRpcMap {\n [chainId: string]: string;\n}\n\nexport interface SessionEvent {\n event: { name: string; data: any };\n chainId: string;\n}\n\nexport interface EthereumRpcConfig {\n chains: string[];\n methods: string[];\n events: string[];\n rpcMap: EthereumRpcMap;\n projectId: string;\n metadata?: Metadata;\n showQrModal: boolean;\n}\n\nexport interface ConnectOps {\n chains?: number[];\n rpcMap?: EthereumRpcMap;\n pairingTopic?: string;\n}\n\nexport interface IEthereumProvider extends IProvider {\n connect(opts?: ConnectOps | undefined): Promise<void>;\n}\n\nexport function getRpcUrl(chainId: string, rpc: EthereumRpcConfig): string | undefined {\n let rpcUrl: string | undefined;\n if (rpc.rpcMap) {\n rpcUrl = rpc.rpcMap[getEthereumChainId([chainId])];\n }\n return rpcUrl;\n}\n\nexport function getEthereumChainId(chains: string[]): number {\n return Number(chains[0].split(\":\")[1]);\n}\nexport interface EthereumProviderOptions {\n projectId: string;\n chains: number[];\n methods?: string[];\n events?: string[];\n rpcMap?: EthereumRpcMap;\n metadata?: Metadata;\n showQrModal?: boolean;\n}\n\nexport class EthereumProvider implements IEthereumProvider {\n public events: any = new EventEmitter();\n public namespace = \"eip155\";\n public accounts: string[] = [];\n public signer: InstanceType<typeof UniversalProvider>;\n public chainId = 1;\n public modal?: Web3Modal;\n\n private rpc: EthereumRpcConfig;\n\n constructor() {\n // assigned during initialize\n this.signer = {} as InstanceType<typeof UniversalProvider>;\n this.rpc = {} as EthereumRpcConfig;\n }\n\n static async init(opts: EthereumProviderOptions): Promise<EthereumProvider> {\n const provider = new EthereumProvider();\n await provider.initialize(opts);\n return provider;\n }\n\n public async request<T = unknown>(args: RequestArguments): Promise<T> {\n return await this.signer.request(args, this.formatChainId(this.chainId));\n }\n\n public sendAsync(\n args: RequestArguments,\n callback: (error: Error | null, response: any) => void,\n ): void {\n this.signer.sendAsync(args, callback, this.formatChainId(this.chainId));\n }\n\n get connected(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connected;\n }\n\n get connecting(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connecting;\n }\n\n public async enable(): Promise<ProviderAccounts> {\n if (!this.session) await this.connect();\n const accounts = await this.request({ method: \"eth_requestAccounts\" });\n return accounts as ProviderAccounts;\n }\n\n public async connect(opts?: ConnectOps): Promise<void> {\n if (!this.signer.client) {\n throw new Error(\"Provider not initialized. Call init() first\");\n }\n\n this.loadConnectOpts(opts);\n\n try {\n const session = await this.signer.connect({\n namespaces: {\n [this.namespace]: {\n chains: this.rpc.chains,\n methods: this.rpc.methods,\n events: this.rpc.events,\n rpcMap: this.rpc.rpcMap,\n },\n },\n pairingTopic: opts?.pairingTopic,\n });\n if (!session) return;\n const chains = getChainsFromNamespaces(session.namespaces, [this.namespace]);\n this.setChainIds(chains);\n const accounts = getAccountsFromNamespaces(session.namespaces, [this.namespace]);\n this.setAccounts(accounts);\n this.events.emit(\"connect\", { chainId: this.chainId, accounts: this.accounts });\n } catch (error) {\n throw new Error((error as Error).message);\n } finally {\n if (this.modal) this.modal.closeModal();\n }\n }\n\n public async disconnect(): Promise<void> {\n await this.signer.disconnect();\n }\n\n public on(event: any, listener: any): void {\n this.events.on(event, listener);\n }\n\n public once(event: string, listener: any): void {\n this.events.once(event, listener);\n }\n\n public removeListener(event: string, listener: any): void {\n this.events.removeListener(event, listener);\n }\n\n public off(event: string, listener: any): void {\n this.events.off(event, listener);\n }\n\n get isWalletConnect() {\n return true;\n }\n\n get session() {\n return this.signer.session;\n }\n // ---------- Private ----------------------------------------------- //\n\n private registerEventListeners() {\n this.signer.on(\"session_event\", (payload: any) => {\n const { params } = payload;\n if (!this.rpc.chains.includes(params.chainId)) return;\n const { event } = params;\n if (event.name === \"accountsChanged\") {\n this.accounts = event.data;\n this.events.emit(\"accountsChanged\", this.accounts);\n } else if (event.name === \"chainChanged\") {\n this.setChainId(event.data);\n } else {\n this.events.emit(event.name, event.data);\n }\n this.events.emit(\"session_event\", payload);\n });\n\n this.signer.on(\"disconnect\", () => {\n this.events.emit(\"disconnect\");\n });\n\n this.signer.on(\"display_uri\", (uri: string) => {\n if (this.rpc.showQrModal) {\n this.modal?.openModal({ uri });\n }\n this.events.emit(\"display_uri\", uri);\n });\n }\n\n private setHttpProvider(chainId: number): void {\n const formattedChain = this.formatChainId(chainId);\n this.signer.setDefaultChain(formattedChain, this.getRpcUrl(chainId));\n }\n\n private isCompatibleChainId(chainId: string): boolean {\n return typeof chainId === \"string\" ? chainId.startsWith(`${this.namespace}:`) : false;\n }\n\n private formatChainId(chainId: number): string {\n return `${this.namespace}:${chainId}`;\n }\n\n private parseChainId(chainId: string): number {\n return Number(chainId.split(\":\")[1]);\n }\n\n private setChainIds(chains: string[]) {\n const compatible = chains.filter((x) => this.isCompatibleChainId(x));\n const chainIds = compatible.map((c) => this.parseChainId(c)).filter((c) => c !== this.chainId);\n if (chainIds.length) {\n this.chainId = chainIds[0];\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private setChainId(chain: string) {\n if (this.isCompatibleChainId(chain)) {\n const chainId = this.parseChainId(chain);\n this.chainId = chainId;\n this.setHttpProvider(chainId);\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private parseAccountId(account: string): { chainId: string; address: string } {\n const [namespace, reference, address] = account.split(\":\");\n const chainId = `${namespace}:${reference}`;\n return { chainId, address };\n }\n\n private setAccounts(accounts: string[]) {\n this.accounts = accounts\n .filter((x) => this.parseChainId(this.parseAccountId(x).chainId) === this.chainId)\n .map((x) => this.parseAccountId(x).address);\n this.events.emit(\"accountsChanged\", this.accounts);\n }\n\n private getRpcConfig(opts: EthereumProviderOptions): EthereumRpcConfig {\n return {\n chains: opts.chains.map((chain) => this.formatChainId(chain)) || [`${this.namespace}:1`],\n methods: opts?.methods || signerMethods,\n events: opts?.events || signerEvents,\n rpcMap: opts?.rpcMap || this.buildRpcMap(opts.chains, opts.projectId),\n showQrModal: opts?.showQrModal || true,\n projectId: opts.projectId,\n metadata: opts.metadata,\n };\n }\n\n private buildRpcMap(chains: number[], projectId: string): EthereumRpcMap {\n const map: EthereumRpcMap = {};\n chains.forEach((chain) => {\n map[chain] = this.getRpcUrl(chain, projectId);\n });\n return map;\n }\n\n private async initialize(opts: EthereumProviderOptions) {\n this.rpc = this.getRpcConfig(opts);\n this.chainId = getEthereumChainId(this.rpc.chains);\n this.signer = await UniversalProvider.init({ projectId: this.rpc.projectId });\n this.registerEventListeners();\n if (this.rpc.showQrModal)\n this.modal = new Web3Modal({\n projectId: this.rpc.projectId,\n standaloneChains: this.rpc.chains,\n });\n }\n\n private loadConnectOpts(opts?: ConnectOps) {\n if (!opts) return;\n const { chains, rpcMap } = opts;\n if (!isValidArray(chains) || !chains) return;\n this.rpc.chains = this.rpc.chains.concat(chains.map((chain) => this.formatChainId(chain)));\n // filter duplicate chains\n this.rpc.chains = [...new Set(this.rpc.chains)];\n chains.forEach((chain) => {\n this.rpc.rpcMap[chain] = rpcMap?.[chain] || this.getRpcUrl(chain);\n });\n }\n\n private getRpcUrl(chainId: number, projectId?: string): string {\n const providedRpc = this.rpc.rpcMap?.[chainId];\n return (\n providedRpc ||\n `${RPC_URL}?chainId=eip155:${chainId}&projectId=${projectId || this.rpc.projectId}`\n );\n }\n}\n\nexport default EthereumProvider;\n","import { EthereumProvider as Provider } from \"./EthereumProvider\";\nexport const EthereumProvider = Provider;\nexport default Provider;\n"],"names":["chains","EthereumProvider","EventEmitter","opts","provider","args","callback","session","getChainsFromNamespaces","accounts","getAccountsFromNamespaces","error","event","listener","payload","params","uri","_a","chainId","formattedChain","chainIds","x","c","chain","account","namespace","reference","address","projectId","map","UniversalProvider","Web3Modal","rpcMap","isValidArray","Provider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/EthereumProvider.ts","../src/index.ts"],"sourcesContent":["import { EventEmitter } from \"events\";\nimport { getAccountsFromNamespaces, isValidArray } from \"@walletconnect/utils\";\nimport {\n IEthereumProvider as IProvider,\n ProviderAccounts,\n RequestArguments,\n} from \"eip1193-provider\";\nimport { Metadata, UniversalProvider } from \"@walletconnect/universal-provider\";\nimport { Web3Modal } from \"@web3modal/standalone\";\nimport { SignClientTypes } from \"@walletconnect/types\";\n\nexport const RPC_URL = \"https://rpc.walletconnect.com/v1/\";\n\nexport const signerMethods = [\n \"eth_requestAccounts\",\n \"eth_accounts\",\n \"eth_chainId\",\n \"eth_sendTransaction\",\n \"eth_signTransaction\",\n \"eth_sign\",\n \"eth_signTypedData\",\n \"personal_sign\",\n];\n\nexport const signerEvents = [\"chainChanged\", \"accountsChanged\"];\n\nexport interface EthereumRpcMap {\n [chainId: string]: string;\n}\n\nexport interface SessionEvent {\n event: { name: string; data: any };\n chainId: string;\n}\n\nexport interface EthereumRpcConfig {\n chains: string[];\n methods: string[];\n events: string[];\n rpcMap: EthereumRpcMap;\n projectId: string;\n metadata?: Metadata;\n showQrModal: boolean;\n}\n\nexport interface ConnectOps {\n chains?: number[];\n rpcMap?: EthereumRpcMap;\n pairingTopic?: string;\n}\n\nexport interface IEthereumProvider extends IProvider {\n connect(opts?: ConnectOps | undefined): Promise<void>;\n}\n\nexport function getRpcUrl(chainId: string, rpc: EthereumRpcConfig): string | undefined {\n let rpcUrl: string | undefined;\n if (rpc.rpcMap) {\n rpcUrl = rpc.rpcMap[getEthereumChainId([chainId])];\n }\n return rpcUrl;\n}\n\nexport function getEthereumChainId(chains: string[]): number {\n return Number(chains[0].split(\":\")[1]);\n}\nexport interface EthereumProviderOptions {\n projectId: string;\n chains: number[];\n methods?: string[];\n events?: string[];\n rpcMap?: EthereumRpcMap;\n metadata?: Metadata;\n showQrModal?: boolean;\n}\n\nexport class EthereumProvider implements IEthereumProvider {\n public events: any = new EventEmitter();\n public namespace = \"eip155\";\n public accounts: string[] = [];\n public signer: InstanceType<typeof UniversalProvider>;\n public chainId = 1;\n public modal?: Web3Modal;\n\n private rpc: EthereumRpcConfig;\n\n constructor() {\n // assigned during initialize\n this.signer = {} as InstanceType<typeof UniversalProvider>;\n this.rpc = {} as EthereumRpcConfig;\n }\n\n static async init(opts: EthereumProviderOptions): Promise<EthereumProvider> {\n const provider = new EthereumProvider();\n await provider.initialize(opts);\n return provider;\n }\n\n public async request<T = unknown>(args: RequestArguments): Promise<T> {\n return await this.signer.request(args, this.formatChainId(this.chainId));\n }\n\n public sendAsync(\n args: RequestArguments,\n callback: (error: Error | null, response: any) => void,\n ): void {\n this.signer.sendAsync(args, callback, this.formatChainId(this.chainId));\n }\n\n get connected(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connected;\n }\n\n get connecting(): boolean {\n if (!this.signer.client) return false;\n return this.signer.client.core.relayer.connecting;\n }\n\n public async enable(): Promise<ProviderAccounts> {\n if (!this.session) await this.connect();\n const accounts = await this.request({ method: \"eth_requestAccounts\" });\n return accounts as ProviderAccounts;\n }\n\n public async connect(opts?: ConnectOps): Promise<void> {\n if (!this.signer.client) {\n throw new Error(\"Provider not initialized. Call init() first\");\n }\n\n this.loadConnectOpts(opts);\n\n try {\n const session = await this.signer.connect({\n namespaces: {\n [this.namespace]: {\n chains: this.rpc.chains,\n methods: this.rpc.methods,\n events: this.rpc.events,\n rpcMap: this.rpc.rpcMap,\n },\n },\n pairingTopic: opts?.pairingTopic,\n });\n if (!session) return;\n this.setChainIds(this.rpc.chains);\n const accounts = getAccountsFromNamespaces(session.namespaces, [this.namespace]);\n this.setAccounts(accounts);\n this.events.emit(\"connect\", { chainId: this.chainId, accounts: this.accounts });\n } catch (error) {\n throw new Error((error as Error).message);\n } finally {\n if (this.modal) this.modal.closeModal();\n }\n }\n\n public async disconnect(): Promise<void> {\n await this.signer.disconnect();\n }\n\n public on(event: any, listener: any): void {\n this.events.on(event, listener);\n }\n\n public once(event: string, listener: any): void {\n this.events.once(event, listener);\n }\n\n public removeListener(event: string, listener: any): void {\n this.events.removeListener(event, listener);\n }\n\n public off(event: string, listener: any): void {\n this.events.off(event, listener);\n }\n\n get isWalletConnect() {\n return true;\n }\n\n get session() {\n return this.signer.session;\n }\n // ---------- Private ----------------------------------------------- //\n\n private registerEventListeners() {\n this.signer.on(\"session_event\", (payload: SignClientTypes.EventArguments[\"session_event\"]) => {\n const { params } = payload;\n if (!this.rpc.chains.includes(params.chainId)) return;\n const { event } = params;\n if (event.name === \"accountsChanged\") {\n this.accounts = event.data;\n this.events.emit(\"accountsChanged\", this.accounts);\n } else if (event.name === \"chainChanged\") {\n this.setChainId(this.formatChainId(event.data));\n } else {\n this.events.emit(event.name, event.data);\n }\n this.events.emit(\"session_event\", payload);\n });\n\n this.signer.on(\"chainChanged\", (chainId: number) => this.events.emit(\"chainChanged\", chainId));\n\n this.signer.on(\n \"session_update\",\n (payload: SignClientTypes.EventArguments[\"session_update\"]) => {\n this.events.emit(\"session_update\", payload);\n },\n );\n\n this.signer.on(\n \"session_delete\",\n (payload: SignClientTypes.EventArguments[\"session_delete\"]) => {\n this.reset();\n this.events.emit(\"session_delete\", payload);\n },\n );\n\n this.signer.on(\"display_uri\", (uri: string) => {\n if (this.rpc.showQrModal) {\n this.modal?.openModal({ uri });\n }\n this.events.emit(\"display_uri\", uri);\n });\n }\n\n private setHttpProvider(chainId: number): void {\n const formattedChain = this.formatChainId(chainId);\n this.signer.setDefaultChain(formattedChain, this.getRpcUrl(chainId));\n }\n\n private isCompatibleChainId(chainId: string): boolean {\n return typeof chainId === \"string\" ? chainId.startsWith(`${this.namespace}:`) : false;\n }\n\n private formatChainId(chainId: number): string {\n return `${this.namespace}:${chainId}`;\n }\n\n private parseChainId(chainId: string): number {\n return Number(chainId.split(\":\")[1]);\n }\n\n private setChainIds(chains: string[]) {\n const compatible = chains.filter((x) => this.isCompatibleChainId(x));\n const chainIds = compatible.map((c) => this.parseChainId(c));\n if (chainIds.length) {\n this.chainId = chainIds[0];\n this.events.emit(\"chainChanged\", this.chainId);\n }\n }\n\n private setChainId(chain: string) {\n if (this.isCompatibleChainId(chain)) {\n const chainId = this.parseChainId(chain);\n this.chainId = chainId;\n this.setHttpProvider(chainId);\n }\n }\n\n private parseAccountId(account: string): { chainId: string; address: string } {\n const [namespace, reference, address] = account.split(\":\");\n const chainId = `${namespace}:${reference}`;\n return { chainId, address };\n }\n\n private setAccounts(accounts: string[]) {\n this.accounts = accounts\n .filter((x) => this.parseChainId(this.parseAccountId(x).chainId) === this.chainId)\n .map((x) => this.parseAccountId(x).address);\n this.events.emit(\"accountsChanged\", this.accounts);\n }\n\n private getRpcConfig(opts: EthereumProviderOptions): EthereumRpcConfig {\n return {\n chains: opts.chains.map((chain) => this.formatChainId(chain)) || [`${this.namespace}:1`],\n methods: opts?.methods || signerMethods,\n events: opts?.events || signerEvents,\n rpcMap: opts?.rpcMap || this.buildRpcMap(opts.chains, opts.projectId),\n showQrModal: opts?.showQrModal || true,\n projectId: opts.projectId,\n metadata: opts.metadata,\n };\n }\n\n private buildRpcMap(chains: number[], projectId: string): EthereumRpcMap {\n const map: EthereumRpcMap = {};\n chains.forEach((chain) => {\n map[chain] = this.getRpcUrl(chain, projectId);\n });\n return map;\n }\n\n private async initialize(opts: EthereumProviderOptions) {\n this.rpc = this.getRpcConfig(opts);\n this.chainId = getEthereumChainId(this.rpc.chains);\n this.signer = await UniversalProvider.init({ projectId: this.rpc.projectId });\n this.registerEventListeners();\n this.loadPersistedSession();\n if (this.rpc.showQrModal)\n this.modal = new Web3Modal({\n projectId: this.rpc.projectId,\n standaloneChains: this.rpc.chains,\n });\n }\n\n private loadConnectOpts(opts?: ConnectOps) {\n if (!opts) return;\n const { chains, rpcMap } = opts;\n if (!isValidArray(chains) || !chains) return;\n this.rpc.chains = this.rpc.chains.concat(chains.map((chain) => this.formatChainId(chain)));\n // filter duplicate chains\n this.rpc.chains = [...new Set(this.rpc.chains)];\n chains.forEach((chain) => {\n this.rpc.rpcMap[chain] = rpcMap?.[chain] || this.getRpcUrl(chain);\n });\n }\n\n private getRpcUrl(chainId: number, projectId?: string): string {\n const providedRpc = this.rpc.rpcMap?.[chainId];\n return (\n providedRpc ||\n `${RPC_URL}?chainId=eip155:${chainId}&projectId=${projectId || this.rpc.projectId}`\n );\n }\n\n private loadPersistedSession() {\n if (!this.session) return;\n this.setChainIds(this.session.namespaces[this.namespace].accounts);\n this.setAccounts(this.session.namespaces[this.namespace].accounts);\n }\n\n private reset() {\n this.chainId = 1;\n this.accounts = [];\n }\n}\n\nexport default EthereumProvider;\n","import { EthereumProvider as Provider } from \"./EthereumProvider\";\nexport const EthereumProvider = Provider;\nexport default Provider;\n"],"names":["chains","EthereumProvider","EventEmitter","opts","provider","args","callback","session","accounts","getAccountsFromNamespaces","error","event","listener","payload","params","chainId","uri","_a","formattedChain","chainIds","x","c","chain","account","namespace","reference","address","projectId","map","UniversalProvider","Web3Modal","rpcMap","isValidArray","Provider"],"mappings":"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"}
|