From 78a9998d3344d83a55a20dab9c705b8bd1606ca5 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sun, 9 Aug 2026 16:27:10 -0700 Subject: [PATCH] Post data parsing errors back to worker host if possible. --- src/lib/vault/vault-worker.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/lib/vault/vault-worker.ts b/src/lib/vault/vault-worker.ts index 6ca1568..95c5441 100644 --- a/src/lib/vault/vault-worker.ts +++ b/src/lib/vault/vault-worker.ts @@ -35,12 +35,24 @@ const listener = (event: MessageEvent): void => { BROWSER: if (taskUrl !== location.href) return NODE: if (taskUrl !== dec.toString(threadId)) return NODE: if (parentPort == null) return void setTimeout(() => listener(event), 0) - const action = parseAction(data) - const keySalt = parseKeySalt(action, data) - const type = parseType(action, data) - const id = parseId(action, data) - const iv = parseIv(action, data) - const parsed = parseData(action, data) + let action: ReturnType + let keySalt: ArrayBuffer + let type: ReturnType + let id: UUID | undefined + let iv: ArrayBuffer | undefined + let parsed: ReturnType + try { + action = parseAction(data) + keySalt = parseKeySalt(action, data) + type = parseType(action, data) + id = parseId(action, data) + iv = parseIv(action, data) + parsed = parseData(action, data) + } catch (err) { + BROWSER: self.postMessage({ taskUrl, taskId, error: new Error('Failed to process Vault request', { cause: err }) }) + NODE: parentPort?.postMessage({ data: { taskUrl, taskId, error: new Error('Failed to process Vault request', { cause: err }) } }) + return + } const { seed, mnemonicPhrase, mnemonicSalt, index, encrypted, message, timeout } = parsed passkey(action, keySalt, data) .then((key: CryptoKey | undefined): Promise | void> => { -- 2.52.0