woolball-client
Version:
Client-side library for Woolball enabling secure browser resource sharing for distributed AI task processing
53 lines (52 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.process = void 0;
const tasks_1 = require("../../utils/tasks");
const process = async ({ data }) => {
const { task, ...taskData } = data;
try {
for (const key in taskData) {
if (taskData[key] === 'true') {
taskData[key] = true;
}
if (taskData[key] === 'false') {
taskData[key] = false;
}
}
const processor = tasks_1.taskProcessors[task];
if (!processor) {
console.error(`[Worker] Error: Unsupported task: ${task}`);
throw new Error(`Unsupported task: ${task}`);
}
console.log(`[Worker] Processing task ${task} with processor`);
try {
const result = await processor(taskData);
console.log(`[Worker] Task ${task} completed successfully`);
self.postMessage(result);
}
catch (processorError) {
console.error(`[Worker] Error in ${task} processor:`, processorError);
// Report error without specific filtering
const errorMessage = processorError instanceof Error ? processorError.message : String(processorError);
self.postMessage({ error: errorMessage });
throw processorError; // Re-throw for logging
}
}
catch (e) {
const errorMessage = e instanceof Error ? e.message : String(e);
const errorStack = e instanceof Error ? e.stack : 'No stack trace available';
console.error('[Worker] Error:', errorMessage);
console.error('[Worker] Stack:', errorStack);
// We've already sent the message in the inner try/catch if it was a processor error
if (!(e instanceof Error && e.message.includes('processor'))) {
self.postMessage({ error: errorMessage });
}
}
};
exports.process = process;
self.onmessage = (event) => {
console.log('[Worker] Message received');
(0, exports.process)(event).catch(err => {
console.error('[Worker] Unhandled error:', err);
});
};