prettier-plugin-organize-imports
Version:
Make prettier organize your imports using the TypeScript language service API.
41 lines (36 loc) • 1.28 kB
JavaScript
const { dirname } = require('path');
const ts = require('typescript');
const { findTsconfig } = require('./find-tsconfig');
const { getCompilerOptions } = require('./get-compiler-options');
/**
* Create the most basic TS language service host for the given file to make import sorting work.
*
* @param {string} path path to file
* @param {string} content file's content
*
* @returns {ts.LanguageServiceHost}
*/
function getTypeScriptLanguageServiceHost(path, content) {
const tsconfig = findTsconfig(path);
const compilerOptions = getCompilerOptions(tsconfig);
const snapshot = ts.ScriptSnapshot.fromString(content);
return {
directoryExists: ts.sys.directoryExists,
fileExists: ts.sys.fileExists,
getDefaultLibFileName: ts.getDefaultLibFileName,
getDirectories: ts.sys.getDirectories,
readDirectory: ts.sys.readDirectory,
readFile: ts.sys.readFile,
getCurrentDirectory: () => (tsconfig ? dirname(tsconfig) : ts.sys.getCurrentDirectory()),
getCompilationSettings: () => compilerOptions,
getNewLine: () => ts.sys.newLine,
getScriptFileNames: () => [path],
getScriptVersion: () => '0',
getScriptSnapshot: (filePath) => {
if (filePath === path) {
return snapshot;
}
},
};
}
module.exports = { getTypeScriptLanguageServiceHost };