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