inflater.js 936 B

12345678910111213141516171819202122232425262728293031
  1. module.exports = function (/*Buffer*/ inbuf) {
  2. var zlib = require("zlib");
  3. return {
  4. inflate: function () {
  5. return zlib.inflateRawSync(inbuf);
  6. },
  7. inflateAsync: function (/*Function*/ callback) {
  8. var tmp = zlib.createInflateRaw(),
  9. parts = [],
  10. total = 0;
  11. tmp.on("data", function (data) {
  12. parts.push(data);
  13. total += data.length;
  14. });
  15. tmp.on("end", function () {
  16. var buf = Buffer.alloc(total),
  17. written = 0;
  18. buf.fill(0);
  19. for (var i = 0; i < parts.length; i++) {
  20. var part = parts[i];
  21. part.copy(buf, written);
  22. written += part.length;
  23. }
  24. callback && callback(buf);
  25. });
  26. tmp.end(inbuf);
  27. }
  28. };
  29. };