Update apollo-upload-server and use native modules.

This commit is contained in:
Jayden Seric 2018-01-30 04:13:55 +11:00
parent 44efa43dac
commit f2cdf0fbba
4 changed files with 23 additions and 21 deletions

11
api/package-lock.json generated
View File

@ -12,11 +12,6 @@
"regenerator-runtime": "0.11.1" "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": { "@types/zen-observable": {
"version": "0.5.3", "version": "0.5.3",
"resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz",
@ -171,9 +166,9 @@
} }
}, },
"apollo-upload-server": { "apollo-upload-server": {
"version": "4.0.0", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-4.0.0.tgz", "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-4.0.2.tgz",
"integrity": "sha512-DClUePPEdin1imHtKRuoEt91HiCPI/iSTPpAMQizba+wRAKlzKLzoFXFjOtv32B4rmrQOZybCbh711PYVsFjBg==", "integrity": "sha512-XbijSlkSyEOylm8vo7RxtoOxwWunGkzEf6Vczg3WjdzMEkJ+9zVzMMz/oF8jBScXqeEn+cVopcJ6y9CZACuHxQ==",
"requires": { "requires": {
"@babel/runtime": "7.0.0-beta.38", "@babel/runtime": "7.0.0-beta.38",
"busboy": "0.2.14", "busboy": "0.2.14",

View File

@ -6,8 +6,7 @@
"npm": ">=5.4" "npm": ">=5.4"
}, },
"dependencies": { "dependencies": {
"@std/esm": "^0.19.7", "apollo-upload-server": "^4.0.2",
"apollo-upload-server": "^4.0.0",
"dotenv": "^4.0.0", "dotenv": "^4.0.0",
"graphql": "^0.12.3", "graphql": "^0.12.3",
"graphql-server-koa": "^1.3.2", "graphql-server-koa": "^1.3.2",
@ -34,9 +33,8 @@
"lint": "eslint . --ext mjs", "lint": "eslint . --ext mjs",
"fix": "npm run lint -- --fix && prettier --write '**/*.md'", "fix": "npm run lint -- --fix && prettier --write '**/*.md'",
"dev": "nodemon --ext mjs", "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": { "eslintConfig": {
"parserOptions": { "parserOptions": {
"sourceType": "module", "sourceType": "module",

View File

@ -1,5 +1,5 @@
import { createWriteStream, unlinkSync } from 'fs' import fs from 'fs'
import { all } from 'promises-all' import promisesAll from 'promises-all'
import mkdirp from 'mkdirp' import mkdirp from 'mkdirp'
import shortid from 'shortid' import shortid from 'shortid'
import lowdb from 'lowdb' import lowdb from 'lowdb'
@ -23,11 +23,11 @@ const storeFS = ({ stream, filename }) => {
.on('error', error => { .on('error', error => {
if (stream.truncated) if (stream.truncated)
// Delete the truncated file // Delete the truncated file
unlinkSync(path) fs.unlinkSync(path)
reject(error) reject(error)
}) })
.on('end', () => resolve({ id, path })) .on('end', () => resolve({ id, path }))
.pipe(createWriteStream(path)) .pipe(fs.createWriteStream(path))
) )
} }
@ -52,12 +52,16 @@ export default {
Mutation: { Mutation: {
singleUpload: (obj, { file }) => processUpload(file), singleUpload: (obj, { file }) => processUpload(file),
multipleUpload: async (obj, { files }) => { multipleUpload: async (obj, { files }) => {
const { resolve, reject } = await all(files.map(processUpload)) const { resolve, reject } = await promisesAll.all(
files.map(processUpload)
)
if (reject.length) if (reject.length)
reject.forEach(({ name, message }) => reject.forEach(({ name, message }) =>
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.error(`${name}: ${message}`) console.error(`${name}: ${message}`)
) )
return resolve return resolve
} }
} }

View File

@ -4,16 +4,21 @@ import compress from 'koa-compress'
import KoaRouter from 'koa-router' import KoaRouter from 'koa-router'
import koaBody from 'koa-bodyparser' import koaBody from 'koa-bodyparser'
import { apolloUploadKoa } from 'apollo-upload-server' import { apolloUploadKoa } from 'apollo-upload-server'
import { graphqlKoa } from 'graphql-server-koa' import graphqlServerKoa from 'graphql-server-koa'
import { makeExecutableSchema } from 'graphql-tools' import graphqlTools from 'graphql-tools'
import typeDefs from './schema.mjs' import typeDefs from './schema.mjs'
import resolvers from './resolvers.mjs' import resolvers from './resolvers.mjs'
const app = new Koa() const app = new Koa()
const router = new KoaRouter() 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 app
.use(cors()) .use(cors())