-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
62 lines (50 loc) · 1.38 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"use strict";
// Import config
const {
runLoader,
getEnvironmentOverview,
} = require("./src/config");
// Load config
runLoader();
// Import constants
const constant = require("./src/init/const");
// Import useApp
const {useApp} = require("./src/init/express");
// Initialize application
const app = useApp();
// Initialize prepare handlers
const {
prepare: prepareDatabase,
} = require("./src/init/database");
const {
prepare: prepareListener,
} = require("./src/init/listener");
const prepareHandlers = [
prepareDatabase,
prepareListener,
];
// Render index page
app.get("/", (_, res) => {
res.render("index");
});
// The handler for robots.txt (deny all friendly robots)
app.get("/robots.txt", (_, res) => {
res.type("txt").send("User-agent: *\nDisallow: /");
});
// Load router dispatcher
const routerDispatcher = require("./src/routes");
routerDispatcher.load();
// Show banner message
(() => {
const {APP_NAME: appName} = constant;
const {node, runtime} = getEnvironmentOverview();
const statusMessage = `(environment: ${node}, ${runtime})`;
console.info(appName, statusMessage, "\n====");
})();
// Mount application and execute it
require("./src/execute")(app, prepareHandlers,
({protocol, hostname, port}) => {
console.info(`Protocol "${protocol}" is listening at`);
console.info(`${protocol}://${hostname}:${port}`);
},
);