- Added `cli-package/brainy-wrapper.js` to patch global `TextEncoder` and `TextDecoder` for Node.js environments, ensuring compatibility with TensorFlow.js. - Implemented unified text encoding utilities in `cli-package/src/utils/textEncoding.ts` for cross-environment consistency. - Enhanced `src/worker.js` and introduced `src/worker.ts` to improve worker execution with better function serialization and error handling. - Updated `package.json`: - Modified the `build` script to include a patch for `TextEncoder`. - Added `test-all` script for multi-environment testing. - Introduced the Puppeteer dependency for browser testing. - Created a favicon generation script `scripts/create-favicon.js` using a base64-encoded icon. - Added `scripts/test-all-environments.js` to run automated tests across Node.js, browser, and CLI environments. - Enhanced `src/utils/workerUtils.ts` to support improved fallback mechanisms and robust worker pooling. This update improves the project's compatibility across environments, refines worker functionalities, and adds comprehensive testing support for reliability.
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
// Brainy Worker Script
|
|
// This script is used by the workerUtils.js file to execute functions in a separate thread
|
|
|
|
// Import text encoding utilities
|
|
import { applyTensorFlowPatch } from './utils/textEncoding.js'
|
|
|
|
// Apply the TensorFlow.js platform patch if needed
|
|
applyTensorFlowPatch()
|
|
|
|
// Log that the worker has started
|
|
console.log('Brainy Worker: Started')
|
|
|
|
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')
|
|
const fn = new Function('return ' + e.data.fnString)()
|
|
|
|
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
|
|
})
|
|
}
|
|
}
|