Converter um esquema GraphQL em AST — Numio
Faz o parse de SDL de GraphQL, monta um schema e o imprime de volta como um único schema normalizado com @graphql-codegen/schema-ast. Extensões de tipo são mescladas aos tipos base e as descrições são impressas como block strings.
Mesclar blocos extend type espalhados por vários arquivos em um único schema.graphql para revisão ou ferramentas.
Quando usar
- Mesclar blocos extend type espalhados por vários arquivos em um único schema.graphql para revisão ou ferramentas.
- Normalizar SDL escrito à mão no formato impresso canônico antes de comparar duas versões do schema.
Como usar
- Cole um ou mais fragmentos de SDL, incluindo blocos extend type, no editor GraphQL Schema.
- Confira o resultado impresso: os campos das extensões são adicionados ao tipo original e as descrições viram blocos """.
- Copie a saída e salve-a como arquivo .graphql.
Schema GraphQL
extend type Query {
me: User
}
type Query {
ping: String
}
type User {
id: ID!
"Display name"
name: String @deprecated(reason: "Use fullName")
}Schema impresso (SDL)
type Query {
me: User
ping: String
}
type User {
id: ID!
"""
Display name
"""
name: String @deprecated(reason: "Use fullName")
}Detalhes e limitações
A ordem dos campos pode mudar: neste exemplo, os campos de um bloco extend type foram impressos antes dos campos do próprio tipo base.
Diretivas de campo como @deprecated(reason: ...) são mantidas no SDL impresso.
O schema é montado e impresso em um Web Worker no seu navegador e depois formatado com o parser GraphQL do Prettier.
FAQ
Ele gera um AST em JSON?
Não. Apesar do nome, o resultado é SDL de GraphQL impresso, não um DocumentNode em JSON. Use a página de JSON de introspecção se precisar de JSON.
O que acontece com os comentários #?
Comentários não fazem parte do schema e são descartados quando o schema é impresso. Use strings "description" para manter a documentação.
Ele consegue mesclar extend type no tipo base?
Sim. As extensões são aplicadas ao tipo base, então a saída contém um único type Query com todos os campos.