@erc7824/nitrolite
Version:
The Nitrolite SDK empowers developers to build high-performance, scalable web3 applications using state channels. It's designed to provide near-instant transactions and significantly improved user experiences by minimizing direct blockchain interactions.
84 lines (83 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCurrentTimestamp = getCurrentTimestamp;
exports.generateRequestId = generateRequestId;
exports.getRequestId = getRequestId;
exports.getMethod = getMethod;
exports.getParams = getParams;
exports.getResult = getResult;
exports.getTimestamp = getTimestamp;
exports.getError = getError;
exports.toBytes = toBytes;
exports.isValidResponseTimestamp = isValidResponseTimestamp;
exports.isValidResponseRequestId = isValidResponseRequestId;
const viem_1 = require("viem");
function getCurrentTimestamp() {
return Date.now();
}
function generateRequestId() {
return Math.floor(Date.now() + Math.random() * 10000);
}
function getRequestId(message) {
if (message.req)
return message.req[0];
if (message.res)
return message.res[0];
if (message.err)
return message.err[0];
return undefined;
}
function getMethod(message) {
if (message.req)
return message.req[1];
if (message.res)
return message.res[1];
return undefined;
}
function getParams(message) {
if (message.req)
return message.req[2] || [];
return [];
}
function getResult(message) {
if (message.res)
return message.res[2] || [];
return [];
}
function getTimestamp(message) {
if (message.req)
return message.req[3];
if (message.res)
return message.res[3];
if (message.err)
return message.err[3];
return undefined;
}
function getError(message) {
if (message.err) {
return {
code: message.err[1],
message: message.err[2],
};
}
return undefined;
}
function toBytes(values) {
return values.map((v) => (typeof v === 'string' ? (0, viem_1.stringToHex)(v) : (0, viem_1.stringToHex)(JSON.stringify(v))));
}
function isValidResponseTimestamp(request, response) {
const requestTimestamp = getTimestamp(request);
const responseTimestamp = getTimestamp(response);
if (requestTimestamp === undefined || responseTimestamp === undefined) {
return false;
}
return responseTimestamp > requestTimestamp;
}
function isValidResponseRequestId(request, response) {
const requestId = getRequestId(request);
const responseId = getRequestId(response);
if (requestId === undefined || responseId === undefined) {
return false;
}
return responseId === requestId;
}