Конвертировать GraphQL в AST схемы — Numio
Разбирает GraphQL SDL, строит схему и печатает её обратно как единую нормализованную схему с помощью @graphql-codegen/schema-ast. Расширения типов сливаются с базовыми типами, а описания печатаются как блочные строки.
Собрать блоки extend type, разбросанные по нескольким файлам, в один schema.graphql для ревью или инструментов.
Когда пригодится
- Собрать блоки extend type, разбросанные по нескольким файлам, в один schema.graphql для ревью или инструментов.
- Нормализовать написанный вручную SDL в канонический печатный формат перед сравнением двух версий схемы.
Как пользоваться
- Вставьте один или несколько фрагментов SDL, включая блоки extend type, в редактор GraphQL Schema.
- Проверьте напечатанный результат: поля расширений добавлены в исходный тип, а описания стали блоками """.
- Скопируйте вывод и сохраните его как .graphql-файл.
GraphQL-схема
extend type Query {
me: User
}
type Query {
ping: String
}
type User {
id: ID!
"Display name"
name: String @deprecated(reason: "Use fullName")
}Напечатанная схема (SDL)
type Query {
me: User
ping: String
}
type User {
id: ID!
"""
Display name
"""
name: String @deprecated(reason: "Use fullName")
}Подробности и ограничения
Порядок полей может измениться: в этом примере поля из блока extend type напечатаны перед собственными полями базового типа.
Директивы полей, такие как @deprecated(reason: ...), сохраняются в напечатанном SDL.
Схема строится и печатается в Web Worker в браузере, затем форматируется GraphQL-парсером Prettier.
FAQ
Выводит ли он JSON AST?
Нет. Несмотря на название, результат — напечатанный GraphQL SDL, а не JSON DocumentNode. Если нужен JSON, используйте страницу JSON интроспекции.
Что происходит с комментариями #?
Комментарии не входят в схему и теряются при её печати. Чтобы сохранить документацию, используйте строки "description".
Может ли он слить extend type с базовым типом?
Да. Расширения применяются к базовому типу, поэтому вывод содержит один type Query со всеми полями.