@alchemy/aa-core
Version:
viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts
43 lines • 2.02 kB
JavaScript
import { AccountNotFoundError } from "../../../errors/account.js";
import { noopMiddleware } from "../../../middleware/noopMiddleware.js";
import { bypassPaymasterAndData, resolveProperties, } from "../../../utils/index.js";
const asyncPipe = (...fns) => async (s, opts) => {
let result = s;
for (const fn of fns) {
result = await fn(result, opts);
}
return result;
};
export async function _runMiddlewareStack(client, args) {
const { uo, overrides, account = client.account, context } = args;
if (!account) {
throw new AccountNotFoundError();
}
const { dummyPaymasterAndData, paymasterAndData, } = bypassPaymasterAndData(overrides)
? {
dummyPaymasterAndData: async (uo, { overrides }) => {
return {
...uo,
...("paymasterAndData" in overrides
? { paymasterAndData: overrides.paymasterAndData }
: "paymasterData" in overrides &&
"paymaster" in overrides &&
overrides.paymasterData !== "0x"
? {
paymasterData: overrides.paymasterData,
paymaster: overrides.paymaster,
}
:
undefined),
};
},
paymasterAndData: noopMiddleware,
}
: {
dummyPaymasterAndData: client.middleware.dummyPaymasterAndData,
paymasterAndData: client.middleware.paymasterAndData,
};
const result = await asyncPipe(dummyPaymasterAndData, client.middleware.feeEstimator, client.middleware.gasEstimator, client.middleware.customMiddleware, paymasterAndData, client.middleware.userOperationSimulator)(uo, { overrides, feeOptions: client.feeOptions, account, client, context });
return resolveProperties(result);
}
//# sourceMappingURL=runMiddlewareStack.js.map