From 24007a79d92d5540cdffe60815031f367abd658d Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Thu, 10 Nov 2022 20:22:55 +0100 Subject: [PATCH 1/6] deprecation notice in readme --- README.md | 449 +++------------------------------------------------- cspell.json | 1 + 2 files changed, 20 insertions(+), 430 deletions(-) diff --git a/README.md b/README.md index 2cb0bf2f..3e1c1150 100644 --- a/README.md +++ b/README.md @@ -1,446 +1,35 @@ -# GraphQL HTTP Server Middleware +_If you still need to use `express-graphql`, please [read the previous version of this readme](https://github.com/graphql/express-graphql/blob/8b6ffc65776aa40d9e03f554425a1dc14840b165/README.md)._ -[![npm version](https://badge.fury.io/js/express-graphql.svg)](https://badge.fury.io/js/express-graphql) -[![Build Status](https://github.com/graphql/express-graphql/workflows/CI/badge.svg?branch=master)](https://github.com/graphql/express-graphql/actions?query=branch%3Amaster) -[![Coverage Status](https://codecov.io/gh/graphql/express-graphql/branch/master/graph/badge.svg)](https://codecov.io/gh/graphql/express-graphql) +# This library is deprecated -Create a GraphQL HTTP server with any HTTP web framework that supports connect styled middleware, including [Connect](https://github.com/senchalabs/connect) itself, [Express](https://expressjs.com) and [Restify](http://restify.com/). +`express-graphql` was the first official reference implementation of using GraphQL with HTTP. It has existed since 2015 and was mostly unmaintained in recent years. -## Installation +The official [GraphQL over HTTP](https://github.com/graphql/graphql-over-http) work group is standardizing the way you transport GraphQL over HTTP and it made great progress bringing up the need for a fresh reference implementation. -```sh -npm install --save express-graphql -``` +Please read the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http) for detailed implementation information. -### TypeScript +## Say hello to [`graphql-http`](https://github.com/enisdenjo/graphql-http) -This module includes a [TypeScript](https://www.typescriptlang.org/) -declaration file to enable auto complete in compatible editors and type -information for TypeScript projects. +[`graphql-http`](https://github.com/enisdenjo/graphql-http) is now the GraphQL official reference implementation of the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http). -## Simple Setup +## For users -Just mount `express-graphql` as a route handler: +As a reference implementation, [`graphql-http`](https://github.com/enisdenjo/graphql-http) implements exclusively the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/). -```js -const express = require('express'); -const { graphqlHTTP } = require('express-graphql'); +In case you're seeking for a full-featured experience (with file uploads, @defer/@stream directives, subscriptions, etc.), you're recommended to use some of the great JavaScript GraphQL server options: -const app = express(); +- [`graphql-yoga`](https://www.the-guild.dev/graphql/yoga-server) ([fully compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/graphql-yoga), [migration guide](https://www.the-guild.dev/graphql/yoga-server/v3/migration/migration-from-express-graphql)) +- [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([partially compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/apollo-server)) +- [`mercurius`](https://mercurius.dev/) ([partially compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/mercurius)) -app.use( - '/graphql', - graphqlHTTP({ - schema: MyGraphQLSchema, - graphiql: true, - }), -); +## For library authors -app.listen(4000); -``` +Being the official [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/) reference implementation, [`graphql-http`](https://github.com/enisdenjo/graphql-http) follows the specification strictly without any additional features (like file uploads, @stream/@defer directives and subscriptions). -## Setup with Restify +Having said this, [`graphql-http`](https://github.com/enisdenjo/graphql-http) is mostly aimed for library authors and simple server setups, where the requirements are exact to what the aforementioned spec offers. -Use `.get` or `.post` (or both) rather than `.use` to configure your route handler. If you want to show GraphiQL in the browser, set `graphiql: true` on your `.get` handler. +### Spec compliance audit suite -```js -const restify = require('restify'); -const { graphqlHTTP } = require('express-graphql'); +Suite of tests used to audit an HTTP server for [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http) compliance is [available in `graphql-http`](https://github.com/enisdenjo/graphql-http/blob/master/src/audits/server.ts) and you can use it to check your own, or other, servers! -const app = restify.createServer(); - -app.post( - '/graphql', - graphqlHTTP({ - schema: MyGraphQLSchema, - graphiql: false, - }), -); - -app.get( - '/graphql', - graphqlHTTP({ - schema: MyGraphQLSchema, - graphiql: true, - }), -); - -app.listen(4000); -``` - -## Setup with Subscription Support - -```js -const express = require('express'); -const { graphqlHTTP } = require('express-graphql'); - -const typeDefs = require('./schema'); -const resolvers = require('./resolvers'); -const { makeExecutableSchema } = require('graphql-tools'); -const schema = makeExecutableSchema({ - typeDefs: typeDefs, - resolvers: resolvers, -}); - -const { execute, subscribe } = require('graphql'); -const { createServer } = require('http'); -const { SubscriptionServer } = require('subscriptions-transport-ws'); - -const PORT = 4000; - -var app = express(); - -app.use( - '/graphql', - graphqlHTTP({ - schema: schema, - graphiql: { subscriptionEndpoint: `ws://localhost:${PORT}/subscriptions` }, - }), -); - -const ws = createServer(app); - -ws.listen(PORT, () => { - // Set up the WebSocket for handling GraphQL subscriptions. - new SubscriptionServer( - { - execute, - subscribe, - schema, - }, - { - server: ws, - path: '/subscriptions', - }, - ); -}); -``` - -## Options - -The `graphqlHTTP` function accepts the following options: - -- **`schema`**: A `GraphQLSchema` instance from [`GraphQL.js`][]. - A `schema` _must_ be provided. - -- **`graphiql`**: If `true`, presents [GraphiQL][] when the GraphQL endpoint is - loaded in a browser. We recommend that you set `graphiql` to `true` when your - app is in development, because it's quite useful. You may or may not want it - in production. - Alternatively, instead of `true` you can pass in an options object: - - - **`defaultQuery`**: An optional GraphQL string to use when no query - is provided and no stored query exists from a previous session. - If `undefined` is provided, GraphiQL will use its own default query. - - - **`headerEditorEnabled`**: An optional boolean which enables the header editor when `true`. - Defaults to `false`. - - - **`shouldPersistHeaders`**: An optional boolean which enables headers to be saved to local storage when `true`. - Defaults to `false`. - - - **`headers`**: An optional string of initial state for the header editor. Only makes sense if headerEditorEnabled is `true`. - Defaults to empty. - - - **`subscriptionEndpoint`**: An optional GraphQL string contains the WebSocket server url for subscription. - - - **`websocketClient`**: An optional GraphQL string for websocket client used for subscription, `v0`: subscriptions-transport-ws, `v1`: graphql-ws. Defaults to `v0` if not provided - -- **`rootValue`**: A value to pass as the `rootValue` to the `execute()` - function from [`GraphQL.js/src/execute.ts`](https://github.com/graphql/graphql-js/blob/main/src/execution/execute.ts#L148). - -- **`context`**: A value to pass as the `contextValue` to the `execute()` - function from [`GraphQL.js/src/execute.ts`](https://github.com/graphql/graphql-js/blob/main/src/execution/execute.ts#L149). If `context` is not provided, the - `request` object is passed as the context. - -- **`pretty`**: If `true`, any JSON response will be pretty-printed. - -- **`extensions`**: An optional function for adding additional metadata to the - GraphQL response as a key-value object. The result will be added to the - `"extensions"` field in the resulting JSON. This is often a useful place to - add development time metadata such as the runtime of a query or the amount - of resources consumed. This may be an async function. The function is - given one object as an argument: `{ document, variables, operationName, result, context }`. - -- **`validationRules`**: Optional additional validation rules that queries must - satisfy in addition to those defined by the GraphQL spec. - -- **`customValidateFn`**: An optional function which will be used to validate - instead of default `validate` from `graphql-js`. - -- **`customExecuteFn`**: An optional function which will be used to execute - instead of default `execute` from `graphql-js`. - -- **`customFormatErrorFn`**: An optional function which will be used to format any - errors produced by fulfilling a GraphQL operation. If no function is - provided, GraphQL's default spec-compliant [`formatError`][] function will be used. - -- **`customParseFn`**: An optional function which will be used to create a document - instead of the default `parse` from `graphql-js`. - -- **`formatError`**: is deprecated and replaced by `customFormatErrorFn`. It will be - removed in version 1.0.0. - -In addition to an object defining each option, options can also be provided as -a function (or async function) which returns this options object. This function -is provided the arguments `(request, response, graphQLParams)` and is called -after the request has been parsed. - -The `graphQLParams` is provided as the object `{ query, variables, operationName, raw }`. - -```js -app.use( - '/graphql', - graphqlHTTP(async (request, response, graphQLParams) => ({ - schema: MyGraphQLSchema, - rootValue: await someFunctionToGetRootValue(request), - graphiql: true, - })), -); -``` - -## HTTP Usage - -Once installed at a path, `express-graphql` will accept requests with -the parameters: - -- **`query`**: A string GraphQL document to be executed. - -- **`variables`**: The runtime values to use for any GraphQL query variables - as a JSON object. - -- **`operationName`**: If the provided `query` contains multiple named - operations, this specifies which operation should be executed. If not - provided, a 400 error will be returned if the `query` contains multiple - named operations. - -- **`raw`**: If the `graphiql` option is enabled and the `raw` parameter is - provided, raw JSON will always be returned instead of GraphiQL even when - loaded from a browser. - -GraphQL will first look for each parameter in the query string of a URL: - -``` -/graphql?query=query+getUser($id:ID){user(id:$id){name}}&variables={"id":"4"} -``` - -If not found in the query string, it will look in the POST request body. - -If a previous middleware has already parsed the POST body, the `request.body` -value will be used. Use [`multer`][] or a similar middleware to add support -for `multipart/form-data` content, which may be useful for GraphQL mutations -involving uploading files. See an [example using multer](https://github.com/graphql/express-graphql/blob/304b24b993c8f16fffff8d23b0fa4088e690874b/src/__tests__/http-test.js#L674-L741). - -If the POST body has not yet been parsed, `express-graphql` will interpret it -depending on the provided _Content-Type_ header. - -- **`application/json`**: the POST body will be parsed as a JSON - object of parameters. - -- **`application/x-www-form-urlencoded`**: the POST body will be - parsed as a url-encoded string of key-value pairs. - -- **`application/graphql`**: the POST body will be parsed as GraphQL - query string, which provides the `query` parameter. - -## Combining with Other Express Middleware - -By default, the express request is passed as the GraphQL `context`. -Since most express middleware operates by adding extra data to the -request object, this means you can use most express middleware just by inserting it before `graphqlHTTP` is mounted. This covers scenarios such as authenticating the user, handling file uploads, or mounting GraphQL on a dynamic endpoint. - -This example uses [`express-session`][] to provide GraphQL with the currently logged-in session. - -```js -const session = require('express-session'); -const { graphqlHTTP } = require('express-graphql'); - -const app = express(); - -app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 } })); - -app.use( - '/graphql', - graphqlHTTP({ - schema: MySessionAwareGraphQLSchema, - graphiql: true, - }), -); -``` - -Then in your type definitions, you can access the request via the third "context" argument in your `resolve` function: - -```js -new GraphQLObjectType({ - name: 'MyType', - fields: { - myField: { - type: GraphQLString, - resolve(parentValue, args, request) { - // use `request.session` here - }, - }, - }, -}); -``` - -## Providing Extensions - -The GraphQL response allows for adding additional information in a response to -a GraphQL query via a field in the response called `"extensions"`. This is added -by providing an `extensions` function when using `graphqlHTTP`. The function -must return a JSON-serializable Object. - -When called, this is provided an argument which you can use to get information -about the GraphQL request: - -`{ document, variables, operationName, result, context }` - -This example illustrates adding the amount of time consumed by running the -provided query, which could perhaps be used by your development tools. - -```js -const { graphqlHTTP } = require('express-graphql'); - -const app = express(); - -const extensions = ({ - document, - variables, - operationName, - result, - context, -}) => { - return { - runTime: Date.now() - context.startTime, - }; -}; - -app.use( - '/graphql', - graphqlHTTP((request) => { - return { - schema: MyGraphQLSchema, - context: { startTime: Date.now() }, - graphiql: true, - extensions, - }; - }), -); -``` - -When querying this endpoint, it would include this information in the result, -for example: - -```js -{ - "data": { ... }, - "extensions": { - "runTime": 135 - } -} -``` - -## Additional Validation Rules - -GraphQL's [validation phase](https://graphql.github.io/graphql-spec/#sec-Validation) checks the query to ensure that it can be successfully executed against the schema. The `validationRules` option allows for additional rules to be run during this phase. Rules are applied to each node in an AST representing the query using the Visitor pattern. - -A validation rule is a function which returns a visitor for one or more node Types. Below is an example of a validation preventing the specific field name `metadata` from being queried. For more examples, see the [`specifiedRules`](https://github.com/graphql/graphql-js/tree/main/src/validation/rules) in the [graphql-js](https://github.com/graphql/graphql-js) package. - -```js -import { GraphQLError } from 'graphql'; - -export function DisallowMetadataQueries(context) { - return { - Field(node) { - const fieldName = node.name.value; - - if (fieldName === 'metadata') { - context.reportError( - new GraphQLError( - `Validation: Requesting the field ${fieldName} is not allowed`, - ), - ); - } - }, - }; -} -``` - -### Disabling introspection - -Disabling introspection does not reflect best practices and does not necessarily make your -application any more secure. Nevertheless, disabling introspection is possible by utilizing the -`NoSchemaIntrospectionCustomRule` provided by the [graphql-js](https://github.com/graphql/graphql-js) -package. - -```js -import { NoSchemaIntrospectionCustomRule } from 'graphql'; - -app.use( - '/graphql', - graphqlHTTP((request) => { - return { - schema: MyGraphQLSchema, - validationRules: [NoSchemaIntrospectionCustomRule], - }; - }), -); -``` - -## Other Exports - -**`getGraphQLParams(request: Request): Promise`** - -Given an HTTP Request, this returns a Promise for the parameters relevant to -running a GraphQL request. This function is used internally to handle the -incoming request, you may use it directly for building other similar services. - -```js -const { getGraphQLParams } = require('express-graphql'); - -getGraphQLParams(request).then((params) => { - // do something... -}); -``` - -## Debugging Tips - -During development, it's useful to get more information from errors, such as -stack traces. Providing a function to `customFormatErrorFn` enables this: - -```js -customFormatErrorFn: (error) => ({ - message: error.message, - locations: error.locations, - stack: error.stack ? error.stack.split('\n') : [], - path: error.path, -}); -``` - -## Experimental features - -Each release of `express-graphql` will be accompanied by an experimental release containing support for the `@defer` and `@stream` directive proposal. We are hoping to get community feedback on these releases before the proposal is accepted into the GraphQL specification. You can use this experimental release of `express-graphql` by adding the following to your project's `package.json` file. - -``` -"express-graphql": "experimental-stream-defer", -"graphql": "experimental-stream-defer" -``` - -Community feedback on this experimental release is much appreciated and can be provided on the [PR for the defer-stream branch](https://github.com/graphql/express-graphql/pull/726) or the [GraphQL.js issue for feedback](https://github.com/graphql/graphql-js/issues/2848). - -[`graphql.js`]: https://github.com/graphql/graphql-js -[`formaterror`]: https://github.com/graphql/graphql-js/blob/main/src/error/formatError.js -[graphiql]: https://github.com/graphql/graphiql -[`multer`]: https://github.com/expressjs/multer -[`express-session`]: https://github.com/expressjs/session - -# Contributing to this repo - -This repository is managed by EasyCLA. Project participants must sign the free [GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/). - -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. - -You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org). - -If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join). +Additionally, `graphql-http` will maintain a list of GraphQL servers in the ecosystem and share their compliance results ([see them here](https://github.com/enisdenjo/graphql-http/tree/master/implementations)). diff --git a/cspell.json b/cspell.json index b96b05ac..1cae4177 100644 --- a/cspell.json +++ b/cspell.json @@ -23,6 +23,7 @@ "subcommand", "charsets", "downlevel", + "mercurius", // TODO: remove bellow words "Graphi", // GraphiQL From 3e6af60c262c6247f7cf6e77f574f99b2f1c744b Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Tue, 15 Nov 2022 15:40:56 +0100 Subject: [PATCH 2/6] correct links --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3e1c1150..e997d7de 100644 --- a/README.md +++ b/README.md @@ -8,28 +8,28 @@ The official [GraphQL over HTTP](https://github.com/graphql/graphql-over-http) w Please read the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http) for detailed implementation information. -## Say hello to [`graphql-http`](https://github.com/enisdenjo/graphql-http) +## Say hello to [`graphql-http`](https://github.com/graphql/graphql-http) -[`graphql-http`](https://github.com/enisdenjo/graphql-http) is now the GraphQL official reference implementation of the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http). +[`graphql-http`](https://github.com/graphql/graphql-http) is now the GraphQL official reference implementation of the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http). ## For users -As a reference implementation, [`graphql-http`](https://github.com/enisdenjo/graphql-http) implements exclusively the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/). +As a reference implementation, [`graphql-http`](https://github.com/graphql/graphql-http) implements exclusively the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/). In case you're seeking for a full-featured experience (with file uploads, @defer/@stream directives, subscriptions, etc.), you're recommended to use some of the great JavaScript GraphQL server options: -- [`graphql-yoga`](https://www.the-guild.dev/graphql/yoga-server) ([fully compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/graphql-yoga), [migration guide](https://www.the-guild.dev/graphql/yoga-server/v3/migration/migration-from-express-graphql)) -- [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([partially compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/apollo-server)) -- [`mercurius`](https://mercurius.dev/) ([partially compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/mercurius)) +- [`graphql-yoga`](https://www.the-guild.dev/graphql/yoga-server) ([fully compliant](https://github.com/graphql/graphql-http/tree/master/implementations/graphql-yoga), [migration guide](https://www.the-guild.dev/graphql/yoga-server/v3/migration/migration-from-express-graphql)) +- [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([partially compliant](https://github.com/graphql/graphql-http/tree/master/implementations/apollo-server)) +- [`mercurius`](https://mercurius.dev/) ([partially compliant](https://github.com/graphql/graphql-http/tree/master/implementations/mercurius)) ## For library authors -Being the official [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/) reference implementation, [`graphql-http`](https://github.com/enisdenjo/graphql-http) follows the specification strictly without any additional features (like file uploads, @stream/@defer directives and subscriptions). +Being the official [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http/) reference implementation, [`graphql-http`](https://github.com/graphql/graphql-http) follows the specification strictly without any additional features (like file uploads, @stream/@defer directives and subscriptions). -Having said this, [`graphql-http`](https://github.com/enisdenjo/graphql-http) is mostly aimed for library authors and simple server setups, where the requirements are exact to what the aforementioned spec offers. +Having said this, [`graphql-http`](https://github.com/graphql/graphql-http) is mostly aimed for library authors and simple server setups, where the requirements are exact to what the aforementioned spec offers. ### Spec compliance audit suite -Suite of tests used to audit an HTTP server for [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http) compliance is [available in `graphql-http`](https://github.com/enisdenjo/graphql-http/blob/master/src/audits/server.ts) and you can use it to check your own, or other, servers! +Suite of tests used to audit an HTTP server for [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http) compliance is [available in `graphql-http`](https://github.com/graphql/graphql-http/blob/master/src/audits/server.ts) and you can use it to check your own, or other, servers! -Additionally, `graphql-http` will maintain a list of GraphQL servers in the ecosystem and share their compliance results ([see them here](https://github.com/enisdenjo/graphql-http/tree/master/implementations)). +Additionally, `graphql-http` will maintain a list of GraphQL servers in the ecosystem and share their compliance results ([see them here](https://github.com/graphql/graphql-http/tree/master/implementations)). From ff91dedf906a89a86de1ee0a13fd18b0c7847934 Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Tue, 15 Nov 2022 16:04:24 +0100 Subject: [PATCH 3/6] compliant and add postgraphile --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e997d7de..f6910f58 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,10 @@ As a reference implementation, [`graphql-http`](https://github.com/graphql/graph In case you're seeking for a full-featured experience (with file uploads, @defer/@stream directives, subscriptions, etc.), you're recommended to use some of the great JavaScript GraphQL server options: -- [`graphql-yoga`](https://www.the-guild.dev/graphql/yoga-server) ([fully compliant](https://github.com/graphql/graphql-http/tree/master/implementations/graphql-yoga), [migration guide](https://www.the-guild.dev/graphql/yoga-server/v3/migration/migration-from-express-graphql)) -- [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([partially compliant](https://github.com/graphql/graphql-http/tree/master/implementations/apollo-server)) -- [`mercurius`](https://mercurius.dev/) ([partially compliant](https://github.com/graphql/graphql-http/tree/master/implementations/mercurius)) +- [`graphql-yoga`](https://www.the-guild.dev/graphql/yoga-server) ([compliant (0 warnings)](https://github.com/graphql/graphql-http/tree/master/implementations/graphql-yoga), [migration guide](https://www.the-guild.dev/graphql/yoga-server/v3/migration/migration-from-express-graphql)) +- [`postgraphile`](https://www.graphile.org/postgraphile/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/postgraphile)) +- [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/apollo-server)) +- [`mercurius`](https://mercurius.dev/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/mercurius)) ## For library authors From 755fb520e7346586831af5afff3a017c5bce6334 Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Tue, 15 Nov 2022 16:05:40 +0100 Subject: [PATCH 4/6] how to add --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f6910f58..d6e3b729 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ In case you're seeking for a full-featured experience (with file uploads, @defer - [`postgraphile`](https://www.graphile.org/postgraphile/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/postgraphile)) - [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/apollo-server)) - [`mercurius`](https://mercurius.dev/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/mercurius)) +- _\*To add your JavaScript server here, please first add it to [graphql-http/implementations](https://github.com/enisdenjo/graphql-http/tree/master/implementations/)_ ## For library authors From d3664723de3b43f06cc55ff9d43cb9b245b8d40d Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Tue, 15 Nov 2022 16:06:57 +0100 Subject: [PATCH 5/6] graphql url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6e3b729..890e20d1 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ In case you're seeking for a full-featured experience (with file uploads, @defer - [`postgraphile`](https://www.graphile.org/postgraphile/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/postgraphile)) - [`apollo-server`](https://www.apollographql.com/docs/apollo-server/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/apollo-server)) - [`mercurius`](https://mercurius.dev/) ([compliant](https://github.com/graphql/graphql-http/tree/master/implementations/mercurius)) -- _\*To add your JavaScript server here, please first add it to [graphql-http/implementations](https://github.com/enisdenjo/graphql-http/tree/master/implementations/)_ +- _\*To add your JavaScript server here, please first add it to [graphql-http/implementations](https://github.com/graphql/graphql-http/tree/master/implementations/)_ ## For library authors From 4ce271630c94fbf85d29a95fd619f293a3b17985 Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Tue, 15 Nov 2022 16:09:20 +0100 Subject: [PATCH 6/6] postgraphile cspell exception --- cspell.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cspell.json b/cspell.json index 1cae4177..04556ac1 100644 --- a/cspell.json +++ b/cspell.json @@ -24,6 +24,7 @@ "charsets", "downlevel", "mercurius", + "postgraphile", // TODO: remove bellow words "Graphi", // GraphiQL