UNPKG

1.47 kBJavaScriptView Raw
1import { Kind } from 'graphql';
2import { astFromType } from './astFromType.js';
3export function updateArgument(argumentNodes, variableDefinitionsMap, variableValues, argName, varName, type, value) {
4 argumentNodes[argName] = {
5 kind: Kind.ARGUMENT,
6 name: {
7 kind: Kind.NAME,
8 value: argName,
9 },
10 value: {
11 kind: Kind.VARIABLE,
12 name: {
13 kind: Kind.NAME,
14 value: varName,
15 },
16 },
17 };
18 variableDefinitionsMap[varName] = {
19 kind: Kind.VARIABLE_DEFINITION,
20 variable: {
21 kind: Kind.VARIABLE,
22 name: {
23 kind: Kind.NAME,
24 value: varName,
25 },
26 },
27 type: astFromType(type),
28 };
29 if (value !== undefined) {
30 variableValues[varName] = value;
31 return;
32 }
33 // including the variable in the map with value of `undefined`
34 // will actually be translated by graphql-js into `null`
35 // see https://github.com/graphql/graphql-js/issues/2533
36 if (varName in variableValues) {
37 delete variableValues[varName];
38 }
39}
40export function createVariableNameGenerator(variableDefinitionMap) {
41 let varCounter = 0;
42 return (argName) => {
43 let varName;
44 do {
45 varName = `_v${(varCounter++).toString()}_${argName}`;
46 } while (varName in variableDefinitionMap);
47 return varName;
48 };
49}