1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.defaultExtensions = undefined;
|
7 | exports.start = start;
|
8 |
|
9 | var _express = require('express');
|
10 |
|
11 | var _express2 = _interopRequireDefault(_express);
|
12 |
|
13 | var _expressGraphql = require('express-graphql');
|
14 |
|
15 | var _expressGraphql2 = _interopRequireDefault(_expressGraphql);
|
16 |
|
17 | var _compression = require('compression');
|
18 |
|
19 | var _compression2 = _interopRequireDefault(_compression);
|
20 |
|
21 | var _cors = require('cors');
|
22 |
|
23 | var _cors2 = _interopRequireDefault(_cors);
|
24 |
|
25 | var _api = require('./api');
|
26 |
|
27 | var _api2 = _interopRequireDefault(_api);
|
28 |
|
29 | var _schema = require('./schema');
|
30 |
|
31 | var _schema2 = _interopRequireDefault(_schema);
|
32 |
|
33 | var _context = require('./context');
|
34 |
|
35 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
36 |
|
37 | const formatError = err => ({
|
38 | message: err.message,
|
39 | locations: err.locations,
|
40 | stack: err.stack
|
41 | });
|
42 |
|
43 | const 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 |
|
45 | const 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 |
|
63 | exports.default = middleware;
|
64 | function 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 |
|
89 | if (require.main === module) {
|
90 | start();
|
91 | } |
\ | No newline at end of file |