@web3auth/no-modal
Version:
Multi chain wallet aggregator for web3Auth
98 lines (94 loc) • 3.94 kB
JavaScript
;
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;