Add compression-streams-polyfill and integrate CompressionStream support
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
"body-parser": "^1.20.2",
|
||||
"buffer": "^6.0.3",
|
||||
"codemirror": "^5.65.16",
|
||||
"compression-streams-polyfill": "^0.1.7",
|
||||
"core-js": "^3.35.0",
|
||||
"cors": "^2.8.5",
|
||||
"crc": "^4.3.2",
|
||||
|
||||
15
pnpm-lock.yaml
generated
15
pnpm-lock.yaml
generated
@@ -86,6 +86,9 @@ importers:
|
||||
codemirror:
|
||||
specifier: ^5.65.16
|
||||
version: 5.65.16
|
||||
compression-streams-polyfill:
|
||||
specifier: ^0.1.7
|
||||
version: 0.1.7
|
||||
core-js:
|
||||
specifier: ^3.35.0
|
||||
version: 3.35.0
|
||||
@@ -1491,6 +1494,9 @@ packages:
|
||||
compare-func@2.0.0:
|
||||
resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
|
||||
|
||||
compression-streams-polyfill@0.1.7:
|
||||
resolution: {integrity: sha512-Y6VkJzi9JkvmcgDuJ2jJZ5DGljNhUrFBGxx5+gQ2RNg+uPesuRDDL5zN1NTk5NTuynyVkQ4MNip5z37MmtbdpQ==}
|
||||
|
||||
concat-map@0.0.1:
|
||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||
|
||||
@@ -1908,6 +1914,9 @@ packages:
|
||||
fflate@0.8.1:
|
||||
resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==}
|
||||
|
||||
fflate@0.8.2:
|
||||
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
|
||||
|
||||
fill-range@7.0.1:
|
||||
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -5031,6 +5040,10 @@ snapshots:
|
||||
array-ify: 1.0.0
|
||||
dot-prop: 5.3.0
|
||||
|
||||
compression-streams-polyfill@0.1.7:
|
||||
dependencies:
|
||||
fflate: 0.8.2
|
||||
|
||||
concat-map@0.0.1: {}
|
||||
|
||||
console-control-strings@1.1.0:
|
||||
@@ -5493,6 +5506,8 @@ snapshots:
|
||||
|
||||
fflate@0.8.1: {}
|
||||
|
||||
fflate@0.8.2: {}
|
||||
|
||||
fill-range@7.0.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
@@ -15,6 +15,18 @@ const magicHeader = new Uint8Array([0, 82, 73, 83, 85, 83, 65, 86, 69, 0, 7]);
|
||||
const magicCompressedHeader = new Uint8Array([0, 82, 73, 83, 85, 83, 65, 86, 69, 0, 8]);
|
||||
const magicStreamCompressedHeader = new Uint8Array([0, 82, 73, 83, 85, 83, 65, 86, 69, 0, 9]);
|
||||
|
||||
|
||||
async function checkCompressionStreams(){
|
||||
if(!CompressionStream){
|
||||
const {makeCompressionStream} = await import('compression-streams-polyfill/ponyfill');
|
||||
globalThis.CompressionStream = makeCompressionStream(TransformStream);
|
||||
}
|
||||
if(!DecompressionStream){
|
||||
const {makeDecompressionStream} = await import('compression-streams-polyfill/ponyfill');
|
||||
globalThis.DecompressionStream = makeDecompressionStream(TransformStream);
|
||||
}
|
||||
}
|
||||
|
||||
export function encodeRisuSaveLegacy(data:any, compression:'noCompression'|'compression' = 'noCompression'){
|
||||
let encoded:Uint8Array = packr.encode(data)
|
||||
if(compression === 'compression'){
|
||||
@@ -33,6 +45,7 @@ export function encodeRisuSaveLegacy(data:any, compression:'noCompression'|'comp
|
||||
}
|
||||
|
||||
export async function encodeRisuSave(data:any) {
|
||||
await checkCompressionStreams()
|
||||
let encoded:Uint8Array = packr.encode(data)
|
||||
const cs = new CompressionStream('gzip');
|
||||
const writer = cs.writable.getWriter();
|
||||
@@ -55,6 +68,7 @@ export async function decodeRisuSave(data:Uint8Array){
|
||||
data = data.slice(magicHeader.length)
|
||||
return unpackr.decode(data)
|
||||
case "stream":{
|
||||
await checkCompressionStreams()
|
||||
data = data.slice(magicStreamCompressedHeader.length)
|
||||
const cs = new DecompressionStream('gzip');
|
||||
const writer = cs.writable.getWriter();
|
||||
|
||||
Reference in New Issue
Block a user