graphql-config
Version:
The easiest way to configure your development environment with your GraphQL schema (supported by most tools, editors & IDEs)
35 lines (34 loc) • 1.25 kB
JavaScript
import { ConfigNotFoundError, ConfigEmptyError, composeMessage } from '../errors.js';
import { createCosmiConfig, createCosmiConfigSync } from './cosmiconfig.js';
const CWD = process.cwd();
export async function findConfig({ rootDir = CWD, legacy = true, configName, }) {
validate(rootDir);
return resolve({
rootDir,
result: await createCosmiConfig(configName, legacy).search(rootDir),
});
}
export function findConfigSync({ rootDir = CWD, legacy = true, configName }) {
validate(rootDir);
return resolve({
rootDir,
result: createCosmiConfigSync(configName, legacy).search(rootDir),
});
}
function validate(rootDir) {
if (!rootDir) {
throw new Error(`Defining a root directory is required`);
}
}
function resolve({ result, rootDir }) {
if (!result) {
throw new ConfigNotFoundError(composeMessage(`GraphQL Config file is not available in the provided config directory: ${rootDir}`, `Please check the config directory.`));
}
if (result.isEmpty) {
throw new ConfigEmptyError(composeMessage(`GraphQL Config file is empty.`, `Please check ${result.filepath}`));
}
return {
config: result.config,
filepath: result.filepath,
};
}