Aller au contenu

Convertir un schéma GraphQL en AST — Numio

Analyse du SDL GraphQL, construit un schéma et le réimprime sous la forme d'un schéma normalisé unique avec @graphql-codegen/schema-ast. Les extensions de type sont fusionnées dans leurs types de base et les descriptions sont imprimées en block strings.

Fusionner des blocs extend type répartis sur plusieurs fichiers en un seul schema.graphql pour la relecture ou l'outillage.

GraphQL Schema

Schema AST

Quand l’utiliser

  • Fusionner des blocs extend type répartis sur plusieurs fichiers en un seul schema.graphql pour la relecture ou l'outillage.
  • Normaliser du SDL écrit à la main dans le format imprimé canonique avant de comparer deux versions du schéma.

Mode d’emploi

  1. Collez un ou plusieurs fragments de SDL, y compris les blocs extend type, dans l'éditeur GraphQL Schema.
  2. Vérifiez le résultat imprimé : les champs des extensions sont ajoutés au type d'origine et les descriptions deviennent des blocs """.
  3. Copiez la sortie et enregistrez-la dans un fichier .graphql.

Schéma GraphQL

extend type Query {
  me: User
}

type Query {
  ping: String
}

type User {
  id: ID!
  "Display name"
  name: String @deprecated(reason: "Use fullName")
}

Schéma imprimé (SDL)

type Query {
  me: User
  ping: String
}

type User {
  id: ID!

  """
  Display name
  """
  name: String @deprecated(reason: "Use fullName")
}

Détails et limites

L'ordre des champs peut changer : dans cet exemple, les champs d'un bloc extend type ont été imprimés avant les champs propres au type de base.

Les directives de champ comme @deprecated(reason: ...) sont conservées dans le SDL imprimé.

Le schéma est construit et imprimé dans un Web Worker de votre navigateur, puis formaté avec le parser GraphQL de Prettier.

FAQ

Produit-il un AST en JSON ?

Non. Malgré le nom, le résultat est du SDL GraphQL imprimé, pas un DocumentNode en JSON. Utilisez la page JSON d'introspection si vous avez besoin de JSON.

Que deviennent les commentaires # ?

Les commentaires ne font pas partie du schéma et sont supprimés à l'impression. Utilisez des chaînes "description" pour conserver la documentation.

Peut-il fusionner extend type dans le type de base ?

Oui. Les extensions sont appliquées au type de base, la sortie contient donc un seul type Query avec tous les champs.

Spécifications et références