annotated-graphql
Version:
Annotated GraphQL
53 lines (40 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (mapSchemaAnnotations, clientSchema) {
var visitor = createQueryRewriteVisitor(mapSchemaAnnotations, clientSchema);
return function (query) {
if (query) {
console.log('QUERY BEFORE:', query);
query = (0, _graphql.print)((0, _graphql.visit)((0, _graphql.parse)(query), visitor));
console.log('QUERY AFTER:', query);
}
return query;
};
function createQueryRewriteVisitor(mapSchemaAnnotations, clientSchema) {
var queryRewriters = mapSchemaAnnotations.reduce(extendQueryRewriters, []);
return {
OperationDefinition: function OperationDefinition(operationDefinitionNode) {
if (operationDefinitionNode.operation === 'query') {
queryRewriters.forEach(function (queryRewriter) {
return queryRewriter(operationDefinitionNode);
});
}
}
};
function extendQueryRewriters(queryRewriters, mapSchemaAnnotation) {
[_queryFieldnameRewriter2.default].forEach(function (rewriterClass) {
var queryRewriter = rewriterClass.apply(mapSchemaAnnotation, clientSchema);
if (queryRewriter) {
queryRewriters.push(queryRewriter);
}
});
return queryRewriters;
}
}
};
var _graphql = require('graphql');
var _queryFieldnameRewriter = require('./rewriters/query-fieldname-rewriter');
var _queryFieldnameRewriter2 = _interopRequireDefault(_queryFieldnameRewriter);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }