technopark-scraper/node_modules/@streamparser/json/dist/cjs/utils/bufferedString.js

64 lines
1.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BufferedString = exports.NonBufferedString = void 0;
class NonBufferedString {
constructor() {
this.decoder = new TextDecoder("utf-8");
this.string = "";
this.byteLength = 0;
}
appendChar(char) {
this.string += String.fromCharCode(char);
this.byteLength += 1;
}
appendBuf(buf, start = 0, end = buf.length) {
this.string += this.decoder.decode(buf.subarray(start, end));
this.byteLength += end - start;
}
reset() {
this.string = "";
this.byteLength = 0;
}
toString() {
return this.string;
}
}
exports.NonBufferedString = NonBufferedString;
class BufferedString {
constructor(bufferSize) {
this.decoder = new TextDecoder("utf-8");
this.bufferOffset = 0;
this.string = "";
this.byteLength = 0;
this.buffer = new Uint8Array(bufferSize);
}
appendChar(char) {
if (this.bufferOffset >= this.buffer.length)
this.flushStringBuffer();
this.buffer[this.bufferOffset++] = char;
this.byteLength += 1;
}
appendBuf(buf, start = 0, end = buf.length) {
const size = end - start;
if (this.bufferOffset + size > this.buffer.length)
this.flushStringBuffer();
this.buffer.set(buf.subarray(start, end), this.bufferOffset);
this.bufferOffset += size;
this.byteLength += size;
}
flushStringBuffer() {
this.string += this.decoder.decode(this.buffer.subarray(0, this.bufferOffset));
this.bufferOffset = 0;
}
reset() {
this.string = "";
this.bufferOffset = 0;
this.byteLength = 0;
}
toString() {
this.flushStringBuffer();
return this.string;
}
}
exports.BufferedString = BufferedString;