UNPKG

@neurosity/sdk

Version:
23 lines (22 loc) 1.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stitchChunks = void 0; const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); function stitchChunks({ delimiter }) { return (0, rxjs_1.pipe)((0, operators_1.scan)(([remainder], currentBuffer) => { const nextBuffer = remainder + currentBuffer; if (!nextBuffer.includes(delimiter)) { return [nextBuffer, ""]; } if (nextBuffer.endsWith(delimiter)) { return ["", nextBuffer]; } const remainderStart = nextBuffer.lastIndexOf(delimiter); const remainderIndex = remainderStart + delimiter.length; const nextPacket = nextBuffer.slice(0, remainderIndex); const nextRemainder = nextBuffer.slice(remainderIndex); return [nextRemainder, nextPacket]; }, ["", ""]), (0, operators_1.map)(([, nextPacket]) => nextPacket.slice(0, -delimiter.length)), (0, operators_1.filter)((nextPacket) => !!nextPacket.length)); } exports.stitchChunks = stitchChunks;