Crear dinámicamente el esquema graphql con referencias circulares

Al usar graphql-js, necesito crear un esquema graphql dinámicamente iterando sobre una matriz de algunos datos, por ejemplo:

[{
    name: 'author',
    fields: [{
        field: 'name'
    }, {
        field: 'books',
        reference: 'book'
    }]
}, {
    name: 'book',
    fields: [{
        field: 'title'
    }, {
        field: 'author',
        reference: 'author'
    }]
}]

El problema son las referencias circulares. Cuando estoy creando AuthorType, necesito que BookType ya esté creado y viceversa.

Entonces el esquema resultante debería verse así:

type Author : Object {  
  id: ID!
  name: String,
  books: [Book]
}

type Book : Object {  
  id: ID!
  title: String
  author: Author
}

¿Como puedo resolver esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta