UNPKG

oceanic.js

Version:

A NodeJS library for interfacing with Discord.

44 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const base_1 = tslib_1.__importDefault(require("./base")); const Errors_1 = require("../../util/Errors"); const pako_1 = require("pako"); class PakoCompression extends base_1.default { _sharedZLib; constructor(shard) { super(shard); this._sharedZLib = new pako_1.Inflate({ chunkSize: 128 * 1024 }); } async decompress(data) { if (data.length >= 4 && data.readUInt32BE(data.length - 4) === 0xFFFF) { // store the current pointer for slicing buffers after pushing. const currentPointer = this._sharedZLib.strm?.next_out; this._sharedZLib.push(data, pako_1.constants.Z_SYNC_FLUSH); if (this._sharedZLib.err) { this.shard.client.emit("error", new Errors_1.GatewayError(`zlib error ${this._sharedZLib.err}: ${this._sharedZLib.msg ?? ""}`, 0)); return null; } if (this._sharedZLib.chunks.length === 0) { // The current buffer hasn't been flushed data = Buffer.from(this._sharedZLib.strm.output.slice(currentPointer)); } else { // Buffers have been flushed one or more times data = Buffer.concat([ this._sharedZLib.chunks[0].slice(currentPointer), ...this._sharedZLib.chunks.slice(1), this._sharedZLib.strm.output ]); this._sharedZLib.chunks = []; } return data; } else { this._sharedZLib.push(data, false); return null; } } } exports.default = PakoCompression; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFrby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nYXRld2F5L2NvbXByZXNzaW9uL3Bha28udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQWlDO0FBRWpDLDhDQUFpRDtBQUNqRCwrQkFBMEM7QUFVMUMsTUFBcUIsZUFBZ0IsU0FBUSxjQUFXO0lBQ3BELFdBQVcsQ0FBc0I7SUFDakMsWUFBWSxLQUFZO1FBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxjQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxDQUF3QixDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDcEUsK0RBQStEO1lBQy9ELE1BQU0sY0FBYyxHQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7WUFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUkscUJBQVksQ0FBQyxjQUFjLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFILE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMseUNBQXlDO2dCQUN6QyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLDhDQUE4QztnQkFDOUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7b0JBQ2hELEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTTtpQkFDL0IsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXBDRCxrQ0FvQ0MifQ==