Skip to content

Commit 3a4d333

Browse files
authored
chore: migrate from express-graphql to graphql-http (#37001)
1 parent 5766694 commit 3a4d333

File tree

3 files changed

+44
-67
lines changed

3 files changed

+44
-67
lines changed

packages/gatsby/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
"event-source-polyfill": "1.0.25",
8484
"execa": "^5.1.1",
8585
"express": "^4.17.1",
86-
"express-graphql": "^0.12.0",
86+
"graphql-http": "^1.7.0",
8787
"express-http-proxy": "^1.6.3",
8888
"fastest-levenshtein": "^1.0.12",
8989
"fastq": "^1.13.0",

packages/gatsby/src/utils/start-server.ts

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import got, { Method } from "got"
44
import webpack from "webpack"
55
import express from "express"
66
import compression from "compression"
7-
import { graphqlHTTP, OptionsData } from "express-graphql"
7+
import { createHandler as createGraphqlEndpointHandler } from "graphql-http/lib/use/express"
8+
import type { OperationContext } from "graphql-http"
89
import graphiqlExplorer from "gatsby-graphiql-explorer"
9-
import { FragmentDefinitionNode, GraphQLFormattedError, Kind } from "graphql"
10+
import { FragmentDefinitionNode, GraphQLError, Kind } from "graphql"
1011
import { slash, uuid } from "gatsby-core-utils"
1112
import http from "http"
1213
import https from "https"
@@ -185,38 +186,38 @@ export async function startServer(
185186

186187
app.use(
187188
graphqlEndpoint,
188-
graphqlHTTP((): OptionsData => {
189-
const { schema, schemaCustomization } = store.getState()
190-
191-
if (!schemaCustomization.composer) {
192-
throw new Error(
193-
`A schema composer was not created in time. This is likely a gatsby bug. If you experienced this please create an issue.`
194-
)
195-
}
196-
return {
197-
schema,
198-
graphiql: false,
199-
extensions(): { [key: string]: unknown } {
200-
return {
201-
enableRefresh: process.env.ENABLE_GATSBY_REFRESH_ENDPOINT,
202-
refreshToken: process.env.GATSBY_REFRESH_TOKEN,
203-
}
204-
},
205-
context: withResolverContext({
206-
schema,
207-
schemaComposer: schemaCustomization.composer,
189+
createGraphqlEndpointHandler({
190+
schema() {
191+
return store.getState().schema
192+
},
193+
context() {
194+
return withResolverContext({
195+
schema: store.getState().schema,
196+
schemaComposer: store.getState().schemaCustomization.composer,
208197
context: {},
209-
customContext: schemaCustomization.context,
210-
}),
211-
customFormatErrorFn(err): GraphQLFormattedError {
212-
return {
213-
...err.toJSON(),
214-
extensions: {
215-
stack: err.stack ? err.stack.split(`\n`) : [],
216-
},
217-
}
218-
},
219-
}
198+
customContext: store.getState().schemaCustomization.context,
199+
}) as unknown as OperationContext
200+
},
201+
onOperation(_req, _args, result) {
202+
if (result.errors) {
203+
result.errors = result.errors.map(
204+
err =>
205+
({
206+
...err.toJSON(),
207+
extensions: {
208+
stack: err.stack ? err.stack.split(`\n`) : [],
209+
},
210+
} as unknown as GraphQLError)
211+
)
212+
}
213+
214+
result.extensions = {
215+
enableRefresh: process.env.ENABLE_GATSBY_REFRESH_ENDPOINT,
216+
refreshToken: process.env.GATSBY_REFRESH_TOKEN,
217+
}
218+
219+
return result
220+
},
220221
})
221222
)
222223

yarn.lock

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5193,7 +5193,7 @@ abortcontroller-polyfill@^1.1.9:
51935193
resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5"
51945194
integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==
51955195

5196-
accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
5196+
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
51975197
version "1.3.8"
51985198
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
51995199
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@@ -7765,7 +7765,7 @@ [email protected]:
77657765
dependencies:
77667766
safe-buffer "5.2.1"
77677767

7768-
content-type@^1.0.4, content-type@~1.0.4:
7768+
content-type@~1.0.4:
77697769
version "1.0.4"
77707770
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
77717771

@@ -9077,7 +9077,7 @@ [email protected], depd@~2.0.0:
90779077
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
90789078
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
90799079

9080-
depd@^1.1.2, depd@~1.1.2:
9080+
depd@^1.1.2:
90819081
version "1.1.2"
90829082
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
90839083

@@ -10474,16 +10474,6 @@ expect@^27.4.2:
1047410474
jest-message-util "^27.4.2"
1047510475
jest-regex-util "^27.4.0"
1047610476

10477-
express-graphql@^0.12.0:
10478-
version "0.12.0"
10479-
resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.12.0.tgz#58deabc309909ca2c9fe2f83f5fbe94429aa23df"
10480-
integrity sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==
10481-
dependencies:
10482-
accepts "^1.3.7"
10483-
content-type "^1.0.4"
10484-
http-errors "1.8.0"
10485-
raw-body "^2.4.1"
10486-
1048710477
express-http-proxy@^1.6.3:
1048810478
version "1.6.3"
1048910479
resolved "https://registry.yarnpkg.com/express-http-proxy/-/express-http-proxy-1.6.3.tgz#f3ef139ffd49a7962e7af0462bbcca557c913175"
@@ -11929,6 +11919,11 @@ [email protected]:
1192911919
resolved "https://registry.yarnpkg.com/graphql-executor/-/graphql-executor-0.0.23.tgz#205c1764b39ee0fcf611553865770f37b45851a2"
1193011920
integrity sha512-3Ivlyfjaw3BWmGtUSnMpP/a4dcXCp0mJtj0PiPG14OKUizaMKlSEX+LX2Qed0LrxwniIwvU6B4w/koVjEPyWJg==
1193111921

11922+
graphql-http@^1.7.0:
11923+
version "1.7.0"
11924+
resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.7.0.tgz#075af931b12245f32ce3cf3ef034714c7d5bc4f8"
11925+
integrity sha512-GNv1CVAFTblzf5Kenx0TBtEfk7wvQLVoxDv/AgNX1ahDI7aU9ysxzH/B2ar4qej604mMYArsKMz/ENX7Zm8ISQ==
11926+
1193211927
1193311928
version "5.0.6"
1193411929
resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.0.6.tgz#7fd1e6479e5c3074b070c760fa961d9ad1ed7c72"
@@ -12578,17 +12573,6 @@ http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
1257812573
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
1257912574
integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
1258012575

12581-
12582-
version "1.8.0"
12583-
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
12584-
integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==
12585-
dependencies:
12586-
depd "~1.1.2"
12587-
inherits "2.0.4"
12588-
setprototypeof "1.2.0"
12589-
statuses ">= 1.5.0 < 2"
12590-
toidentifier "1.0.0"
12591-
1259212576
1259312577
version "2.0.0"
1259412578
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
@@ -19866,7 +19850,7 @@ range-parser@^1.2.1, range-parser@~1.2.1:
1986619850
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
1986719851
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
1986819852

19869-
[email protected], raw-body@^2.3.0, raw-body@^2.4.1:
19853+
[email protected], raw-body@^2.3.0:
1987019854
version "2.5.1"
1987119855
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
1987219856
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
@@ -22912,10 +22896,6 @@ [email protected], statuses@^2.0.0:
2291222896
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
2291322897
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
2291422898

22915-
"statuses@>= 1.5.0 < 2":
22916-
version "1.5.0"
22917-
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
22918-
2291922899
stealthy-require@^1.1.1:
2292022900
version "1.1.1"
2292122901
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
@@ -23970,10 +23950,6 @@ toggle-selection@^1.0.6:
2397023950
resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
2397123951
integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
2397223952

23973-
23974-
version "1.0.0"
23975-
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
23976-
2397723953
2397823954
version "1.0.1"
2397923955
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"

0 commit comments

Comments
 (0)