fork-ts-checker-webpack-plugin
Version:
Runs typescript type checker and linter on separate process.
69 lines (68 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* It's an implementation of FileSystem interface which reads from the real file system, but write to the in-memory file system.
*
* @param memFileSystem
* @param realFileSystem
*/
function createPassiveFileSystem(memFileSystem, realFileSystem) {
function exists(path) {
return realFileSystem.exists(path) || memFileSystem.exists(path);
}
function readFile(path, encoding) {
const fsStats = realFileSystem.readStats(path);
const memStats = memFileSystem.readStats(path);
if (fsStats && memStats) {
return fsStats.mtimeMs > memStats.mtimeMs
? realFileSystem.readFile(path, encoding)
: memFileSystem.readFile(path, encoding);
}
else if (fsStats) {
return realFileSystem.readFile(path, encoding);
}
else if (memStats) {
return memFileSystem.readFile(path, encoding);
}
}
function readDir(path) {
const fsDirents = realFileSystem.readDir(path);
const memDirents = memFileSystem.readDir(path);
// merge list of dirents from fs and mem
return fsDirents
.filter((fsDirent) => !memDirents.some((memDirent) => memDirent.name === fsDirent.name))
.concat(memDirents);
}
function readStats(path) {
const fsStats = realFileSystem.readStats(path);
const memStats = memFileSystem.readStats(path);
if (fsStats && memStats) {
return fsStats.mtimeMs > memStats.mtimeMs ? fsStats : memStats;
}
else if (fsStats) {
return fsStats;
}
else if (memStats) {
return memStats;
}
}
return Object.assign(Object.assign({}, memFileSystem), { exists(path) {
return exists(realFileSystem.realPath(path));
},
readFile(path, encoding) {
return readFile(realFileSystem.realPath(path), encoding);
},
readDir(path) {
return readDir(realFileSystem.realPath(path));
},
readStats(path) {
return readStats(realFileSystem.realPath(path));
},
realPath(path) {
return realFileSystem.realPath(path);
},
clearCache() {
realFileSystem.clearCache();
} });
}
exports.createPassiveFileSystem = createPassiveFileSystem;