@@ -31,11 +31,17 @@ func (schema *Schema) String() string {
3131 typesOnly += genInputObject (def )
3232 }
3333 if def .Kind == ast .Object {
34- objectsOnly += generateObject (def )
35- }
36- if def .Kind == ast .Interface {
37- //fmt.Printf("%s\n", def.Name)
34+ objectsOnly += schema .generateObject (def )
3835 }
36+ //if def.Kind == ast.Interface {
37+ // fmt.Printf("Interface: %s\n", def.Name)
38+ //}
39+ //if def.Kind == ast.Union {
40+ // fmt.Printf("Union: %s\n", def.Name)
41+ //}
42+ //if def.Kind == ast.Scalar {
43+ //fmt.Printf("Scalar: %s\n", def.Name)
44+ //}
3945 }
4046 return schema .getTypesHeader () + enumOnly + typesOnly + objectsOnly
4147}
@@ -97,7 +103,7 @@ func genEnum(def *ast.Definition) string {
97103 for _ , enumVal := range def .EnumValues {
98104 desc := ""
99105 if len (enumVal .Description ) > 0 {
100- desc = fmt .Sprintf ("%s/** %s */" , spacing , enumVal .Description )
106+ desc = fmt .Sprintf ("%s/** %s */\n " , spacing , enumVal .Description )
101107 }
102108 // /** desc */
103109 // enumName = 'enumValue'
@@ -128,6 +134,9 @@ func normalizedName(snakeCase string) string {
128134
129135func genInputObject (def * ast.Definition ) string {
130136 desc := generateDesc (def .Description )
137+ if len (desc ) > 0 {
138+ desc += "\n "
139+ }
131140 start := desc + "export type " + normalizedName (def .Name ) + " = {\n "
132141 var fields []string
133142 for _ , field := range def .Fields {
@@ -224,10 +233,11 @@ func splitUnderscoredString(snakeCase string) []string {
224233 return split
225234}
226235
227- func generateObject (def * ast.Definition ) string {
236+ func ( schema * Schema ) generateObject (def * ast.Definition ) string {
228237 objectName := normalizedName (def .Name )
229238 desc := generateDesc (def .Description )
230239 header := fmt .Sprintf ("\n export type %s = {" , objectName )
240+ args := ""
231241 if len (desc ) > 0 {
232242 header = "\n " + desc + header
233243 }
@@ -241,10 +251,32 @@ func generateObject(def *ast.Definition) string {
241251 if field .Name == "__type" {
242252 continue
243253 }
254+ if len (field .Arguments ) > 0 {
255+ args += generateArgDefinition (objectName , field .Name , field .Arguments )
256+ }
244257 if len (field .Description ) > 0 {
245258 body += "\n " + spacing + generateDesc (field .Description )
246259 }
247260 body += "\n " + spacing + generateFieldName (field ) + ": " + generateFieldType (field .Type ) + ";"
248261 }
249- return header + body + footer
262+ return header + body + footer + args
263+ }
264+
265+ func generateArgDefinition (parentName string , fieldName string , args []* ast.ArgumentDefinition ) string {
266+ output := "export type " + parentName + normalizedName (fieldName ) + "Args = {\n "
267+ fields := ""
268+ for _ , arg := range args {
269+ if len (arg .Description ) > 0 {
270+ fields += spacing + "/** " + arg .Description + " */\n "
271+ }
272+ fields += spacing + arg .Name
273+ if arg .Type .NonNull == false {
274+ fields += "?: "
275+ } else {
276+ fields += ": "
277+ }
278+ fields += genInputFieldType (arg .Type ) + ";\n "
279+ }
280+ output += fields + "};\n \n "
281+ return output
250282}
0 commit comments