-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathcompression.js
More file actions
33 lines (26 loc) · 938 Bytes
/
compression.js
File metadata and controls
33 lines (26 loc) · 938 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import * as Comlink from 'comlink';
export const compressionFormats = {
'Uncompressed': undefined,
'Nemesis': 'nemesis',
'Kosinski': 'kosinski',
'Kosinski-M': 'moduled_kosinski',
'KosinskiPlus': 'kosplus',
'KosinskiPlus-M': 'moduled_kosplus',
'Comper': 'comper',
'Enigma': 'enigma',
'ArtC42': 'artc42',
'LZKN1': 'lzkn1',
'Rocket': 'rocket',
'RLE': 'snkrle',
};
const worker = Comlink.wrap(new Worker('bundles/compression-worker.js'));
export async function decompress(buffer, compression) {
const operation = compressionFormats[compression];
if (!operation) return new Uint8Array(buffer);
else return await worker.mdcomp(`_${operation}_decode`, buffer);
}
export async function compress(buffer, compression) {
const operation = compressionFormats[compression];
if (!operation) return buffer;
else return await worker.mdcomp(`_${operation}_encode`, buffer);
}