graphbrainz/src/index.js

38 lines
956 B
JavaScript
Raw Normal View History

2016-08-08 07:54:06 +00:00
import express from 'express'
import graphqlHTTP from 'express-graphql'
2016-11-26 01:38:32 +00:00
import compression from 'compression'
import MusicBrainz from './api'
2016-08-08 07:54:06 +00:00
import schema from './schema'
2016-11-26 01:38:32 +00:00
import createLoaders from './loaders'
2016-08-08 07:54:06 +00:00
2016-11-26 01:38:32 +00:00
const formatError = (err) => ({
message: err.message,
locations: err.locations,
stack: err.stack
})
2016-08-08 07:54:06 +00:00
2016-11-26 01:38:32 +00:00
const middleware = ({ client = new MusicBrainz(), ...options } = {}) => {
const DEV = process.env.NODE_ENV !== 'production'
const loaders = createLoaders(client)
return graphqlHTTP({
schema,
context: { client, loaders },
pretty: DEV,
graphiql: DEV,
formatError: DEV ? formatError : undefined,
...options
2016-08-08 07:54:06 +00:00
})
2016-11-26 01:38:32 +00:00
}
2016-08-08 07:54:06 +00:00
2016-11-26 01:38:32 +00:00
export default middleware
2016-08-20 05:59:32 +00:00
2016-11-26 01:38:32 +00:00
if (require.main === module) {
require('dotenv').config({ silent: true })
const app = express()
const port = process.env.PORT || 3000
const route = process.env.GRAPHBRAINZ_PATH || '/'
app.use(compression())
app.use(route, middleware())
app.listen(port)
}