apollo-schema-extend
Version:
Extends your Apollo Server Express based graphql server with an external graphql source
18 lines (17 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeTypeDefs = void 0;
const apollo_server_express_1 = require("apollo-server-express");
const graphql_1 = require("graphql");
const mergeTypeDefs = (original, external) => {
const internal = Array.isArray(original) ? original : [original];
const mergedSchema = (0, apollo_server_express_1.mergeSchemas)({ schemas: [...internal, external] });
const mergedTypeDefs = (0, graphql_1.parse)((0, graphql_1.printSchema)(mergedSchema));
return withoutApolloTypes(mergedTypeDefs);
};
exports.mergeTypeDefs = mergeTypeDefs;
const apolloTypes = [
{ name: 'CacheControlScope', kind: graphql_1.Kind.ENUM_TYPE_DEFINITION },
{ name: 'Upload', kind: graphql_1.Kind.SCALAR_TYPE_DEFINITION },
];
const withoutApolloTypes = (typeDefs) => (Object.assign(Object.assign({}, typeDefs), { definitions: typeDefs.definitions.filter(definition => !apolloTypes.some(type => definition.kind === type.kind && definition.name.value === type.name)) }));