···
+
import { Kind } from 'graphql';
+
import { printBlockString } from './blockString';
+
import { printString } from './printString';
+
export function print(node) {
+
if (Array.isArray(node)) {
+
return node.map(print);
+
} else if (node == null || typeof node !== 'object') {
+
return node ? ('' + node) : '';
+
case 'OperationDefinition': {
+
print(node.name) + wrap('(', join(print(node.variableDefinitions), ', '), ')'),
+
join(print(node.directives), ' '),
+
return (prefix === 'query' ? '' : prefix + ' ') + print(node.selectionSet);
+
case 'VariableDefinition':
+
return print(node.variable) +
+
wrap(' = ', print(node.defaultValue)) +
+
wrap(' ', join(print(node.directives), ' '));
+
wrap('', print(node.alias), ': ')
+
+ wrap('(', join(print(node.arguments), ', '), ')'),
+
join(print(node.directives), ' '),
+
print(node.selectionSet)
+
return node.isBlockString ? printBlockString(node.value) : printString(node.value);
+
return node.value ? 'true' : 'false';
+
return '[' + join(print(node.values), ', ') + ']';
+
return '{' + join(print(node.fields), ', ') + '}';
+
return node.name.value + ': ' + print(node.value);
+
case 'Variable': return '$' + node.name.value;
+
return join(print(node.definitions), '\n\n');
+
case 'SelectionSet': return block(print(node.selections));
+
case 'Argument': return node.name.value + ': ' + print(node.value);
+
return '...' + print(node.name) + wrap(' ', join(print(node.directives), ' '));
+
wrap('on ', print(node.typeCondition)),
+
join(print(node.directives), ' '),
+
print(node.selectionSet),
+
case 'FragmentDefinition':
+
return 'fragment ' + node.name.value +
+
wrap('(', join(print(node.variableDefinitions), ', '), ')') + ' ' +
+
'on ' + print(node.typeCondition) + ' ' +
+
wrap('', join(print(node.directives), ' '), ' ') +
+
print(node.selectionSet);
+
return '@' + node.name.value + wrap('(', join(print(node.args), ', '), ')');
+
return node.name.value;
+
return '[' + print(node.type) + ']';
+
return print(node.type) + '!';
+
const join = (array, separator) =>
+
.join(separator || '')) || '';
+
wrap('{\n ', join(array, '\n').replace(/\n/g, '\n '), '\n}');
+
const wrap = (start, value, end) => value
+
? start + value + (end || '')