UNPKG

tileblaster

Version:

a quick and versatile map tile caching proxy

44 lines (41 loc) 1.05 kB
const load = require("../lib/load"); const zlib = require("node:zlib"); const lzma = load("node-liblzma"); const zstd = load("fzstd"); const decompress = module.exports = function decompress(buf, compression, fn){ // promisify if (!fn || typeof fn !== "function") return new Promise(function(resolve, reject){ decompress(buf, compression, function(err, buf){ if (err) return reject(err); return resolve(buf); }); }); switch (compression) { case "gzip": case "gz": zlib.gunzip(buf, fn); break; case "brotli": case "br": zlib.brotliDecompress(buf, fn); break; case "inflate": case "deflate": zlib.inflate(buf, fn); break; case "lzma": case "xz": if (!lzma) return fn(new Error("Missing optional dependency: 'node-liblzma'")); lzma.unxz(buf, fn); break; case "zstd": if (!zstd) return fn(new Error("Missing optional dependency: 'fzstd'")); try { fn(null, fzstd.decompress(buf)); } catch (err) { fn(err); } break; default: return fn(null, buf); // pass through if unknown } };