From: Chris Duncan Date: Tue, 12 May 2026 18:38:38 +0000 (-0700) Subject: Refactor worker ID handling. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=49a54da866a0fb1b11cf021bd8ae9d8657fd69e4;p=libnemo.git Refactor worker ID handling. --- diff --git a/src/lib/vault/index.ts b/src/lib/vault/index.ts index bb75ffb..dd80441 100644 --- a/src/lib/vault/index.ts +++ b/src/lib/vault/index.ts @@ -4,10 +4,14 @@ import { Worker as NodeWorker } from 'node:worker_threads' import { Data } from '../database' -type Task = { +type TaskData = { + [key: string]: Data | Record url: string id: number - data: Record> +} + +type Task = { + data: TaskData reject: (value: any) => void resolve: (value: any) => void } @@ -51,14 +55,17 @@ export class Vault { get isLocked (): boolean { return this.#isLocked } - request> (data: Record>): Promise> { + request> (payload: Record>): Promise> { if (this.#isTerminated) { throw new Error(TERMINATED) } + const data: TaskData = { + ...payload, + url: this.#url, + id: performance.now(), + } return new Promise((resolve, reject): void => { const task: Task = { - url: this.#url, - id: performance.now(), data, resolve, reject @@ -85,15 +92,13 @@ export class Vault { #process = (): void => { this.#job = this.#queue.shift() if (this.#job != null) { - const { url, id, data, reject } = this.#job + const { data, reject } = this.#job const buffers: ArrayBuffer[] = [] for (const d of Object.values(data)) { if (d instanceof ArrayBuffer) { buffers.push(d) } } - data.url = url - data.id = id try { BROWSER: this.#worker.postMessage(data, buffers) NODE: this.#worker.postMessage({ data }, buffers) @@ -115,7 +120,7 @@ export class Vault { if (this.#job == null) { throw new Error('Vault worker returned results without an associated job.') } - const { url, id, resolve, reject } = this.#job + const { data: { url, id }, resolve, reject } = this.#job if (url == null) { throw new Error('Vault worker job missing URL') }