UNPKG

bobflux-gen

Version:

Generator for monkey files in bobflux application.

86 lines (85 loc) 3.3 kB
"use strict"; var pu = require("./pathUtils"); var ts = require("typescript"); var fs = require("fs"); var pathPlatformDependent = require("path"); var path = pathPlatformDependent.posix; // This works everythere, just use forward slashes var defaultLibFilename = path.join(path.dirname(require.resolve("typescript").replace(/\\/g, "/")), "lib.es6.d.ts"); function createCompilerHost(currentDirectory, logger) { function getCanonicalFileName(fileName) { return ts.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); } function getSourceFile(filename, languageVersion, onError) { if (filename === defaultLibFilename) { return null; } try { var filePath = filename === defaultLibFilename ? defaultLibFilename : path.join(currentDirectory, filename); var text = fs.readFileSync(filePath).toString(); } catch (e) { logger.error("Error during source file reading: " + filename, e); return null; } return ts.createSourceFile(filename, text, languageVersion, true); } function writeFile(fileName, data, writeByteOrderMark, onError) { try { var text = ts.sys.readFile(fileName, 'utf-8'); } catch (e) { text = ""; } if (text === data) { fs.utimesSync(fileName, new Date(), new Date()); return; } try { ts.sys.writeFile(fileName, data, false); } catch (e) { if (onError) { onError(e.message); } } } function resolveModuleName(moduleName, containingFile) { if (moduleName.substr(0, 1) === '.') { var res = moduleName + ".ts"; var resRelative = pu.normalizePath(currentDirectory, containingFile, res); return { resolvedFileName: resRelative }; } return null; } return { getSourceFile: getSourceFile, getDirectories: function (path) { logger.error('tsCompilerHost.getDirectories() is not implemented!', path); throw new Error("tsCompilerHost.getDirectories() is not implemented! path requested: " + path); // return []; }, getDefaultLibFileName: function (options) { return defaultLibFilename; }, writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory; }, useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return '\n'; }, fileExists: function (fileName) { try { return fs.statSync(path.join(currentDirectory, fileName)).isFile(); } catch (e) { return false; } }, readFile: function (fileName) { return fs.readFileSync(path.join(currentDirectory, fileName)).toString(); }, resolveModuleNames: function (moduleNames, containingFile) { return moduleNames.map(function (n) { return resolveModuleName(n, containingFile); }); } }; } exports.createCompilerHost = createCompilerHost;