UNPKG

vtf-js

Version:

A javascript IO library for the Valve Texture Format.

40 lines (39 loc) 1.58 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ import { deflate, inflate } from 'node:zlib'; // import { zstdCompress, zstdDecompress, constants } from 'node:zlib'; import { setCompressionMethod } from '../../core/utils.js'; import { VCompressionMethods } from '../../core/enums.js'; function wrap(m) { return (data, arg) => { return new Promise((resolve, reject) => { m(data, arg, (error, result) => { if (error) return reject(error); resolve(new Uint8Array(result.buffer)); }); }); }; } const inflateNode = wrap(inflate); const deflateNode = wrap(deflate); // const zstdDecompressNode = wrap(zstdDecompress); // const zstdCompressNode = wrap(zstdCompress); function compressNode(data, method, level) { switch (method) { case VCompressionMethods.Deflate: return deflateNode(data, { level: level }); case VCompressionMethods.ZSTD: throw Error('vtf-js: Node compression backend does not support ZSTD compression!'); // return zstdCompressNode(data, { params: { [constants.ZSTD_c_compressionLevel]: level } }); } } async function decompressNode(data, method, level) { switch (method) { case VCompressionMethods.Deflate: return inflateNode(data, {}); case VCompressionMethods.ZSTD: throw Error('vtf-js: Node compression backend does not support ZSTD decompression!'); // return zstdDecompressNode(data, {}); } } setCompressionMethod(compressNode, decompressNode);