[feat] change save format again

This commit is contained in:
kwaroran
2023-06-24 00:57:20 +09:00
parent 45094782e5
commit 8c2eb4b267
6 changed files with 92 additions and 4392 deletions

4363
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,6 @@
"dependencies": {
"@adobe/css-tools": "4.3.0-beta.2",
"@dqbd/tiktoken": "^1.0.4",
"@msgpack/msgpack": "3.0.0-beta2",
"@tauri-apps/api": "1.3.0",
"@xenova/transformers": "^2.1.1",
"blueimp-md5": "^2.19.0",
@@ -34,6 +33,7 @@
"lodash": "^4.17.21",
"lucide-svelte": "^0.130.0",
"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",

83
pnpm-lock.yaml generated
View File

@@ -7,9 +7,6 @@ dependencies:
'@dqbd/tiktoken':
specifier: ^1.0.4
version: 1.0.4
'@msgpack/msgpack':
specifier: 3.0.0-beta2
version: 3.0.0-beta2
'@tauri-apps/api':
specifier: 1.3.0
version: 1.3.0
@@ -61,6 +58,9 @@ dependencies:
mobile-drag-drop:
specifier: 3.0.0-rc.0
version: 3.0.0-rc.0
msgpackr:
specifier: ^1.9.5
version: 1.9.5
node-html-parser:
specifier: ^6.1.5
version: 6.1.5
@@ -405,10 +405,53 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
/@msgpack/msgpack@3.0.0-beta2:
resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==}
engines: {node: '>= 14'}
/@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2:
resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2:
resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2:
resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2:
resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2:
resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -2079,6 +2122,28 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
/msgpackr-extract@3.0.2:
resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==}
hasBin: true
requiresBuild: true
dependencies:
node-gyp-build-optional-packages: 5.0.7
optionalDependencies:
'@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2
'@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2
'@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2
'@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2
'@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2
'@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2
dev: false
optional: true
/msgpackr@1.9.5:
resolution: {integrity: sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg==}
optionalDependencies:
msgpackr-extract: 3.0.2
dev: false
/mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
@@ -2113,6 +2178,12 @@ packages:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
dev: false
/node-gyp-build-optional-packages@5.0.7:
resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==}
hasBin: true
dev: false
optional: true
/node-html-parser@6.1.5:
resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==}
dependencies:

View File

@@ -3,7 +3,7 @@ import { alertConfirm, alertError, alertMd, alertNormal, alertSelect, alertStore
import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./storage/database"
import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util"
import { language } from "src/lang"
import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack";
import { encode as encodeMsgpack, decode as decodeMsgpack } from "msgpackr";
import { v4 as uuidv4 } from 'uuid';
import exifr from 'exifr'
import { PngMetadata } from "./exif"

View File

@@ -4,7 +4,7 @@ import exifr from 'exifr'
import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert";
import { language } from "../lang";
import { PngMetadata } from "./exif";
import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack";
import { encode as encodeMsgpack, decode as decodeMsgpack } from "msgpackr";
import { checkNullish, findCharacterbyId, selectMultipleFile, selectSingleFile, sleep } from "./util";
import { v4 as uuidv4 } from 'uuid';
import { selectedCharID } from "./stores";

View File

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