UNPKG

@thirdweb-dev/wallets

Version:

<p align="center"> <br /> <a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/packages/sdk/logo.svg?raw=true" width="200" alt=""/></a> <br /> </p> <h1 align="center">thirdweb Wallet SDK</h1> <p align="center"> <a href="ht

101 lines (98 loc) 3.27 kB
import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js'; import { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js'; import { C as Connector } from '../../../../dist/connector-05689d68.browser.esm.js'; import { getChainProvider } from '@thirdweb-dev/sdk'; import { n as normalizeChainId } from '../../../../dist/normalizeChainId-e4cc0175.browser.esm.js'; import 'eventemitter3'; var _provider = /*#__PURE__*/new WeakMap(); var _signer = /*#__PURE__*/new WeakMap(); class SignerConnector extends Connector { constructor(options) { super(); _classPrivateFieldInitSpec(this, _provider, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _signer, { writable: true, value: void 0 }); _defineProperty(this, "onChainChanged", chainId => { const id = normalizeChainId(chainId); const unsupported = !this.options.chains.find(c => c.chainId === id); this.emit("change", { chain: { id, unsupported } }); }); this.options = options; } async connect(args) { if (args.chainId) { this.switchChain(args.chainId); } const signer = await this.getSigner(); const address = await signer.getAddress(); return address; } async disconnect() { _classPrivateFieldSet(this, _provider, undefined); _classPrivateFieldSet(this, _signer, undefined); } async getAddress() { const signer = await this.getSigner(); if (!signer) { throw new Error("No signer found"); } return await signer.getAddress(); } async isConnected() { try { const addr = await this.getAddress(); return !!addr; } catch { return false; } } async getProvider() { if (!_classPrivateFieldGet(this, _provider)) { _classPrivateFieldSet(this, _provider, getChainProvider(this.options.chain, { clientId: this.options.clientId, secretKey: this.options.secretKey })); } return _classPrivateFieldGet(this, _provider); } async getSigner() { if (!_classPrivateFieldGet(this, _signer)) { const provider = await this.getProvider(); _classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, provider)); } return _classPrivateFieldGet(this, _signer); } async switchChain(chainId) { const chain = this.options.chains.find(c => c.chainId === chainId); if (!chain) { throw new Error(`Chain not found for chainId ${chainId}, please add it to the chains property when creating this wallet`); } _classPrivateFieldSet(this, _provider, getChainProvider(chain, { clientId: this.options.clientId, secretKey: this.options.secretKey })); _classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, _classPrivateFieldGet(this, _provider))); this.onChainChanged(chainId); } async setupListeners() {} updateChains(chains) { this.options.chains = chains; } } function getUpdatedSigner(signer, provider) { if (provider) { return signer.connect(provider); } return signer; } export { SignerConnector };