From 1edeb3669a2453a009b0bd85ba1434524aaa1667 Mon Sep 17 00:00:00 2001 From: Trevor Scheer Date: Thu, 27 Jun 2019 09:55:05 -0700 Subject: [PATCH] Resolve missing types "Boolean", "String" (#1355) 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. --- CHANGELOG.md | 2 +- package-lock.json | 10 +++++----- packages/apollo-language-server/package.json | 2 +- .../src/providers/schema/engine.ts | 12 ++---------- packages/apollo/package.json | 2 +- 5 files changed, 10 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32e558bb13..15cfc379e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## Upcoming - `apollo` - - + - Relax graphql version, resolve missing types "Boolean", "String" [#1355](https://github.com/apollographql/apollo-tooling/pull/1355) - `apollo-codegen-core` - - `apollo-codegen-flow` diff --git a/package-lock.json b/package-lock.json index fd7f371d3c..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.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 584d8eaf17..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.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 b0da6f6e63..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.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",