• Stars
    star
    16,071
  • Rank 1,782 (Top 0.04 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GraphiQL & the GraphQL LSP Reference Ecosystem for building browser & IDE tools.

GraphQL IDE Monorepo

Security Notice: All versions of graphiql < 1.4.7 are vulnerable to an XSS attack in cases where the GraphQL server to which the GraphiQL web app connects is not trusted. Learn more in the graphiql security docs directory

Looking for the GraphiQL Docs?: This is the root of the monorepo! The full GraphiQL docs are located at packages/graphiql

Build Status Discord Code Coverage GitHub top language GitHub language count Snyk Vulnerabilities for GitHub Repo CII Best Practices

Overview

GraphiQL is the reference implementation of this monorepo, GraphQL IDE, an official project under the GraphQL Foundation. The code uses the permissive MIT license.

Whether you want a simple GraphiQL IDE instance for your server, or a more advanced web or desktop GraphQL IDE experience for your framework or plugin, or you want to build an IDE extension or plugin, you've come to the right place!

The purpose of this monorepo is to give the GraphQL Community:

  • a to-specification official language service (see: API Docs)
  • a comprehensive LSP server and CLI service for use with IDEs
  • a codemirror mode
  • a monaco mode (in the works)
  • an example of how to use this ecosystem with GraphiQL.
  • examples of how to implement or extend GraphiQL.

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package npm bundle size (version) npm bundle size (version)

Screenshot of GraphiQL with Doc Explorer Open

/ˈɡrafək(ə)l/ A graphical interactive in-browser GraphQL IDE. Try the live demo. We also have a demo using our latest netlify build for the main branch.

The GraphiQL IDE, implemented in React, currently using GraphQL mode for CodeMirror & GraphQL Language Service.

Learn more about GraphiQL in packages/graphiql/README.md

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

Provides monaco editor with a powerful, schema-driven graphql language mode. Uses the graphql-language-servicedirectly.

See the webpack example for a plain javascript demo using GitHub API

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

Animated Codemirror GraphQL Completion Example

Provides CodeMirror 5 with a parser mode for GraphQL along with a live linter and typeahead hinter powered by your GraphQL Schema. Uses the graphql-language-service.

NPM jsDelivr hits (npm) npm downloads Snyk Vulnerabilities for npm package

Provides CodeMirror 6 with a full-featured language mode for GraphQL. Uses the graphql-language-service.

NPM npm downloads Snyk Vulnerabilities for npm package

Provides language services for graphql-language-service-server codemirror-graphql and monaco-graphql. Previously published separately as the now-retired graphql-language-service-interface, graphql-language-service-parser, graphql-language-service-utils and graphql-language-service-types.

NPM npm downloads Snyk Vulnerabilities for npm package

Provides language services for LSP-based IDE extensions using the graphql-language-service

An example implementation of graphql-language-service-server for Visual Studio Code. Available on the marketplace. OVSX fix is pending.

A new syntax highlighting-only extension for vscode to be used by other vscode extensions.

An extension for vscode-graphql that allows inline query execution.

NPM npm downloads Snyk Vulnerabilities for npm package

Provides a CLI for the language service server.

Browser & Runtime Support

Many of these packages need to work in multiple environments.

By default, all typescript packages target es6.

graphql-language-service-server and graphql-language-service-cli are made for the node runtime, so they target es2017

codemirror-graphql and the graphiql browser bundle use the .browserslistrc, which targets modern browsers to keep bundle size small and keep the language services performant where async/await is used, and especially to avoid the requirement of regenerator-runtime or special babel configuration.

last 2 versions
Firefox ESR
not dead
not IE 11
not ios 10
maintained node versions

To be clear, we do not support Internet Explorer or older versions of evergreen browsers.

Development

To get setup for local development of this monorepo, refer to DEVELOPMENT.md

Contributing to this repo

This is an open source project, and we welcome contributions. Please see CONTRIBUTING.md for details on how to contribute.

This repository is managed by EasyCLA. Project participants must sign the free GraphQL Specification Membership agreement before making a contribution. You only need to do this one time, and it can be signed by individual contributors or their employers.

To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you.

Please note that EasyCLA is configured to accept commits from certain GitHub bots. These are approved on an exception basis once we are confident that any content they create is either unlikely to consist of copyrightable content or else was written by someone who has already signed the CLA (e.g., a project maintainer). The bots that have currently been approved as exceptions are:

  • github-actions (exclusively for the changesets Action)

You can find detailed information here. If you have issues, please email [email protected].

Maintainers

Maintainers of this repository regularly review PRs and issues and help advance the GraphiQL roadmap

Alumni

Without these amazing past maintainers, where would we be?!

  • @leebyron - original author of all libraries
  • @asiandrummer - original creator of GraphiQL
  • @wincent - early co-author and maintainer
  • @lostplan - maintained the language service ecosystem until about 2017
  • @IvanGoncharov - maintainer and transitional mentor to @acao and others
  • @orta - has helped with so many parts of the project over the years, and provided the original redesign!
  • @divyenduz - the original creator of vscode-graphql, and contributor to much of the ecosystem. Thanks Divy!

Active

Maintainers who are currently active (to varying degrees, please contact us via our discord channels!):

Thank you graphql community for all the help & support! I did it all for you, and I couldn't have done it without you ❤️ - @acao

Fielding Proposals!

The door is open for proposals for the new GraphiQL Plugin API, and other ideas on how to make the rest of the IDE ecosystem more performant, scalable, interoperable and extensible. Feel free to open a PR to create a document in the /proposals/ directory. Eventually we hope to move these to a repo that serves this purpose.

Community

  • Discord Discord - Most discussion outside of GitHub happens on the GraphQL Discord Server
  • Twitter - @GraphiQL and #GraphiQL
  • GitHub - Create feature requests, discussions issues and bugs above
  • Working Group - Yes, you're invited! Monthly planning/decision making meetings, and working sessions every two weeks on zoom! Learn more.

More Repositories

1

graphql-js

A reference implementation of GraphQL for JavaScript
TypeScript
20,017
star
2

graphql-spec

GraphQL is a query language and execution engine tied to any backend service.
Shell
14,293
star
3

dataloader

DataLoader is a generic utility to be used as part of your application's data fetching layer to provide a consistent API over various backends and reduce requests to those backends via batching and caching.
JavaScript
12,787
star
4

graphql-playground

🎮 GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration)
TypeScript
8,766
star
5

