@graphql-inspector/action
Version:
GraphQL Inspector functionality for GitHub Actions
43 lines (42 loc) • 1.16 kB
JavaScript
// Right now everything is hardcoded for better UX but this may change in future.
// It's just easier to leave it this way
export const availableCommands = [
'coverage',
'diff',
'docs',
'introspect',
'serve',
'similar',
'validate',
];
export const availableLoaders = ['code', 'git', 'github', 'graphql', 'json', 'url'];
export async function useConfig() {
return {
loaders: ensureList(discoverLoaders(availableLoaders), 'loaders'),
commands: ensureList(discoverCommands(availableCommands), 'commands'),
};
}
function moduleExists(name) {
try {
require.resolve(name);
return true;
}
catch (error) {
return false;
}
}
function discoverLoaders(loaders) {
return loaders.filter(name => moduleExists(`@graphql-inspector/${name}-loader`));
}
function discoverCommands(commands) {
return commands.filter(name => moduleExists(`@graphql-inspector/${name}-command`));
}
function ensureList(list, path) {
if (!list) {
return [];
}
if (Array.isArray(list)) {
return list;
}
throw new Error(`Value of ${path} expected to be a list`);
}