"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path_1 = require("path"); var fs_1 = require("fs"); var errors_1 = require("./errors"); exports.GRAPHQL_CONFIG_NAME = '.graphqlconfig'; exports.GRAPHQL_CONFIG_YAML_NAME = '.graphqlconfig.yaml'; exports.GRAPHQL_CONFIG_YML_NAME = '.graphqlconfig.yml'; function isRootDir(path) { return path_1.dirname(path) === path; } function findGraphQLConfigFile(filePath) { filePath = path_1.resolve(filePath); if (filePath.endsWith(exports.GRAPHQL_CONFIG_NAME) || filePath.endsWith(exports.GRAPHQL_CONFIG_YAML_NAME) || filePath.endsWith(exports.GRAPHQL_CONFIG_YML_NAME)) { return filePath; } var currentDir = filePath; while (!isRootDir(currentDir)) { var configPath = path_1.join(currentDir, exports.GRAPHQL_CONFIG_NAME); if (fs_1.existsSync(configPath)) { return configPath; } if (fs_1.existsSync(configPath + '.yaml')) { return configPath + '.yaml'; } if (fs_1.existsSync(configPath + '.yml')) { return configPath + '.yml'; } currentDir = path_1.dirname(currentDir); } // Try to find GraphQL config in first level of sub-directories. var subDirectories = fs_1.readdirSync(filePath).map(function (dir) { return path_1.join(filePath, dir); }).filter(function (dir) { return (fs_1.lstatSync(dir).isDirectory()); }); var subDirectoriesWithGraphQLConfig = subDirectories.map(function (subDirectory) { var subDirectoryFiles = fs_1.readdirSync(subDirectory) .filter(function (file) { return !(fs_1.lstatSync(path_1.join(subDirectory, file)).isDirectory()); }) .map(function (file) { return path_1.basename(path_1.join(subDirectory, file)); }); if (subDirectoryFiles.includes(exports.GRAPHQL_CONFIG_NAME)) { return subDirectory + "/" + exports.GRAPHQL_CONFIG_NAME; } if (subDirectoryFiles.includes(exports.GRAPHQL_CONFIG_NAME + ".yml")) { return subDirectory + "/" + exports.GRAPHQL_CONFIG_NAME + ".yml"; } if (subDirectoryFiles.includes(exports.GRAPHQL_CONFIG_NAME + ".yaml")) { return subDirectory + "/" + exports.GRAPHQL_CONFIG_NAME + ".yaml"; } }).filter(function (subDirectory) { return Boolean(subDirectory); }); if (subDirectoriesWithGraphQLConfig.length > 0) { return subDirectoriesWithGraphQLConfig[0]; } throw new errors_1.ConfigNotFoundError("\"" + exports.GRAPHQL_CONFIG_NAME + "\" file is not available in the provided config " + ("directory: " + filePath + "\nPlease check the config directory.")); } exports.findGraphQLConfigFile = findGraphQLConfigFile;