aboutsummaryrefslogtreecommitdiff
path: root/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts53
1 files changed, 32 insertions, 21 deletions
diff --git a/src/index.ts b/src/index.ts
index 1de4b10..d101ba3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -4,8 +4,6 @@ import winston from "winston";
import expressWinston from "express-winston";
import path from "path";
-dotenv.config();
-
import routes from "./routes";
import Metadata, { EnvConfig } from "./metadata";
import loggerConfig from "./util/logger";
@@ -14,32 +12,45 @@ import {
handleStartup,
handleShutdown,
initializeToken,
-} from "./util/config";
-
-// Start-up configuration
-const BIND_ADDRESS = process.env.BIND_ADDRESS ?? "localhost";
-const MONGO_DB = process.env.MONGO_DB ?? "ao-coverage";
-const PORT = Number(process.env.PORT ?? 3000);
-const MONGO_URI = configOrError("MONGO_URI");
-const TARGET_URL = process.env.TARGET_URL ?? "http://localhost:3000";
+} from "./config";
+
+dotenv.config();
+
+const LOG_LEVEL = process.env.LOG_LEVEL ?? "info";
+const logger = winston.createLogger(loggerConfig("ROOT", LOG_LEVEL));
+
+// Application-wide configuration settings
const ENV_CONFIG: EnvConfig = {
- token: process.env.TOKEN ?? initializeToken(),
+ // Express configuration
+ bindAddress: process.env.BIND_ADDRESS ?? "localhost",
+ port: Number(process.env.PORT ?? 3000),
uploadLimit: Number(process.env.UPLOAD_LIMIT ?? 4194304),
+
+ // Database connection information
+ dbName: process.env.MONGO_DB ?? "ao-coverage",
+ dbUri: configOrError("MONGO_URI", logger),
+
+ // Where the server should say it's located
+ targetUrl: process.env.TARGET_URL ?? "http://localhost:3000",
+
+ // Directories used for serving static or uploaded files
publicDir: path.join(__dirname, "..", "public"),
- hostDir: configOrError("HOST_DIR"),
+ hostDir: configOrError("HOST_DIR", logger),
+
+ // Application configuration
+ token: process.env.TOKEN ?? initializeToken(logger),
stage1: Number(process.env.STAGE_1 ?? 95),
stage2: Number(process.env.STAGE_2 ?? 80),
+ logLevel: LOG_LEVEL,
};
-const logger = winston.createLogger(loggerConfig("ROOT"));
-
-handleStartup(MONGO_URI, ENV_CONFIG, TARGET_URL).then((mongo) => {
+handleStartup(ENV_CONFIG, logger).then((mongo) => {
const app: express.Application = express();
- const metadata = new Metadata(mongo.db(MONGO_DB), ENV_CONFIG);
+ const metadata = new Metadata(mongo.db(ENV_CONFIG.dbName), ENV_CONFIG);
app.use(
expressWinston.logger({
- ...loggerConfig("HTTP"),
+ ...loggerConfig("HTTP", ENV_CONFIG.logLevel),
colorize: true,
// filter out token query param from URL
msg: '{{req.method}} {{req.url.replace(/token=[-\\w.~]*(&*)/, "token=$1")}} - {{res.statusCode}} {{res.responseTime}}ms',
@@ -49,15 +60,15 @@ handleStartup(MONGO_URI, ENV_CONFIG, TARGET_URL).then((mongo) => {
// actual app routes
app.use(routes(metadata));
- app.use(expressWinston.errorLogger(loggerConfig("_ERR")));
+ app.use(expressWinston.errorLogger(loggerConfig("_ERR", ENV_CONFIG.logLevel)));
- const server = app.listen(PORT, BIND_ADDRESS, () => {
- logger.info("Express has started: http://%s:%d/", BIND_ADDRESS, PORT);
+ const server = app.listen(ENV_CONFIG.port, ENV_CONFIG.bindAddress, () => {
+ logger.info("Express has started: http://%s:%d/", ENV_CONFIG.bindAddress, ENV_CONFIG.port);
});
// application exit handling
const signalCodes: NodeJS.Signals[] = ["SIGTERM", "SIGHUP", "SIGINT"];
signalCodes.map((code: NodeJS.Signals) => {
- process.on(code, handleShutdown(mongo, server));
+ process.on(code, handleShutdown(mongo, server, logger));
});
});