@overture-stack/lyric
Version:
Data Submission system
35 lines (34 loc) • 1.52 kB
JavaScript
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);