*/
// Initialize CPU
-let isReady: boolean = false
+let isWorkerReady: boolean = false
let worker: Worker
let url: string
-function setup (): void {
+function init (): void {
try {
url = URL.createObjectURL(new Blob([NanoNaClWorker], { type: 'text/javascript' }))
worker = new Worker(url, { type: 'module' })
console.log(`NanoNaCl initialized.`)
- isReady = true
+ isWorkerReady = true
} catch (err) {
- isReady = false
+ isWorkerReady = false
throw new Error('NanoNaCl initialization failed.', { cause: err })
}
}
function reset (): void {
console.warn(`NanoNaCl encountered an error. Reinitializing...`)
- isReady = false
+ isWorkerReady = false
worker.terminate()
- setup()
+ init()
}
-async function init (): Promise<void> {
- if (!isReady) setup()
+async function start (): Promise<void> {
+ if (!isWorkerReady) init()
return new Promise(async (ready, fail): Promise<void> => {
worker.onmessage = msg => msg.data === 'started' ? ready(msg.data) : fail(msg.data)
worker.onerror = err => fail(err.message)
async function run (data: Record<string, string>): Promise<string> {
try {
- await init()
+ await start()
} catch (err) {
console.error(err)
throw new Error('Error initializing worker')