diff --git a/packages/analytics/.env.dev b/packages/analytics/.env.dev new file mode 100644 index 0000000..1a17b26 --- /dev/null +++ b/packages/analytics/.env.dev @@ -0,0 +1,2 @@ +ADMIN_USERNAME=alex +ADMIN_PASSWORD=Alex1234 \ No newline at end of file diff --git a/packages/analytics/nodemon.json b/packages/analytics/nodemon.json index 0cd3700..5736a90 100644 --- a/packages/analytics/nodemon.json +++ b/packages/analytics/nodemon.json @@ -1,6 +1,7 @@ { - "watch": ["src"], + "watch": ["dist", "views"], "ext": "ts,handlebars,js", "ignore": ["src/**/*.spec.ts"], - "exec": "node --loader ts-node/esm src/index.ts" + "exec": "node -r source-map-support/register dist/index.js", + "delay": 200 } diff --git a/packages/analytics/package.json b/packages/analytics/package.json index cb7c0f5..f7f7658 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -6,13 +6,14 @@ "type": "module", "license": "GPL", "scripts": { - "start": "node --loader ts-node/esm src/index.ts", + "start": "node dist/index.js", "build": "tsc", "watch": "tsc -w", - "dev": "nodemon --loader ts-node/esm src/index.ts" + "dev": "concurrently \"yarn watch\" \"nodemon\"" }, "dependencies": { "@linux-odyssey/models": "*", + "dotenv": "^16.4.5", "express": "^4.18.2", "express-basic-auth": "^1.2.1", "express-handlebars": "^7.1.2", diff --git a/packages/analytics/src/config.ts b/packages/analytics/src/config.ts index 74a6968..850cfa8 100644 --- a/packages/analytics/src/config.ts +++ b/packages/analytics/src/config.ts @@ -1,3 +1,9 @@ +import dotenv from 'dotenv' + +if (process.env.NODE_ENV !== 'production') { + dotenv.config({ path: '.env.dev' }) +} + function getOrFailed(key: string): string { if (!process.env[key]) { throw new Error(`Missing required environment variable: ${key}`) @@ -16,13 +22,13 @@ interface Config { const config: Config = { host: process.env.HOST || 'localhost', - port: process.env.PORT ? parseInt(process.env.PORT) : 3001, + port: process.env.PORT ? parseInt(process.env.PORT, 10) : 3001, db: process.env.MONGO_URL || 'mongodb://localhost:27017/odyssey-test', username: getOrFailed('ADMIN_USERNAME'), password: getOrFailed('ADMIN_PASSWORD'), baseUrl: process.env.BASE_URL || - `http://${process.env.HOST || 'localhost'}:${process.env.PORT ? parseInt(process.env.PORT) : 3001}`, + `http://${process.env.HOST || 'localhost'}:${process.env.PORT ? parseInt(process.env.PORT, 10) : 3001}`, } export default config diff --git a/packages/analytics/src/controllers/commands.ts b/packages/analytics/src/controllers/commands.ts index 16a8136..778b78e 100644 --- a/packages/analytics/src/controllers/commands.ts +++ b/packages/analytics/src/controllers/commands.ts @@ -1,5 +1,5 @@ /* eslint-disable object-shorthand */ -import Pagination from '../models/pagination.ts' +import Pagination from '../models/pagination.js' import { errorCommands } from '../models/commands.js' // eslint-disable-next-line import/prefer-default-export diff --git a/packages/analytics/src/controllers/index.ts b/packages/analytics/src/controllers/index.ts index 002d09c..2da04ab 100644 --- a/packages/analytics/src/controllers/index.ts +++ b/packages/analytics/src/controllers/index.ts @@ -1,5 +1,5 @@ import { userCount } from '../models/users.js' -import { questList } from '../models/quests.ts' +import { questList } from '../models/quests.js' // eslint-disable-next-line import/prefer-default-export export async function homeController(req: any, res: any) { diff --git a/packages/analytics/src/controllers/quests.ts b/packages/analytics/src/controllers/quests.ts index ba135cc..047f3ce 100644 --- a/packages/analytics/src/controllers/quests.ts +++ b/packages/analytics/src/controllers/quests.ts @@ -1,4 +1,4 @@ -import { questList } from '../models/quests.ts' +import { questList } from '../models/quests.js' // eslint-disable-next-line import/prefer-default-export export async function questListController(req: any, res: any) { const quests = await questList() diff --git a/packages/analytics/src/controllers/sessions.ts b/packages/analytics/src/controllers/sessions.ts index bf01f21..9b3bcf5 100644 --- a/packages/analytics/src/controllers/sessions.ts +++ b/packages/analytics/src/controllers/sessions.ts @@ -1,6 +1,7 @@ -import Pagination from '../models/pagination.ts' -import { sessionList, sessionDetail } from '../models/sessions.ts' -import { Request, Response } from 'express' +import type { Request, Response } from 'express' +import Pagination from '../models/pagination.js' +import { sessionList, sessionDetail } from '../models/sessions.js' + export async function sessionListController(req: any, res: any) { const { nextKey, order } = req.query const itemsPerPage = 50 diff --git a/packages/analytics/src/controllers/users.ts b/packages/analytics/src/controllers/users.ts index 21c99af..911f74d 100644 --- a/packages/analytics/src/controllers/users.ts +++ b/packages/analytics/src/controllers/users.ts @@ -1,4 +1,4 @@ -import Pagination from '../models/pagination.ts' +import Pagination from '../models/pagination.js' import { userList } from '../models/users.js' export async function userListController(req: any, res: any) { diff --git a/packages/analytics/src/index.ts b/packages/analytics/src/index.ts index 7f05793..581a28e 100644 --- a/packages/analytics/src/index.ts +++ b/packages/analytics/src/index.ts @@ -2,8 +2,8 @@ import connectDB from '@linux-odyssey/models' import express from 'express' import { engine } from 'express-handlebars' import basicAuth from 'express-basic-auth' -import config from './config.ts' -import router from './router.ts' +import config from './config.js' +import router from './router.js' async function main() { await connectDB(config.db) diff --git a/packages/analytics/src/models/commands.ts b/packages/analytics/src/models/commands.ts index 5f52f67..2e2d742 100644 --- a/packages/analytics/src/models/commands.ts +++ b/packages/analytics/src/models/commands.ts @@ -1,5 +1,5 @@ import { Command } from '@linux-odyssey/models' -import Pagination from './pagination.ts' +import Pagination from './pagination.js' // eslint-disable-next-line import/prefer-default-export export async function errorCommands(pagination: Pagination) { diff --git a/packages/analytics/src/models/sessions.ts b/packages/analytics/src/models/sessions.ts index 66b5bcb..0b31d8d 100644 --- a/packages/analytics/src/models/sessions.ts +++ b/packages/analytics/src/models/sessions.ts @@ -1,6 +1,6 @@ import { Command, Session } from '@linux-odyssey/models' -import Pagination from './pagination.ts' import { Types } from 'mongoose' +import Pagination from './pagination.js' function formatTime(time: number) { const seconds = Math.floor(time / 1000) @@ -44,7 +44,6 @@ export async function sessionList(pagination: Pagination): Promise { commands, lastActivityAt, } = session - console.log(finishedAt) return { _id, user: user.username, // Assuming `user` is always populated. diff --git a/packages/analytics/src/models/users.ts b/packages/analytics/src/models/users.ts index 92dff29..c63d713 100644 --- a/packages/analytics/src/models/users.ts +++ b/packages/analytics/src/models/users.ts @@ -1,5 +1,5 @@ import { Session, User } from '@linux-odyssey/models' -import Pagination from './pagination.ts' +import Pagination from './pagination.js' function loginMethods(user: any) { const methods = [] diff --git a/packages/analytics/src/router.ts b/packages/analytics/src/router.ts index 8082768..9ef6ba6 100644 --- a/packages/analytics/src/router.ts +++ b/packages/analytics/src/router.ts @@ -2,12 +2,12 @@ import { Router } from 'express' import { homeController } from './controllers/index.js' import { userListController } from './controllers/users.js' -import { questListController } from './controllers/quests.ts' -import { commandListController } from './controllers/commands.ts' +import { questListController } from './controllers/quests.js' +import { commandListController } from './controllers/commands.js' import { sessionDetailController, sessionListController, -} from './controllers/sessions.ts' +} from './controllers/sessions.js' const router = Router() diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json index ebc4140..bf649ac 100644 --- a/packages/analytics/tsconfig.json +++ b/packages/analytics/tsconfig.json @@ -1,12 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "allowJs": true, "rootDir": "src", - "outDir": "./dist", - "esModuleInterop": true, - "noEmit": true, - "allowImportingTsExtensions": true + "outDir": "./dist" }, "include": ["src"], "exclude": ["node_modules", "dist"] diff --git a/yarn.lock b/yarn.lock index 2c95b0f..9db9aff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2791,7 +2791,7 @@ dompurify@^3.0.6: resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.9.tgz#b3f362f24b99f53498c75d43ecbd784b0b3ad65e" integrity sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ== -dotenv@*, dotenv@^16.3.1, dotenv@^16.4.1: +dotenv@*, dotenv@^16.3.1, dotenv@^16.4.1, dotenv@^16.4.5: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==