apollo-schema-extend
Version:
Extends your Apollo Server Express based graphql server with an external graphql source
22 lines (21 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withExternalSchema = void 0;
const mergeResolvers_1 = require("./mergeResolvers");
const mergeTypeDefs_1 = require("./mergeTypeDefs");
const withExternalSchema = (schema, options) => (config) => {
if (!isSupportedConfig(config)) {
throw new Error('This config is not supported');
}
const { dataSource } = options;
const dataSources = () => {
const sources = config.dataSources();
return Object.assign(Object.assign({}, sources), { [dataSource.name]: dataSource.factory(sources) });
};
return Object.assign(Object.assign({}, config), { typeDefs: (0, mergeTypeDefs_1.mergeTypeDefs)(config.typeDefs, schema), resolvers: (0, mergeResolvers_1.mergeResolvers)(config.resolvers, schema, options), dataSources });
};
exports.withExternalSchema = withExternalSchema;
const isSupportedConfig = (config) => {
const requiredFieldsProvided = !!config.resolvers && !!config.typeDefs && !!config.dataSources;
return requiredFieldsProvided && !Array.isArray(config.resolvers);
};