express-graphql

Create a GraphQL HTTP server with Express.
TypeScript
6,341
star
6

graphql-relay-js

A library to help construct a graphql-js server supporting react-relay.
TypeScript
1,537
star
7

libgraphqlparser

A GraphQL query parser in C++ with C and C++ APIs
C++
1,069
star
8

swapi-graphql

A GraphQL schema and server wrapping SWAPI.
JavaScript
1,039
star
9

graphql.github.io

GraphQL Documentation at graphql.org
MDX
830
star
10

vscode-graphql

MIGRATED: VSCode GraphQL extension (autocompletion, go-to definition, syntax highlighting)
TypeScript
555
star
11

graphql-wg

Working group notes for GraphQL
JavaScript
528
star
12

graphql-language-service

An interface for building GraphQL language services for IDEs
420
star
13

graphql-over-http

Working draft of "GraphQL over HTTP" specification
JavaScript
386
star
14

graphql-landscape

🌄Landscape for the GraphQL ecosystem
308
star
15

graphql-http

Simple, pluggable, zero-dependency, GraphQL over HTTP spec compliant server, client and audit suite.
TypeScript
300
star
16

codemirror-graphql

GraphQL mode and helpers for CodeMirror.
148
star
17

foundation

GraphQL Foundation Charter and Legal Documents
87
star
18

composite-schemas-wg

The GraphQL Composite Schemas WG (subcommittee)
JavaScript
62
star
19

graphql-scalars

GraphQL Scalars specifications repo.
Shell
41
star
20

faq

GraphQL FAQ
37
star
21

defer-stream-wg

Repository for discussions on the GraphQL defer-stream spec proposal
JavaScript
28
star
22

nullability-wg

JavaScript
27
star
23

graphql-js-wg

Working group notes for graphql-js
JavaScript
25
star
24

composite-schemas-spec

Shell
22
star
25

marketing

Foundation marketing work
HTML
13
star
26

EasyCLA

Test repo for setting up EasyCLA, the tool we'll use to manage specification membership sigs
5
star
27

graphql-directory

The GraphQL Directory is used to manage project mailing lists
Python
4
star
28

wg-template

A template for GraphQL subcommittees
1
star
29

.github

Default community health files for GraphQL Foundation
1
star