ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
52 lines (50 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./../../utils");
function getFileSystemHostWithFiles(files, initialDirectories = []) {
files.forEach(file => {
file.filePath = utils_1.FileUtils.getStandardizedAbsolutePath(file.filePath);
});
const writeLog = [];
const syncWriteLog = [];
const directories = [...initialDirectories];
return {
readFile: filePath => {
const file = files.find(f => f.filePath === filePath);
if (file == null)
throw new Error(`Can't find file ${filePath}.`);
return file.text;
},
writeFile: (filePath, fileText) => {
writeLog.push({ filePath, fileText });
files.push({ filePath, text: fileText });
return Promise.resolve();
},
writeFileSync: (filePath, fileText) => {
syncWriteLog.push({ filePath, fileText });
files.push({ filePath, text: fileText });
},
fileExists: filePath => {
filePath = utils_1.FileUtils.getStandardizedAbsolutePath(filePath);
return Promise.resolve(files.some(f => f.filePath === filePath));
},
fileExistsSync: filePath => {
filePath = utils_1.FileUtils.getStandardizedAbsolutePath(filePath);
return files.some(f => f.filePath === filePath);
},
getCurrentDirectory: () => utils_1.FileUtils.getCurrentDirectory(),
mkdir: dirPath => {
directories.push(dirPath);
return Promise.resolve();
},
mkdirSync: dirPath => directories.push(dirPath),
directoryExists: dirPath => Promise.resolve(directories.indexOf(dirPath) >= 0),
directoryExistsSync: dirPath => directories.indexOf(dirPath) >= 0,
glob: patterns => [],
getSyncWriteLog: () => [...syncWriteLog],
getWriteLog: () => [...writeLog],
getCreatedDirectories: () => [...directories].filter(path => initialDirectories.indexOf(path) === -1)
};
}
exports.getFileSystemHostWithFiles = getFileSystemHostWithFiles;
//# sourceMappingURL=fileSystemHostHelpers.js.map