O que esta ferramenta faz
Uma amostra JSON vira tipos SDL do GraphQL, um por objeto.
{ "id": 1, "name": "Ada", "tags": ["admin"], "address": { "city": "Paris" } }
type Root {
id: Int!
name: String!
tags: [String!]!
address: Address!
}
type Address {
city: String!
}
[String!]! se lê de fora para dentro: a lista nunca é nula, e nenhum elemento é. As duas metades vêm da amostra, que trazia uma lista e strings dentro.
Só tipos — isto ainda não é um esquema
Não há Query, nem Mutation, nem diretivas. Uma carga JSON diz como os dados são, não quais campos um servidor expõe nem como se chamam. Acrescente o ponto de entrada você mesmo:
type Query {
root: Root!
}
Sem ele, o arquivo descreve tipos que não se podem pedir a ninguém.
O que o SDL não sabe dizer é nomeado, não fingido
nulle os valores desconhecidos viram um escalarJSONpróprio, declarado no topo e deixado à sua implementação. O SDL não tem um tipo «qualquer coisa».- Um array heterogêneo vira
[JSON]!pela mesma razão: uma lista de formas misturadas não é um tipo lista do GraphQL. - Um inteiro fora de 32 bits vira
BigInt, outro escalar próprio. OIntdo GraphQL é de 32 bits com sinal: um identificador de onze dígitos não é representável, e um servidor que o devolva lança na serialização. Ele saíaInt!mesmo assim; era um defeito real, encontrado ao escrever esta página e corrigido. - Um objeto vazio é recusado.
type A {}não é SDL válido — um tipo precisa definir pelo menos um campo — então a conversão para e nomeia o tipo em vez de lhe entregar um esquema que servidor nenhum vai analisar. Também foi encontrado e corrigido aqui.
Os nomes são consertados, as colisões separadas
Um nome do GraphQL admite só letras, dígitos e _, e não começa por dígito. content-type vira content_type, 2fa vira _2fa. Quando dois nomes consertados se encontram dentro de um tipo, o segundo leva sufixo: nada é fundido em silêncio.
Um escalar na raiz — 42, "texto" — é recusado: o SDL descreve tipos objeto, e ali não há nada a descrever.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.