@keypo/typescript-sdk
Version:
A TypeScript SDK for using Keypo
64 lines (63 loc) • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.proxyExecute = proxyExecute;
const authenticateLitSession_1 = require("./utils/authenticateLitSession");
const ethersAdapter_1 = require("./utils/ethersAdapter");
async function proxyExecute(dataIdentifier, wallet, request, config, debug) {
if (debug) {
console.log("dataIdentifier", dataIdentifier);
console.log("wallet", wallet);
console.log("request", request);
console.log("config", config);
}
try {
// Convert viem client to ethers signer
const signer = (0, ethersAdapter_1.clientToSigner)(wallet);
// authenticate lit session
const { sessionSigs, authSig, litNodeClient, dataMetadata } = await (0, authenticateLitSession_1.authenticateLitSession)(signer, config.chain, config.expiration, config.permissionsRegistryContractAddress, dataIdentifier, config.apiUrl, debug);
if (debug) {
console.log("sessionSigs", sessionSigs);
console.log("authSig", authSig);
console.log("litNodeClient", litNodeClient);
console.log("dataMetadata", dataMetadata);
console.log("request", request);
}
// prepare the request, which should include sessionSigs, authsig, evmConditions, dataMetadata, and the request body
const preparedRequest = {
sessionSigs,
authSig,
dataMetadata: JSON.stringify(dataMetadata),
request: JSON.stringify(request),
};
// make the request to the proxy
if (debug) {
console.log("Making request to proxy at:", `${config.apiUrl}/proxy`);
console.log("Request body:", JSON.stringify(preparedRequest, null, 2));
}
const response = await fetch(`${config.apiUrl}/proxy`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(preparedRequest),
});
if (debug) {
console.log("Proxy response status:", response.status);
console.log("Proxy response headers:", response.headers);
}
if (!response.ok) {
const errorText = await response.text();
console.error("Proxy API error:", response.status, errorText);
throw new Error(`Proxy API error: ${response.status} - ${errorText}`);
}
const data = await response.json();
if (debug) {
console.log("Proxy API response data:", data);
}
return data.Response;
}
catch (error) {
console.error("Error in proxyExecute:", error);
throw error;
}
}