import { Account } from './lib/account'
import { Block } from './lib/block'
import { Blake2b } from './lib/crypto'
+import * as Errors from './lib/errors'
import { Ledger } from './lib/ledger'
import { Rolodex } from './lib/rolodex'
import { Rpc } from './lib/rpc'
Account,
Blake2b,
Block,
+ Errors,
Ledger,
Rolodex,
Rpc,
import { Worker as NodeWorker } from 'node:worker_threads'
import { dec } from '../convert'
import { Data } from '../database'
+import { VaultError } from '../errors'
export type TaskData = {
[key: string]: Data | Record<string, Data>
timeout: number | NodeJS.Timeout
}
-class VaultError extends Error { }
-
//@ts-expect-error
const vaultWorker = VAULT_WORKER
const LOCKED = 'locked'
BROWSER: URL.revokeObjectURL(this.#url)
//@ts-expect-error
NODE: this.#worker.unref()
+ this.#rejectAll(err)
+ }
+
+ #rejectAll (err?: any): void {
for (const [_, task] of this.#tasks) {
- task?.reject?.(err ?? TERMINATED)
+ clearTimeout(task.timeout)
+ task.reject(err ?? TERMINATED)
}
this.#tasks.clear()
}
const { taskUrl, taskId, error, isLocked } = results
if (taskUrl === this.#url) {
if (typeof taskId !== 'string') {
- return this.terminate(new VaultError('Invalid taskId', { cause: taskId ?? typeof taskId }))
+ return this.#rejectAll(new VaultError('Invalid taskId encountered, restart request', { cause: taskId ?? typeof taskId }))
}
if (typeof isLocked === 'boolean' && this.#isLocked !== isLocked) {
this.#isLocked = isLocked