UNPKG

@apollo/subgraph

Version:
58 lines 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildFederatedSchema = exports.buildSubgraphSchema = void 0; const util_1 = require("util"); const graphql_1 = require("graphql"); const schema_helper_1 = require("./schema-helper"); const federation_internals_1 = require("@apollo/federation-internals"); const types_1 = require("./types"); function buildSubgraphSchema(modulesOrSDL) { var _a; let shapedModulesOrSDL; if ('typeDefs' in modulesOrSDL) { const { typeDefs, resolvers } = modulesOrSDL; const augmentedTypeDefs = Array.isArray(typeDefs) ? typeDefs : [typeDefs]; shapedModulesOrSDL = augmentedTypeDefs.map((typeDefs, i) => { const module = { typeDefs }; if (i === 0 && resolvers) module.resolvers = resolvers; return module; }); } else { shapedModulesOrSDL = modulesOrSDL; } const modules = (0, schema_helper_1.modulesFromSDL)(shapedModulesOrSDL); const documentAST = (0, graphql_1.concatAST)(modules.map(module => module.typeDefs)); const subgraph = (0, federation_internals_1.buildSubgraph)(federation_internals_1.FEDERATION_UNNAMED_SUBGRAPH_NAME, '', documentAST, false); const sdl = (0, federation_internals_1.printSchema)(subgraph.schema); const schema = subgraph.schema.toGraphQLJSSchema(); const queryRootName = (_a = subgraph.schema.schemaDefinition.rootType('query')) === null || _a === void 0 ? void 0 : _a.name; (0, federation_internals_1.assert)(queryRootName, 'A Query root type should have been added by `buildSubgraph`'); (0, schema_helper_1.addResolversToSchema)(schema, { [queryRootName]: { _service: () => ({ sdl }), } }); if (subgraph.metadata().entityType()) { (0, schema_helper_1.addResolversToSchema)(schema, { [queryRootName]: { _entities: (_source, { representations }, context, info) => (0, types_1.entitiesResolver)({ representations, context, info }), }, _Entity: { __resolveType(parent) { return parent.__typename; }, } }); } for (const module of modules) { if (!module.resolvers) continue; (0, schema_helper_1.addResolversToSchema)(schema, module.resolvers); } return schema; } exports.buildSubgraphSchema = buildSubgraphSchema; exports.buildFederatedSchema = (0, util_1.deprecate)(buildSubgraphSchema, `'buildFederatedSchema' is deprecated. Use 'buildSubgraphSchema' instead.`); //# sourceMappingURL=buildSubgraphSchema.js.map