Jayden Seric aa63c4c500 Version 1.0.0.
Initial release.
2017-04-02 23:14:11 +10:00

46 lines
1.0 KiB
JavaScript

import 'source-map-support/register'
import Koa from 'koa'
import cors from 'kcors'
import compress from 'koa-compress'
import KoaRouter from 'koa-router'
import koaBody from 'koa-bodyparser'
import {makeExecutableSchema} from 'graphql-tools'
import {graphqlKoa} from 'graphql-server-koa'
import {apolloUploadKoa} from 'apollo-upload-server'
import {apiEndpoint} from './config'
import typeDefs from './schema.graphql'
import resolvers from './resolvers'
const app = new Koa()
const router = new KoaRouter()
const schema = makeExecutableSchema({
typeDefs,
resolvers
})
// Enable Cross-Origin Resource Sharing (CORS)
app.use(cors())
// Enable gzip
app.use(compress())
// Parse body
app.use(koaBody())
// GraphQL API
router.post(
apiEndpoint,
apolloUploadKoa({
uploadDir: '/tmp/uploads'
}),
graphqlKoa({
schema
})
)
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(process.env.PORT)
console.log(`Serving at http://localhost:${process.env.PORT} in ${process.env.NODE_ENV} mode.`)