mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
39 lines
999 B
JavaScript
39 lines
999 B
JavaScript
|
import { compressX64 } from "../core/lzstring";
|
||
|
import { globalConfig } from "../core/config";
|
||
|
import { sha1 } from "../core/sensitive_utils.encrypt";
|
||
|
|
||
|
function accessNestedPropertyReverse(obj, keys) {
|
||
|
let result = obj;
|
||
|
for (let i = keys.length - 1; i >= 0; --i) {
|
||
|
result = result[keys[i]];
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
const salt = accessNestedPropertyReverse(globalConfig, ["file", "info"]);
|
||
|
|
||
|
onmessage = function (event) {
|
||
|
const { jobId, job, data } = event.data;
|
||
|
const result = performJob(job, data);
|
||
|
|
||
|
// @ts-ignore
|
||
|
postMessage({
|
||
|
jobId,
|
||
|
result,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function performJob(job, data) {
|
||
|
switch (job) {
|
||
|
case "compressX64": {
|
||
|
return compressX64(data);
|
||
|
}
|
||
|
case "compressFile": {
|
||
|
const checksum = sha1(data.text + salt);
|
||
|
return data.compressionPrefix + compressX64(checksum + data.text);
|
||
|
}
|
||
|
default:
|
||
|
throw new Error("Webworker: Unknown job: " + job);
|
||
|
}
|
||
|
}
|