| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | "use strict";//binary data writer tuned for encoding binary specific to the postgres binary protocolObject.defineProperty(exports, "__esModule", { value: true });exports.Writer = void 0;class Writer {    constructor(size = 256) {        this.size = size;        this.offset = 5;        this.headerPosition = 0;        this.buffer = Buffer.allocUnsafe(size);    }    ensure(size) {        var remaining = this.buffer.length - this.offset;        if (remaining < size) {            var oldBuffer = this.buffer;            // exponential growth factor of around ~ 1.5            // https://stackoverflow.com/questions/2269063/buffer-growth-strategy            var newSize = oldBuffer.length + (oldBuffer.length >> 1) + size;            this.buffer = Buffer.allocUnsafe(newSize);            oldBuffer.copy(this.buffer);        }    }    addInt32(num) {        this.ensure(4);        this.buffer[this.offset++] = (num >>> 24) & 0xff;        this.buffer[this.offset++] = (num >>> 16) & 0xff;        this.buffer[this.offset++] = (num >>> 8) & 0xff;        this.buffer[this.offset++] = (num >>> 0) & 0xff;        return this;    }    addInt16(num) {        this.ensure(2);        this.buffer[this.offset++] = (num >>> 8) & 0xff;        this.buffer[this.offset++] = (num >>> 0) & 0xff;        return this;    }    addCString(string) {        if (!string) {            this.ensure(1);        }        else {            var len = Buffer.byteLength(string);            this.ensure(len + 1); // +1 for null terminator            this.buffer.write(string, this.offset, 'utf-8');            this.offset += len;        }        this.buffer[this.offset++] = 0; // null terminator        return this;    }    addString(string = '') {        var len = Buffer.byteLength(string);        this.ensure(len);        this.buffer.write(string, this.offset);        this.offset += len;        return this;    }    add(otherBuffer) {        this.ensure(otherBuffer.length);        otherBuffer.copy(this.buffer, this.offset);        this.offset += otherBuffer.length;        return this;    }    join(code) {        if (code) {            this.buffer[this.headerPosition] = code;            //length is everything in this packet minus the code            const length = this.offset - (this.headerPosition + 1);            this.buffer.writeInt32BE(length, this.headerPosition + 1);        }        return this.buffer.slice(code ? 0 : 5, this.offset);    }    flush(code) {        var result = this.join(code);        this.offset = 5;        this.headerPosition = 0;        this.buffer = Buffer.allocUnsafe(this.size);        return result;    }}exports.Writer = Writer;//# sourceMappingURL=buffer-writer.js.map
 |