UNPKG

@samouraiwallet/electrum-client

Version:
67 lines 1.87 kB
export const makeRequest = (method, params, id) => { return JSON.stringify({ jsonrpc: "2.0", method: method, params: params, id: id, }); }; export const createRecursiveParser = (max_depth, delimiter) => { const MAX_DEPTH = max_depth; const DELIMITER = delimiter; const recursiveParser = (n, buffer, callback) => { if (buffer.length === 0) { return { code: 0, buffer: buffer }; } if (n > MAX_DEPTH) { return { code: 1, buffer: buffer }; } const xs = buffer.split(DELIMITER); if (xs.length === 1) { return { code: 0, buffer: buffer }; } callback(xs.shift(), n); return recursiveParser(n + 1, xs.join(DELIMITER), callback); }; return recursiveParser; }; export const createPromiseResult = (resolve, reject) => { return (err, result) => { if (err) reject(err); else resolve(result); }; }; export const createPromiseResultBatch = (resolve, reject, argz) => { return (err, result) => { if (result?.[0]?.id) { // this is a batch request response for (const r of result) { r.param = argz[r.id]; } } if (err) reject(err); else resolve(result); }; }; export class MessageParser { constructor(callback) { this.buffer = ""; this.callback = callback; this.recursiveParser = createRecursiveParser(20, "\n"); } run(chunk) { this.buffer += chunk; while (true) { const res = this.recursiveParser(0, this.buffer, this.callback); this.buffer = res.buffer; if (res.code === 0) { break; } } } } //# sourceMappingURL=util.js.map