Skip to content

Commit

Permalink
chore(gatsby-source-graphql): upgrade to graphql-tools v6 (#24158)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
yaacovCR and vladar committed Jul 2, 2020
1 parent 5ad9582 commit c424dc1
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 72 deletions.
4 changes: 3 additions & 1 deletion packages/gatsby-source-graphql/package.json
Expand Up @@ -8,11 +8,13 @@
},
"dependencies": {
"@babel/runtime": "^7.10.3",
"@graphql-tools/links": "v6.0.9",
"@graphql-tools/utils": "v6.0.9",
"@graphql-tools/wrap": "v6.0.9",
"apollo-link": "1.2.14",
"apollo-link-http": "^1.5.17",
"dataloader": "^2.0.0",
"graphql": "^14.6.0",
"graphql-tools": "^5.0.0",
"invariant": "^2.2.4",
"node-fetch": "^1.7.3",
"uuid": "^3.4.0"
Expand Down
4 changes: 2 additions & 2 deletions packages/gatsby-source-graphql/src/__tests__/gatsby-node.js
@@ -1,6 +1,6 @@
jest.mock(`graphql-tools`, () => {
jest.mock(`@graphql-tools/wrap`, () => {
return {
transformSchema: jest.fn(),
wrapSchema: jest.fn(),
introspectSchema: jest.fn(),
RenameTypes: jest.fn(),
}
Expand Down
11 changes: 6 additions & 5 deletions packages/gatsby-source-graphql/src/gatsby-node.js
@@ -1,10 +1,11 @@
const uuidv4 = require(`uuid/v4`)
const { buildSchema, printSchema } = require(`gatsby/graphql`)
const {
transformSchema,
wrapSchema,
introspectSchema,
RenameTypes,
} = require(`graphql-tools`)
} = require(`@graphql-tools/wrap`)
const { linkToExecutor } = require(`@graphql-tools/links`)
const { createHttpLink } = require(`apollo-link-http`)
const nodeFetch = require(`node-fetch`)
const invariant = require(`invariant`)
Expand Down Expand Up @@ -68,7 +69,7 @@ exports.sourceNodes = async (
let sdl = await cache.get(cacheKey)

if (!sdl) {
introspectionSchema = await introspectSchema(link)
introspectionSchema = await introspectSchema(linkToExecutor(link))
sdl = printSchema(introspectionSchema)
} else {
introspectionSchema = buildSchema(sdl)
Expand All @@ -94,10 +95,10 @@ exports.sourceNodes = async (
return {}
}

const schema = transformSchema(
const schema = wrapSchema(
{
schema: introspectionSchema,
link,
executor: linkToExecutor(link),
},
[
new StripNonQueryTransform(),
Expand Down
66 changes: 35 additions & 31 deletions packages/gatsby-source-graphql/src/transforms.js
@@ -1,10 +1,10 @@
const { GraphQLObjectType, GraphQLNonNull } = require(`gatsby/graphql`)
const {
VisitSchemaKind,
cloneType,
healSchema,
visitSchema,
} = require(`graphql-tools`)
mapSchema,
MapperKind,
addTypes,
modifyObjectFields,
} = require(`@graphql-tools/utils`)

class NamespaceUnderFieldTransform {
constructor({ typeName, fieldName, resolver }) {
Expand All @@ -14,42 +14,46 @@ class NamespaceUnderFieldTransform {
}

transformSchema(schema) {
const query = schema.getQueryType()

const nestedType = new cloneType(query)
nestedType.name = this.typeName

const typeMap = schema.getTypeMap()
typeMap[this.typeName] = nestedType

const newQuery = new GraphQLObjectType({
name: query.name,
fields: {
[this.fieldName]: {
type: new GraphQLNonNull(nestedType),
resolve: (parent, args, context, info) => {
if (this.resolver) {
return this.resolver(parent, args, context, info)
} else {
return {}
}
},
const queryConfig = schema.getQueryType().toConfig()

const nestedQuery = new GraphQLObjectType({
...queryConfig,
name: this.typeName,
})

let newSchema = addTypes(schema, [nestedQuery])

const newRootFieldConfigMap = {
[this.fieldName]: {
type: new GraphQLNonNull(nestedQuery),
resolve: (parent, args, context, info) => {
if (this.resolver != null) {
return this.resolver(parent, args, context, info)
}

return {}
},
},
})
typeMap[query.name] = newQuery
}

;[newSchema] = modifyObjectFields(
newSchema,
queryConfig.name,
() => true,
newRootFieldConfigMap
)

return healSchema(schema)
return newSchema
}
}

class StripNonQueryTransform {
transformSchema(schema) {
return visitSchema(schema, {
[VisitSchemaKind.MUTATION]() {
return mapSchema(schema, {
[MapperKind.MUTATION]() {
return null
},
[VisitSchemaKind.SUBSCRIPTION]() {
[MapperKind.SUBSCRIPTION]() {
return null
},
})
Expand Down
106 changes: 73 additions & 33 deletions yarn.lock
Expand Up @@ -1426,6 +1426,35 @@
unique-filename "^1.1.1"
which "^1.3.1"

"@graphql-tools/delegate@6.0.9":
version "6.0.9"
resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.0.9.tgz#f3cd06837c502c596d1a3e1d625d9c95168825fc"
integrity sha512-v3qiQspXCr0/UGu0V8nEBS1Qwkb/zscgD321PgxgYFDljvBsAuysz7Q0DXl9OYkPqwS2RTPeYZZqsgahEpfpeg==
dependencies:
"@graphql-tools/schema" "6.0.9"
"@graphql-tools/utils" "6.0.9"
tslib "~2.0.0"

"@graphql-tools/links@v6.0.9":
version "6.0.9"
resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.0.9.tgz#4dd0e7ffc96bc1a22bb9f3a2817e21ec16b52992"
integrity sha512-bw++CJ7Txr49ISPHEvnw4UUE+a/2lxsGFrF99ioXJUqeiluukdjVdszgxOr+SOrW/BdJYwMh7094dRkXc07mfg==
dependencies:
"@graphql-tools/utils" "6.0.9"
apollo-link "1.2.14"
apollo-upload-client "13.0.0"
cross-fetch "3.0.4"
form-data "3.0.0"
tslib "~2.0.0"

"@graphql-tools/schema@6.0.9":
version "6.0.9"
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.9.tgz#1b9d7a465c0459cdfbce5860fa8c7ef89f0d96b5"
integrity sha512-lemY+UeZRVmMYPvszCKvPfaR+R0dR2FgqjhESzlNWBbLhHuCewilTzYuQ+A+o8hQxdtPGIHfNPGf6A0ZZ70jWw==
dependencies:
"@graphql-tools/utils" "6.0.9"
tslib "~2.0.0"

"@graphql-tools/schema@^6.0.11":
version "6.0.11"
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.11.tgz#4623c3662a8843822e36139855504ef8d7d89088"
Expand All @@ -1442,6 +1471,23 @@
"@ardatan/aggregate-error" "0.0.1"
camel-case "4.1.1"

"@graphql-tools/utils@6.0.9", "@graphql-tools/utils@v6.0.9":
version "6.0.9"
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.0.9.tgz#135a56f6520a99a2bbbfaf7d76bd5f681d1ce457"
integrity sha512-WtX+t64SCN9VejKA/gdtm2sHPOX8D1G1tAyrrKH7hnh6RaCmQwYkhs/f6tBnTTYOIBy7yVYNoXzqiv/tmOkAOQ==
dependencies:
camel-case "4.1.1"

"@graphql-tools/wrap@v6.0.9":
version "6.0.9"
resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.0.9.tgz#c8f447513ca9d10c31e695ad09992fb0c4ae0518"
integrity sha512-tvygPTfI8DcbT1rJ45dqkpbF6xYxy3/54yvrzgHJc674clAI9q98i16mql9iso3Rc9oSEt1CWUugmrNqgcgWrA==
dependencies:
"@graphql-tools/delegate" "6.0.9"
"@graphql-tools/schema" "6.0.9"
"@graphql-tools/utils" "6.0.9"
tslib "~2.0.0"

"@gustavnikolaj/async-main-wrap@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@gustavnikolaj/async-main-wrap/-/async-main-wrap-3.0.1.tgz#b838eb9dfaf9ed81bfc2b47f64d17a83bbcfc71b"
Expand Down Expand Up @@ -4476,7 +4522,7 @@ apollo-link@1.2.14, apollo-link@^1.2.12, apollo-link@^1.2.14:
tslib "^1.9.3"
zen-observable-ts "^0.8.21"

apollo-upload-client@^13.0.0:
apollo-upload-client@13.0.0:
version "13.0.0"
resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-13.0.0.tgz#146d1ddd85d711fcac8ca97a72d3ca6787f2b71b"
integrity sha512-lJ9/bk1BH1lD15WhWRha2J3+LrXrPIX5LP5EwiOUHv8PCORp4EUrcujrA3rI5hZeZygrTX8bshcuMdpqpSrvtA==
Expand Down Expand Up @@ -7208,6 +7254,14 @@ cross-fetch@2.2.2:
node-fetch "2.1.2"
whatwg-fetch "2.0.4"

cross-fetch@3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c"
integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==
dependencies:
node-fetch "2.6.0"
whatwg-fetch "3.0.0"

cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
Expand Down Expand Up @@ -7942,11 +7996,6 @@ depd@~2.0.0:
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==

deprecated-decorator@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=

deprecation@^2.0.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
Expand Down Expand Up @@ -10096,6 +10145,15 @@ form-data@2.1.4:
combined-stream "^1.0.5"
mime-types "^2.1.12"

form-data@3.0.0, form-data@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"

form-data@^2.3.3, form-data@^2.5.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
Expand All @@ -10105,15 +10163,6 @@ form-data@^2.3.3, form-data@^2.5.0:
combined-stream "^1.0.6"
mime-types "^2.1.12"

form-data@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"

form-data@~2.3.1, form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
Expand Down Expand Up @@ -11073,20 +11122,6 @@ graphql-subscriptions@^1.1.0:
dependencies:
iterall "^1.2.1"

graphql-tools@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-5.0.0.tgz#67281c834a0e29f458adba8018f424816fa627e9"
integrity sha512-5zn3vtn//382b7G3Wzz3d5q/sh+f7tVrnxeuhTMTJ7pWJijNqLxH7VEzv8VwXCq19zAzHYEosFHfXiK7qzvk7w==
dependencies:
apollo-link "^1.2.14"
apollo-upload-client "^13.0.0"
deprecated-decorator "^0.1.6"
form-data "^3.0.0"
iterall "^1.3.0"
node-fetch "^2.6.0"
tslib "^1.11.1"
uuid "^7.0.3"

graphql-type-json@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9"
Expand Down Expand Up @@ -13062,7 +13097,7 @@ isurl@^1.0.0-alpha5:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"

iterall@^1.2.1, iterall@^1.2.2, iterall@^1.3.0:
iterall@^1.2.1, iterall@^1.2.2:
version "1.3.0"
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
Expand Down Expand Up @@ -19088,7 +19123,7 @@ regenerator-runtime@^0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"

regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
version "0.13.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
Expand Down Expand Up @@ -22960,7 +22995,7 @@ tslib@1.10.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==

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:
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:
version "1.13.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
Expand Down Expand Up @@ -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
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==

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

whatwg-fetch@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==

whatwg-fetch@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.1.0.tgz#49d630cdfa308dba7f2819d49d09364f540dbcc6"
Expand Down

0 comments on commit c424dc1

Please sign in to comment.