UNPKG

@node-lightning/wire

Version:
33 lines 1.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readTlvs = void 0; const bufio_1 = require("@node-lightning/bufio"); /** * Reads TLVs from a reader until the entire stream is processed. The handler is * responsible for doing something with the data bytes. * @param reader * @param handler */ function readTlvs(reader, handler) { let lastType; while (!reader.eof) { const type = reader.readBigSize(); const len = reader.readBigSize(); const value = reader.readBytes(Number(len)); const valueReader = new bufio_1.BufferReader(value); if (type <= lastType) { throw new Error("Invalid TLV stream"); } const isEven = type % BigInt(2) === BigInt(0); const wasHandled = handler(type, valueReader); if (!wasHandled && isEven) { throw new Error("Unknown even type"); } if (wasHandled && !valueReader.eof) { throw new Error("Non-canonical length"); } lastType = type; } } exports.readTlvs = readTlvs; //# sourceMappingURL=readTlvs.js.map