2023-02-15 19:09:38 +00:00

66 lines
1.5 KiB
Python

# Copyright 2019-present, GraphQL Foundation
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
class Printer(object):
def __init__(self):
pass
def start_file(self):
print '''/* @flow */
/* @generated */
/* jshint ignore:start */
/**
* Copyright 2019-present, GraphQL Foundation
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
type Node = {
kind: string;
start?: ?number;
end?: ?number;
};
type OperationKind = 'query' | 'mutation' | 'subscription';'''
def end_file(self):
pass
def start_type(self, name):
print
print 'type %s = Node & {' % name
kind = name
if kind == 'GenericType':
kind = 'Type'
print ' kind: \'%s\';' % kind
def end_type(self, name):
print '}'
def _js_type(self, type, plural):
if plural:
type = 'Array<%s>' % type
return type
def field(self, type, name, nullable, plural):
nullable_char = '?' if nullable else ''
js_type = self._js_type(type, plural)
print ' %(name)s%(nullable_char)s: %(nullable_char)s%(js_type)s;' % locals()
def start_union(self, name):
print ('type %s = ' % name),
self._current_options = []
def union_option(self, type):
self._current_options.append(type)
def end_union(self, name):
print '\n | '.join(self._current_options)
print
self._current_options = None