doesitarm/helpers/scanner/client.mjs
2022-08-07 14:33:58 -05:00

48 lines
1.4 KiB
JavaScript

import AppScanWorker from '~/helpers/scanner/worker.js?worker'
export async function runScanWorker ( file ) {
// console.log( 'file', file )
const appScanWorker = new AppScanWorker()
const scan = await new Promise( ( resolve, reject ) => {
// Set up the worker message handler
appScanWorker.onmessage = async (event) => {
// console.log( 'Main received message', event )
const { status } = event.data
// Resolves promise on finished status
if ( status === 'finished' ) {
const { scan } = event.data
resolve( scan )
}
}
// Set up the worker error handler
appScanWorker.onerror = async ( errorEvent ) => {
// console.log( 'appScanWorker.onerror', errorEvent )
reject()
}
// Start the worker
// https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
appScanWorker.postMessage( {
status: 'start',
options: {
fileLoader: () => ({
...file,
arrayBuffer: file.arrayBuffer
}),
messageReceiver: ( details ) => {
console.log( 'Scan message:', details )
}
}
}, [ file.arrayBuffer ] )
})
return {
scan,
appScanWorker
}
}