UNPKG

@web3auth/no-modal

Version:
98 lines (94 loc) 3.94 kB
'use strict'; var auth = require('@web3auth/auth'); var wsEmbed = require('@web3auth/ws-embed'); function createGetAccountsMiddleware({ getAccounts }) { return auth.createAsyncMiddleware(async (request, response, next) => { const { method } = request; if (method !== wsEmbed.SOLANA_METHOD_TYPES.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 createGetPublicKeyMiddleware({ getPublicKey }) { return auth.createAsyncMiddleware(async (request, response, next) => { const { method } = request; if (method !== "getPublicKey") return next(); if (!getPublicKey) throw new Error("WalletMiddleware - opts.getPublicKey not provided"); const publicKey = await getPublicKey(request); response.result = publicKey; return undefined; }); } function createRequestAccountsMiddleware({ requestAccounts }) { return auth.createAsyncMiddleware(async (request, response, next) => { const { method } = request; if (method !== wsEmbed.SOLANA_METHOD_TYPES.SOLANA_REQUEST_ACCOUNTS) return next(); if (!requestAccounts) throw new Error("WalletMiddleware - opts.requestAccounts not provided"); // This calls the UI login function const accounts = await requestAccounts(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 createSolanaMiddleware(providerHandlers) { const { getAccounts, requestAccounts, signTransaction, signAndSendTransaction, signAllTransactions, signMessage, getPrivateKey, getSecretKey, getPublicKey } = providerHandlers; return auth.mergeMiddleware([createRequestAccountsMiddleware({ requestAccounts }), createGetAccountsMiddleware({ getAccounts }), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.SIGN_TRANSACTION, signTransaction), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.SEND_TRANSACTION, signAndSendTransaction), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.SIGN_ALL_TRANSACTIONS, signAllTransactions), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.SIGN_MESSAGE, signMessage), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.SOLANA_PRIVATE_KEY, getPrivateKey), createGenericJRPCMiddleware(wsEmbed.SOLANA_METHOD_TYPES.PRIVATE_KEY, getPrivateKey), createGenericJRPCMiddleware("public_key", getPublicKey), createGenericJRPCMiddleware("solanaPublicKey", getPublicKey), createGenericJRPCMiddleware("solanaSecretKey", getSecretKey)]); } function createSolanaChainSwitchMiddleware({ switchSolanaChain }) { return auth.mergeMiddleware([createGenericJRPCMiddleware("switchSolanaChain", switchSolanaChain)]); } function createSolanaAccountMiddleware({ updatePrivatekey }) { return auth.mergeMiddleware([createGenericJRPCMiddleware("updateAccount", updatePrivatekey)]); } exports.createGenericJRPCMiddleware = createGenericJRPCMiddleware; exports.createGetAccountsMiddleware = createGetAccountsMiddleware; exports.createGetPublicKeyMiddleware = createGetPublicKeyMiddleware; exports.createRequestAccountsMiddleware = createRequestAccountsMiddleware; exports.createSolanaAccountMiddleware = createSolanaAccountMiddleware; exports.createSolanaChainSwitchMiddleware = createSolanaChainSwitchMiddleware; exports.createSolanaMiddleware = createSolanaMiddleware;