deflater.js 1021 B

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