UNPKG

1.09 kBJavaScriptView Raw
1import { extractExtensionsFromSchema } from '@graphql-tools/merge';
2import { asArray, getResolversFromSchema } from '@graphql-tools/utils';
3import { makeExecutableSchema } from './makeExecutableSchema.js';
4/**
5 * Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.
6 * @param config Configuration object
7 */
8export function mergeSchemas(config) {
9 const extractedTypeDefs = asArray(config.typeDefs || []);
10 const extractedResolvers = asArray(config.resolvers || []);
11 const extractedSchemaExtensions = asArray(config.schemaExtensions || []);
12 const schemas = config.schemas || [];
13 for (const schema of schemas) {
14 extractedTypeDefs.push(schema);
15 extractedResolvers.push(getResolversFromSchema(schema, true));
16 extractedSchemaExtensions.push(extractExtensionsFromSchema(schema));
17 }
18 return makeExecutableSchema({
19 parseOptions: config,
20 ...config,
21 typeDefs: extractedTypeDefs,
22 resolvers: extractedResolvers,
23 schemaExtensions: extractedSchemaExtensions,
24 });
25}