39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
"use strict";
|
|
var path = require("path");
|
|
var utils = require("./utils");
|
|
var constants = require("./constants");
|
|
/**
|
|
* Make function which will manually update changed files
|
|
*/
|
|
function makeWatchRun(instance) {
|
|
var lastTimes = {};
|
|
var startTime = null;
|
|
return function (watching, cb) {
|
|
var watcher = watching.compiler.watchFileSystem.watcher ||
|
|
watching.compiler.watchFileSystem.wfs.watcher;
|
|
if (null === instance.modifiedFiles) {
|
|
instance.modifiedFiles = {};
|
|
}
|
|
startTime = startTime || watching.startTime;
|
|
var times = watcher.getTimes();
|
|
Object.keys(times)
|
|
.filter(function (filePath) {
|
|
return times[filePath] > (lastTimes[filePath] || startTime)
|
|
&& !!filePath.match(constants.tsTsxJsJsxRegex);
|
|
})
|
|
.forEach(function (filePath) {
|
|
lastTimes[filePath] = times[filePath];
|
|
filePath = path.normalize(filePath);
|
|
var file = instance.files[filePath];
|
|
if (file) {
|
|
file.text = utils.readFile(filePath) || '';
|
|
file.version++;
|
|
instance.version++;
|
|
instance.modifiedFiles[filePath] = file;
|
|
}
|
|
});
|
|
cb();
|
|
};
|
|
}
|
|
module.exports = makeWatchRun;
|