orionsoft-react-scripts
Version:
Orionsoft Configuration and scripts for Create React App.
51 lines (42 loc) • 951 B
JavaScript
var duplexer = require('duplexer');
var stream = require('stream');
var zlib = require('zlib');
var opts = {level: 9};
module.exports = function (str, cb) {
if (!str) {
cb(null, 0);
return;
}
zlib.gzip(str, opts, function (err, data) {
if (err) {
cb(err, 0);
return;
}
cb(err, data.length);
});
};
module.exports.sync = function (str) {
return zlib.gzipSync(str, opts).length;
};
module.exports.stream = function () {
var input = new stream.PassThrough();
var output = new stream.PassThrough();
var wrapper = duplexer(input, output);
var gzipSize = 0;
var gzip = zlib.createGzip(opts)
.on('data', function (buf) {
gzipSize += buf.length;
})
.on('error', function () {
wrapper.gzipSize = 0;
})
.on('end', function () {
wrapper.gzipSize = gzipSize;
wrapper.emit('gzip-size', gzipSize);
output.end();
});
input.pipe(gzip);
input.pipe(output, {end: false});
return wrapper;
};
;