}
console.log(`nano25519/async initialized`)
isWorkerReady = true
- } catch (err: any) {
+ } catch (e: any) {
isWorkerReady = false
- throw new Error('nano25519/async initialization failed')
+ throw new Nano25519WorkerError(e)
}
}
function reset (): void {
console.warn(`nano25519 encountered an error. Reinitializing...`)
starting = undefined
+ for (const [_, err] of tasks.values()) {
+ err(new Nano25519WorkerError('worker reset, try again'))
+ }
+ tasks.clear()
worker.terminate()
init()
}
})
}
-class Nano25519ResultError extends Error {
- constructor (action: string, cause?: unknown) {
- super(`${action} result invalid`, { cause })
- }
-}
-
export async function run (data: Record<'action', 'derive'> & Record<string, string | Uint8Array<ArrayBuffer>>): Promise<string | Uint8Array<ArrayBuffer>>
export async function run (data: Record<'action', 'sign'> & Record<string, string | Uint8Array<ArrayBuffer>>): Promise<string | Uint8Array<ArrayBuffer>>
export async function run (data: Record<'action', 'verify'> & Record<string, string | Uint8Array<ArrayBuffer>>): Promise<boolean>
throw new Error('unknown error')
}
} catch (e: any) {
- throw new Error('failed to start worker', { cause: e })
+ throw new Nano25519WorkerError(e)
}
const result = await dispatch(data)
}
throw new Nano25519ResultError(data.action, result)
}
+
+class Nano25519WorkerError extends Error {
+ constructor (cause?: unknown) {
+ super(`async process error`, { cause })
+ }
+}
+class Nano25519ResultError extends Error {
+ constructor (action: string, cause?: unknown) {
+ super(`${action} result invalid`, { cause })
+ }
+}