UNPKG

4.06 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.stopServer = exports.startServer = exports.DEFAULT_TESTING_PORT = exports.DEFAULT_PORT = void 0;
9
10var _safe = _interopRequireDefault(require("colors/safe"));
11
12var _exitHook = _interopRequireDefault(require("exit-hook"));
13
14var _env = require("@sharyn/env");
15
16var _checkSetup = require("@sharyn/check-setup");
17
18/* eslint-disable import/no-extraneous-dependencies, import/no-dynamic-require, global-require */
19// flow-disable-next-line
20// flow-disable-next-line
21var Koa = (0, _checkSetup.hasPackage)('koa', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa")); // flow-disable-next-line
22
23
24var Router = (0, _checkSetup.hasPackage)('koa-router', true) && require("".concat(_checkSetup.appRoot, "/node_modules/koa-router"));
25
26var router = new Router();
27
28var PREFIX = _safe.default.cyan('[sharyn/koa]');
29
30var DEFAULT_PORT = 8020;
31exports.DEFAULT_PORT = DEFAULT_PORT;
32var DEFAULT_TESTING_PORT = 8021;
33exports.DEFAULT_TESTING_PORT = DEFAULT_TESTING_PORT;
34var port = _env.IS_TEST_ENV ? _env.TESTING_PORT || DEFAULT_TESTING_PORT : _env.PORT || DEFAULT_PORT;
35var server;
36
37var stopServer_ = function stopServer_(options) {
38 if (server) {
39 if (!((options === null || options === void 0 ? void 0 : options.silent) || _env.IS_TEST_ENV)) {
40 // eslint-disable-next-line no-console
41 console.log(); // cross-os newline
42 // eslint-disable-next-line no-console
43
44 console.log("".concat(PREFIX, " Server stopped"));
45 }
46
47 if ((0, _checkSetup.hasPackage)('@sharyn/db')) {
48 // flow-disable-next-line
49 require('@sharyn/db').knex.destroy();
50 }
51
52 if ((0, _checkSetup.hasPackage)('@sharyn/redis')) {
53 // flow-disable-next-line
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
63var 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 // eslint-disable-next-line no-console
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 // flow-disable-next-line
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 // flow-disable-next-line
92 app.use(require('koa-compress')());
93 }
94
95 if ((0, _checkSetup.hasPackage)('koa-mount') && (0, _checkSetup.hasPackage)('koa-static')) {
96 // flow-disable-next-line
97 var mount = require('koa-mount'); // flow-disable-next-line
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( // flow-disable-next-line
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
115var startServer = startServer_;
116exports.startServer = startServer;
117var stopServer = stopServer_;
118exports.stopServer = stopServer;
\No newline at end of file