2020-05-09 14:45:23 +00:00
|
|
|
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"]);
|
|
|
|
|
2020-08-10 17:46:41 +00:00
|
|
|
self.addEventListener("message", event => {
|
2020-08-10 13:27:40 +00:00
|
|
|
const { jobId, job, data } = event.data;
|
2020-08-10 17:42:10 +00:00
|
|
|
console.log("[worker] Received message:");
|
|
|
|
console.log(JSON.stringify(event.data));
|
2020-05-09 14:45:23 +00:00
|
|
|
const result = performJob(job, data);
|
2020-07-27 15:06:12 +00:00
|
|
|
postMessage({ jobId, result });
|
2020-08-10 17:46:41 +00:00
|
|
|
});
|
2020-05-09 14:45:23 +00:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|