UNPKG

opensaas

Version:

Create fully bundled SaaS application (Backend & Frontend) using an interactive CLI

28 lines (24 loc) 1.01 kB
import { specifiedDirectives } from 'graphql'; import federationDirectives from '@apollo/federation/dist/directives'; import gql from 'graphql-tag'; import { printSchema, buildFederatedSchema as buildApolloFederationSchema } from '@apollo/federation'; import { addResolversToSchema, GraphQLResolverMap } from 'apollo-graphql'; import { buildSchema, BuildSchemaOptions, createResolversMap } from 'type-graphql'; export async function buildFederatedSchema( options: Omit<BuildSchemaOptions, 'skipCheck'>, referenceResolvers?: GraphQLResolverMap<any>, ) { const schema = await buildSchema({ ...options, directives: [...specifiedDirectives, ...federationDirectives, ...(options.directives || [])], skipCheck: true, }); const federatedSchema = buildApolloFederationSchema({ typeDefs: gql(printSchema(schema)), resolvers: createResolversMap(schema) as any, }); if (referenceResolvers) { addResolversToSchema(federatedSchema, referenceResolvers); } return federatedSchema; }