Skip to content

Commit c424dc1

Browse files
yaacovCRvladar
andauthoredJul 2, 2020
chore(gatsby-source-graphql): upgrade to graphql-tools v6 (#24158)
* upgrade gatsby-source-graphql to graphql-tools v6 * Update yarn.lock * fix broken introspectSchema call * Update yarn.lock (again) Co-authored-by: Vladimir Razuvaev <vladimir.razuvaev@gmail.com>
1 parent 5ad9582 commit c424dc1

File tree

5 files changed

+119
-72
lines changed

5 files changed

+119
-72
lines changed
 

‎packages/gatsby-source-graphql/package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
},
99
"dependencies": {
1010
"@babel/runtime": "^7.10.3",
11+
"@graphql-tools/links": "v6.0.9",
12+
"@graphql-tools/utils": "v6.0.9",
13+
"@graphql-tools/wrap": "v6.0.9",
1114
"apollo-link": "1.2.14",
1215
"apollo-link-http": "^1.5.17",
1316
"dataloader": "^2.0.0",
1417
"graphql": "^14.6.0",
15-
"graphql-tools": "^5.0.0",
1618
"invariant": "^2.2.4",
1719
"node-fetch": "^1.7.3",
1820
"uuid": "^3.4.0"

‎packages/gatsby-source-graphql/src/__tests__/gatsby-node.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
jest.mock(`graphql-tools`, () => {
1+
jest.mock(`@graphql-tools/wrap`, () => {
22
return {
3-
transformSchema: jest.fn(),
3+
wrapSchema: jest.fn(),
44
introspectSchema: jest.fn(),
55
RenameTypes: jest.fn(),
66
}

‎packages/gatsby-source-graphql/src/gatsby-node.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
const uuidv4 = require(`uuid/v4`)
22
const { buildSchema, printSchema } = require(`gatsby/graphql`)
33
const {
4-
transformSchema,
4+
wrapSchema,
55
introspectSchema,
66
RenameTypes,
7-
} = require(`graphql-tools`)
7+
} = require(`@graphql-tools/wrap`)
8+
const { linkToExecutor } = require(`@graphql-tools/links`)
89
const { createHttpLink } = require(`apollo-link-http`)
910
const nodeFetch = require(`node-fetch`)
1011
const invariant = require(`invariant`)
@@ -68,7 +69,7 @@ exports.sourceNodes = async (
6869
let sdl = await cache.get(cacheKey)
6970

7071
if (!sdl) {
71-
introspectionSchema = await introspectSchema(link)
72+
introspectionSchema = await introspectSchema(linkToExecutor(link))
7273
sdl = printSchema(introspectionSchema)
7374
} else {
7475
introspectionSchema = buildSchema(sdl)
@@ -94,10 +95,10 @@ exports.sourceNodes = async (
9495
return {}
9596
}
9697

97-
const schema = transformSchema(
98+
const schema = wrapSchema(
9899
{
99100
schema: introspectionSchema,
100-
link,
101+
executor: linkToExecutor(link),
101102
},
102103
[
103104
new StripNonQueryTransform(),

‎packages/gatsby-source-graphql/src/transforms.js

+35-31
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const { GraphQLObjectType, GraphQLNonNull } = require(`gatsby/graphql`)
22
const {
3-
VisitSchemaKind,
4-
cloneType,
5-
healSchema,
6-
visitSchema,
7-
} = require(`graphql-tools`)
3+
mapSchema,
4+
MapperKind,
5+
addTypes,
6+
modifyObjectFields,
7+
} = require(`@graphql-tools/utils`)
88

99
class NamespaceUnderFieldTransform {
1010
constructor({ typeName, fieldName, resolver }) {
@@ -14,42 +14,46 @@ class NamespaceUnderFieldTransform {
1414
}
1515

1616
transformSchema(schema) {
17-
const query = schema.getQueryType()
18-
19-
const nestedType = new cloneType(query)
20-
nestedType.name = this.typeName
21-
22-
const typeMap = schema.getTypeMap()
23-
typeMap[this.typeName] = nestedType
24-
25-
const newQuery = new GraphQLObjectType({
26-
name: query.name,
27-
fields: {
28-
[this.fieldName]: {
29-
type: new GraphQLNonNull(nestedType),
30-
resolve: (parent, args, context, info) => {
31-
if (this.resolver) {
32-
return this.resolver(parent, args, context, info)
33-
} else {
34-
return {}
35-
}
36-
},
17+
const queryConfig = schema.getQueryType().toConfig()
18+
19+
const nestedQuery = new GraphQLObjectType({
20+
...queryConfig,
21+
name: this.typeName,
22+
})
23+
24+
let newSchema = addTypes(schema, [nestedQuery])
25+
26+
const newRootFieldConfigMap = {
27+
[this.fieldName]: {
28+
type: new GraphQLNonNull(nestedQuery),
29+
resolve: (parent, args, context, info) => {
30+
if (this.resolver != null) {
31+
return this.resolver(parent, args, context, info)
32+
}
33+
34+
return {}
3735
},
3836
},
39-
})
40-
typeMap[query.name] = newQuery
37+
}
38+
39+
;[newSchema] = modifyObjectFields(
40+
newSchema,
41+
queryConfig.name,
42+
() => true,
43+
newRootFieldConfigMap
44+
)
4145

42-
return healSchema(schema)
46+
return newSchema
4347
}
4448
}
4549

4650
class StripNonQueryTransform {
4751
transformSchema(schema) {
48-
return visitSchema(schema, {
49-
[VisitSchemaKind.MUTATION]() {
52+
return mapSchema(schema, {
53+
[MapperKind.MUTATION]() {
5054
return null
5155
},
52-
[VisitSchemaKind.SUBSCRIPTION]() {
56+
[MapperKind.SUBSCRIPTION]() {
5357
return null
5458
},
5559
})

‎yarn.lock

+73-33
Original file line numberDiff line numberDiff line change
@@ -1426,6 +1426,35 @@
14261426
unique-filename "^1.1.1"
14271427
which "^1.3.1"
14281428

1429+
"@graphql-tools/delegate@6.0.9":
1430+
version "6.0.9"
1431+
resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.0.9.tgz#f3cd06837c502c596d1a3e1d625d9c95168825fc"
1432+
integrity sha512-v3qiQspXCr0/UGu0V8nEBS1Qwkb/zscgD321PgxgYFDljvBsAuysz7Q0DXl9OYkPqwS2RTPeYZZqsgahEpfpeg==
1433+
dependencies:
1434+
"@graphql-tools/schema" "6.0.9"
1435+
"@graphql-tools/utils" "6.0.9"
1436+
tslib "~2.0.0"
1437+
1438+
"@graphql-tools/links@v6.0.9":
1439+
version "6.0.9"
1440+
resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.0.9.tgz#4dd0e7ffc96bc1a22bb9f3a2817e21ec16b52992"
1441+
integrity sha512-bw++CJ7Txr49ISPHEvnw4UUE+a/2lxsGFrF99ioXJUqeiluukdjVdszgxOr+SOrW/BdJYwMh7094dRkXc07mfg==
1442+
dependencies:
1443+
"@graphql-tools/utils" "6.0.9"
1444+
apollo-link "1.2.14"
1445+
apollo-upload-client "13.0.0"
1446+
cross-fetch "3.0.4"
1447+
form-data "3.0.0"
1448+
tslib "~2.0.0"
1449+
1450+
"@graphql-tools/schema@6.0.9":
1451+
version "6.0.9"
1452+
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.9.tgz#1b9d7a465c0459cdfbce5860fa8c7ef89f0d96b5"
1453+
integrity sha512-lemY+UeZRVmMYPvszCKvPfaR+R0dR2FgqjhESzlNWBbLhHuCewilTzYuQ+A+o8hQxdtPGIHfNPGf6A0ZZ70jWw==
1454+
dependencies:
1455+
"@graphql-tools/utils" "6.0.9"
1456+
tslib "~2.0.0"
1457+
14291458
"@graphql-tools/schema@^6.0.11":
14301459
version "6.0.11"
14311460
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.11.tgz#4623c3662a8843822e36139855504ef8d7d89088"
@@ -1442,6 +1471,23 @@
14421471
"@ardatan/aggregate-error" "0.0.1"
14431472
camel-case "4.1.1"
14441473

1474+
"@graphql-tools/utils@6.0.9", "@graphql-tools/utils@v6.0.9":
1475+
version "6.0.9"
1476+
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.0.9.tgz#135a56f6520a99a2bbbfaf7d76bd5f681d1ce457"
1477+
integrity sha512-WtX+t64SCN9VejKA/gdtm2sHPOX8D1G1tAyrrKH7hnh6RaCmQwYkhs/f6tBnTTYOIBy7yVYNoXzqiv/tmOkAOQ==
1478+
dependencies:
1479+
camel-case "4.1.1"
1480+
1481+
"@graphql-tools/wrap@v6.0.9":
1482+
version "6.0.9"
1483+
resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.0.9.tgz#c8f447513ca9d10c31e695ad09992fb0c4ae0518"
1484+
integrity sha512-tvygPTfI8DcbT1rJ45dqkpbF6xYxy3/54yvrzgHJc674clAI9q98i16mql9iso3Rc9oSEt1CWUugmrNqgcgWrA==
1485+
dependencies:
1486+
"@graphql-tools/delegate" "6.0.9"
1487+
"@graphql-tools/schema" "6.0.9"
1488+
"@graphql-tools/utils" "6.0.9"
1489+
tslib "~2.0.0"
1490+
14451491
"@gustavnikolaj/async-main-wrap@^3.0.1":
14461492
version "3.0.1"
14471493
resolved "https://registry.yarnpkg.com/@gustavnikolaj/async-main-wrap/-/async-main-wrap-3.0.1.tgz#b838eb9dfaf9ed81bfc2b47f64d17a83bbcfc71b"
@@ -4476,7 +4522,7 @@ apollo-link@1.2.14, apollo-link@^1.2.12, apollo-link@^1.2.14:
44764522
tslib "^1.9.3"
44774523
zen-observable-ts "^0.8.21"
44784524

4479-
apollo-upload-client@^13.0.0:
4525+
apollo-upload-client@13.0.0:
44804526
version "13.0.0"
44814527
resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-13.0.0.tgz#146d1ddd85d711fcac8ca97a72d3ca6787f2b71b"
44824528
integrity sha512-lJ9/bk1BH1lD15WhWRha2J3+LrXrPIX5LP5EwiOUHv8PCORp4EUrcujrA3rI5hZeZygrTX8bshcuMdpqpSrvtA==
@@ -7208,6 +7254,14 @@ cross-fetch@2.2.2:
72087254
node-fetch "2.1.2"
72097255
whatwg-fetch "2.0.4"
72107256

7257+
cross-fetch@3.0.4:
7258+
version "3.0.4"
7259+
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c"
7260+
integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==
7261+
dependencies:
7262+
node-fetch "2.6.0"
7263+
whatwg-fetch "3.0.0"
7264+
72117265
cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
72127266
version "5.1.0"
72137267
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -7942,11 +7996,6 @@ depd@~2.0.0:
79427996
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
79437997
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
79447998

7945-
deprecated-decorator@^0.1.6:
7946-
version "0.1.6"
7947-
resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
7948-
integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=
7949-
79507999
deprecation@^2.0.0:
79518000
version "2.3.1"
79528001
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
@@ -10096,6 +10145,15 @@ form-data@2.1.4:
1009610145
combined-stream "^1.0.5"
1009710146
mime-types "^2.1.12"
1009810147

10148+
form-data@3.0.0, form-data@^3.0.0:
10149+
version "3.0.0"
10150+
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
10151+
integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
10152+
dependencies:
10153+
asynckit "^0.4.0"
10154+
combined-stream "^1.0.8"
10155+
mime-types "^2.1.12"
10156+
1009910157
form-data@^2.3.3, form-data@^2.5.0:
1010010158
version "2.5.1"
1010110159
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
@@ -10105,15 +10163,6 @@ form-data@^2.3.3, form-data@^2.5.0:
1010510163
combined-stream "^1.0.6"
1010610164
mime-types "^2.1.12"
1010710165

10108-
form-data@^3.0.0:
10109-
version "3.0.0"
10110-
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
10111-
integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
10112-
dependencies:
10113-
asynckit "^0.4.0"
10114-
combined-stream "^1.0.8"
10115-
mime-types "^2.1.12"
10116-
1011710166
form-data@~2.3.1, form-data@~2.3.2:
1011810167
version "2.3.3"
1011910168
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -11073,20 +11122,6 @@ graphql-subscriptions@^1.1.0:
1107311122
dependencies:
1107411123
iterall "^1.2.1"
1107511124

11076-
graphql-tools@^5.0.0:
11077-
version "5.0.0"
11078-
resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-5.0.0.tgz#67281c834a0e29f458adba8018f424816fa627e9"
11079-
integrity sha512-5zn3vtn//382b7G3Wzz3d5q/sh+f7tVrnxeuhTMTJ7pWJijNqLxH7VEzv8VwXCq19zAzHYEosFHfXiK7qzvk7w==
11080-
dependencies:
11081-
apollo-link "^1.2.14"
11082-
apollo-upload-client "^13.0.0"
11083-
deprecated-decorator "^0.1.6"
11084-
form-data "^3.0.0"
11085-
iterall "^1.3.0"
11086-
node-fetch "^2.6.0"
11087-
tslib "^1.11.1"
11088-
uuid "^7.0.3"
11089-
1109011125
graphql-type-json@^0.2.4:
1109111126
version "0.2.4"
1109211127
resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9"
@@ -13062,7 +13097,7 @@ isurl@^1.0.0-alpha5:
1306213097
has-to-string-tag-x "^1.2.0"
1306313098
is-object "^1.0.1"
1306413099

13065-
iterall@^1.2.1, iterall@^1.2.2, iterall@^1.3.0:
13100+
iterall@^1.2.1, iterall@^1.2.2:
1306613101
version "1.3.0"
1306713102
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
1306813103
integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
@@ -19088,7 +19123,7 @@ regenerator-runtime@^0.11.0:
1908819123
version "0.11.1"
1908919124
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
1909019125

19091-
regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
19126+
regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
1909219127
version "0.13.5"
1909319128
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
1909419129
integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
@@ -22960,7 +22995,7 @@ tslib@1.10.0:
2296022995
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
2296122996
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
2296222997

22963-
tslib@^1.0.0, tslib@^1.10.0, tslib@^1.11.1, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.6.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
22998+
tslib@^1.0.0, tslib@^1.10.0, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.6.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
2296422999
version "1.13.0"
2296523000
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
2296623001
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
@@ -23791,7 +23826,7 @@ uuid@3.4.0, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3, uui
2379123826
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
2379223827
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
2379323828

23794-
uuid@^7.0.0, uuid@^7.0.3:
23829+
uuid@^7.0.0:
2379523830
version "7.0.3"
2379623831
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
2379723832
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
@@ -24300,6 +24335,11 @@ whatwg-fetch@2.0.4:
2430024335
version "2.0.4"
2430124336
resolved "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
2430224337

24338+
whatwg-fetch@3.0.0:
24339+
version "3.0.0"
24340+
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
24341+
integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
24342+
2430324343
whatwg-fetch@^3.1.0:
2430424344
version "3.1.0"
2430524345
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.1.0.tgz#49d630cdfa308dba7f2819d49d09364f540dbcc6"

0 commit comments

Comments
 (0)
Please sign in to comment.