Release package version 1.0.0
All checks were successful
CI / build (push) Successful in 33s

Added first files
This commit is contained in:
Andrey Kernichniy 2026-03-13 00:32:06 +07:00
parent 3be22f1023
commit aad2fe13e7
29 changed files with 5020 additions and 8 deletions

27
lib/src/web-api/thread.ts Normal file
View file

@ -0,0 +1,27 @@
export class Thread<R, F extends (...args: any[]) => R> {
private _worker: Worker;
constructor(fn: F) {
const stringFn = `self.onmessage = (event) => {
const data = event.data;
const fn = ${fn.toString()};
const result = fn(...data.data);
self.postMessage(result);
}`;
const jsFile = new File([stringFn], `${fn.name}.js`, { type: "application/javascript" });
const jsFileUrl = URL.createObjectURL(jsFile);
this._worker = new Worker(jsFileUrl);
}
public run(...args: Parameters<F>): Promise<R> {
this._worker.postMessage({ data: [...args] });
return new Promise<R>((res, rej) => {
this._worker.addEventListener("message", (event) => res(event.data));
this._worker.addEventListener("error", (event) => rej(event));
});
}
public terminate(): void {
this._worker.terminate();
}
}