graphql-static-binding
Version:
Generate static binding files for a GraphQL schema
25 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generator = {
Main: renderMainMethod,
Header: renderHeader,
};
function renderHeader(schema) {
return "const { Binding: BaseBinding } = require('graphql-binding')\nconst { GraphQLResolveInfo } = require('graphql')";
}
function renderMainMethodFields(operation, fields) {
return Object.keys(fields).map(function (f) {
var field = fields[f];
return " " + field.name + "(args, context, info) { \n return self.delegate('" + operation + "', '" + field.name + "', args, context, info)\n }";
}).join(',\n');
}
function renderMainSubscriptionMethodFields(operation, fields) {
return Object.keys(fields).map(function (f) {
var field = fields[f];
return " " + field.name + "(args, context, infoOrQuery) { \n return self.delegateSubscription('" + field.name + "', args, context, infoOrQuery)\n }";
}).join(',\n');
}
function renderMainMethod(queryType, mutationType, subscriptionType) {
return "module.exports.Binding = class Binding extends BaseBinding {\n \n constructor({ schema, fragmentReplacements }) {\n super({ schema, fragmentReplacements });\n\n var self = this\n this.query = {\n" + renderMainMethodFields('query', queryType.getFields()) + "\n }" + (mutationType ? "\n \n this.mutation = {\n" + renderMainMethodFields('mutation', mutationType.getFields()) + "\n }" : '') + (subscriptionType ? "\n \n this.subscription = {\n" + renderMainSubscriptionMethodFields('mutation', subscriptionType.getFields()) + "\n }" : '') + "\n }\n \n delegate(operation, field, args, context, info) {\n return super.delegate(operation, field, args, context, info)\n }\n\n delegateSubscription(field, args, context, infoOrQuery) {\n return super.delegateSubscription(field, args, context, infoOrQuery)\n }\n}";
}
//# sourceMappingURL=binding-js.js.map