From de11cb3c4712efd36f6168d2d2f09fbc78a527e2 Mon Sep 17 00:00:00 2001 From: Jayden Seric Date: Tue, 14 Aug 2018 18:57:57 +1000 Subject: [PATCH] Update to Apollo Server v2. --- api/package-lock.json | 146 +++------------------------------- api/package.json | 6 -- api/readme.md | 1 - api/server.mjs | 41 +++------- api/{schema.mjs => types.mjs} | 2 - 5 files changed, 22 insertions(+), 174 deletions(-) rename api/{schema.mjs => types.mjs} (94%) diff --git a/api/package-lock.json b/api/package-lock.json index 4bd5085..b6d506c 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -400,18 +400,6 @@ "lodash": "^4.17.10", "subscriptions-transport-ws": "^0.9.11", "ws": "^5.2.0" - }, - "dependencies": { - "apollo-upload-server": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz", - "integrity": "sha512-CzbHvMo/6TO5XrovzmV/ojTft17s9Cd+vKLGngChpB0UW1ObxKlNLlcXRLD+yt6Nec32/Kt209HmA31hnwxB/g==", - "requires": { - "@babel/runtime": "^7.0.0-beta.40", - "busboy": "^0.2.14", - "object-path": "^0.11.4" - } - } } }, "apollo-server-env": { @@ -450,26 +438,6 @@ "koa-bodyparser": "^3.0.0", "koa-router": "^7.4.0", "type-is": "^1.6.16" - }, - "dependencies": { - "apollo-upload-server": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz", - "integrity": "sha512-CzbHvMo/6TO5XrovzmV/ojTft17s9Cd+vKLGngChpB0UW1ObxKlNLlcXRLD+yt6Nec32/Kt209HmA31hnwxB/g==", - "requires": { - "@babel/runtime": "^7.0.0-beta.40", - "busboy": "^0.2.14", - "object-path": "^0.11.4" - } - }, - "koa-bodyparser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-3.2.0.tgz", - "integrity": "sha1-uRbeF+IDn+gmUEgZc9fClPELVxk=", - "requires": { - "co-body": "^4.2.0" - } - } } }, "apollo-tracing": { @@ -493,12 +461,12 @@ } }, "apollo-upload-server": { - "version": "6.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-6.0.0-alpha.1.tgz", - "integrity": "sha512-s4SIr1HK9EABP/pvkxIrqnQHKjyaxXZf0F9X3HgfzJAcx2JjtnI0KxiukqYnCYpi0OPmDA/F1XxKonsrsiw9MQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz", + "integrity": "sha512-CzbHvMo/6TO5XrovzmV/ojTft17s9Cd+vKLGngChpB0UW1ObxKlNLlcXRLD+yt6Nec32/Kt209HmA31hnwxB/g==", "requires": { + "@babel/runtime": "^7.0.0-beta.40", "busboy": "^0.2.14", - "fs-capacitor": "^0.0.3", "object-path": "^0.11.4" } }, @@ -1006,14 +974,6 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "compressible": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz", - "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=", - "requires": { - "mime-db": ">= 1.34.0 < 2" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1065,11 +1025,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "copy-to": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", - "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" - }, "core-js": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", @@ -2001,11 +1956,6 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, - "fs-capacitor": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-0.0.3.tgz", - "integrity": "sha512-oXfXMxpmALJ09ftrwuv9BpHC0kb+pOZKugtjUR8p1YL5kF+crZGWD2/60Vk5PgRSvO2HKOZWkjziCXABesl8Qg==" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3218,11 +3168,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "kcors": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/kcors/-/kcors-2.2.2.tgz", - "integrity": "sha512-rIqbKa2S0gT0wC/790jsQM6hNpABHBNWQ7+XYS1xJV6zOGxlanW+RtCmlDn6wPZsGpRk371yy8abfBgl2OTavg==" - }, "keygrip": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.2.tgz", @@ -3266,65 +3211,11 @@ } }, "koa-bodyparser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.2.1.tgz", - "integrity": "sha512-UIjPAlMZfNYDDe+4zBaOAUKYqkwAGcIU6r2ARf1UOXPAlfennQys5IiShaVeNf7KkVBlf88f2LeLvBFvKylttw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-3.2.0.tgz", + "integrity": "sha1-uRbeF+IDn+gmUEgZc9fClPELVxk=", "requires": { - "co-body": "^6.0.0", - "copy-to": "^2.0.1" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "co-body": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.0.0.tgz", - "integrity": "sha512-9ZIcixguuuKIptnY8yemEOuhb71L/lLf+Rl5JfJEUiDNJk0e02MBt7BPxR2GEh5mw8dPthQYR4jPI/BnS1MQgw==", - "requires": { - "inflation": "^2.0.0", - "qs": "^6.5.2", - "raw-body": "^2.3.3", - "type-is": "^1.6.16" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - } + "co-body": "^4.2.0" } }, "koa-compose": { @@ -3332,24 +3223,6 @@ "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" }, - "koa-compress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-3.0.0.tgz", - "integrity": "sha512-xol+LkNB1mozKJkB5Kj6nYXbJXhkLkZlXl9BsGBPjujVfZ8MsIXwU4GHRTT7TlSfUcl2DU3JtC+j6wOWcovfuQ==", - "requires": { - "bytes": "^3.0.0", - "compressible": "^2.0.0", - "koa-is-json": "^1.0.0", - "statuses": "^1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - } - } - }, "koa-convert": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", @@ -4423,7 +4296,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.5.0", diff --git a/api/package.json b/api/package.json index 35bde4e..5b03ecc 100644 --- a/api/package.json +++ b/api/package.json @@ -6,15 +6,9 @@ }, "dependencies": { "apollo-server-koa": "^2.0.0", - "apollo-upload-server": "^6.0.0-alpha.1", "dotenv": "^6.0.0", "graphql": "^0.13.2", - "graphql-tools": "^3.1.1", - "kcors": "^2.2.2", "koa": "^2.5.2", - "koa-bodyparser": "^4.2.1", - "koa-compress": "^3.0.0", - "koa-router": "^7.4.0", "lowdb": "^1.0.0", "mkdirp": "^0.5.1", "promises-all": "^1.0.0", diff --git a/api/readme.md b/api/readme.md index dd4329b..b29c223 100644 --- a/api/readme.md +++ b/api/readme.md @@ -4,7 +4,6 @@ An example GraphQL API using: - [koa](https://npm.im/koa) - [graphql-server-koa](https://npm.im/graphql-server-koa) -- [apollo-upload-server](https://npm.im/apollo-upload-server) ## Setup diff --git a/api/server.mjs b/api/server.mjs index dccae0b..071646c 100644 --- a/api/server.mjs +++ b/api/server.mjs @@ -1,34 +1,17 @@ import Koa from 'koa' -import cors from 'kcors' -import compress from 'koa-compress' -import KoaRouter from 'koa-router' -import koaBody from 'koa-bodyparser' -import { apolloUploadKoa } from 'apollo-upload-server' import apolloServerKoa from 'apollo-server-koa' -import graphqlTools from 'graphql-tools' -import typeDefs from './schema.mjs' +import typeDefs from './types.mjs' import resolvers from './resolvers.mjs' -const router = new KoaRouter().post( - '/graphql', - koaBody(), - apolloUploadKoa(), - apolloServerKoa.graphqlKoa({ - schema: graphqlTools.makeExecutableSchema({ typeDefs, resolvers }) - }) -) +const app = new Koa() +const server = new apolloServerKoa.ApolloServer({ typeDefs, resolvers }) -new Koa() - .use(cors()) - .use(compress()) - .use(router.routes()) - .use(router.allowedMethods()) - .listen(process.env.PORT, error => { - if (error) throw error - // eslint-disable-next-line no-console - console.info( - `Serving http://localhost:${process.env.PORT} for ${ - process.env.NODE_ENV - }.` - ) - }) +server.applyMiddleware({ app }) + +app.listen(process.env.PORT, error => { + if (error) throw error + // eslint-disable-next-line no-console + console.info( + `Serving http://localhost:${process.env.PORT} for ${process.env.NODE_ENV}.` + ) +}) diff --git a/api/schema.mjs b/api/types.mjs similarity index 94% rename from api/schema.mjs rename to api/types.mjs index 2cfa948..b3621b0 100644 --- a/api/schema.mjs +++ b/api/types.mjs @@ -1,6 +1,4 @@ export default /* GraphQL */ ` - scalar Upload - type File { id: ID! path: String!