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> => {