alm
Version:
The best IDE for TypeScript
58 lines (57 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var sw = require("../../utils/simpleWorker");
var contract = require("./fileListingContract");
var events_1 = require("../../../common/events");
var workingDir = require("../../disk/workingDir");
var serverExit_1 = require("../../../socket/serverExit");
var chalk = require("chalk");
/** called whenever the list of files we know about is updated */
exports.filePathsUpdated = new events_1.TypedEvent();
/** only starts getting called when the initial file paths listing is completed */
exports.filePathsCompleted = new events_1.TypedEvent();
/**
* Incremental and buffered
*/
exports.fileListingDelta = new events_1.TypedEvent();
var gfileListingDelta = exports.fileListingDelta;
var Master;
(function (Master) {
Master.increment = function (q) {
return Promise.resolve({
num: ++q.num
});
};
Master.abort = function (q) {
console.log(chalk.red(q.errorMessage));
serverExit_1.emitServerExit();
return Promise.resolve({});
};
/** warning, this function is named differently from the event filePathsUpdated for a reason */
Master.fileListUpdated = function (q) {
if (q.completed) {
exports.filePathsCompleted.emit({ filePaths: q.filePaths, rootDir: workingDir.getProjectRoot(), completed: q.completed });
}
exports.filePathsUpdated.emit({ filePaths: q.filePaths, rootDir: workingDir.getProjectRoot(), completed: q.completed });
return Promise.resolve({});
};
Master.fileListingDelta = function (q) {
gfileListingDelta.emit(q);
return Promise.resolve({});
};
})(Master || (Master = {}));
// Ensure that the namespace follows the contract
var _checkTypes = Master;
// launch worker
exports.worker = sw.startWorker({
workerPath: __dirname + '/fileListingWorker',
workerContract: contract.worker,
masterImplementation: Master,
onCrashRestart: function () {
start();
}
}).worker;
function start() {
exports.worker.setupWatch({ directory: workingDir.getProjectRoot() });
}
exports.start = start;