Об этом проекте

GraphQL.js является эталонной реализацией GraphQL на JavaScript — языка запросов для API, первоначально созданного в Facebook. В файле README содержится ссылка на репозиторий спецификации GraphQL для общего обзора языка, а также отмечается, что примеры, описанные там, представлены в виде тестов внутри данного репозитория; новичкам рекомендуется изучать обзор вместе с соответствующими тестами. Основные возможности Библиотека предоставляет две основные возможности: построение схемы типов и обслуживание запросов к этой схеме. Схема определяется с помощью GraphQLSchema и GraphQLObjectType с полями, типом которых является один из встроенных скаляров, таких как GraphQLString; каждое поле может иметь функцию resolve. В README указано, что резолвер может возвращать значение, promise или массив promise. Запросы выполняются через функцию graphql, которая принимает схему и строку-источник и возвращает promise с результатом. Перед выполнением функция проверяет синтаксическую и семантическую корректность запроса, в противном случае сообщая об ошибках, что проиллюстрировано примером с ошибкой "Cannot query field" и информацией о местоположении. Установка GraphQL.js устанавливается из npm как пакет `graphql` с использованием npm, yarn или bun. В README также упоминается автоматически поддерживаемая ветка `npm` репозитория, которая отслеживает последний коммит линии 17.x.x, прошедший все тесты; прямая зависимость от этой ветки предлагается как способ использования еще не выпущенного кода, в то время как в README рекомендуется использовать опубликованные сборки npm. Использование в браузере и бандлерах В README отмечается, что библиотека является универсальной и может использоваться как на сервере Node, так и в браузере, в качестве примера проекта приводится GraphiQL. Проекты, использующие webpack или rollup, должны работать без специальной конфигурации и включать только те части библиотеки, которые они используют, поскольку GraphQL.js распространяется с файлами как CommonJS (`require()`), так и ESModule (`import`). Карта `exports` в `package.json` направляет среды выполнения и бандлеры к соответствующим файлам; инструменты без поддержки `exports` находят сборки CommonJS в файлах `.js` и сборку ESModule в файлах `.mjs`. Управление проектом и поддержка Вклад приветствуется через pull-запросы, а репозиторий управляется с помощью EasyCLA: перед внесением вклада участники должны подписать соглашение о членстве в спецификации GraphQL либо индивидуально, либо через работодателя. В README также упоминается членство в GraphQL Foundation как способ финансовой поддержки сообщества. Изменения отслеживаются в релизах GitHub. Проект распространяется под лицензией MIT. Он следует принципам Semantic Versioning: полная поддержка (исправления ошибок и обновления безопасности) предоставляется для последней мажорной версии; поддержка функций для предыдущей мажорной версии осуществляется в течение 12 месяцев после нового мажорного релиза (бэкпортинг изменений спецификации только в том случае, если они не являются ломающими); активная поддержка старых версий отсутствует, за исключением случаев, когда версия была выпущена менее года назад — тогда она считается предыдущей мажорной версией. В настоящее время LTS-релиза нет; пользователям рекомендуется обновляться до последней стабильной версии. Даты окончания жизненного цикла (end-of-life) для мажорной версии объявляются как минимум за шесть месяцев, после чего эта версия не получает обновлений даже для критических проблем безопасности. Критические обновления безопасности применяются как к текущей, так и к предыдущей мажорной версиям. Помощь при обновлении предоставляется через примечания к релизам каждой версии, руководства по миграции на сайте документации и общественный канал Discord.