"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path_1 = require("path"); var utils_1 = require("./utils"); var lodash_1 = require("lodash"); var GraphQLProjectConfig_1 = require("./GraphQLProjectConfig"); var GraphQLConfig = /** @class */ (function () { function GraphQLConfig(config, configPath) { utils_1.validateConfig(config); this.config = config; this.configPath = configPath; } Object.defineProperty(GraphQLConfig.prototype, "configDir", { get: function () { return path_1.dirname(this.configPath); }, enumerable: true, configurable: true }); GraphQLConfig.prototype.getProjectConfig = function (projectName) { return new GraphQLProjectConfig_1.GraphQLProjectConfig(this.config, this.configPath, projectName); }; GraphQLConfig.prototype.getConfigForFile = function (filePath) { var projects = this.config.projects; if (!projects || Object.keys(projects).length === 0) { var config = new GraphQLProjectConfig_1.GraphQLProjectConfig(this.config, this.configPath, undefined); return config.includesFile(filePath) ? config : undefined; } return lodash_1.values(this.getProjects()).find(function (project) { return project.includesFile(filePath); }) || undefined; }; GraphQLConfig.prototype.getProjectNameForFile = function (filePath) { var proj = this.getConfigForFile(filePath); return proj && proj.projectName || undefined; }; GraphQLConfig.prototype.getProjects = function () { var result = {}; for (var projectName in (this.config.projects || {})) { result[projectName] = this.getProjectConfig(projectName); } if (Object.keys(result).length === 0) { return undefined; } return result; }; GraphQLConfig.prototype.saveConfig = function (newConfig, projectName) { var config; if (projectName) { config = this.config; config.projects = config.projects || {}; config.projects[projectName] = config.projects[projectName] || {}; config.projects[projectName] = newConfig; } else { config = newConfig; } utils_1.writeConfig(this.configPath, config); }; return GraphQLConfig; }()); exports.GraphQLConfig = GraphQLConfig;