alm
Version:
The best IDE for TypeScript
58 lines (57 loc) • 1.88 kB
JavaScript
;
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');
};