Skip to content

Commit 15ab8c2

Browse files
committed
🐛 Fixed gql generation of empty arguments as ()
1 parent fc63a7d commit 15ab8c2

File tree

3 files changed

+27
-23
lines changed

3 files changed

+27
-23
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "graphql-js-tree",
3-
"version": "0.3.2",
3+
"version": "0.3.3",
44
"private": false,
55
"license": "MIT",
66
"description": "GraphQL Parser providing simplier structure",

src/GqlParser/GqlParserTreeToGql.ts

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ export const parseGqlTree = (mainTree: GqlParserTree) => {
2020
return tree.name || '';
2121
};
2222
const generateChildren = (tree: GqlParserTree): string => {
23-
return `${tree.children ? `{\n ${tree.children.map(generateGql).join('\n ')}\n}` : ''}`;
23+
return `${tree.children?.length ? `{\n ${tree.children.map(generateGql).join('\n ')}\n}` : ''}`;
2424
};
2525
const generateValue = (tree: GqlParserTree): string => {
2626
return `${tree.value ? `: ${getValueAsGqlStringNode(tree.value)}` : ''}`;
2727
};
2828
const generateArguments = (tree: GqlParserTree): string => {
29-
return `${tree.arguments ? `(\n ${tree.arguments.map((a) => generateGql(a)).join(', ')})` : ''}`;
29+
return `${tree.arguments?.length ? `(\n ${tree.arguments.map((a) => generateGql(a)).join(', ')})` : ''}`;
3030
};
3131
const generateGql = (tree: GqlParserTree): string => {
3232
return `${generateName(tree)}${generateValue(tree)}${generateArguments(tree)}${generateChildren(tree)}`;
@@ -57,25 +57,29 @@ export const enrichFieldNodeWithVariables = (
5757
) {
5858
return {
5959
...fieldTree,
60-
arguments: fieldTree.node.args.map((a) => {
61-
const VarName = `${fieldTree.name}_${a.name}`;
62-
const VarNode: GqlParserTree = {
63-
name: a.name,
64-
node: a,
65-
value: {
66-
kind: 'Variable',
67-
value: VarName,
68-
},
69-
};
70-
variableDefinitionsUpdate((variableDefinitions) => [
71-
...variableDefinitions,
72-
{
73-
name: VarName,
74-
type: compileType(a.type.fieldType),
75-
},
76-
]);
77-
return VarNode;
78-
}),
60+
...(fieldTree.node.args.length
61+
? {
62+
arguments: fieldTree.node.args.map((a) => {
63+
const VarName = `${fieldTree.name}_${a.name}`;
64+
const VarNode: GqlParserTree = {
65+
name: a.name,
66+
node: a,
67+
value: {
68+
kind: 'Variable',
69+
value: VarName,
70+
},
71+
};
72+
variableDefinitionsUpdate((variableDefinitions) => [
73+
...variableDefinitions,
74+
{
75+
name: VarName,
76+
type: compileType(a.type.fieldType),
77+
},
78+
]);
79+
return VarNode;
80+
}),
81+
}
82+
: {}),
7983
};
8084
}
8185
return fieldTree;

src/GqlParser/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
InlineFragmentNode,
1919
} from 'graphql';
2020
export const parseGql = (gql: string, schema: string) => {
21-
const { definitions } = parse(schema + '\n' + gql);
21+
const { definitions } = parse(schema + '\n' + gql, { noLocation: true });
2222
const ops = definitions.filter(onlyOperations);
2323
const frags = definitions.filter(onlyFragments);
2424
const { nodes } = Parser.parse(schema);

0 commit comments

Comments
 (0)