Files
FrenoCorp/node_modules/peerjs-js-binarypack/lib/bufferbuilder.ts
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

54 lines
1.0 KiB
TypeScript

class BufferBuilder {
private _pieces: number[];
private readonly _parts: ArrayBufferView[];
constructor() {
this._pieces = [];
this._parts = [];
}
append_buffer(data: ArrayBufferView) {
this.flush();
this._parts.push(data);
}
append(data: number) {
this._pieces.push(data);
}
flush() {
if (this._pieces.length > 0) {
const buf = new Uint8Array(this._pieces);
this._parts.push(buf);
this._pieces = [];
}
}
private encoder = new TextEncoder();
public toArrayBuffer() {
const buffer = [];
for (const part of this._parts) {
buffer.push(part);
}
return concatArrayBuffers(buffer).buffer;
}
}
export { BufferBuilder };
function concatArrayBuffers(bufs: ArrayBufferView[]) {
let size = 0;
for (const buf of bufs) {
size += buf.byteLength;
}
const result = new Uint8Array(size);
let offset = 0;
for (const buf of bufs) {
const view = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
result.set(view, offset);
offset += buf.byteLength;
}
return result;
}