1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _express = require('express');
|
8 |
|
9 | var _express2 = _interopRequireDefault(_express);
|
10 |
|
11 | var _morgan = require('morgan');
|
12 |
|
13 | var _morgan2 = _interopRequireDefault(_morgan);
|
14 |
|
15 | var _bodyParser = require('body-parser');
|
16 |
|
17 | var _bodyParser2 = _interopRequireDefault(_bodyParser);
|
18 |
|
19 | var _cookieParser = require('cookie-parser');
|
20 |
|
21 | var _cookieParser2 = _interopRequireDefault(_cookieParser);
|
22 |
|
23 | var _compression = require('compression');
|
24 |
|
25 | var _compression2 = _interopRequireDefault(_compression);
|
26 |
|
27 | var _methodOverride = require('method-override');
|
28 |
|
29 | var _methodOverride2 = _interopRequireDefault(_methodOverride);
|
30 |
|
31 | var _cors = require('cors');
|
32 |
|
33 | var _cors2 = _interopRequireDefault(_cors);
|
34 |
|
35 | var _httpStatus = require('http-status');
|
36 |
|
37 | var _httpStatus2 = _interopRequireDefault(_httpStatus);
|
38 |
|
39 | var _expressWinston = require('express-winston');
|
40 |
|
41 | var _expressWinston2 = _interopRequireDefault(_expressWinston);
|
42 |
|
43 | var _expressValidation = require('express-validation');
|
44 |
|
45 | var _expressValidation2 = _interopRequireDefault(_expressValidation);
|
46 |
|
47 | var _winston = require('./winston');
|
48 |
|
49 | var _winston2 = _interopRequireDefault(_winston);
|
50 |
|
51 | var _index = require('../API/index');
|
52 |
|
53 | var _index2 = _interopRequireDefault(_index);
|
54 |
|
55 | var _index3 = require('../pages/index');
|
56 |
|
57 | var _index4 = _interopRequireDefault(_index3);
|
58 |
|
59 | var _env = require('./env');
|
60 |
|
61 | var _env2 = _interopRequireDefault(_env);
|
62 |
|
63 | var _APIError = require('../API/helpers/APIError');
|
64 |
|
65 | var _APIError2 = _interopRequireDefault(_APIError);
|
66 |
|
67 | var _ExtendableError = require('../API/helpers/ExtendableError');
|
68 |
|
69 | var _ExtendableError2 = _interopRequireDefault(_ExtendableError);
|
70 |
|
71 | var _passport = require('passport');
|
72 |
|
73 | var _passport2 = _interopRequireDefault(_passport);
|
74 |
|
75 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
76 |
|
77 | var app = (0, _express2.default)();
|
78 |
|
79 | if (_env2.default.env === 'development') {
|
80 | app.use((0, _morgan2.default)('dev'));
|
81 | }
|
82 |
|
83 |
|
84 | app.use(_bodyParser2.default.json());
|
85 | app.use(_bodyParser2.default.urlencoded({ extended: true }));
|
86 |
|
87 | app.use((0, _cookieParser2.default)());
|
88 | app.use((0, _compression2.default)());
|
89 | app.use((0, _methodOverride2.default)());
|
90 |
|
91 | app.use(_passport2.default.initialize());
|
92 | app.use(_passport2.default.session());
|
93 |
|
94 |
|
95 | app.disable('x-powered-by');
|
96 |
|
97 |
|
98 | app.use((0, _cors2.default)());
|
99 |
|
100 |
|
101 | if (_env2.default.env === 'development') {
|
102 | _expressWinston2.default.requestWhitelist.push('body');
|
103 | _expressWinston2.default.responseWhitelist.push('body');
|
104 | app.use(_expressWinston2.default.logger({
|
105 | winstonInstance: _winston2.default,
|
106 | meta: true,
|
107 | msg: 'HTTP {{req.method}} {{req.url}} {{res.statusCode}} {{res.responseTime}}ms',
|
108 | colorStatus: true
|
109 | }));
|
110 | }
|
111 |
|
112 | if (_env2.default.staticPath) {
|
113 |
|
114 | console.log('Serve static files from: \x1b[36m' + _env2.default.staticPath + '\x1b[0m');
|
115 |
|
116 | app.use(_express2.default.static(_env2.default.staticPath));
|
117 | }
|
118 |
|
119 |
|
120 | app.use('/', _index4.default);
|
121 |
|
122 | app.use('/api', _index2.default);
|
123 |
|
124 |
|
125 |
|
126 | if (_env2.default.staticPath) {
|
127 | app.get('/*', function (req, res) {
|
128 | res.sendFile(_env2.default.staticPath + '/index.html');
|
129 | });
|
130 | }
|
131 |
|
132 |
|
133 | app.use(function (err, req, res, next) {
|
134 | if (err instanceof _expressValidation2.default.ValidationError) {
|
135 |
|
136 | var unifiedErrorMessage = err.errors.map(function (error) {
|
137 | return error.messages.join('. ');
|
138 | }).join(' and ');
|
139 | var error = new _APIError2.default(unifiedErrorMessage, err.status, true);
|
140 | return next(error);
|
141 | } else if (!(err instanceof _ExtendableError2.default)) {
|
142 | var apiError = new _APIError2.default(err.message, err.status, err.isPublic);
|
143 | return next(apiError);
|
144 | }
|
145 | return next(err);
|
146 | });
|
147 |
|
148 |
|
149 | app.use(function (req, res, next) {
|
150 | var err = new _APIError2.default('API not found', _httpStatus2.default.NOT_FOUND);
|
151 | return next(err);
|
152 | });
|
153 |
|
154 |
|
155 | if (_env2.default.env !== 'test') {
|
156 | app.use(_expressWinston2.default.errorLogger({
|
157 | winstonInstance: _winston2.default
|
158 | }));
|
159 | }
|
160 |
|
161 |
|
162 | app.use(function (err, req, res, next) {
|
163 | return (
|
164 | res.status(err.status).json({
|
165 | message: err.isPublic ? err.message : _httpStatus2.default[err.status],
|
166 | stack: _env2.default.env === 'development' ? err.stack : {}
|
167 | })
|
168 | );
|
169 | });
|
170 |
|
171 | exports.default = app;
|
172 | module.exports = exports['default'];
|
173 |
|