Mercurius
Implement GraphQL servers and gateways with Fastify
README
mercurius
Mercurius is a [GraphQL](https://graphql.org/) adapter for [Fastify](https://www.fastify.io)
Features:
- Caching of query parsing and validation.
- Automatic loader integration to avoid 1 + N queries.
- Just-In-Time compiler via graphql-jit.
- Subscriptions.
- Federation support.
- Federated subscriptions support.
- Gateway implementation, including Subscriptions.
- Batched query support.
- Customisable persisted queries.
Docs
- Install
- Examples
- API
- Context
- Loaders
- Hooks
- HTTP
- Faq
- License
Install
- ``` sh
- npm i fastify mercurius graphql
- # or
- yarn add fastify mercurius graphql
- ```
The previous name of this module was fastify-gql (< 6.0.0).
Quick Start
- ``` js
- 'use strict'
- const Fastify = require('fastify')
- const mercurius = require('mercurius')
- const app = Fastify()
- const schema = `
- type Query {
- add(x: Int, y: Int): Int
- }
- `
- const resolvers = {
- Query: {
- add: async (_, { x, y }) => x + y
- }
- }
- app.register(mercurius, {
- schema,
- resolvers
- })
- app.get('/', async function (req, reply) {
- const query = '{ add(x: 2, y: 2) }'
- return reply.graphql(query)
- })
- app.listen({ port: 3000 })
- ```
Examples
Check GitHub repo for more examples.
Acknowledgements
The project is kindly sponsored by:
The Mercurius name was gracefully donated by Marco Castelluccio.
The usage of that library was described in https://hacks.mozilla.org/2015/12/web-push-notifications-from-irssi/, and
you can find that codebase in https://github.com/marco-c/mercurius.
License
MIT