1 | import { Kind } from 'graphql';
|
2 | import { astFromType } from './astFromType.js';
|
3 | export 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 |
|
34 |
|
35 |
|
36 | if (varName in variableValues) {
|
37 | delete variableValues[varName];
|
38 | }
|
39 | }
|
40 | export 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 | }
|