text: "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  var ts = require("typescript");
  var fs = require("fs");
  var path = require("path");
  var TSCONFIG_CACHE = {};
  function createDefaultFormatCodeSettings() {
      return {
          baseIndentSize: 0,
          indentSize: 4,
          tabSize: 4,
          indentStyle: ts.IndentStyle.Smart,
          newLineCharacter: "\r\n",
          convertTabsToSpaces: true,
          insertSpaceAfterCommaDelimiter: true,
          insertSpaceAfterSemicolonInForStatements: true,
          insertSpaceBeforeAndAfterBinaryOperators: true,
          insertSpaceAfterConstructor: false,
          insertSpaceAfterKeywordsInControlFlowStatements: true,
          insertSpaceAfterFunctionKeywordForAnonymousFunctions: false,
          insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false,
          insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false,
          insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,
          insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false,
          insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false,
          insertSpaceAfterTypeAssertion: false,
          insertSpaceBeforeFunctionParenthesis: false,
          placeOpenBraceOnNewLineForFunctions: false,
          placeOpenBraceOnNewLineForControlBlocks: false,
          insertSpaceBeforeTypeAnnotation: false,
      };
  }
  exports.createDefaultFormatCodeSettings = createDefaultFormatCodeSettings;
  function getConfigFileName(baseDir, configFileName) {
      var configFilePath = path.resolve(baseDir, configFileName);
      if (fs.existsSync(configFilePath)) {
          return configFilePath;
      }
      if (baseDir.length === path.dirname(baseDir).length) {
          return null;
      }
      return getConfigFileName(path.resolve(baseDir, "../"), configFileName);
  }
  exports.getConfigFileName = getConfigFileName;
  function readFilesFromTsconfig(configPath) {
      return readTsconfig(configPath).fileNames;
  }
  exports.readFilesFromTsconfig = readFilesFromTsconfig;
  function readTsconfig(configPath) {
      if (TSCONFIG_CACHE[configPath]) {
          return TSCONFIG_CACHE[configPath];
      }
      // for `extends` support. It supported from TypeScript 2.1.1.
      // `& { readFile(path: string): string; }` is backword compat for TypeScript compiler 2.0.3 support.
      var host = {
          useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
          readDirectory: ts.sys.readDirectory,
          fileExists: function (path) { return fs.existsSync(path); },
          readFile: function (path) { return fs.readFileSync(path, "utf-8"); },
      };
      var rootConfig = parseJSON(fs.readFileSync(configPath, "utf-8"));
      var parsed = ts.parseJsonConfigFileContent(rootConfig, host, path.dirname(configPath));
      if (parsed.errors && parsed.errors.length !== 0) {
          throw new Error(parsed.errors.map(function (e) { return e.messageText; }).join("\n"));
      }
      TSCONFIG_CACHE[configPath] = parsed;
      return parsed;
  }
  exports.readTsconfig = readTsconfig;
  function parseJSON(jsonText) {
      var result = ts.parseConfigFileTextToJson("tmp.json", jsonText);
      if (result.error) {
          throw new Error("JSON parse error");
      }
      return result.config;
  }
  exports.parseJSON = parseJSON;
  //# sourceMappingURL=utils.js.map