UNPKG

@cspell/cspell-tools

Version:
42 lines 1.53 kB
import { readFile, writeFile } from 'node:fs/promises'; import { promisify } from 'node:util'; import { gunzip as gunzipCB, gzip as gz, gzipSync } from 'node:zlib'; const gzip = promisify(gz); const gunzip = promisify(gunzipCB); export var OSFlags; (function (OSFlags) { OSFlags[OSFlags["auto"] = -1] = "auto"; OSFlags[OSFlags["FAT"] = 0] = "FAT"; OSFlags[OSFlags["Unix"] = 3] = "Unix"; OSFlags[OSFlags["HPFS"] = 6] = "HPFS"; OSFlags[OSFlags["MACOS"] = 7] = "MACOS"; OSFlags[OSFlags["NTFS"] = 11] = "NTFS"; })(OSFlags || (OSFlags = {})); // https://docs.fileformat.com/compression/gz/#:~:text=A%20GZ%20file%20is%20a,compression%20formats%20on%20UNIX%20systems. const OSSystemIDOffset = 9; export async function compressFile(file, os) { if (file.endsWith('.gz')) return file; const targetFile = file + '.gz'; const zBuf = await compress(await readFile(file), os); await writeFile(targetFile, zBuf); return targetFile; } export async function compress(buf, os) { return fixOSSystemID(await gzip(buf), os); } export function compressSync(buf, os) { return fixOSSystemID(gzipSync(buf), os); } function fixOSSystemID(zBuf, os = OSFlags.Unix) { const osFlag = os == OSFlags.auto ? zBuf[OSSystemIDOffset] : os; zBuf[OSSystemIDOffset] = osFlag; return zBuf; } export async function decompress(buf, encoding) { const dBuf = gunzip(buf); if (!encoding) return dBuf; return (await dBuf).toString(encoding); } //# sourceMappingURL=compressFiles.js.map