@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.
97 lines (96 loc) • 7.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseTransferNotificationResponse = exports.parseTransferResponse = exports.parsePongResponse = exports.parsePingResponse = exports.parseChannelUpdateResponse = exports.parseChannelsUpdateResponse = exports.parseBalanceUpdateResponse = exports.parseMessageResponse = exports.parseAssetsResponse = exports.parseGetAssetsResponse = exports.parseGetRPCHistoryResponse = exports.parseGetChannelsResponse = exports.parseCloseChannelResponse = exports.parseResizeChannelResponse = exports.parseCreateChannelResponse = exports.parseGetAppSessionsResponse = exports.parseGetAppDefinitionResponse = exports.parseCloseAppSessionResponse = exports.parseSubmitAppStateResponse = exports.parseCreateAppSessionResponse = exports.parseGetUserTagResponse = exports.parseGetLedgerTransactionsResponse = exports.parseGetLedgerEntriesResponse = exports.parseGetLedgerBalancesResponse = exports.parseGetConfigResponse = exports.parseErrorResponse = exports.parseAuthRequestResponse = exports.parseAuthVerifyResponse = exports.parseAuthChallengeResponse = exports.parseAnyRPCResponse = void 0;
const types_1 = require("../types");
const index_1 = require("./index");
const parseAnyRPCResponse = (response) => {
try {
const parsed = JSON.parse(response);
if (!Array.isArray(parsed.res) || parsed.res.length !== 4) {
throw new Error('Invalid RPC response format');
}
const method = parsed.res[1];
const parse = index_1.paramsParsers[method];
if (!parse) {
throw new Error(`No parser found for method ${method}`);
}
const params = parse(parsed.res[2]);
const responseObj = {
method,
requestId: parsed.res[0],
timestamp: parsed.res[3],
signatures: parsed.sig || [],
params,
};
return responseObj;
}
catch (e) {
throw new Error(`Failed to parse RPC response: ${e instanceof Error ? e.message : e}`);
}
};
exports.parseAnyRPCResponse = parseAnyRPCResponse;
const _parseSpecificRPCResponse = (response, expectedMethod) => {
const result = (0, exports.parseAnyRPCResponse)(response);
if (result.method !== expectedMethod) {
throw new Error(`Expected RPC method to be '${expectedMethod}', but received '${result.method}'`);
}
return result;
};
const parseAuthChallengeResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.AuthChallenge);
exports.parseAuthChallengeResponse = parseAuthChallengeResponse;
const parseAuthVerifyResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.AuthVerify);
exports.parseAuthVerifyResponse = parseAuthVerifyResponse;
const parseAuthRequestResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.AuthRequest);
exports.parseAuthRequestResponse = parseAuthRequestResponse;
const parseErrorResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Error);
exports.parseErrorResponse = parseErrorResponse;
const parseGetConfigResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetConfig);
exports.parseGetConfigResponse = parseGetConfigResponse;
const parseGetLedgerBalancesResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetLedgerBalances);
exports.parseGetLedgerBalancesResponse = parseGetLedgerBalancesResponse;
const parseGetLedgerEntriesResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetLedgerEntries);
exports.parseGetLedgerEntriesResponse = parseGetLedgerEntriesResponse;
const parseGetLedgerTransactionsResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetLedgerTransactions);
exports.parseGetLedgerTransactionsResponse = parseGetLedgerTransactionsResponse;
const parseGetUserTagResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetUserTag);
exports.parseGetUserTagResponse = parseGetUserTagResponse;
const parseCreateAppSessionResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.CreateAppSession);
exports.parseCreateAppSessionResponse = parseCreateAppSessionResponse;
const parseSubmitAppStateResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.SubmitAppState);
exports.parseSubmitAppStateResponse = parseSubmitAppStateResponse;
const parseCloseAppSessionResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.CloseAppSession);
exports.parseCloseAppSessionResponse = parseCloseAppSessionResponse;
const parseGetAppDefinitionResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetAppDefinition);
exports.parseGetAppDefinitionResponse = parseGetAppDefinitionResponse;
const parseGetAppSessionsResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetAppSessions);
exports.parseGetAppSessionsResponse = parseGetAppSessionsResponse;
const parseCreateChannelResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.CreateChannel);
exports.parseCreateChannelResponse = parseCreateChannelResponse;
const parseResizeChannelResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.ResizeChannel);
exports.parseResizeChannelResponse = parseResizeChannelResponse;
const parseCloseChannelResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.CloseChannel);
exports.parseCloseChannelResponse = parseCloseChannelResponse;
const parseGetChannelsResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetChannels);
exports.parseGetChannelsResponse = parseGetChannelsResponse;
const parseGetRPCHistoryResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetRPCHistory);
exports.parseGetRPCHistoryResponse = parseGetRPCHistoryResponse;
const parseGetAssetsResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.GetAssets);
exports.parseGetAssetsResponse = parseGetAssetsResponse;
const parseAssetsResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Assets);
exports.parseAssetsResponse = parseAssetsResponse;
const parseMessageResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Message);
exports.parseMessageResponse = parseMessageResponse;
const parseBalanceUpdateResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.BalanceUpdate);
exports.parseBalanceUpdateResponse = parseBalanceUpdateResponse;
const parseChannelsUpdateResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.ChannelsUpdate);
exports.parseChannelsUpdateResponse = parseChannelsUpdateResponse;
const parseChannelUpdateResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.ChannelUpdate);
exports.parseChannelUpdateResponse = parseChannelUpdateResponse;
const parsePingResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Ping);
exports.parsePingResponse = parsePingResponse;
const parsePongResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Pong);
exports.parsePongResponse = parsePongResponse;
const parseTransferResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.Transfer);
exports.parseTransferResponse = parseTransferResponse;
const parseTransferNotificationResponse = (raw) => _parseSpecificRPCResponse(raw, types_1.RPCMethod.TransferNotification);
exports.parseTransferNotificationResponse = parseTransferNotificationResponse;