(options, setParentNodes, system)
| 115776 | /*@internal*/ |
| 115777 | // TODO(shkamat): update this after reworking ts build API |
| 115778 | function createCompilerHostWorker(options, setParentNodes, system) { |
| 115779 | if (system === void 0) { system = ts.sys; } |
| 115780 | var existingDirectories = new ts.Map(); |
| 115781 | var getCanonicalFileName = ts.createGetCanonicalFileName(system.useCaseSensitiveFileNames); |
| 115782 | var computeHash = ts.maybeBind(system, system.createHash) || ts.generateDjb2Hash; |
| 115783 | function getSourceFile(fileName, languageVersionOrOptions, onError) { |
| 115784 | var text; |
| 115785 | try { |
| 115786 | ts.performance.mark("beforeIORead"); |
| 115787 | text = compilerHost.readFile(fileName); |
| 115788 | ts.performance.mark("afterIORead"); |
| 115789 | ts.performance.measure("I/O Read", "beforeIORead", "afterIORead"); |
| 115790 | } |
| 115791 | catch (e) { |
| 115792 | if (onError) { |
| 115793 | onError(e.message); |
| 115794 | } |
| 115795 | text = ""; |
| 115796 | } |
| 115797 | return text !== undefined ? ts.createSourceFile(fileName, text, languageVersionOrOptions, setParentNodes) : undefined; |
| 115798 | } |
| 115799 | function directoryExists(directoryPath) { |
| 115800 | if (existingDirectories.has(directoryPath)) { |
| 115801 | return true; |
| 115802 | } |
| 115803 | if ((compilerHost.directoryExists || system.directoryExists)(directoryPath)) { |
| 115804 | existingDirectories.set(directoryPath, true); |
| 115805 | return true; |
| 115806 | } |
| 115807 | return false; |
| 115808 | } |
| 115809 | function writeFile(fileName, data, writeByteOrderMark, onError) { |
| 115810 | try { |
| 115811 | ts.performance.mark("beforeIOWrite"); |
| 115812 | // NOTE: If patchWriteFileEnsuringDirectory has been called, |
| 115813 | // the system.writeFile will do its own directory creation and |
| 115814 | // the ensureDirectoriesExist call will always be redundant. |
| 115815 | ts.writeFileEnsuringDirectories(fileName, data, writeByteOrderMark, function (path, data, writeByteOrderMark) { return writeFileWorker(path, data, writeByteOrderMark); }, function (path) { return (compilerHost.createDirectory || system.createDirectory)(path); }, function (path) { return directoryExists(path); }); |
| 115816 | ts.performance.mark("afterIOWrite"); |
| 115817 | ts.performance.measure("I/O Write", "beforeIOWrite", "afterIOWrite"); |
| 115818 | } |
| 115819 | catch (e) { |
| 115820 | if (onError) { |
| 115821 | onError(e.message); |
| 115822 | } |
| 115823 | } |
| 115824 | } |
| 115825 | var outputFingerprints; |
| 115826 | function writeFileWorker(fileName, data, writeByteOrderMark) { |
| 115827 | if (!ts.isWatchSet(options) || !system.getModifiedTime) { |
| 115828 | system.writeFile(fileName, data, writeByteOrderMark); |
| 115829 | return; |
| 115830 | } |
| 115831 | if (!outputFingerprints) { |
| 115832 | outputFingerprints = new ts.Map(); |
| 115833 | } |
| 115834 | var hash = computeHash(data); |
| 115835 | var mtimeBefore = system.getModifiedTime(fileName); |
no test coverage detected
searching dependent graphs…