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

105 lines (100 loc) 3.58 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../../../../dist/defineProperty-21d22449.cjs.dev.js'); var classPrivateFieldSet = require('../../../../dist/classPrivateFieldSet-f0dc2a42.cjs.dev.js'); var connector = require('../../../../dist/connector-a63dd9e7.cjs.dev.js'); var sdk = require('@thirdweb-dev/sdk'); var normalizeChainId = require('../../../../dist/normalizeChainId-8778491e.cjs.dev.js'); require('eventemitter3'); var _provider = /*#__PURE__*/new WeakMap(); var _signer = /*#__PURE__*/new WeakMap(); class SignerConnector extends connector.Connector { constructor(options) { super(); classPrivateFieldSet._classPrivateFieldInitSpec(this, _provider, { writable: true, value: void 0 }); classPrivateFieldSet._classPrivateFieldInitSpec(this, _signer, { writable: true, value: void 0 }); defineProperty._defineProperty(this, "onChainChanged", chainId => { const id = normalizeChainId.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._classPrivateFieldSet(this, _provider, undefined); classPrivateFieldSet._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 (!classPrivateFieldSet._classPrivateFieldGet(this, _provider)) { classPrivateFieldSet._classPrivateFieldSet(this, _provider, sdk.getChainProvider(this.options.chain, { clientId: this.options.clientId, secretKey: this.options.secretKey })); } return classPrivateFieldSet._classPrivateFieldGet(this, _provider); } async getSigner() { if (!classPrivateFieldSet._classPrivateFieldGet(this, _signer)) { const provider = await this.getProvider(); classPrivateFieldSet._classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, provider)); } return classPrivateFieldSet._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._classPrivateFieldSet(this, _provider, sdk.getChainProvider(chain, { clientId: this.options.clientId, secretKey: this.options.secretKey })); classPrivateFieldSet._classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, classPrivateFieldSet._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; } exports.SignerConnector = SignerConnector;