frontend/script/edit/EditWorker.ts
2023-11-24 22:42:25 +01:00

45 lines
991 B
TypeScript

import init from "@demostf/edit";
import {count_ticks, edit_js} from "@demostf/edit";
declare function postMessage(message: any, transfer?: any[]): void;
function getCacheBuster(): string {
const url = self.location.href;
return url.substring(url.indexOf('?'));
}
/**
* @global postMessage
* @param event
*/
onmessage = async (event: MessageEvent) => {
await init(`/tf-demo-editor.wasm${getCacheBuster()}`);
if (event.data.count) {
const buffer: ArrayBuffer = event.data.buffer;
const bytes = new Uint8Array(buffer);
try {
const ticks = count_ticks(bytes);
postMessage({
ticks: ticks
});
} catch(e) {
postMessage({
error: e
});
}
} else {
const buffer: ArrayBuffer = event.data.buffer;
const options = event.data.options;
const bytes = new Uint8Array(buffer);
try {
const edited = edit_js(bytes, options);
postMessage({
buffer: edited.buffer
}, [edited.buffer]);
} catch (e) {
postMessage({
error: e
});
}
}
};