@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
JavaScript
'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;