fuc-new/doc/node_modules/@vuepress/helper/lib/client/utils/data.js
hellcat 6adbc04d4b 1
2025-10-03 17:17:08 +08:00

36 lines
1.1 KiB
JavaScript

import { strFromU8, strToU8, unzlibSync, zlibSync } from 'fflate/browser';
/**
* Encode and compress data
*
* 编码和压缩数据
*
* @param data - Data to encode / 要编码的数据
* @param level - Compression level / 压缩级别
*
* @returns Base64 encoded compressed data / Base64 编码的压缩数据
*/
export const encodeData = (data, level = 6) => {
const buffer = strToU8(data);
// zlib headers can be found at https://stackoverflow.com/a/54915442
const zipped = zlibSync(buffer, { level });
const binary = strFromU8(zipped, true);
return __VUEPRESS_SSR__
? Buffer.from(binary, 'binary').toString('base64')
: btoa(binary);
};
/**
* Decode and unzip data
*
* 解码和解压数据
*
* @param base64 - Base64 encoded data / Base64 编码的数据
*
* @returns Decoded string / 解码后的字符串
*/
export const decodeData = (base64) => {
const binary = __VUEPRESS_SSR__
? Buffer.from(base64, 'base64').toString('binary')
: atob(base64);
return strFromU8(unzlibSync(strToU8(binary, true)));
};