]> git.codecow.com Git - libnemo.git/commitdiff
Fix vault import design.
authorChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 19:31:02 +0000 (12:31 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 19:31:02 +0000 (12:31 -0700)
src/lib/vault/index.ts [moved from src/lib/vault/worker-queue.ts with 88% similarity]
src/lib/wallet/create.ts
src/lib/wallet/index.ts
src/lib/wallet/load.ts
src/lib/wallet/lock.ts
src/lib/wallet/sign.ts
src/lib/wallet/unlock.ts

similarity index 88%
rename from src/lib/vault/worker-queue.ts
rename to src/lib/vault/index.ts
index 5202f7d6cc6943018bedd0aac16a7b833b7cd27d..67a38f657e1d4595a6e1a5079f4ff9b049799ca8 100644 (file)
@@ -2,6 +2,7 @@
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
 import { Worker as NodeWorker } from 'node:worker_threads'
+import { default as VaultWorker } from './vault'
 import { Data, NamedData } from '#types'
 
 type Task = {
@@ -14,9 +15,9 @@ type Task = {
 /**
 * Processes a queue of tasks using Web Workers.
 */
-export class WorkerQueue {
-       static #instances: WorkerQueue[] = []
-       static get instances (): WorkerQueue[] { return this.#instances }
+export class Vault {
+       static #instances: Vault[] = []
+       static get instances (): Vault[] { return this.#instances }
 
        #job?: Task
        #isIdle: boolean
@@ -30,16 +31,16 @@ export class WorkerQueue {
        *
        * @param {string} worker - Stringified worker class body
        */
-       constructor (worker: string) {
+       constructor () {
                this.#isIdle = true
                this.#isTerminated = false
                this.#queue = []
-               this.#url = URL.createObjectURL(new Blob([worker], { type: 'text/javascript' }))
+               this.#url = URL.createObjectURL(new Blob([VaultWorker], { type: 'text/javascript' }))
                BROWSER: this.#worker = new Worker(this.#url, { type: 'module' })
                BROWSER: this.#worker.addEventListener('message', message => {
                        this.#report(message.data)
                })
-               NODE: this.#worker = new NodeWorker(worker, {
+               NODE: this.#worker = new NodeWorker(VaultWorker, {
                        eval: true,
                        stderr: false,
                        stdout: false
@@ -47,7 +48,7 @@ export class WorkerQueue {
                NODE: this.#worker.on('message', message => {
                        this.#report(message)
                })
-               WorkerQueue.#instances.push(this)
+               Vault.#instances.push(this)
        }
 
        async prioritize<T extends Data> (data: NamedData): Promise<NamedData<T>> {
index 4aedba5c72e7f91ee02dbcc12b68728471bc6c76..706b18c9284b92972730c0090604360e683fd6a5 100644 (file)
@@ -5,11 +5,11 @@ import { utf8 } from '../convert'
 import { Database } from '../database'
 import { _load } from './load'
 import { Wallet } from '.'
-import { WorkerQueue } from '../vault/worker-queue'
+import { Vault } from '../vault'
 import { NamedData } from '#types'
 
-export async function _create (wallet: Wallet, vault: WorkerQueue, password: string, mnemonicSalt?: string): Promise<NamedData<ArrayBuffer>>
-export async function _create (wallet: Wallet, vault: WorkerQueue, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
+export async function _create (wallet: Wallet, vault: Vault, password: string, mnemonicSalt?: string): Promise<NamedData<ArrayBuffer>>
+export async function _create (wallet: Wallet, vault: Vault, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
        if (typeof password !== 'string') {
                throw new TypeError('Invalid password', { cause: typeof password })
        }
index 1a3006b373c887a7dcb3204c1f781a61604d8c40..8569b5bda48be764bed48e95e0eb8d83ebba34d2 100644 (file)
@@ -15,9 +15,8 @@ import { _lock } from './lock'
 import { _restore } from './restore'\r
 import { Rpc } from '../rpc'\r
 import { _sign } from './sign'\r
-import { default as VaultWorker } from '../vault/vault'\r
-import { WorkerQueue } from '../vault/worker-queue'\r
 import { _unlock } from './unlock'\r
+import { Vault } from '../vault'\r
 \r
 /**\r
 * Represents a wallet containing numerous Nano accounts derived from a single\r
@@ -113,8 +112,8 @@ export class Wallet {
                Wallet.#isInternal = false\r
                this.#accounts = new AccountList()\r
                this.#id = id ?? crypto.randomUUID()\r
-               this.#vault = new WorkerQueue(VaultWorker)\r
                this.#type = type\r
+               this.#vault = new Vault()\r
        }\r
 \r
        /**\r
@@ -398,7 +397,7 @@ export class Wallet {
        #accounts: AccountList\r
        #id: string\r
        #mnemonic?: ArrayBuffer\r
-       #vault: WorkerQueue\r
        #seed?: ArrayBuffer\r
        #type: WalletType\r
+       #vault: Vault\r
 }\r
index b663accd6afd4dd8b38b512a189ee381e95340e4..bd0f77f4203ee89fd1b2c01634bea30fe37e8c74 100644 (file)
@@ -6,10 +6,10 @@ import { NamedData } from '#types'
 import { hex, utf8 } from '../convert'
 import { Database } from '../database'
 import { Wallet } from '#wallet'
-import { WorkerQueue } from '../vault/worker-queue'
+import { Vault } from '../vault'
 
-export async function _load (wallet: Wallet, vault: WorkerQueue, password: string, secret: string, mnemonicSalt?: string): Promise<void>
-export async function _load (wallet: Wallet, vault: WorkerQueue, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
+export async function _load (wallet: Wallet, vault: Vault, password: string, secret: string, mnemonicSalt?: string): Promise<void>
+export async function _load (wallet: Wallet, vault: Vault, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
        if (typeof password !== 'string') {
                throw new TypeError('Password must be a string')
        }
index ed58d863300dfa2e4ab4f75e5e61b62663219f9a..16d9b804fb16ed4a796bd975b89ac3748af4ecf2 100644 (file)
@@ -1,10 +1,10 @@
 //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
-import { WorkerQueue } from '../vault/worker-queue'
+import { Vault } from '../vault'
 
-export async function _lock (vault: WorkerQueue): Promise<void>
-export async function _lock (vault: WorkerQueue): Promise<void> {
+export async function _lock (vault: Vault): Promise<void>
+export async function _lock (vault: Vault): Promise<void> {
        try {
                const { isLocked } = await vault.request<boolean>({
                        action: 'lock'
index 358526b809419115ece548d15e5b8f0f2ff8d647..8346401560e19b48eded148d4095737d565ab746 100644 (file)
@@ -3,10 +3,10 @@
 
 import { Block } from '../block'
 import { bytes, hex } from '../convert'
-import { WorkerQueue } from '../vault/worker-queue'
+import { Vault } from '../vault'
 
-export async function _sign (vault: WorkerQueue, index: number, block: Block): Promise<void>
-export async function _sign (vault: WorkerQueue, index: unknown, block: unknown): Promise<void> {
+export async function _sign (vault: Vault, index: number, block: Block): Promise<void>
+export async function _sign (vault: Vault, index: unknown, block: unknown): Promise<void> {
        try {
                if (typeof index !== 'number') {
                        throw new TypeError('Index must be a number', { cause: index })
index 5629b57c4954de54ef074e1e51f5c296811ca8be..0d6292542b9922916826929cb5e68bff1de02042 100644 (file)
@@ -4,10 +4,10 @@
 import { _get } from './get'
 import { utf8 } from '../convert'
 import { Wallet } from '#wallet'
-import { WorkerQueue } from '../vault/worker-queue'
+import { Vault } from '../vault'
 
-export async function _unlock (wallet: Wallet, vault: WorkerQueue, password: string): Promise<void>
-export async function _unlock (wallet: Wallet, vault: WorkerQueue, password: unknown): Promise<void> {
+export async function _unlock (wallet: Wallet, vault: Vault, password: string): Promise<void>
+export async function _unlock (wallet: Wallet, vault: Vault, password: unknown): Promise<void> {
        try {
                if (typeof password !== 'string') {
                        throw new TypeError('Password must be a string')