UNPKG

@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
"use strict"; 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; }