]> git.codecow.com Git - libnemo.git/commitdiff
Post data parsing errors back to worker host if possible.
authorChris Duncan <chris@codecow.com>
Sun, 9 Aug 2026 23:27:10 +0000 (16:27 -0700)
committerChris Duncan <chris@codecow.com>
Sun, 9 Aug 2026 23:27:10 +0000 (16:27 -0700)
src/lib/vault/vault-worker.ts

index 6ca1568982439f41a8f471a9acdb762bc07922f5..95c5441dfa197030a1d852f0c9169c89ca143034 100644 (file)
@@ -35,12 +35,24 @@ const listener = (event: MessageEvent<any>): 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<typeof parseAction>
+       let keySalt: ArrayBuffer
+       let type: ReturnType<typeof parseType>
+       let id: UUID | undefined
+       let iv: ArrayBuffer | undefined
+       let parsed: ReturnType<typeof parseData>
+       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<Record<string, boolean | number | ArrayBuffer> | void> => {