-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.mjs
89 lines (76 loc) · 2.17 KB
/
app.mjs
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Lavateinn - Tiny and flexible microservice framework.
// SPDX-License-Identifier: BSD-3-Clause (https://ncurl.xyz/s/mI23sevHR)
// Auto-load config
import "./src/init/config.mjs";
// Import constants
import {
APP_NAME,
} from "./src/init/const.mjs";
// Import instance variables
import {
instanceContext,
instanceRole,
} from "./src/init/instance.mjs";
// Import modules
import {
getNodeEnv,
getRuntimeEnv,
getInstanceMode,
} from "./src/config.mjs";
import {
invokeApp,
} from "./src/execute.mjs";
import {
exitHandler as tempExitHandler,
} from "./src/init/temp.mjs";
// The application only can be allowed to use "single" mode
if (instanceRole !== "single") {
throw new Error("the app only can be allowed to use \"single\" mode");
}
// Define router names
const routerNames = [
"root",
"text",
"file",
];
// Define init handlers
const initHandlers = [];
// Define exit handlers
const exitHandlers = [
tempExitHandler,
];
// Define display
const displayStatus = (protocolStatus) => {
// Display the status of the application
if (instanceRole !== "worker") {
// Get node and runtime environment information.
const nodeEnv = getNodeEnv();
const runtimeEnv = getRuntimeEnv();
const instanceMode = getInstanceMode();
// Display the status
console.info(APP_NAME);
console.info("====");
console.info(`Environment: ${nodeEnv}, ${runtimeEnv}`);
console.info(`Instance Mode: ${instanceMode}`);
}
// Display the protocol status
if (instanceRole === "single" || instanceContext.get("workerId") === 1) {
// Define the view
const viewIt = ({protocol, hostname, port}) => {
console.info("----");
console.info(`Protocol "${protocol}" is listening at`);
console.info(`${protocol}://${hostname}:${port}`);
};
// Display the status
protocolStatus.
filter((i) => i.protocol).
forEach(viewIt);
}
};
// Mount application and execute it
invokeApp().
loadRoutes(routerNames).
loadInits(initHandlers).
loadExits(exitHandlers).
execute().
then(displayStatus);