@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
47 lines (46 loc) • 2.02 kB
JavaScript
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