UNPKG

3.67 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof2 = require('babel-runtime/helpers/typeof');
8
9var _typeof3 = _interopRequireDefault(_typeof2);
10
11var _extends2 = require('babel-runtime/helpers/extends');
12
13var _extends3 = _interopRequireDefault(_extends2);
14
15var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
16
17var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
18
19exports.start = start;
20
21var _express = require('express');
22
23var _express2 = _interopRequireDefault(_express);
24
25var _expressGraphql = require('express-graphql');
26
27var _expressGraphql2 = _interopRequireDefault(_expressGraphql);
28
29var _compression = require('compression');
30
31var _compression2 = _interopRequireDefault(_compression);
32
33var _cors = require('cors');
34
35var _cors2 = _interopRequireDefault(_cors);
36
37var _api = require('./api');
38
39var _api2 = _interopRequireDefault(_api);
40
41var _schema = require('./schema');
42
43var _schema2 = _interopRequireDefault(_schema);
44
45var _context = require('./context');
46
47function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48
49var debug = require('debug')('graphbrainz');
50
51var formatError = function formatError(err) {
52 return {
53 message: err.message,
54 locations: err.locations,
55 stack: err.stack
56 };
57};
58
59var middleware = function middleware() {
60 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
61
62 var _ref$client = _ref.client,
63 client = _ref$client === undefined ? new _api2.default() : _ref$client,
64 _ref$extensions = _ref.extensions,
65 extensions = _ref$extensions === undefined ? process.env.GRAPHBRAINZ_EXTENSIONS ? JSON.parse(process.env.GRAPHBRAINZ_EXTENSIONS) : ['./extensions/cover-art-archive', './extensions/fanart-tv', './extensions/mediawiki', './extensions/the-audio-db'] : _ref$extensions,
66 middlewareOptions = (0, _objectWithoutProperties3.default)(_ref, ['client', 'extensions']);
67
68 debug('Loading ' + extensions.length + ' extension(s).');
69 var options = (0, _extends3.default)({
70 client: client,
71 extensions: extensions.map(function (extensionModule) {
72 if ((typeof extensionModule === 'undefined' ? 'undefined' : (0, _typeof3.default)(extensionModule)) === 'object') {
73 return extensionModule;
74 }
75 var extension = require(extensionModule);
76 return extension.default ? extension.default : extension;
77 })
78 }, middlewareOptions);
79 var DEV = process.env.NODE_ENV !== 'production';
80 var graphiql = DEV || process.env.GRAPHBRAINZ_GRAPHIQL === 'true';
81 return (0, _expressGraphql2.default)((0, _extends3.default)({
82 schema: (0, _schema.createSchema)(_schema2.default, options),
83 context: (0, _context.createContext)(options),
84 pretty: DEV,
85 graphiql: graphiql,
86 formatError: DEV ? formatError : undefined
87 }, middlewareOptions));
88};
89
90exports.default = middleware;
91function start() {
92 require('dotenv').config({ silent: true });
93 var app = (0, _express2.default)();
94 var port = process.env.PORT || 3000;
95 var route = process.env.GRAPHBRAINZ_PATH || '/';
96 var corsOptions = {
97 origin: process.env.GRAPHBRAINZ_CORS_ORIGIN || false,
98 methods: 'HEAD,GET,POST'
99 };
100 switch (corsOptions.origin) {
101 case 'true':
102 corsOptions.origin = true;
103 break;
104 case 'false':
105 corsOptions.origin = false;
106 break;
107 default:
108 break;
109 }
110 app.use((0, _compression2.default)());
111 app.use(route, (0, _cors2.default)(corsOptions), middleware());
112 app.listen(port);
113 console.log('Listening on port ' + port + '.');
114}
115
116if (require.main === module) {
117 start();
118}
\No newline at end of file