UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

47 lines (46 loc) 2.02 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_errors_connectors = require("../errors/connectors.js"); const require_actions_getAddress = require("./getAddress.js"); let _bigmi_core = require("@bigmi/core"); //#region src/actions/getConnectorClient.ts async function getConnectorClient(config, parameters = {}) { let connection; if (parameters.connector) { const { connector } = parameters; const [accounts, chainId] = await Promise.all([connector.getAccounts(), connector.getChainId()]); connection = { accounts, chainId, connector }; } else connection = config.state.connections.get(config.state.current); if (!connection) throw new require_errors_connectors.ConnectorNotConnectedError(); const chainId = parameters.chainId ?? connection.chainId; const connectorChainId = await connection.connector.getChainId(); if (connectorChainId !== connection.chainId) throw new require_errors_connectors.ConnectorChainMismatchError({ connectionChainId: connection.chainId, connectorChainId }); const connector = connection.connector; if (connector.getClient) return connector.getClient({ chainId }); const account = (0, _bigmi_core.parseAccount)(parameters.account ?? connection.accounts[0]); account.address = require_actions_getAddress.getAddress(account.address); const chain = config.chains.find((chain) => chain.id === chainId); const provider = await connection.connector.getProvider({ chainId }); if (parameters.account && !connection.accounts.some((x) => x.address.toLowerCase() === account.address.toLowerCase())) throw new require_errors_connectors.ConnectorAccountNotFoundError({ address: account.address, connector: connector.name }); return (0, _bigmi_core.createClient)({ account, chain, name: "Connector Client", transport: (opts) => (0, _bigmi_core.custom)(provider)({ ...opts, retryCount: 0 }) }); } //#endregion exports.getConnectorClient = getConnectorClient; //# sourceMappingURL=getConnectorClient.js.map