UNPKG

@web3auth/no-modal

Version:
80 lines (76 loc) 2.5 kB
'use strict'; var baseControllers = require('@toruslabs/base-controllers'); var auth = require('@web3auth/auth'); const RPC_METHODS = { GET_ACCOUNTS: "xrpl_getAccounts", GET_KEY_PAIR: "xrpl_getKeyPair", GET_PUBLIC_KEY: "xrpl_getPublicKey", SIGN_MESSAGE: "xrpl_signMessage", SIGN_TRANSACTION: "xrpl_signTransaction", SUBMIT_TRANSACTION: "xrpl_submitTransaction", SWITCH_CHAIN: "xrpl_switchChain", CHAIN_ID: "xrpl_chainId", PROVIDER_CHAIN_CONFIG: "xrpl_providerChainConfig" }; /** Normalizes request.id for XRPL servers that don't support large IDs from fetch middleware. */ function createRequestIdNormalizerMiddleware() { return ({ request, next }) => { request.id = baseControllers.randomId(); return next(request); }; } function createXRPLMiddleware(providerHandlers) { const { getAccounts, submitTransaction, signTransaction, signMessage, getKeyPair, getPublicKey } = providerHandlers; const scaffold = auth.createScaffoldMiddlewareV2({ [RPC_METHODS.GET_ACCOUNTS]: params => { if (!getAccounts) throw new Error("WalletMiddleware - opts.getAccounts not provided"); return getAccounts(params.request); }, [RPC_METHODS.SIGN_TRANSACTION]: params => { return signTransaction(params.request); }, [RPC_METHODS.SUBMIT_TRANSACTION]: params => { return submitTransaction(params.request); }, [RPC_METHODS.SIGN_MESSAGE]: params => { return signMessage(params.request); }, [RPC_METHODS.GET_KEY_PAIR]: params => { return getKeyPair(params.request); }, [RPC_METHODS.GET_PUBLIC_KEY]: params => { return getPublicKey(params.request); } }); const engine = auth.JRPCEngineV2.create({ middleware: [createRequestIdNormalizerMiddleware(), scaffold] }); return engine.asMiddleware(); } function creatXrplChainSwitchMiddleware(switchChain) { async function switchChainHandler(params) { const req = params.request; if (!req.params) throw auth.rpcErrors.invalidParams("Missing request params"); if (!req.params.chainId) throw auth.rpcErrors.invalidParams("Missing chainId"); await switchChain({ chainId: req.params.chainId }); return undefined; } return auth.createScaffoldMiddlewareV2({ [RPC_METHODS.SWITCH_CHAIN]: switchChainHandler }); } exports.RPC_METHODS = RPC_METHODS; exports.creatXrplChainSwitchMiddleware = creatXrplChainSwitchMiddleware; exports.createXRPLMiddleware = createXRPLMiddleware;