1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.stopServer = exports.startServer = exports.DEFAULT_TESTING_PORT = exports.DEFAULT_PORT = void 0;
|
9 |
|
10 | var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
11 |
|
12 | var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
13 |
|
14 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
15 |
|
16 | var _safe = _interopRequireDefault(require("colors/safe"));
|
17 |
|
18 | var _exitHook = _interopRequireDefault(require("exit-hook"));
|
19 |
|
20 | var _env = require("@sharyn/env");
|
21 |
|
22 | var _checkSetup = require("@sharyn/check-setup");
|
23 |
|
24 |
|
25 |
|
26 | var Koa = (0, _checkSetup.hasPackage)('koa', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa"));
|
27 |
|
28 |
|
29 | var Router = (0, _checkSetup.hasPackage)('koa-router', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa-router"));
|
30 |
|
31 | var router = new Router();
|
32 |
|
33 | var PREFIX = _safe.default.cyan('[sharyn/koa]');
|
34 |
|
35 | var DEFAULT_PORT = 8020;
|
36 | exports.DEFAULT_PORT = DEFAULT_PORT;
|
37 | var DEFAULT_TESTING_PORT = 8021;
|
38 | exports.DEFAULT_TESTING_PORT = DEFAULT_TESTING_PORT;
|
39 | var port = _env.IS_TEST_ENV ? _env.TESTING_PORT || DEFAULT_TESTING_PORT : _env.PORT || DEFAULT_PORT;
|
40 | var server;
|
41 |
|
42 | var stopServer_ = function stopServer_(options) {
|
43 | if (server) {
|
44 | if (!((options === null || options === void 0 ? void 0 : options.silent) || _env.IS_TEST_ENV)) {
|
45 |
|
46 | console.log();
|
47 |
|
48 |
|
49 | console.log("".concat(PREFIX, " Server stopped"));
|
50 | }
|
51 |
|
52 | var sharynDb = (0, _checkSetup.requireSharyn)('db');
|
53 | sharynDb && sharynDb.knex.destroy();
|
54 | var sharynRedis = (0, _checkSetup.requireSharyn)('redis');
|
55 | sharynRedis && sharynRedis.quit();
|
56 | return server.close();
|
57 | }
|
58 |
|
59 | throw Error('Tried to stop the server but no server was running');
|
60 | };
|
61 |
|
62 | var startServer_ = function startServer_(manualRouting, options) {
|
63 | var routing = manualRouting || (0, _checkSetup.requireCascadeFromSource)('_server/routing.js', 'server/routing.js');
|
64 |
|
65 | if (!routing) {
|
66 | throw Error('You must pass a routing function to startServer, or have a _server/routing.js file exporting the routing function');
|
67 | }
|
68 |
|
69 | if (!((options === null || options === void 0 ? void 0 : options.silent) || _env.IS_TEST_ENV)) {
|
70 |
|
71 | console.log("\n".concat(PREFIX, " \uD83C\uDF39 Server running on PORT: ").concat(port, " | NODE_ENV: ").concat(_env.NODE_ENV, " | ENV_TYPE: ").concat(_env.ENV_TYPE));
|
72 | }
|
73 |
|
74 | (0, _exitHook.default)(function () {
|
75 | return stopServer_();
|
76 | });
|
77 | var app = new Koa();
|
78 |
|
79 | if ((0, _checkSetup.hasPackage)('koa-session')) {
|
80 | app.keys = [_env.SESSION_SECRET_KEY];
|
81 | }
|
82 |
|
83 | if ((0, _checkSetup.hasPackage)('koa-sslify')) {
|
84 |
|
85 | var enforceHttps = require('koa-sslify');
|
86 |
|
87 | var hasHeroku = (0, _checkSetup.hasFile)('Procfile');
|
88 | _env.IS_LOCAL_ENV_TYPE || app.use(enforceHttps({
|
89 | trustProtoHeader: hasHeroku
|
90 | }));
|
91 | }
|
92 |
|
93 | if ((0, _checkSetup.hasPackage)('koa-session')) {
|
94 |
|
95 | var session = require('koa-session');
|
96 |
|
97 | var sessionOptions = {
|
98 | maxAge: 1000 * 60 * 60 * 24 * 14,
|
99 |
|
100 | rolling: true
|
101 | };
|
102 | var sharynRedis = (0, _checkSetup.requireSharyn)('redis');
|
103 |
|
104 | if (sharynRedis) {
|
105 | sessionOptions.store = {
|
106 | get: function () {
|
107 | var _get = (0, _asyncToGenerator2.default)(
|
108 |
|
109 | _regenerator.default.mark(function _callee(key) {
|
110 | return _regenerator.default.wrap(function _callee$(_context) {
|
111 | while (1) {
|
112 | switch (_context.prev = _context.next) {
|
113 | case 0:
|
114 | _context.t0 = JSON;
|
115 | _context.next = 3;
|
116 | return sharynRedis.getAsync("session:".concat(key));
|
117 |
|
118 | case 3:
|
119 | _context.t1 = _context.sent;
|
120 | return _context.abrupt("return", _context.t0.parse.call(_context.t0, _context.t1));
|
121 |
|
122 | case 5:
|
123 | case "end":
|
124 | return _context.stop();
|
125 | }
|
126 | }
|
127 | }, _callee, this);
|
128 | }));
|
129 |
|
130 | return function get(_x) {
|
131 | return _get.apply(this, arguments);
|
132 | };
|
133 | }(),
|
134 | set: function set(key, sess) {
|
135 | return sharynRedis.setAsync("session:".concat(key), (0, _stringify.default)(sess));
|
136 | },
|
137 | destroy: function destroy(key) {
|
138 | return sharynRedis.delAsync(key);
|
139 | }
|
140 | };
|
141 | }
|
142 |
|
143 | app.use(session(sessionOptions, app));
|
144 | }
|
145 |
|
146 | if ((0, _checkSetup.hasPackage)('koa-body')) {
|
147 |
|
148 | app.use(require('koa-body')({
|
149 | multipart: true
|
150 | }));
|
151 | }
|
152 |
|
153 | if ((0, _checkSetup.hasPackage)('koa-compress')) {
|
154 |
|
155 | app.use(require('koa-compress')());
|
156 | }
|
157 |
|
158 | if ((0, _checkSetup.hasPackage)('koa-mount') && (0, _checkSetup.hasPackage)('koa-static')) {
|
159 |
|
160 | var mount = require('koa-mount');
|
161 |
|
162 |
|
163 | var serveStatic = require('koa-static');
|
164 |
|
165 | app.use(mount('/static', serveStatic('dist'))).use(mount('/static', serveStatic('public')));
|
166 | }
|
167 |
|
168 | if ((0, _checkSetup.hasPackage)('koa-favicon')) {
|
169 | app.use(
|
170 | require('koa-favicon')("./".concat((0, _checkSetup.pathCascade)('public/img/favicon/favicon.ico', 'public/img/favicon.ico', 'public/favicon.ico'))));
|
171 | }
|
172 |
|
173 | routing(router);
|
174 | app.use(router.routes()).use(router.allowedMethods());
|
175 | server = app.listen((options === null || options === void 0 ? void 0 : options.port) || port);
|
176 | };
|
177 |
|
178 | var startServer = startServer_;
|
179 | exports.startServer = startServer;
|
180 | var stopServer = stopServer_;
|
181 | exports.stopServer = stopServer; |
\ | No newline at end of file |