[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": { "dependencies": {
"@adobe/css-tools": "4.3.0-beta.2", "@adobe/css-tools": "4.3.0-beta.2",
"@dqbd/tiktoken": "^1.0.4", "@dqbd/tiktoken": "^1.0.4",
"@msgpack/msgpack": "3.0.0-beta2",
"@tauri-apps/api": "1.3.0", "@tauri-apps/api": "1.3.0",
"@xenova/transformers": "^2.1.1", "@xenova/transformers": "^2.1.1",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
@@ -34,6 +33,7 @@
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lucide-svelte": "^0.130.0", "lucide-svelte": "^0.130.0",
"mobile-drag-drop": "3.0.0-rc.0", "mobile-drag-drop": "3.0.0-rc.0",
"msgpackr": "^1.9.5",
"node-html-parser": "^6.1.5", "node-html-parser": "^6.1.5",
"pako": "^2.1.0", "pako": "^2.1.0",
"png-chunk-text": "^1.0.0", "png-chunk-text": "^1.0.0",

83
pnpm-lock.yaml generated
View File

@@ -7,9 +7,6 @@ dependencies:
'@dqbd/tiktoken': '@dqbd/tiktoken':
specifier: ^1.0.4 specifier: ^1.0.4
version: 1.0.4 version: 1.0.4
'@msgpack/msgpack':
specifier: 3.0.0-beta2
version: 3.0.0-beta2
'@tauri-apps/api': '@tauri-apps/api':
specifier: 1.3.0 specifier: 1.3.0
version: 1.3.0 version: 1.3.0
@@ -61,6 +58,9 @@ dependencies:
mobile-drag-drop: mobile-drag-drop:
specifier: 3.0.0-rc.0 specifier: 3.0.0-rc.0
version: 3.0.0-rc.0 version: 3.0.0-rc.0
msgpackr:
specifier: ^1.9.5
version: 1.9.5
node-html-parser: node-html-parser:
specifier: ^6.1.5 specifier: ^6.1.5
version: 6.1.5 version: 6.1.5
@@ -405,10 +405,53 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/sourcemap-codec': 1.4.14
dev: true dev: true
/@msgpack/msgpack@3.0.0-beta2: /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
engines: {node: '>= 14'} cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false 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: /@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -2079,6 +2122,28 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false 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: /mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies: dependencies:
@@ -2113,6 +2178,12 @@ packages:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
dev: false 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: /node-html-parser@6.1.5:
resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==} resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==}
dependencies: 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 { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./storage/database"
import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util" import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util"
import { language } from "src/lang" 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 { v4 as uuidv4 } from 'uuid';
import exifr from 'exifr' import exifr from 'exifr'
import { PngMetadata } from "./exif" import { PngMetadata } from "./exif"

View File

@@ -4,7 +4,7 @@ import exifr from 'exifr'
import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert"; import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert";
import { language } from "../lang"; import { language } from "../lang";
import { PngMetadata } from "./exif"; 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 { checkNullish, findCharacterbyId, selectMultipleFile, selectSingleFile, sleep } from "./util";
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { selectedCharID } from "./stores"; import { selectedCharID } from "./stores";

View File

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