1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { buildASTSchema, buildSchema, isSchema } from 'graphql';
- import { applyExtensions, mergeExtensions, mergeResolvers, mergeTypeDefs, } from '@graphql-tools/merge';
- import { asArray } from '@graphql-tools/utils';
- import { addResolversToSchema } from './addResolversToSchema.js';
- import { assertResolversPresent } from './assertResolversPresent.js';
- export function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, defaultFieldResolver, ...otherOptions }) {
-
- if (typeof resolverValidationOptions !== 'object') {
- throw new Error('Expected `resolverValidationOptions` to be an object');
- }
- if (!typeDefs) {
- throw new Error('Must provide typeDefs');
- }
- let schema;
- if (isSchema(typeDefs)) {
- schema = typeDefs;
- }
- else if (otherOptions?.commentDescriptions) {
- const mergedTypeDefs = mergeTypeDefs(typeDefs, {
- ...otherOptions,
- commentDescriptions: true,
- });
- schema = buildSchema(mergedTypeDefs, otherOptions);
- }
- else {
- const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions);
- schema = buildASTSchema(mergedTypeDefs, otherOptions);
- }
-
- schema = addResolversToSchema({
- schema,
- resolvers: mergeResolvers(resolvers),
- resolverValidationOptions,
- inheritResolversFromInterfaces,
- updateResolversInPlace,
- defaultFieldResolver,
- });
- if (Object.keys(resolverValidationOptions).length > 0) {
- assertResolversPresent(schema, resolverValidationOptions);
- }
- if (schemaExtensions) {
- schemaExtensions = mergeExtensions(asArray(schemaExtensions));
- applyExtensions(schema, schemaExtensions);
- }
- return schema;
- }
|