1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/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 _safe = _interopRequireDefault(require("colors/safe"));
|
11 |
|
12 | var _exitHook = _interopRequireDefault(require("exit-hook"));
|
13 |
|
14 | var _env = require("@sharyn/env");
|
15 |
|
16 | var _checkSetup = require("@sharyn/check-setup");
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | var Koa = (0, _checkSetup.hasPackage)('koa', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa"));
|
22 |
|
23 |
|
24 | var Router = (0, _checkSetup.hasPackage)('koa-router', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa-router"));
|
25 |
|
26 | var router = new Router();
|
27 |
|
28 | var PREFIX = _safe.default.cyan('[sharyn/koa]');
|
29 |
|
30 | var DEFAULT_PORT = 8020;
|
31 | exports.DEFAULT_PORT = DEFAULT_PORT;
|
32 | var DEFAULT_TESTING_PORT = 8021;
|
33 | exports.DEFAULT_TESTING_PORT = DEFAULT_TESTING_PORT;
|
34 | var port = _env.IS_TEST_ENV ? _env.TESTING_PORT || DEFAULT_TESTING_PORT : _env.PORT || DEFAULT_PORT;
|
35 | var server;
|
36 |
|
37 | var stopServer_ = function stopServer_(options) {
|
38 | if (server) {
|
39 | if (!((options === null || options === void 0 ? void 0 : options.silent) || _env.IS_TEST_ENV)) {
|
40 |
|
41 | console.log();
|
42 |
|
43 |
|
44 | console.log("".concat(PREFIX, " Server stopped"));
|
45 | }
|
46 |
|
47 | if ((0, _checkSetup.hasPackage)('@sharyn/db')) {
|
48 |
|
49 | require('@sharyn/db').knex.destroy();
|
50 | }
|
51 |
|
52 | if ((0, _checkSetup.hasPackage)('@sharyn/redis')) {
|
53 |
|
54 | require('@sharyn/redis').quit();
|
55 | }
|
56 |
|
57 | return server.close();
|
58 | }
|
59 |
|
60 | throw Error('Tried to stop the server but no server was running');
|
61 | };
|
62 |
|
63 | var startServer_ = function startServer_(manualRouting, options) {
|
64 | var routing = manualRouting || (0, _checkSetup.requireCascadeFromSource)('_server/routing.js', 'server/routing.js');
|
65 |
|
66 | if (!routing) {
|
67 | throw Error('You must pass a routing function to startServer, or have a _server/routing.js file exporting the routing function');
|
68 | }
|
69 |
|
70 | if (!((options === null || options === void 0 ? void 0 : options.silent) || _env.IS_TEST_ENV)) {
|
71 |
|
72 | 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));
|
73 | }
|
74 |
|
75 | (0, _exitHook.default)(function () {
|
76 | return stopServer_();
|
77 | });
|
78 | var app = new Koa();
|
79 |
|
80 | if ((0, _checkSetup.hasPackage)('koa-sslify')) {
|
81 |
|
82 | var enforceHttps = require('koa-sslify');
|
83 |
|
84 | var hasHeroku = (0, _checkSetup.hasFile)('Procfile');
|
85 | _env.IS_LOCAL_ENV_TYPE || app.use(enforceHttps({
|
86 | trustProtoHeader: hasHeroku
|
87 | }));
|
88 | }
|
89 |
|
90 | if ((0, _checkSetup.hasPackage)('koa-compress')) {
|
91 |
|
92 | app.use(require('koa-compress')());
|
93 | }
|
94 |
|
95 | if ((0, _checkSetup.hasPackage)('koa-mount') && (0, _checkSetup.hasPackage)('koa-static')) {
|
96 |
|
97 | var mount = require('koa-mount');
|
98 |
|
99 |
|
100 | var serveStatic = require('koa-static');
|
101 |
|
102 | app.use(mount('/static', serveStatic('dist'))).use(mount('/static', serveStatic('public')));
|
103 | }
|
104 |
|
105 | if ((0, _checkSetup.hasPackage)('koa-favicon')) {
|
106 | app.use(
|
107 | require('koa-favicon')("./".concat((0, _checkSetup.pathCascade)('public/img/favicon/favicon.ico', 'public/img/favicon.ico', 'public/favicon.ico'))));
|
108 | }
|
109 |
|
110 | routing(router);
|
111 | app.use(router.routes()).use(router.allowedMethods());
|
112 | server = app.listen((options === null || options === void 0 ? void 0 : options.port) || port);
|
113 | };
|
114 |
|
115 | var startServer = startServer_;
|
116 | exports.startServer = startServer;
|
117 | var stopServer = stopServer_;
|
118 | exports.stopServer = stopServer; |
\ | No newline at end of file |