@web3auth/no-modal
Version:
Multi chain wallet aggregator for web3Auth
73 lines (70 loc) • 1.87 kB
JavaScript
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import { providerErrors, JRPCEngine, providerFromEngine } from '@web3auth/auth';
import { BaseProvider } from './baseProvider.js';
import { createJsonRpcClient } from './jrpcClient.js';
var _CommonJRPCProvider;
class CommonJRPCProvider extends BaseProvider {
constructor({
config,
state
}) {
super({
config,
state
});
}
async setupProvider(chainId) {
const chain = this.getChain(chainId);
if (!chain) throw providerErrors.custom({
message: "Chain not found",
code: 4902
});
const {
networkMiddleware
} = createJsonRpcClient(chain);
const engine = new JRPCEngine();
engine.push(networkMiddleware);
const provider = providerFromEngine(engine);
this.updateProviderEngineProxy(provider);
this.emit("chainChanged", chainId);
this.emit("connect", {
chainId
});
this.update({
chainId
});
}
async switchChain(params) {
if (!this._providerEngineProxy) throw providerErrors.custom({
message: "Provider is not initialized",
code: 4902
});
const newChainId = params.chainId;
if (this.chainId === newChainId) return;
this.update({
chainId: "loading"
});
await this.setupProvider(newChainId);
}
getProviderEngineProxy() {
return this._providerEngineProxy;
}
lookupNetwork() {
throw new Error("Method not implemented.");
}
}
_CommonJRPCProvider = CommonJRPCProvider;
_defineProperty(CommonJRPCProvider, "getProviderInstance", async params => {
const providerFactory = new _CommonJRPCProvider({
config: {
chain: params.chain,
chains: params.chains
}
});
const {
chainId
} = params.chain;
await providerFactory.setupProvider(chainId);
return providerFactory;
});
export { CommonJRPCProvider };