54 lines
2.3 KiB
JavaScript
54 lines
2.3 KiB
JavaScript
|
|
// Brainy Worker Script
|
||
|
|
// This script is used by the workerUtils.js file to execute functions in a separate thread
|
||
|
|
// Note: TensorFlow.js platform patch is applied in setup.ts
|
||
|
|
// Worker scripts should import setup.ts if they need TensorFlow.js functionality
|
||
|
|
// Log that the worker has started
|
||
|
|
console.log('Brainy Worker: Started');
|
||
|
|
// Define the message handler with proper TypeScript typing
|
||
|
|
self.onmessage = function (e) {
|
||
|
|
try {
|
||
|
|
console.log('Brainy Worker: Received message', e.data ? 'with data' : 'without data');
|
||
|
|
if (!e.data || !e.data.fnString) {
|
||
|
|
throw new Error('Invalid message: missing function string');
|
||
|
|
}
|
||
|
|
console.log('Brainy Worker: Creating function from string');
|
||
|
|
// Use Function constructor to create a function from the string
|
||
|
|
let fn;
|
||
|
|
try {
|
||
|
|
// First try with 'return' prefix
|
||
|
|
fn = new Function('return ' + e.data.fnString)();
|
||
|
|
}
|
||
|
|
catch (functionError) {
|
||
|
|
console.warn('Brainy Worker: Error creating function with return syntax, trying alternative approaches', functionError);
|
||
|
|
try {
|
||
|
|
// Try wrapping in parentheses for function expressions
|
||
|
|
fn = new Function('return (' + e.data.fnString + ')')();
|
||
|
|
}
|
||
|
|
catch (wrapError) {
|
||
|
|
console.warn('Brainy Worker: Error creating function with parentheses wrapping', wrapError);
|
||
|
|
try {
|
||
|
|
// Try direct approach for named functions
|
||
|
|
fn = new Function(e.data.fnString)();
|
||
|
|
}
|
||
|
|
catch (directError) {
|
||
|
|
console.error('Brainy Worker: All approaches to create function failed', directError);
|
||
|
|
throw new Error('Failed to create function from string: ' +
|
||
|
|
functionError.message);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
console.log('Brainy Worker: Executing function with args');
|
||
|
|
const result = fn(e.data.args);
|
||
|
|
console.log('Brainy Worker: Function executed successfully, posting result');
|
||
|
|
self.postMessage({ result: result });
|
||
|
|
}
|
||
|
|
catch (error) {
|
||
|
|
console.error('Brainy Worker: Error executing function', error);
|
||
|
|
self.postMessage({
|
||
|
|
error: error.message,
|
||
|
|
stack: error.stack
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|
||
|
|
export {};
|
||
|
|
//# sourceMappingURL=worker.js.map
|