From aa5aeffb69219cb7fcfbd5ed5de367616b5bb82e Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 18 Nov 2024 13:51:17 -0800 Subject: [PATCH] Tabs. --- src/lib/thread.ts | 84 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/lib/thread.ts b/src/lib/thread.ts index 948d603..171416b 100644 --- a/src/lib/thread.ts +++ b/src/lib/thread.ts @@ -2,58 +2,58 @@ // SPDX-License-Identifier: GPL-3.0-or-later if (globalThis.Worker == null) { - const { Worker } = await import('node:worker_threads') - //@ts-expect-error - Worker.prototype.addEventListener = Worker.prototype.addListener - //@ts-expect-error - globalThis.Worker = Worker + const { Worker } = await import('node:worker_threads') + //@ts-expect-error + Worker.prototype.addEventListener = Worker.prototype.addListener + //@ts-expect-error + globalThis.Worker = Worker } type Task = { - data: object, - resolve: Function + data: object, + resolve: Function } /** * Processes tasks from a queue using a Web Worker. */ export class Thread { - #isAvailable: boolean = true - #queue: Task[] = [] - #task?: Task - #worker: Worker + #isAvailable: boolean = true + #queue: Task[] = [] + #task?: Task + #worker: Worker - #post (next: Task) { - this.#isAvailable = false - this.#task = next - this.#worker.postMessage(next.data) - } + #post (next: Task) { + this.#isAvailable = false + this.#task = next + this.#worker.postMessage(next.data) + } - constructor (url: string | URL) { - this.#worker = new Worker(new URL(url, import.meta.url), { type: 'module' }) - this.#worker.addEventListener('message', (message) => { - const result = message.data ?? message - if (this.#task == null) { - throw new ReferenceError(`Error resolving Worker result: ${result}`) - } - const resolve = this.#task.resolve - const next = this.#queue.shift() - if (next == null) { - this.#isAvailable = true - } else { - this.#post(next) - } - resolve(result) - }) - } + constructor (url: string | URL) { + this.#worker = new Worker(new URL(url, import.meta.url), { type: 'module' }) + this.#worker.addEventListener('message', (message) => { + const result = message.data ?? message + if (this.#task == null) { + throw new ReferenceError(`Error resolving Worker result: ${result}`) + } + const resolve = this.#task.resolve + const next = this.#queue.shift() + if (next == null) { + this.#isAvailable = true + } else { + this.#post(next) + } + resolve(result) + }) + } - async work (data: object): Promise { - return new Promise(resolve => { - if (this.#isAvailable) { - this.#post({ data, resolve }) - } else { - this.#queue.push({ data, resolve }) - } - }) - } + async work (data: object): Promise { + return new Promise(resolve => { + if (this.#isAvailable) { + this.#post({ data, resolve }) + } else { + this.#queue.push({ data, resolve }) + } + }) + } } -- 2.34.1