mirror of
https://github.com/directus/directus.git
synced 2026-01-29 03:18:14 -05:00
* Utils to compress/decompress data Gzip was chosen because we want smaller data but quick algorithm since this will be ran for every request * Compress system cache * Decompress system cache * Set/Get compressed cache for individual requests * Switch from gzip to snappy, use json compression too * Fix cache exp set/get * Remove unused import Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
13 lines
559 B
TypeScript
13 lines
559 B
TypeScript
import { compress as compressSnappy, uncompress as uncompressSnappy } from 'snappy';
|
|
import { compress as compressJSON, decompress as decompressJSON } from '@directus/shared/utils';
|
|
|
|
export async function compress(raw: Record<string, any> | Record<string, any>[]): Promise<Buffer> {
|
|
if (!raw) return raw;
|
|
return await compressSnappy(compressJSON(raw));
|
|
}
|
|
|
|
export async function decompress(compressed: Buffer): Promise<any> {
|
|
if (!compressed) return compressed;
|
|
return decompressJSON((await uncompressSnappy(compressed, { asBuffer: false })) as string);
|
|
}
|