UNPKG

alm

Version:

The best IDE for TypeScript

57 lines (56 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var sw = require("../../utils/simpleWorker"); var contract = require("./lintContract"); var utils_1 = require("../../../common/utils"); var types_1 = require("../../../common/types"); /** This is were we push the errors */ var globalErrorCacheServer_1 = require("../../globalErrorCacheServer"); /** This is where we get the active project information from */ var activeProjectConfig = require("../../disk/activeProjectConfig"); var projectDataLoader = require("../../disk/projectDataLoader"); var fmc = require("../../disk/fileModelCache"); var flm = require("../fileListing/fileListingMaster"); var Master; (function (Master) { Master.receiveErrorCacheDelta = function (data) { globalErrorCacheServer_1.errorsCache.applyDelta(data); return utils_1.resolve({}); }; })(Master || (Master = {})); // Ensure that the namespace follows the contract var _checkTypes = Master; // launch worker exports.worker = sw.startWorker({ workerPath: __dirname + '/lintWorker', workerContract: contract.worker, masterImplementation: Master }).worker; function start() { var lastProjectData = null; activeProjectConfig.activeProjectConfigDetailsUpdated.on(function (activeProjectConfigDetails) { var projectData = projectDataLoader.getProjectDataLoaded(activeProjectConfigDetails); lastProjectData = projectData; exports.worker.setProjectData(projectData); }); // only saved ones as linter reads directly from disk and works on whole file contents fmc.didStatusChange.on(function (update) { return update.saved && exports.worker.fileSaved({ filePath: update.filePath }); }); // We really want to clear errors if someone deletes some file flm.fileListingDelta.on(function (delta) { if (!lastProjectData) return; /** * NOTE: it might be better if `activeProjectConfig` did this stuff and just asked us to sync * using `acitveProjectConfigDetailsUpdated` * PS: adding any file just works as its handled by `didStatusChange` */ var relevant = delta.removedFilePaths .filter(function (x) { return x.type == types_1.FilePathType.File; }) .filter(function (x) { return x.filePath.endsWith('tslint.json') || x.filePath.endsWith('.ts'); }) .map(function (x) { return x.filePath; }); if (relevant.length) { exports.worker.setProjectData(lastProjectData); } }); } exports.start = start;