[feat] change file saving to msgpack

This commit is contained in:
kwaroran
2023-06-22 21:20:56 +09:00
parent 839b288168
commit 4447da7a6b
4 changed files with 53 additions and 27 deletions

View File

@@ -0,0 +1,31 @@
import { decode, encode } from "@msgpack/msgpack";
import { isEqual } from "lodash";
import pako from "pako";
export function encodeRisuSave(data:any){
const risuSaveHeader = new Uint8Array(Buffer.from("\u0000\u0000RISU",'utf-8'))
const encoded = encode(data)
const mergedArray = new Uint8Array(risuSaveHeader.length + encoded.length);
mergedArray.set(risuSaveHeader);
mergedArray.set(encoded, risuSaveHeader.length);
return mergedArray
}
export function decodeRisuSave(data:Uint8Array){
const risuSaveHeader = new Uint8Array(Buffer.from("\u0000\u0000RISU",'utf-8'))
const sub = data.subarray(0, risuSaveHeader.length)
if(isEqual(sub, risuSaveHeader)){
try {
const realData = data.subarray(risuSaveHeader.length)
const dec = decode(realData)
return dec
} catch (error) {
console.error(error)
throw error
}
}
else{
return JSON.parse(Buffer.from(pako.inflate(Buffer.from(data))).toString('utf-8'))
}
}