All files / src/functions/action add.action.workers.ts

100% Statements 13/13
100% Branches 6/6
100% Functions 1/1
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29      2x     2x   2x 4x   4x 4x   4x 4x   4x 3x       3x   3x        
'use strict';
 
import {ActionAsWorkerInterface} from '@owservable/actions';
import {listSubfoldersFilesByFolderName} from '@owservable/folders';
 
import WorkerType from '../../types/worker.type';
import executeWorker from '../execute/execute.worker';
 
export default function addActionWorkers(root: string, folderName: string): void {
	const actionPaths: string[] = listSubfoldersFilesByFolderName(root, folderName);
 
	for (const actionPath of actionPaths) {
		console.log('[@owservable] -> Initializing worker action', actionPath);
		// tslint:disable-next-line:callable-types
		const ActionClass: new () => ActionAsWorkerInterface = require(actionPath).default;
		const action: ActionAsWorkerInterface = new ActionClass();
 
		if (typeof action.asWorker === 'function') {
			const job: WorkerType = {
				...(action.asWorkerInit && {init: action.asWorkerInit}),
				work: action.asWorker
			};
			if (typeof action.asWorkerInit === 'function') job.init = action.asWorkerInit;
 
			executeWorker(job);
		}
	}
}