From 68f9db854a2c24f7639a5866d45b1874a9243342 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Tue, 15 Jul 2025 20:29:44 -0700 Subject: [PATCH] Return results directly from workers instead of always putting in an array now that we use Data objects. --- src/lib/account.ts | 8 +++----- src/lib/block.ts | 6 ++---- src/lib/tools.ts | 13 +++---------- src/lib/wallets/bip44-wallet.ts | 2 +- src/lib/wallets/wallet.ts | 5 ++--- src/lib/workers/queue.ts | 1 - src/lib/workers/safe.ts | 5 ++--- 7 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/lib/account.ts b/src/lib/account.ts index 9f55252..dee66c8 100644 --- a/src/lib/account.ts +++ b/src/lib/account.ts @@ -139,8 +139,7 @@ export class Account { const data = { privateKey: new Uint8Array(privateKey).buffer } - const result = await NanoNaClWorker.add(headers, data) - publicKey = result[0] + publicKey = await NanoNaClWorker.add(headers, data) } catch (err) { throw new Error(`Failed to derive public key from private key`, { cause: err }) } @@ -170,8 +169,7 @@ export class Account { id: hex.toBytes(this.#pub).buffer, privateKey: this.#prv.buffer } - const response = await SafeWorker.add(headers, data) - const success = response[0].result + const success = await SafeWorker.add(headers, data) if (!success) { throw null } @@ -238,7 +236,7 @@ export class Account { password: password.buffer } const response = await SafeWorker.add(headers, data) - let { id, privateKey } = response[0].result + let { id, privateKey } = response if (id == null) { throw null } diff --git a/src/lib/block.ts b/src/lib/block.ts index 208958f..12bc6c8 100644 --- a/src/lib/block.ts +++ b/src/lib/block.ts @@ -152,8 +152,7 @@ abstract class Block { privateKey: hex.toBytes(account.privateKey).buffer, msg: hex.toBytes(this.hash).buffer } - const result = await NanoNaClWorker.add(headers, data) - this.signature = result[0] + this.signature = await NanoNaClWorker.add(headers, data) } catch (err) { throw new Error(`Failed to sign block`, { cause: err }) } @@ -209,8 +208,7 @@ abstract class Block { signature: hex.toBytes(this.signature ?? '').buffer, publicKey: hex.toBytes(key).buffer } - const result = await NanoNaClWorker.add(headers, data) - return result[0] + return await NanoNaClWorker.add(headers, data) } catch (err) { throw new Error(`Failed to derive public key from private key`, { cause: err }) } diff --git a/src/lib/tools.ts b/src/lib/tools.ts index 2669e5b..41caeb1 100644 --- a/src/lib/tools.ts +++ b/src/lib/tools.ts @@ -98,15 +98,12 @@ export async function sign (key: string | Uint8Array, ...input: str privateKey: key.buffer, msg: (hash(input) as Uint8Array).buffer } - const result = await NanoNaClWorker.add(headers, data) - signature = result[0] + return await NanoNaClWorker.add(headers, data) } catch (err) { throw new Error(`Failed to sign message with private key`, { cause: err }) } finally { bytes.erase(key) } - - return signature } /** @@ -180,7 +177,6 @@ export async function sweep ( */ export async function verify (key: string | Uint8Array, signature: string, ...input: string[]): Promise { if (typeof key === 'string') key = hex.toBytes(key) - let isVerified: boolean try { const headers = { method: 'verify' @@ -190,13 +186,10 @@ export async function verify (key: string | Uint8Array, signature: signature: hex.toBytes(signature).buffer, publicKey: new Uint8Array(key).buffer } - const result = await NanoNaClWorker.add(headers, data) - isVerified = result[0] + return await NanoNaClWorker.add(headers, data) } catch (err) { - console.log(err) - isVerified = false + throw new Error('Failed to verify signature', { cause: err }) } finally { bytes.erase(key) } - return isVerified } diff --git a/src/lib/wallets/bip44-wallet.ts b/src/lib/wallets/bip44-wallet.ts index 200147d..bd1ca66 100644 --- a/src/lib/wallets/bip44-wallet.ts +++ b/src/lib/wallets/bip44-wallet.ts @@ -218,7 +218,7 @@ export class Bip44Wallet extends Wallet { const data = { seed: hex.toBytes(this.seed).buffer } - const results = (await Bip44CkdWorker.add(headers, data))[0] + const results = await Bip44CkdWorker.add(headers, data) const privateKeys: KeyPair[] = [] for (const i of Object.keys(results)) { if (results[i] == null || !(results[i] instanceof ArrayBuffer)) { diff --git a/src/lib/wallets/wallet.ts b/src/lib/wallets/wallet.ts index 4cf3c61..bac12f7 100644 --- a/src/lib/wallets/wallet.ts +++ b/src/lib/wallets/wallet.ts @@ -164,8 +164,7 @@ export abstract class Wallet { if (this.#m != null) { data.mnemonic = utf8.toBytes(this.#m?.phrase ?? '').buffer } - const response = await SafeWorker.add(headers, data) - const success = response[0].result + const success = await SafeWorker.add(headers, data) if (!success) { throw null } @@ -233,7 +232,7 @@ export abstract class Wallet { password: new Uint8Array(password).buffer } const response = await SafeWorker.add(headers, data) - let { id, mnemonic, seed } = response[0].result + let { id, mnemonic, seed } = response if (id == null) { throw null } diff --git a/src/lib/workers/queue.ts b/src/lib/workers/queue.ts index d8a6d26..2606f45 100644 --- a/src/lib/workers/queue.ts +++ b/src/lib/workers/queue.ts @@ -40,7 +40,6 @@ export class Queue { this.#worker = new Worker(this.#url, { type: 'module' }) this.#worker.addEventListener('message', message => { let result = message.data - if (!Array.isArray(result)) result = [result] this.#report(result) }) Queue.#instances.push(this) diff --git a/src/lib/workers/safe.ts b/src/lib/workers/safe.ts index 2bb00c5..404a446 100644 --- a/src/lib/workers/safe.ts +++ b/src/lib/workers/safe.ts @@ -24,7 +24,6 @@ export class Safe extends WorkerInterface { static async work (headers: Headers, data: Data): Promise { this.#storage = await this.#open(this.DB_NAME) const { method, name } = headers - const results = [] let result try { switch (method) { @@ -44,11 +43,11 @@ export class Safe extends WorkerInterface { result = `unknown Safe method ${method}` } } - results.push({ method, name, result }) } catch (err) { + console.log(err) result = false } - return results + return result } /** -- 2.47.3