You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			804 B
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			39 lines
		
	
	
		
			804 B
		
	
	
	
		
			JavaScript
		
	
| /* global dcodeIO */
 | |
| /* eslint-disable strict */
 | |
| 
 | |
| const functions = {
 | |
|   arrayBufferToStringBase64,
 | |
| };
 | |
| 
 | |
| onmessage = async e => {
 | |
|   const [jobId, fnName, ...args] = e.data;
 | |
| 
 | |
|   try {
 | |
|     const fn = functions[fnName];
 | |
|     if (!fn) {
 | |
|       throw new Error(`Worker: job ${jobId} did not find function ${fnName}`);
 | |
|     }
 | |
|     const result = await fn(...args);
 | |
|     postMessage([jobId, null, result]);
 | |
|   } catch (error) {
 | |
|     const errorForDisplay = prepareErrorForPostMessage(error);
 | |
|     postMessage([jobId, errorForDisplay]);
 | |
|   }
 | |
| };
 | |
| 
 | |
| function prepareErrorForPostMessage(error) {
 | |
|   if (!error) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   if (error.stack) {
 | |
|     return error.stack;
 | |
|   }
 | |
| 
 | |
|   return error.message;
 | |
| }
 | |
| 
 | |
| function arrayBufferToStringBase64(arrayBuffer) {
 | |
|   return dcodeIO.ByteBuffer.wrap(arrayBuffer).toString('base64');
 | |
| }
 |