@neurosity/sdk
Version:
Neurosity SDK
23 lines (22 loc) • 1.06 kB
JavaScript
;
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;