| 12345678910111213141516171819202122232425262728293031323334 | const version = +(process.versions ? process.versions.node : "").split(".")[0] || 0;module.exports = function (/*Buffer*/ inbuf, /*number*/ expectedLength) {    var zlib = require("zlib");    const option = version >= 15 && expectedLength > 0 ? { maxOutputLength: expectedLength } : {};    return {        inflate: function () {            return zlib.inflateRawSync(inbuf, option);        },        inflateAsync: function (/*Function*/ callback) {            var tmp = zlib.createInflateRaw(option),                parts = [],                total = 0;            tmp.on("data", function (data) {                parts.push(data);                total += data.length;            });            tmp.on("end", function () {                var buf = Buffer.alloc(total),                    written = 0;                buf.fill(0);                for (var i = 0; i < parts.length; i++) {                    var part = parts[i];                    part.copy(buf, written);                    written += part.length;                }                callback && callback(buf);            });            tmp.end(inbuf);        }    };};
 |