fuse-box-typechecker
Version:
Fuse-Box type checker plugin for fusebox 4.0.0 ++
76 lines (68 loc) • 2.9 kB
text/typescript
import { WorkerCommand, IWorkerOptions, IResults } from './interfaces';
import { inspectCode } from './inspectCode';
import { printResult } from './printResult';
import { watchSrc } from './watchSrc';
import { printSettings } from './printSettings';
import { debugPrint } from './debugPrint';
let lastResult: IResults;
let printErrorTotal: number;
// listen for messages
process.on('message', function(msg: IWorkerOptions) {
debugPrint(`worker message recived ${msg.type}`);
switch (msg.type) {
// tell checker to inspect code
case WorkerCommand.inspectCode:
debugPrint('worker inspectCode');
if (msg.options) {
lastResult = inspectCode(msg.options, lastResult && lastResult.oldProgram);
} else {
throw new Error('You tried to inspect code without ts/lint options');
}
break;
// tell checker to inspect code
case WorkerCommand.inspectCodeAndPrint:
debugPrint('worker inspectCodeAndPrint');
if (msg.options) {
lastResult = inspectCode(msg.options, lastResult && lastResult.oldProgram);
printErrorTotal = printResult(msg.options, lastResult);
printErrorTotal = printErrorTotal;
} else {
throw new Error('You tried to inspect code without ts/lint options');
}
break;
case WorkerCommand.printResult:
debugPrint('worker printResult');
if (msg.options && lastResult) {
printErrorTotal = printResult(msg.options, lastResult);
} else {
throw new Error(
'You tried to print code without ts/lint options or without having inspected code'
);
}
break;
case WorkerCommand.printSettings:
debugPrint('worker printSettings');
if (msg.options) {
printSettings(msg.options);
} else {
throw new Error(
'You tried to print settings without ts/lint options or without having inspected code'
);
}
break;
case WorkerCommand.watch:
debugPrint('worker watch');
if (msg.options) {
watchSrc(msg.pathToWatch, msg.options, () => {
lastResult = inspectCode(msg.options, lastResult && lastResult.oldProgram);
printErrorTotal = printResult(msg.options, lastResult);
});
} else {
throw new Error(
'You tried to print code without ts/lint options or without having inspected code'
);
}
break;
}
});
debugPrint('worker started');