From 71884d6a51b3b33890cb705dad5332d7edcfcb99 Mon Sep 17 00:00:00 2001 From: Trevor Scheer Date: Mon, 17 Jun 2019 13:47:39 -0700 Subject: [PATCH 1/3] Resolve missing types A change to buildClientSchema removed some behavior that we depended on. Previously, with caching in place, basic types (Boolean, String, ...) were returned even if they didn't exist in typeMap. The "fix" was itself a breaking change, adding basic types that weren't previously added to the typeMap. Full discussion here: https://github.com/graphql/graphql-js/commit/183ff32bee4bc23eb23657f79f414c2400ecb06a#r32971387 This commit addresses a couple issues: 1) Request the built in types from Engine 2) Disallow versions of graphql that include the broken fix The broken fix causes a regression for service:push. During the broken fix (graphql@14.2.1-14.3.0), ALL built in types are included during buildClientSchema (even if they're not part of the schema). This causes a hash mismatch between the pushed schema and the schema hash that Apollo Server recognizes. --- package-lock.json | 10 +++++----- packages/apollo-language-server/package.json | 2 +- .../src/providers/schema/engine.ts | 12 ++---------- packages/apollo/package.json | 2 +- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd7f371d3c..e89c1a7949 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2216,7 +2216,7 @@ "git-parse": "1.0.3", "git-rev-sync": "1.12.0", "glob": "7.1.4", - "graphql": "~14.2.1", + "graphql": "14.0.2-14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", "heroku-cli-util": "8.0.11", "listr": "0.14.3", @@ -2464,7 +2464,7 @@ "cosmiconfig": "^5.0.6", "dotenv": "^8.0.0", "glob": "^7.1.3", - "graphql": "~14.2.1", + "graphql": "14.0.2-14.2.0 || ^14.3.1", "graphql-tag": "^2.10.1", "lodash.debounce": "^4.0.8", "lodash.merge": "^4.6.1", @@ -6172,9 +6172,9 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, "graphql": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.2.1.tgz", - "integrity": "sha512-2PL1UbvKeSjy/lUeJqHk+eR9CvuErXoCNwJI4jm3oNFEeY+9ELqHNKO1ZuSxAkasPkpWbmT/iMRMFxd3cEL3tQ==", + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.1.tgz", + "integrity": "sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA==", "requires": { "iterall": "^1.2.2" } diff --git a/packages/apollo-language-server/package.json b/packages/apollo-language-server/package.json index 14ee4cb98f..29060f8243 100644 --- a/packages/apollo-language-server/package.json +++ b/packages/apollo-language-server/package.json @@ -32,7 +32,7 @@ "cosmiconfig": "^5.0.6", "dotenv": "^8.0.0", "glob": "^7.1.3", - "graphql": "~14.2.1", + "graphql": "14.0.2-14.2.0 || ^14.3.1", "graphql-tag": "^2.10.1", "lodash.debounce": "^4.0.8", "lodash.merge": "^4.6.1", diff --git a/packages/apollo-language-server/src/providers/schema/engine.ts b/packages/apollo-language-server/src/providers/schema/engine.ts index f32af3313b..48331fcd62 100644 --- a/packages/apollo-language-server/src/providers/schema/engine.ts +++ b/packages/apollo-language-server/src/providers/schema/engine.ts @@ -1,15 +1,7 @@ // EngineSchemaProvider (engine schema reg => schema) import { NotificationHandler } from "vscode-languageserver"; - import gql from "graphql-tag"; - -import { - GraphQLSchema, - buildClientSchema, - IntrospectionSchema, - IntrospectionQuery -} from "graphql"; - +import { GraphQLSchema, buildClientSchema } from "graphql"; import { ApolloEngineClient, ClientIdentity } from "../../engine"; import { ClientConfig, parseServiceSpecifier } from "../../config"; import { @@ -101,7 +93,7 @@ export const SCHEMA_QUERY = gql` subscriptionType { name } - types { + types(filter: { includeBuiltInTypes: true }) { ...IntrospectionFullType } directives { diff --git a/packages/apollo/package.json b/packages/apollo/package.json index f51a191801..fa44dac50d 100644 --- a/packages/apollo/package.json +++ b/packages/apollo/package.json @@ -54,7 +54,7 @@ "git-parse": "1.0.3", "git-rev-sync": "1.12.0", "glob": "7.1.4", - "graphql": "~14.2.1", + "graphql": "14.0.2-14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", "heroku-cli-util": "8.0.11", "listr": "0.14.3", From 78835e48edf26a2426b197b2ae6622d41651839f Mon Sep 17 00:00:00 2001 From: Trevor Scheer Date: Mon, 17 Jun 2019 14:26:16 -0700 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fa03d3fbf..0aecdbb019 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - `apollo` - Add integration tests to `service:check` [#1308](https://github.com/apollographql/apollo-tooling/pull/1308) - Add support for federated service to `service:check` [#1308](https://github.com/apollographql/apollo-tooling/pull/1308) + - Relax graphql version, resolve missing types "Boolean", "String" [#1355](https://github.com/apollographql/apollo-tooling/pull/1355) - `apollo-codegen-core` - - `apollo-codegen-flow` From 363a01f4cf18e03f4b5cfb562b829a430a58c696 Mon Sep 17 00:00:00 2001 From: Trevor Scheer Date: Thu, 27 Jun 2019 09:45:29 -0700 Subject: [PATCH 3/3] Fix version range Great catch @abernix, this fixes an issue with the version range previously wasn't parsed correctly by semver. --- package-lock.json | 4 ++-- packages/apollo-language-server/package.json | 2 +- packages/apollo/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e89c1a7949..5a1546ad2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2216,7 +2216,7 @@ "git-parse": "1.0.3", "git-rev-sync": "1.12.0", "glob": "7.1.4", - "graphql": "14.0.2-14.2.0 || ^14.3.1", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", "heroku-cli-util": "8.0.11", "listr": "0.14.3", @@ -2464,7 +2464,7 @@ "cosmiconfig": "^5.0.6", "dotenv": "^8.0.0", "glob": "^7.1.3", - "graphql": "14.0.2-14.2.0 || ^14.3.1", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "^2.10.1", "lodash.debounce": "^4.0.8", "lodash.merge": "^4.6.1", diff --git a/packages/apollo-language-server/package.json b/packages/apollo-language-server/package.json index aff47a7bd2..c595abad05 100644 --- a/packages/apollo-language-server/package.json +++ b/packages/apollo-language-server/package.json @@ -32,7 +32,7 @@ "cosmiconfig": "^5.0.6", "dotenv": "^8.0.0", "glob": "^7.1.3", - "graphql": "14.0.2-14.2.0 || ^14.3.1", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "^2.10.1", "lodash.debounce": "^4.0.8", "lodash.merge": "^4.6.1", diff --git a/packages/apollo/package.json b/packages/apollo/package.json index f2bfc65ce9..878d469f44 100644 --- a/packages/apollo/package.json +++ b/packages/apollo/package.json @@ -54,7 +54,7 @@ "git-parse": "1.0.3", "git-rev-sync": "1.12.0", "glob": "7.1.4", - "graphql": "14.0.2-14.2.0 || ^14.3.1", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", "heroku-cli-util": "8.0.11", "listr": "0.14.3",