From ae828568f36dd71c0a52b5af427b23b326360a89 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Thu, 14 May 2026 11:03:34 -0700 Subject: [PATCH] Overload async execution to narrow result typechecking more specifically based on function. --- src/async.ts | 2 +- src/lib/nano25519.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/async.ts b/src/async.ts index b99a1c0..1818565 100644 --- a/src/async.ts +++ b/src/async.ts @@ -58,5 +58,5 @@ export async function verifyAsync (signature: Uint8Array, message: */ export async function verifyAsync (signature: string, message: string, publicKey: string): Promise export async function verifyAsync (signature: string | Uint8Array, message: string | Uint8Array, publicKey: string | Uint8Array): Promise { - return !!(await run({ action: 'verify', signature, message, publicKey })) + return run({ action: 'verify', signature, message, publicKey }) } diff --git a/src/lib/nano25519.ts b/src/lib/nano25519.ts index 5654d22..8dfcb43 100644 --- a/src/lib/nano25519.ts +++ b/src/lib/nano25519.ts @@ -333,7 +333,7 @@ async function start (): Promise { } // Send command and relevant data to nano25519 worker -async function dispatch (data: { [key: string]: string | ArrayBuffer | Uint8Array }): Promise> { +async function dispatch (data: { [key: string]: string | ArrayBuffer | Uint8Array }): Promise> { return new Promise((resolve, reject) => { const transfer: ArrayBuffer[] = [] for (let k of Object.keys(data)) { @@ -388,7 +388,10 @@ async function stop (): Promise { }) } -export async function run (data: Record>): Promise> { +export async function run (data: Record<"action", "derive"> & Record>): Promise> +export async function run (data: Record<"action", "sign"> & Record>): Promise> +export async function run (data: Record<"action", "verify"> & Record>): Promise +export async function run (data: Record>): Promise> { try { await start() } catch (err: any) { -- 2.47.3