UNPKG

p3x-redis-ui-server

Version:

🏍️ P3X Redis UI server — Socket.IO backend for the dual Angular + React frontend with AI queries, 54 languages, and auto data decompression

2 lines (1 loc) 1.68 kB
import r from"node:zlib";import t from"snappyjs";import e from"lz4js";import{execFileSync as n}from"node:child_process";export async function tryDecompress(s){if(!Buffer.isBuffer(s)||s.length<2)return null;const i=s[0],c=s[1];if(31===i&&139===c){try{const t=r.gunzipSync(s);if(o(t))return{algorithm:"gzip",decompressed:t}}catch{}return null}if(s.length>=4&&80===i&&75===c&&3===s[2]&&4===s[3]){try{const t=await async function(t){if(t.length<30)return null;const e=t.readUInt16LE(8),n=t.readUInt32LE(18),o=30+t.readUInt16LE(26)+t.readUInt16LE(28);if(o+n>t.length)return null;const s=t.subarray(o,o+n);return 0===e?Buffer.from(s):8===e?r.inflateRawSync(s):null}(s);if(t&&o(t))return{algorithm:"zip",decompressed:t}}catch{}return null}if(120===i&&(30720+c)%31==0){try{const t=r.inflateSync(s);if(o(t))return{algorithm:"zlib",decompressed:t}}catch{}return null}if(s.length>=4&&40===i&&181===c&&47===s[2]&&253===s[3]){try{const r=n("zstd",["-d"],{input:s,maxBuffer:52428800,stdio:["pipe","pipe","ignore"]});if(o(r))return{algorithm:"zstd",decompressed:r}}catch(r){if(r.stdout&&r.stdout.length>0&&o(r.stdout))return{algorithm:"zstd",decompressed:r.stdout}}return null}if(s.length>=4&&4===i&&34===c&&77===s[2]&&24===s[3]){try{const r=Buffer.from(e.decompress(s));if(o(r))return{algorithm:"lz4",decompressed:r}}catch{}return null}try{const r=Buffer.from(t.uncompress(s));if(r.length>0&&o(r))return{algorithm:"snappy",decompressed:r}}catch{}try{const t=r.brotliDecompressSync(s);if(t.length>0&&o(t))return{algorithm:"brotli",decompressed:t}}catch{}return null}function o(r){const t=Math.min(r.length,64);for(let e=0;e<t;e++){const t=r[e];if(t<9||t>13&&t<32||127===t)return!1}return!0}