UNPKG

graphql-query-builder-json

Version:

This is a query builder to build any query, mutation, subscription from a json object

62 lines (61 loc) 2.3 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var formatArguments = function (args) { return args && Object.keys(args).length ? "(" + Object.keys(args).map(function (key) { return key + ": " + args[key]; }) + ")" : ""; }; var build = function (input) { var _a = bindProjections({ map: input.map, variables: {}, args: {}, identifier: 1 }), variables = _a.variables, query = _a.query, args = _a.args; return { query: input.type + " " + input.name + " " + formatArguments(args) + " {" + query + "}", variables: variables }; }; exports.build = build; var bindProjections = function (input) { return { query: "" + (input.map.type === "interface" || input.map.type === "union" ? "... on " : "") + input.map.entity + " " + (input.map.args ? "(" + input.map.args.map(function (el) { var newIdentifier = input.identifier++; input.args["$var" + newIdentifier] = el.graphQlType; input.variables["var" + newIdentifier] = el.value; return el.name + ": $var" + newIdentifier; }) + ") " : "") + (input.map.project ? "{ " + input.map.project .map(function (el) { if (typeof el === "string") { return el + " "; } var _a = bindProjections({ map: el, variables: input.variables, args: input.args, identifier: input.identifier }), variables = _a.variables, query = _a.query, args = _a.args; input.variables = __assign({}, input.variables, variables); input.args = __assign({}, input.args, args); return "" + query; }) .join("") + "} " : ""), variables: input.variables, args: input.args }; };