UNPKG

@overture-stack/lyric

Version:
35 lines (34 loc) 1.52 kB
import * as workerpool from 'workerpool'; import { processCommitSubmission } from './commitSubmissionWorker.js'; import { processDataValidation } from './dataValidationWorker.js'; import { initializeWorkerContext } from './workerContext.js'; // Store initialization promise once it has been initiated. let initializeWorkerPromise; // Export only registered functions on the worker via a proxy const workerProxy = { initializeWorker: async (appConfig) => { if (!initializeWorkerPromise) { initializeWorkerPromise = initializeWorkerContext(appConfig); } return await initializeWorkerPromise; }, commitSubmission: async (input) => { if (!initializeWorkerPromise) { throw new Error('Worker not initialized. Make sure initializeWorker is called first.'); } // This avoids processing commit submissions before the worker is fully initialized await initializeWorkerPromise; const result = await processCommitSubmission(input); // TODO: Consider sending result back to main thread in chuncks // workerpool.workerEmit({ type: 'chunk', chunk: { type: 'commitResult', result } }); return result; }, dataValidation: async (input) => { if (!initializeWorkerPromise) { throw new Error('Worker not initialized. Call initializeWorker first.'); } await initializeWorkerPromise; return await processDataValidation(input); }, }; workerpool.worker(workerProxy);