UNPKG

@web3auth/no-modal

Version:
71 lines (67 loc) 2.67 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" }; function createGetAccountsMiddleware({ getAccounts }) { return auth.createAsyncMiddleware(async (request, response, next) => { const { method } = request; // hack to override big ids from fetch middleware which are not supported in xrpl servers // TODO: fix this for xrpl controllers. request.id = baseControllers.randomId(); if (method !== RPC_METHODS.GET_ACCOUNTS) return next(); if (!getAccounts) throw new Error("WalletMiddleware - opts.getAccounts not provided"); // This calls from the prefs controller const accounts = await getAccounts(request); response.result = accounts; return undefined; }); } function createGenericJRPCMiddleware(targetMethod, handler) { return auth.createAsyncMiddleware(async (request, response, next) => { const { method } = request; if (method !== targetMethod) return next(); if (!handler) throw new Error(`WalletMiddleware - ${targetMethod} not provided`); const result = await handler(request); response.result = result; return undefined; }); } function createXRPLMiddleware(providerHandlers) { const { getAccounts, submitTransaction, signTransaction, signMessage, getKeyPair, getPublicKey } = providerHandlers; return auth.mergeMiddleware([createGetAccountsMiddleware({ getAccounts }), createGenericJRPCMiddleware(RPC_METHODS.SIGN_TRANSACTION, signTransaction), createGenericJRPCMiddleware(RPC_METHODS.SUBMIT_TRANSACTION, submitTransaction), createGenericJRPCMiddleware(RPC_METHODS.SIGN_MESSAGE, signMessage), createGenericJRPCMiddleware(RPC_METHODS.GET_KEY_PAIR, getKeyPair), createGenericJRPCMiddleware(RPC_METHODS.GET_PUBLIC_KEY, getPublicKey)]); } function creatXrplChainSwitchMiddleware({ switchChain }) { return auth.mergeMiddleware([createGenericJRPCMiddleware(RPC_METHODS.SWITCH_CHAIN, switchChain)]); } exports.RPC_METHODS = RPC_METHODS; exports.creatXrplChainSwitchMiddleware = creatXrplChainSwitchMiddleware; exports.createGenericJRPCMiddleware = createGenericJRPCMiddleware; exports.createGetAccountsMiddleware = createGetAccountsMiddleware; exports.createXRPLMiddleware = createXRPLMiddleware;