UNPKG

alm

Version:

The best IDE for TypeScript

58 lines (57 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var events = require("../../../../common/events"); var projectService = require("../projectService"); var utils = require("../../../../common/utils"); /** * Expose changes to the outside world */ exports.fileOuputStatusUpdated = new events.TypedEvent(); exports.completeOutputStatusCacheUpdated = new events.TypedEvent(); exports.liveBuildResults = new events.TypedEvent(); /** * Hot cache */ var outputStatusCache = {}; var updateEmitForFile = utils.triggeredDebounce({ func: function (e) { var res = projectService.getJSOutputStatus(e); if (!res.inActiveProject) return; var newStatus = res.outputStatus; outputStatusCache[e.filePath] = newStatus; exports.fileOuputStatusUpdated.emit(newStatus); }, mustcall: function (n, o) { return o.filePath !== n.filePath; }, milliseconds: 1000 }); /** * Subscribe to external changes */ exports.fileEdited = updateEmitForFile; exports.fileChangedOnDisk = updateEmitForFile; exports.fileSaved = updateEmitForFile; /** * Complete initial cache sending */ exports.trottledSend = utils.throttle(function (e) { exports.liveBuildResults.emit(e); }, 1000); exports.doCompleteProjectCacheUpdate = function (proj) { console.log('[EMIT] Starting emit'); outputStatusCache = {}; var srcFiles = proj.getProjectSourceFiles(); srcFiles.forEach(function (sf, i) { var filePath = sf.fileName; var res = projectService.getJSOutputStatus({ filePath: filePath }); outputStatusCache[filePath] = res.outputStatus; exports.trottledSend({ builtCount: i + 1, totalCount: srcFiles.length, }); }); exports.completeOutputStatusCacheUpdated.emit(outputStatusCache); console.log('[EMIT] Completed emit'); };