merge-graphql-schemas
Version:
A utility library to facilitate merging of modularized GraphQL schemas and resolver objects.
32 lines (28 loc) • 1.26 kB
JavaScript
import { loadFiles } from '@graphql-toolkit/file-loading';
import { mergeTypeDefs } from '@graphql-toolkit/schema-merging';
export { mergeResolvers } from '@graphql-toolkit/schema-merging';
const DEFAULT_EXTENSIONS = ['ts', 'js', 'gql', 'graphql', 'graphqls'];
const DEFAULT_IGNORED_EXTENSIONS = ['spec', 'test', 'd', 'map'];
const fileLoader = (path, { recursive = false, extensions = DEFAULT_EXTENSIONS, ignoreIndex = true, ignoredExtensions = DEFAULT_IGNORED_EXTENSIONS, ...options } = {}) => {
return loadFiles(path, {
extensions: extensions.map(e => e.startsWith('.') ? e.substr(1, e.length - 1) : e).filter(e => DEFAULT_EXTENSIONS.includes(e)),
recursive,
ignoreIndex,
ignoredExtensions,
...options,
});
};
const mergeTypes = (types, options) => {
const schemaDefinition = options && typeof options.schemaDefinition === 'boolean'
? options.schemaDefinition
: true;
return mergeTypeDefs(types, {
useSchemaDefinition: schemaDefinition,
forceSchemaDefinition: schemaDefinition,
throwOnConflict: true,
commentDescriptions: true,
reverseDirectives: true,
...options,
});
};
export { fileLoader, mergeTypes };