From 0a4f535ce528e3eb7643cc49e559fe72991a04e0 Mon Sep 17 00:00:00 2001 From: Trevor Scheer Date: Tue, 9 Oct 2018 14:24:27 -0700 Subject: [PATCH] Update graphql to version 14 Update graphql package + types. Resolve typescript errors and update snapshots. --- package-lock.json | 92 +++++++------- package.json | 4 +- packages/apollo-codegen-core/package.json | 1 + .../src/utilities/graphql.ts | 11 +- .../apollo-codegen-flow-legacy/package.json | 1 + .../src/codeGeneration.ts | 22 ++-- .../apollo-codegen-flow-legacy/src/types.ts | 10 +- packages/apollo-codegen-flow/package.json | 1 + packages/apollo-codegen-flow/src/helpers.ts | 12 +- packages/apollo-codegen-scala/package.json | 1 + packages/apollo-codegen-scala/src/types.ts | 10 +- packages/apollo-codegen-swift/package.json | 1 + .../src/codeGeneration.ts | 11 +- packages/apollo-codegen-swift/src/helpers.ts | 19 +-- .../package.json | 1 + .../src/codeGeneration.ts | 16 ++- .../src/types.ts | 10 +- .../apollo-codegen-typescript/package.json | 1 + .../src/codeGeneration.ts | 7 +- .../apollo-codegen-typescript/src/helpers.ts | 12 +- packages/apollo-language-server/package.json | 2 +- packages/apollo/package.json | 3 +- .../__snapshots__/download.test.ts.snap | 112 +++--------------- 23 files changed, 137 insertions(+), 223 deletions(-) diff --git a/package-lock.json b/package-lock.json index f928908873..911ecac417 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1400,9 +1400,9 @@ } }, "@types/graphql": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.13.4.tgz", - "integrity": "sha512-B4yel4ro2nTb3v0pYO8vO6SjgvFJSrwUY+IO6TUSLdOSB+gQFslylrhRCHxvXMIhxB71mv5PEE9dAX+24S8sew==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-14.0.2.tgz", + "integrity": "sha512-mB9iBWsXs8BvTk0CIPYA0iV7Jfvx/Csb7pelA6cEZjKDmcJkNWoNmeFw69Hmhjosa4JPVCjNC7RuaStjx4GgTA==", "dev": true }, "@types/inflected": { @@ -1720,7 +1720,7 @@ "git-parse": "^1.0.3", "git-rev-sync": "^1.12.0", "glob": "^7.1.2", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-tag": "^2.9.2", "heroku-cli-util": "^8.0.9", "listr": "^0.14.1", @@ -1825,7 +1825,7 @@ "apollo-link-ws": "^1.0.8", "core-js": "^2.5.7", "glob": "^7.1.2", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-tag": "^2.9.2", "minimatch": "^3.0.4", "moment": "^2.22.2", @@ -2128,7 +2128,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -2245,7 +2245,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "dev": true, "requires": { @@ -2467,7 +2467,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { @@ -2685,7 +2685,7 @@ "dependencies": { "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "lowercase-keys": { @@ -3062,7 +3062,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -3221,7 +3221,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -4084,7 +4084,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer3": { @@ -4846,7 +4846,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5398,7 +5398,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { "core-util-is": "~1.0.0", @@ -5485,7 +5485,7 @@ "dependencies": { "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" } } @@ -5496,16 +5496,16 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "graphql": { - "version": "0.13.2", - "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz", - "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz", + "integrity": "sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw==", "requires": { - "iterall": "^1.2.1" + "iterall": "^1.2.2" } }, "graphql-config": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz", + "resolved": "http://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz", "integrity": "sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA==", "requires": { "graphql-import": "^0.4.4", @@ -5525,7 +5525,7 @@ }, "graphql-import": { "version": "0.4.5", - "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz", + "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz", "integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==", "requires": { "lodash": "^4.17.4" @@ -5591,7 +5591,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { "core-util-is": "~1.0.0", @@ -6290,7 +6290,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -6435,7 +6435,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-object": { @@ -7696,7 +7696,7 @@ }, "json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, @@ -7838,7 +7838,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true } @@ -7953,7 +7953,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -8058,7 +8058,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -8106,7 +8106,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -8219,7 +8219,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -8492,7 +8492,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minimist-options": { @@ -8766,7 +8766,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" } } @@ -9199,7 +9199,7 @@ }, "opn": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", + "resolved": "http://registry.npmjs.org/opn/-/opn-3.0.3.tgz", "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", "requires": { "object-assign": "^4.0.1" @@ -9339,7 +9339,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true } @@ -9363,7 +9363,7 @@ }, "p-cancelable": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "resolved": "http://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" }, "p-defer": { @@ -9379,7 +9379,7 @@ }, "p-is-promise": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { @@ -9486,7 +9486,7 @@ "dependencies": { "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -9669,7 +9669,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { "through": "~2.3" @@ -9759,7 +9759,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" } } @@ -10026,7 +10026,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -10057,7 +10057,7 @@ }, "query-string": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "resolved": "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { "decode-uri-component": "^0.2.0", @@ -10212,7 +10212,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -11326,7 +11326,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -11542,7 +11542,7 @@ }, "tunnel": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "resolved": "http://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", "dev": true }, @@ -12161,7 +12161,7 @@ }, "whatwg-fetch": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" }, "whatwg-mimetype": { @@ -12313,7 +12313,7 @@ }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { diff --git a/package.json b/package.json index d96cecad3e..258011c607 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@types/babel-types": "^7.0.4", "@types/chai": "^4.1.4", "@types/common-tags": "^1.4.0", - "@types/graphql": "^0.13.4", + "@types/graphql": "^14.0.2", "@types/inflected": "^1.1.29", "@types/jest": "^23.3.1", "@types/listr": "^0.13.0", @@ -64,7 +64,7 @@ "@types/ws": "^6.0.0", "chai": "^4.1.2", "fs-monkey": "^0.3.3", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "husky": "^0.14.3", "jest": "^23.5.0", "jest-matcher-utils": "^23.5.0", diff --git a/packages/apollo-codegen-core/package.json b/packages/apollo-codegen-core/package.json index cc058d8e7b..9029dda74e 100644 --- a/packages/apollo-codegen-core/package.json +++ b/packages/apollo-codegen-core/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-core/src/utilities/graphql.ts b/packages/apollo-codegen-core/src/utilities/graphql.ts index 52ef8f3503..24212fb784 100644 --- a/packages/apollo-codegen-core/src/utilities/graphql.ts +++ b/packages/apollo-codegen-core/src/utilities/graphql.ts @@ -21,10 +21,10 @@ import { SelectionSetNode, FieldNode, GraphQLField, - GraphQLList, - GraphQLNonNull, DocumentNode, - DirectiveNode + DirectiveNode, + isListType, + isNonNullType } from "graphql"; declare module "graphql/utilities/buildASTSchema" { @@ -41,10 +41,7 @@ export function sortEnumValues(values: GraphQLEnumValue[]): GraphQLEnumValue[] { } export function isList(type: GraphQLType): boolean { - return ( - type instanceof GraphQLList || - (type instanceof GraphQLNonNull && type.ofType instanceof GraphQLList) - ); + return isListType(type) || (isNonNullType(type) && isListType(type.ofType)); } export function isMetaFieldName(name: string) { diff --git a/packages/apollo-codegen-flow-legacy/package.json b/packages/apollo-codegen-flow-legacy/package.json index c969eab1a9..28c0b1532b 100644 --- a/packages/apollo-codegen-flow-legacy/package.json +++ b/packages/apollo-codegen-flow-legacy/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-flow-legacy/src/codeGeneration.ts b/packages/apollo-codegen-flow-legacy/src/codeGeneration.ts index afa93a8d05..c544da6722 100644 --- a/packages/apollo-codegen-flow-legacy/src/codeGeneration.ts +++ b/packages/apollo-codegen-flow-legacy/src/codeGeneration.ts @@ -4,11 +4,12 @@ import { isCompositeType, isAbstractType, GraphQLEnumType, - GraphQLList, GraphQLNonNull, GraphQLInputObjectType, GraphQLObjectType, - GraphQLUnionType + GraphQLUnionType, + isListType, + isNonNullType } from "graphql"; import { wrap } from "apollo-codegen-core/lib/utilities/printing"; @@ -187,10 +188,10 @@ export function interfaceVariablesDeclarationForOperation( } function getObjectTypeName(type: GraphQLType): string { - if (type instanceof GraphQLList) { + if (isListType(type)) { return getObjectTypeName(type.ofType); } - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return getObjectTypeName(type.ofType); } if (type instanceof GraphQLObjectType) { @@ -355,17 +356,12 @@ export function propertyFromField( const typeName = typeNameFromGraphQLType(context, fieldType); let isArray = false; let isArrayElementNullable = null; - if (fieldType instanceof GraphQLList) { + if (isListType(fieldType)) { isArray = true; - isArrayElementNullable = !(fieldType.ofType instanceof GraphQLNonNull); - } else if ( - fieldType instanceof GraphQLNonNull && - fieldType.ofType instanceof GraphQLList - ) { + isArrayElementNullable = !isNonNullType(fieldType.ofType); + } else if (isNonNullType(fieldType) && isListType(fieldType.ofType)) { isArray = true; - isArrayElementNullable = !( - fieldType.ofType.ofType instanceof GraphQLNonNull - ); + isArrayElementNullable = !isNonNullType(fieldType.ofType.ofType); } return { ...property, diff --git a/packages/apollo-codegen-flow-legacy/src/types.ts b/packages/apollo-codegen-flow-legacy/src/types.ts index 0c9a9b3c03..296a71c640 100644 --- a/packages/apollo-codegen-flow-legacy/src/types.ts +++ b/packages/apollo-codegen-flow-legacy/src/types.ts @@ -4,9 +4,9 @@ import { GraphQLFloat, GraphQLBoolean, GraphQLID, - GraphQLList, - GraphQLNonNull, - GraphQLScalarType + GraphQLScalarType, + isListType, + isNonNullType } from "graphql"; import { LegacyCompilerContext } from "apollo-codegen-core/lib/compiler/legacyIR"; import { GraphQLType } from "graphql"; @@ -25,12 +25,12 @@ export function typeNameFromGraphQLType( bareTypeName?: string | null, nullable = true ): string { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return typeNameFromGraphQLType(context, type.ofType, bareTypeName, false); } let typeName; - if (type instanceof GraphQLList) { + if (isListType(type)) { typeName = `Array< ${typeNameFromGraphQLType( context, type.ofType, diff --git a/packages/apollo-codegen-flow/package.json b/packages/apollo-codegen-flow/package.json index 8799681764..470f852b8c 100644 --- a/packages/apollo-codegen-flow/package.json +++ b/packages/apollo-codegen-flow/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-flow/src/helpers.ts b/packages/apollo-codegen-flow/src/helpers.ts index 3a6643b77d..2548887e21 100644 --- a/packages/apollo-codegen-flow/src/helpers.ts +++ b/packages/apollo-codegen-flow/src/helpers.ts @@ -3,11 +3,11 @@ import { GraphQLFloat, GraphQLInt, GraphQLID, - GraphQLList, - GraphQLNonNull, GraphQLScalarType, GraphQLString, - GraphQLType + GraphQLType, + isListType, + isNonNullType } from "graphql"; import * as t from "@babel/types"; @@ -37,7 +37,7 @@ export function createTypeAnnotationFromGraphQLTypeFunction( type: GraphQLType, typeName?: string ): t.FlowTypeAnnotation { - if (type instanceof GraphQLList) { + if (isListType(type)) { return t.genericTypeAnnotation( t.identifier(arrayType), t.typeParameterInstantiation([ @@ -58,7 +58,7 @@ export function createTypeAnnotationFromGraphQLTypeFunction( } else { return t.anyTypeAnnotation(); } - } else if (type instanceof GraphQLNonNull) { + } else if (isNonNullType(type)) { // This won't happen; but for TypeScript completeness: return typeAnnotationFromGraphQLType(type.ofType, typeName); } else { @@ -70,7 +70,7 @@ export function createTypeAnnotationFromGraphQLTypeFunction( type: GraphQLType, typeName?: string ): t.FlowTypeAnnotation { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return nonNullableTypeAnnotationFromGraphQLType(type.ofType, typeName); } else { return t.nullableTypeAnnotation( diff --git a/packages/apollo-codegen-scala/package.json b/packages/apollo-codegen-scala/package.json index 51c125f6eb..f8c910b67f 100644 --- a/packages/apollo-codegen-scala/package.json +++ b/packages/apollo-codegen-scala/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-scala/src/types.ts b/packages/apollo-codegen-scala/src/types.ts index 153a2f4628..b66a668bc5 100644 --- a/packages/apollo-codegen-scala/src/types.ts +++ b/packages/apollo-codegen-scala/src/types.ts @@ -4,11 +4,11 @@ import { GraphQLFloat, GraphQLBoolean, GraphQLID, - GraphQLList, - GraphQLNonNull, GraphQLScalarType, GraphQLEnumType, - isAbstractType + isAbstractType, + isNonNullType, + isListType } from "graphql"; import { LegacyCompilerContext } from "apollo-codegen-core/lib/compiler/legacyIR"; import { GraphQLType } from "graphql"; @@ -39,7 +39,7 @@ export function typeNameFromGraphQLType( isOptional?: boolean, isInputObject?: boolean ): string { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return typeNameFromGraphQLType( context, type.ofType, @@ -51,7 +51,7 @@ export function typeNameFromGraphQLType( } let typeName; - if (type instanceof GraphQLList) { + if (isListType(type)) { typeName = "Seq[" + typeNameFromGraphQLType(context, type.ofType, bareTypeName) + diff --git a/packages/apollo-codegen-swift/package.json b/packages/apollo-codegen-swift/package.json index 3d2731a7fa..b674aca835 100644 --- a/packages/apollo-codegen-swift/package.json +++ b/packages/apollo-codegen-swift/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-swift/src/codeGeneration.ts b/packages/apollo-codegen-swift/src/codeGeneration.ts index e55215d24f..00ac8dfb92 100644 --- a/packages/apollo-codegen-swift/src/codeGeneration.ts +++ b/packages/apollo-codegen-swift/src/codeGeneration.ts @@ -6,9 +6,9 @@ import { getNamedType, isCompositeType, GraphQLEnumType, - GraphQLList, - GraphQLNonNull, - GraphQLInputObjectType + GraphQLInputObjectType, + isNonNullType, + isListType } from "graphql"; import { @@ -221,9 +221,8 @@ export class SwiftAPIGenerator extends SwiftGenerator { const properties = variables.map(({ name, type }) => { const typeName = this.helpers.typeNameFromGraphQLType(type); const isOptional = !( - type instanceof GraphQLNonNull || - (type instanceof GraphQLList && - type.ofType instanceof GraphQLNonNull) + isNonNullType(type) || + (isListType(type) && isNonNullType(type.ofType)) ); return { name, propertyName: name, type, typeName, isOptional }; }); diff --git a/packages/apollo-codegen-swift/src/helpers.ts b/packages/apollo-codegen-swift/src/helpers.ts index 9c825cb02e..2325b58636 100644 --- a/packages/apollo-codegen-swift/src/helpers.ts +++ b/packages/apollo-codegen-swift/src/helpers.ts @@ -5,13 +5,14 @@ import { GraphQLFloat, GraphQLBoolean, GraphQLID, - GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLEnumType, isCompositeType, getNamedType, - GraphQLInputField + GraphQLInputField, + isNonNullType, + isListType } from "graphql"; import { camelCase, pascalCase } from "change-case"; @@ -49,7 +50,7 @@ export class Helpers { unmodifiedTypeName?: string, isOptional?: boolean ): string { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return this.typeNameFromGraphQLType( type.ofType, unmodifiedTypeName, @@ -60,7 +61,7 @@ export class Helpers { } let typeName; - if (type instanceof GraphQLList) { + if (isListType(type)) { typeName = "[" + this.typeNameFromGraphQLType(type.ofType, unmodifiedTypeName) + @@ -84,9 +85,9 @@ export class Helpers { } fieldTypeEnum(type: GraphQLType, structName: string): string { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return `.nonNull(${this.fieldTypeEnum(type.ofType, structName)})`; - } else if (type instanceof GraphQLList) { + } else if (isListType(type)) { return `.list(${this.fieldTypeEnum(type.ofType, structName)})`; } else if (type instanceof GraphQLScalarType) { return `.scalar(${this.typeNameForScalarType(type)}.self)`; @@ -146,7 +147,7 @@ export class Helpers { let type = field.type; - if (isConditional && type instanceof GraphQLNonNull) { + if (isConditional && isNonNullType(type)) { type = type.ofType; } @@ -270,14 +271,14 @@ export class Helpers { outputTypeName: string ): string { let isOptional; - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { isOptional = !!isConditional; type = type.ofType; } else { isOptional = true; } - if (type instanceof GraphQLList) { + if (isListType(type)) { const elementType = type.ofType; if (isOptional) { return `${expression}.flatMap { ${makeClosureSignature( diff --git a/packages/apollo-codegen-typescript-legacy/package.json b/packages/apollo-codegen-typescript-legacy/package.json index b4f886c72c..3c59950be7 100644 --- a/packages/apollo-codegen-typescript-legacy/package.json +++ b/packages/apollo-codegen-typescript-legacy/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-typescript-legacy/src/codeGeneration.ts b/packages/apollo-codegen-typescript-legacy/src/codeGeneration.ts index 2d74f4751f..9475dbc2e4 100644 --- a/packages/apollo-codegen-typescript-legacy/src/codeGeneration.ts +++ b/packages/apollo-codegen-typescript-legacy/src/codeGeneration.ts @@ -12,13 +12,14 @@ import { isCompositeType, isAbstractType, GraphQLEnumType, - GraphQLList, GraphQLNonNull, GraphQLInputObjectType, GraphQLType, GraphQLUnionType, GraphQLInterfaceType, - GraphQLObjectType + GraphQLObjectType, + isListType, + isNonNullType } from "graphql"; import { sortEnumValues } from "apollo-codegen-core/lib/utilities/graphql"; @@ -154,10 +155,10 @@ export function interfaceVariablesDeclarationForOperation( } function getObjectTypeName(type: GraphQLType): string { - if (type instanceof GraphQLList) { + if (isListType(type)) { return getObjectTypeName(type.ofType); } - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return getObjectTypeName(type.ofType); } if (type instanceof GraphQLObjectType) { @@ -356,13 +357,10 @@ export function propertyFromField( const typeName = typeNameFromGraphQLType(context, fieldType); let isArray = false; let isArrayElementNullable = null; - if (fieldType instanceof GraphQLList) { + if (isListType(fieldType)) { isArray = true; isArrayElementNullable = !(fieldType.ofType instanceof GraphQLNonNull); - } else if ( - fieldType instanceof GraphQLNonNull && - fieldType.ofType instanceof GraphQLList - ) { + } else if (isNonNullType(fieldType) && isListType(fieldType.ofType)) { isArray = true; isArrayElementNullable = !( fieldType.ofType.ofType instanceof GraphQLNonNull diff --git a/packages/apollo-codegen-typescript-legacy/src/types.ts b/packages/apollo-codegen-typescript-legacy/src/types.ts index ffa34e97e6..98afa59419 100644 --- a/packages/apollo-codegen-typescript-legacy/src/types.ts +++ b/packages/apollo-codegen-typescript-legacy/src/types.ts @@ -6,10 +6,10 @@ import { GraphQLFloat, GraphQLBoolean, GraphQLID, - GraphQLList, - GraphQLNonNull, GraphQLScalarType, - GraphQLType + GraphQLType, + isListType, + isNonNullType } from "graphql"; const builtInScalarMap = { @@ -26,12 +26,12 @@ export function typeNameFromGraphQLType( bareTypeName?: string | null, nullable = true ): string { - if (type instanceof GraphQLNonNull) { + if (isNonNullType(type)) { return typeNameFromGraphQLType(context, type.ofType, bareTypeName, false); } let typeName; - if (type instanceof GraphQLList) { + if (isListType(type)) { typeName = `Array< ${typeNameFromGraphQLType( context, type.ofType, diff --git a/packages/apollo-codegen-typescript/package.json b/packages/apollo-codegen-typescript/package.json index efd94bac97..0c47ea8f3e 100644 --- a/packages/apollo-codegen-typescript/package.json +++ b/packages/apollo-codegen-typescript/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build" }, "engines": { diff --git a/packages/apollo-codegen-typescript/src/codeGeneration.ts b/packages/apollo-codegen-typescript/src/codeGeneration.ts index 4299cd5ece..8a9aced460 100644 --- a/packages/apollo-codegen-typescript/src/codeGeneration.ts +++ b/packages/apollo-codegen-typescript/src/codeGeneration.ts @@ -26,12 +26,11 @@ import TypescriptGenerator, { TypescriptCompilerOptions } from "./language"; import Printer from "./printer"; -import { GraphQLType } from "graphql/type/definition"; +import { GraphQLType, isListType } from "graphql/type/definition"; import { GraphQLNonNull, GraphQLOutputType, getNullableType, - GraphQLList, GraphQLObjectType } from "graphql"; import { maybePush } from "apollo-codegen-core/lib/utilities/array"; @@ -388,7 +387,7 @@ export class TypescriptAPIGenerator extends TypescriptGenerator { if (type instanceof GraphQLNonNull) { return this.getUnderlyingType(getNullableType(type)); } - if (type instanceof GraphQLList) { + if (isListType(type)) { return this.getUnderlyingType(type.ofType); } return type; @@ -452,7 +451,7 @@ export class TypescriptAPIGenerator extends TypescriptGenerator { type = getNullableType(type); } - if (type instanceof GraphQLList) { + if (isListType(type)) { type = type.ofType; } diff --git a/packages/apollo-codegen-typescript/src/helpers.ts b/packages/apollo-codegen-typescript/src/helpers.ts index 930c5d3f58..dea682708b 100644 --- a/packages/apollo-codegen-typescript/src/helpers.ts +++ b/packages/apollo-codegen-typescript/src/helpers.ts @@ -3,11 +3,11 @@ import { GraphQLFloat, GraphQLInt, GraphQLID, - GraphQLList, - GraphQLNonNull, GraphQLScalarType, GraphQLString, - GraphQLType + GraphQLType, + isListType, + isNonNullType } from "graphql"; import * as t from "@babel/types"; @@ -29,7 +29,7 @@ export function createTypeFromGraphQLTypeFunction( graphQLType: GraphQLType, typeName?: string ): t.TSType { - if (graphQLType instanceof GraphQLList) { + if (isListType(graphQLType)) { const elementType = typeFromGraphQLType(graphQLType.ofType, typeName); return t.TSArrayType( t.isTSUnionType(elementType) @@ -49,7 +49,7 @@ export function createTypeFromGraphQLTypeFunction( } else { return t.TSAnyKeyword(); } - } else if (graphQLType instanceof GraphQLNonNull) { + } else if (isNonNullType(graphQLType)) { // This won't happen; but for TypeScript completeness: return typeFromGraphQLType(graphQLType.ofType, typeName); } else { @@ -61,7 +61,7 @@ export function createTypeFromGraphQLTypeFunction( graphQLType: GraphQLType, typeName?: string ): t.TSType { - if (graphQLType instanceof GraphQLNonNull) { + if (isNonNullType(graphQLType)) { return nonNullableTypeFromGraphQLType(graphQLType.ofType, typeName); } else { const type = nonNullableTypeFromGraphQLType(graphQLType, typeName); diff --git a/packages/apollo-language-server/package.json b/packages/apollo-language-server/package.json index b8b9996a51..0e0d49104a 100644 --- a/packages/apollo-language-server/package.json +++ b/packages/apollo-language-server/package.json @@ -33,7 +33,7 @@ "apollo-link-ws": "^1.0.8", "core-js": "^2.5.7", "glob": "^7.1.2", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-tag": "^2.9.2", "minimatch": "^3.0.4", "moment": "^2.22.2", diff --git a/packages/apollo/package.json b/packages/apollo/package.json index efc1594f7d..c1eb9ba5fa 100644 --- a/packages/apollo/package.json +++ b/packages/apollo/package.json @@ -24,6 +24,7 @@ "clean": "rm -rf lib", "prebuild": "npm run clean", "build": "tsc", + "watch": "tsc -w", "prepare": "npm run build", "prepack": "oclif-dev manifest && oclif-dev readme", "postpack": "rm -f oclif.manifest.json", @@ -62,7 +63,7 @@ "git-parse": "^1.0.3", "git-rev-sync": "^1.12.0", "glob": "^7.1.2", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-tag": "^2.9.2", "heroku-cli-util": "^8.0.9", "listr": "^0.14.1", diff --git a/packages/apollo/src/commands/schema/__tests__/__snapshots__/download.test.ts.snap b/packages/apollo/src/commands/schema/__tests__/__snapshots__/download.test.ts.snap index 0e9013207c..12a47cd48d 100644 --- a/packages/apollo/src/commands/schema/__tests__/__snapshots__/download.test.ts.snap +++ b/packages/apollo/src/commands/schema/__tests__/__snapshots__/download.test.ts.snap @@ -802,54 +802,6 @@ exports[`successful schema downloading grabs schema JSON from local server 1`] = }, \\"isDeprecated\\": false, \\"deprecationReason\\": null - }, - { - \\"name\\": \\"onOperation\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" - }, - { - \\"name\\": \\"onFragment\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" - }, - { - \\"name\\": \\"onField\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" } ], \\"inputFields\\": null, @@ -907,6 +859,12 @@ exports[`successful schema downloading grabs schema JSON from local server 1`] = \\"isDeprecated\\": false, \\"deprecationReason\\": null }, + { + \\"name\\": \\"VARIABLE_DEFINITION\\", + \\"description\\": \\"Location adjacent to a variable definition.\\", + \\"isDeprecated\\": false, + \\"deprecationReason\\": null + }, { \\"name\\": \\"SCHEMA\\", \\"description\\": \\"Location adjacent to a schema definition.\\", @@ -1110,7 +1068,7 @@ exports[`successful schema downloading grabs schema JSON from local server 1`] = \\"args\\": [ { \\"name\\": \\"reason\\", - \\"description\\": \\"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).\\", + \\"description\\": \\"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax (as specified by [CommonMark](https://commonmark.org/).\\", \\"type\\": { \\"kind\\": \\"SCALAR\\", \\"name\\": \\"String\\", @@ -1927,54 +1885,6 @@ exports[`successful schema downloading grabs schema JSON from local server speci }, \\"isDeprecated\\": false, \\"deprecationReason\\": null - }, - { - \\"name\\": \\"onOperation\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" - }, - { - \\"name\\": \\"onFragment\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" - }, - { - \\"name\\": \\"onField\\", - \\"description\\": null, - \\"args\\": [], - \\"type\\": { - \\"kind\\": \\"NON_NULL\\", - \\"name\\": null, - \\"ofType\\": { - \\"kind\\": \\"SCALAR\\", - \\"name\\": \\"Boolean\\", - \\"ofType\\": null - } - }, - \\"isDeprecated\\": true, - \\"deprecationReason\\": \\"Use \`locations\`.\\" } ], \\"inputFields\\": null, @@ -2032,6 +1942,12 @@ exports[`successful schema downloading grabs schema JSON from local server speci \\"isDeprecated\\": false, \\"deprecationReason\\": null }, + { + \\"name\\": \\"VARIABLE_DEFINITION\\", + \\"description\\": \\"Location adjacent to a variable definition.\\", + \\"isDeprecated\\": false, + \\"deprecationReason\\": null + }, { \\"name\\": \\"SCHEMA\\", \\"description\\": \\"Location adjacent to a schema definition.\\", @@ -2235,7 +2151,7 @@ exports[`successful schema downloading grabs schema JSON from local server speci \\"args\\": [ { \\"name\\": \\"reason\\", - \\"description\\": \\"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).\\", + \\"description\\": \\"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax (as specified by [CommonMark](https://commonmark.org/).\\", \\"type\\": { \\"kind\\": \\"SCALAR\\", \\"name\\": \\"String\\",