diff --git a/package.json b/package.json index 8e516777..45581920 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "dompurify": "^3.0.1", "exifr": "^7.1.3", "express": "^4.18.2", + "fflate": "^0.8.0", "gpt-3-encoder": "^1.1.4", "gpt3-tokenizer": "^1.1.5", "isomorphic-dompurify": "^1.2.0", @@ -35,7 +36,6 @@ "mobile-drag-drop": "3.0.0-rc.0", "msgpackr": "^1.9.5", "node-html-parser": "^6.1.5", - "pako": "^2.1.0", "png-chunk-text": "^1.0.0", "png-chunks-encode": "^1.0.0", "png-chunks-extract": "^1.0.0", @@ -58,7 +58,6 @@ "@types/lodash.clonedeep": "^4.5.7", "@types/lodash.isequal": "^4.5.6", "@types/node": "^18.7.10", - "@types/pako": "^2.0.0", "@types/pngjs": "^6.0.1", "@types/showdown": "^2.0.0", "@types/uuid": "^9.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e2c22f6..5ba8e828 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,6 +37,9 @@ dependencies: express: specifier: ^4.18.2 version: 4.18.2 + fflate: + specifier: ^0.8.0 + version: 0.8.0 gpt-3-encoder: specifier: ^1.1.4 version: 1.1.4 @@ -64,9 +67,6 @@ dependencies: node-html-parser: specifier: ^6.1.5 version: 6.1.5 - pako: - specifier: ^2.1.0 - version: 2.1.0 png-chunk-text: specifier: ^1.0.0 version: 1.0.0 @@ -129,9 +129,6 @@ devDependencies: '@types/node': specifier: ^18.7.10 version: 18.15.11 - '@types/pako': - specifier: ^2.0.0 - version: 2.0.0 '@types/pngjs': specifier: ^6.0.1 version: 6.0.1 @@ -827,10 +824,6 @@ packages: /@types/node@18.15.11: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - /@types/pako@2.0.0: - resolution: {integrity: sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==} - dev: true - /@types/pngjs@6.0.1: resolution: {integrity: sha512-J39njbdW1U/6YyVXvC9+1iflZghP8jgRf2ndYghdJb5xL49LYDB+1EuAxfbuJ2IBbWIL3AjHPQhgaTxT3YaYeg==} dependencies: @@ -1548,6 +1541,10 @@ packages: reusify: 1.0.4 dev: true + /fflate@0.8.0: + resolution: {integrity: sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==} + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2315,10 +2312,6 @@ packages: p-finally: 1.0.0 dev: true - /pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - dev: false - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} diff --git a/src/ts/storage/risuSave.ts b/src/ts/storage/risuSave.ts index 00b60bca..f59eb356 100644 --- a/src/ts/storage/risuSave.ts +++ b/src/ts/storage/risuSave.ts @@ -1,5 +1,5 @@ import { Packr, Unpackr, decode } from "msgpackr"; -import pako from "pako"; +import * as fflate from "fflate"; import { isTauri } from "./globalApi"; const packr = new Packr({ @@ -17,7 +17,7 @@ const magicCompressedHeader = new Uint8Array([0, 82, 73, 83, 85, 83, 65, 86, 69, export function encodeRisuSave(data:any, compression:'noCompression'|'compression' = 'noCompression'){ let encoded:Uint8Array = packr.encode(data) if(isTauri || compression === 'compression'){ - encoded = pako.deflate(encoded) + encoded = fflate.compressSync(encoded) const result = new Uint8Array(encoded.length + magicCompressedHeader.length); result.set(magicCompressedHeader, 0) result.set(encoded, magicCompressedHeader.length) @@ -36,7 +36,7 @@ export function decodeRisuSave(data:Uint8Array){ switch(checkHeader(data)){ case "compressed": data = data.slice(magicCompressedHeader.length) - return decode(pako.inflate(data)) + return decode(fflate.decompressSync(data)) case "raw": data = data.slice(magicHeader.length) return unpackr.decode(data) @@ -51,7 +51,7 @@ export function decodeRisuSave(data:Uint8Array){ const dec = unpackr.decode(realData) return dec } catch (error) { - const buf = Buffer.from(pako.inflate(Buffer.from(data))) + const buf = Buffer.from(fflate.decompressSync(Buffer.from(data))) try { return JSON.parse(buf.toString('utf-8')) } catch (error) { @@ -87,4 +87,4 @@ function checkHeader(data: Uint8Array) { } // All bytes matched return header; - } \ No newline at end of file +} \ No newline at end of file