@samepage/internal
Version:
Utilities used across modules - not meant for use by users directly
24 lines • 885 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const uuid_1 = require("uuid");
const MESSAGE_LIMIT = 15750; // 16KB minus 250b buffer for metadata
const sendChunkedMessage = ({ data, sender, }) => {
const fullMessage = JSON.stringify(data);
const uuid = (0, uuid_1.v4)();
const size = typeof Blob !== "undefined"
? new Blob([fullMessage]).size
: Buffer.from(fullMessage).length;
const total = Math.ceil(size / MESSAGE_LIMIT);
const chunkSize = Math.ceil(fullMessage.length / total);
for (let chunk = 0; chunk < total; chunk++) {
const message = fullMessage.slice(chunkSize * chunk, chunkSize * (chunk + 1));
sender({
message,
uuid,
chunk,
total,
});
}
};
exports.default = sendChunkedMessage;
//# sourceMappingURL=sendChunkedMessage.js.map