From f2cdf0fbbaa69126f5c786391d5d368195adcdf6 Mon Sep 17 00:00:00 2001 From: Jayden Seric Date: Tue, 30 Jan 2018 04:13:55 +1100 Subject: [PATCH] Update apollo-upload-server and use native modules. --- api/package-lock.json | 11 +++-------- api/package.json | 6 ++---- api/resolvers.mjs | 14 +++++++++----- api/server.mjs | 13 +++++++++---- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index 5d939c0..93c247c 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -12,11 +12,6 @@ "regenerator-runtime": "0.11.1" } }, - "@std/esm": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@std/esm/-/esm-0.19.7.tgz", - "integrity": "sha512-bPBbpu1vqgOOD70aMVG5tgioPdttKXQQFq6xodjZxVbPprtZIcm8NcTEJoB+/1QoH8z1TIqjaEN1Wm3YndnfNQ==" - }, "@types/zen-observable": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz", @@ -171,9 +166,9 @@ } }, "apollo-upload-server": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-4.0.0.tgz", - "integrity": "sha512-DClUePPEdin1imHtKRuoEt91HiCPI/iSTPpAMQizba+wRAKlzKLzoFXFjOtv32B4rmrQOZybCbh711PYVsFjBg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-4.0.2.tgz", + "integrity": "sha512-XbijSlkSyEOylm8vo7RxtoOxwWunGkzEf6Vczg3WjdzMEkJ+9zVzMMz/oF8jBScXqeEn+cVopcJ6y9CZACuHxQ==", "requires": { "@babel/runtime": "7.0.0-beta.38", "busboy": "0.2.14", diff --git a/api/package.json b/api/package.json index 40b3d16..97d6716 100644 --- a/api/package.json +++ b/api/package.json @@ -6,8 +6,7 @@ "npm": ">=5.4" }, "dependencies": { - "@std/esm": "^0.19.7", - "apollo-upload-server": "^4.0.0", + "apollo-upload-server": "^4.0.2", "dotenv": "^4.0.0", "graphql": "^0.12.3", "graphql-server-koa": "^1.3.2", @@ -34,9 +33,8 @@ "lint": "eslint . --ext mjs", "fix": "npm run lint -- --fix && prettier --write '**/*.md'", "dev": "nodemon --ext mjs", - "start": "node --require @std/esm --require dotenv/config server.mjs" + "start": "node --experimental-modules --require dotenv/config server.mjs" }, - "@std/esm": "cjs", "eslintConfig": { "parserOptions": { "sourceType": "module", diff --git a/api/resolvers.mjs b/api/resolvers.mjs index 0c7855b..4af9fdf 100644 --- a/api/resolvers.mjs +++ b/api/resolvers.mjs @@ -1,5 +1,5 @@ -import { createWriteStream, unlinkSync } from 'fs' -import { all } from 'promises-all' +import fs from 'fs' +import promisesAll from 'promises-all' import mkdirp from 'mkdirp' import shortid from 'shortid' import lowdb from 'lowdb' @@ -23,11 +23,11 @@ const storeFS = ({ stream, filename }) => { .on('error', error => { if (stream.truncated) // Delete the truncated file - unlinkSync(path) + fs.unlinkSync(path) reject(error) }) .on('end', () => resolve({ id, path })) - .pipe(createWriteStream(path)) + .pipe(fs.createWriteStream(path)) ) } @@ -52,12 +52,16 @@ export default { Mutation: { singleUpload: (obj, { file }) => processUpload(file), multipleUpload: async (obj, { files }) => { - const { resolve, reject } = await all(files.map(processUpload)) + const { resolve, reject } = await promisesAll.all( + files.map(processUpload) + ) + if (reject.length) reject.forEach(({ name, message }) => // eslint-disable-next-line no-console console.error(`${name}: ${message}`) ) + return resolve } } diff --git a/api/server.mjs b/api/server.mjs index 184d2cc..35fabd7 100644 --- a/api/server.mjs +++ b/api/server.mjs @@ -4,16 +4,21 @@ import compress from 'koa-compress' import KoaRouter from 'koa-router' import koaBody from 'koa-bodyparser' import { apolloUploadKoa } from 'apollo-upload-server' -import { graphqlKoa } from 'graphql-server-koa' -import { makeExecutableSchema } from 'graphql-tools' +import graphqlServerKoa from 'graphql-server-koa' +import graphqlTools from 'graphql-tools' import typeDefs from './schema.mjs' import resolvers from './resolvers.mjs' const app = new Koa() const router = new KoaRouter() -const schema = makeExecutableSchema({ typeDefs, resolvers }) +const schema = graphqlTools.makeExecutableSchema({ typeDefs, resolvers }) -router.post('/graphql', koaBody(), apolloUploadKoa(), graphqlKoa({ schema })) +router.post( + '/graphql', + koaBody(), + apolloUploadKoa(), + graphqlServerKoa.graphqlKoa({ schema }) +) app .use(cors())