jsonfile-compressed-brotli
Version:
similar to jsonfile-compressed, but uses brotli compression instead of LZMA (7-zip)
36 lines (28 loc) • 1.28 kB
JavaScript
var jsh = require('json-shrink');
var fs = require('fs');
var path = require('path');
var write_format = 'binary';
var read_format = 'base64';
var doUseBrotli = true;
function getFileName(inputFileName, doUnPack){
var parsed = path.parse(inputFileName);
var fileNameClean = parsed.dir ? parsed.dir + "/" + parsed.name : parsed.name;
return doUnPack ? `${fileNameClean}.jsonpack.br` : `${fileNameClean}.json.br`;
}
module.exports.readFile = function(fileName, doUnPack = false, callback){
fs.readFile(getFileName(fileName, doUnPack),read_format , (err, data) => {
var obj = jsh.unshrink(data, doUnPack, doUseBrotli);
callback(err,obj);
});
}
module.exports.writeFile = function(fileName, obj, doPack = false, callback){
fs.writeFile(getFileName(fileName, doPack),jsh.shrink(obj, false, doPack, doUseBrotli) , write_format, (err) => {
callback(err);
});
}
module.exports.readFileSync = function(fileName, doUnPack = false){
return jsh.unshrink(fs.readFileSync(getFileName(fileName, doUnPack),read_format), doUnPack, doUseBrotli);
}
module.exports.writeFileSync = function(fileName, obj, doPack = false){
fs.writeFileSync(getFileName(fileName, doPack),jsh.shrink(obj, false, doPack, doUseBrotli), write_format);
}