UNPKG

2.6 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.defaultExtensions = undefined;
7exports.start = start;
8
9var _express = require('express');
10
11var _express2 = _interopRequireDefault(_express);
12
13var _expressGraphql = require('express-graphql');
14
15var _expressGraphql2 = _interopRequireDefault(_expressGraphql);
16
17var _compression = require('compression');
18
19var _compression2 = _interopRequireDefault(_compression);
20
21var _cors = require('cors');
22
23var _cors2 = _interopRequireDefault(_cors);
24
25var _api = require('./api');
26
27var _api2 = _interopRequireDefault(_api);
28
29var _schema = require('./schema');
30
31var _schema2 = _interopRequireDefault(_schema);
32
33var _context = require('./context');
34
35function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
37const formatError = err => ({
38 message: err.message,
39 locations: err.locations,
40 stack: err.stack
41});
42
43const defaultExtensions = exports.defaultExtensions = [require.resolve('./extensions/cover-art-archive'), require.resolve('./extensions/fanart-tv'), require.resolve('./extensions/mediawiki'), require.resolve('./extensions/the-audio-db')];
44
45const middleware = ({
46 client = new _api2.default(),
47 extensions = process.env.GRAPHBRAINZ_EXTENSIONS ? JSON.parse(process.env.GRAPHBRAINZ_EXTENSIONS) : defaultExtensions,
48 ...middlewareOptions
49} = {}) => {
50 const options = { client, extensions, ...middlewareOptions };
51 const DEV = process.env.NODE_ENV !== 'production';
52 const graphiql = DEV || process.env.GRAPHBRAINZ_GRAPHIQL === 'true';
53 return (0, _expressGraphql2.default)({
54 schema: (0, _schema.createSchema)(_schema2.default, options),
55 context: (0, _context.createContext)(options),
56 pretty: DEV,
57 graphiql,
58 formatError: DEV ? formatError : undefined,
59 ...middlewareOptions
60 });
61};
62
63exports.default = middleware;
64function start(options) {
65 require('dotenv').config({ silent: true });
66 const app = (0, _express2.default)();
67 const port = process.env.PORT || 3000;
68 const route = process.env.GRAPHBRAINZ_PATH || '/';
69 const corsOptions = {
70 origin: process.env.GRAPHBRAINZ_CORS_ORIGIN || false,
71 methods: 'HEAD,GET,POST'
72 };
73 switch (corsOptions.origin) {
74 case 'true':
75 corsOptions.origin = true;
76 break;
77 case 'false':
78 corsOptions.origin = false;
79 break;
80 default:
81 break;
82 }
83 app.use((0, _compression2.default)());
84 app.use(route, (0, _cors2.default)(corsOptions), middleware(options));
85 app.listen(port);
86 console.log(`Listening on port ${port}.`);
87}
88
89if (require.main === module) {
90 start();
91}
\No newline at end of file