Convertir un esquema GraphQL a AST — Numio
Analiza SDL de GraphQL, construye un esquema y lo vuelve a imprimir como un único esquema normalizado con @graphql-codegen/schema-ast. Las extensiones de tipo se fusionan en sus tipos base y las descripciones se imprimen como block strings.
Fusionar bloques extend type repartidos en varios archivos en un único schema.graphql para revisarlo o pasarlo a herramientas.
Cuándo usarla
- Fusionar bloques extend type repartidos en varios archivos en un único schema.graphql para revisarlo o pasarlo a herramientas.
- Normalizar SDL escrito a mano al formato impreso canónico antes de comparar dos versiones del esquema.
Cómo usarla
- Pega uno o varios fragmentos de SDL, incluidos los bloques extend type, en el editor GraphQL Schema.
- Revisa el resultado impreso: los campos de las extensiones se añaden al tipo original y las descripciones pasan a bloques """.
- Copia la salida y guárdala como archivo .graphql.
Esquema GraphQL
extend type Query {
me: User
}
type Query {
ping: String
}
type User {
id: ID!
"Display name"
name: String @deprecated(reason: "Use fullName")
}Esquema impreso (SDL)
type Query {
me: User
ping: String
}
type User {
id: ID!
"""
Display name
"""
name: String @deprecated(reason: "Use fullName")
}Detalles y limitaciones
El orden de los campos puede cambiar: en este ejemplo, los campos de un bloque extend type se imprimieron antes que los campos propios del tipo base.
Las directivas de campo como @deprecated(reason: ...) se conservan en el SDL impreso.
El esquema se construye e imprime en un Web Worker de tu navegador y después se formatea con el parser GraphQL de Prettier.
FAQ
¿Genera un AST en JSON?
No. A pesar del nombre, el resultado es SDL de GraphQL impreso, no un DocumentNode en JSON. Usa la página de JSON de introspección si necesitas JSON.
¿Qué pasa con los comentarios #?
Los comentarios no forman parte del esquema y se descartan al imprimirlo. Usa strings "description" para conservar la documentación.
¿Puede fusionar extend type en el tipo base?
Sí. Las extensiones se aplican al tipo base, así que la salida contiene un único type Query con todos los campos.