Unfinished
This commit is contained in:
parent
387ece8b2f
commit
35a23195c4
25
backend/logs/combined.log
Normal file
25
backend/logs/combined.log
Normal file
@ -0,0 +1,25 @@
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
{"@fields":{"level":"info"},"@message":"API is running on port 3000"}
|
||||
{"@fields":{"level":"info"},"@message":"Loaded 25 handlers"}
|
||||
{"@fields":{"level":"info"},"@message":"Started WebSocket"}
|
||||
{"@fields":{"level":"info"},"@message":"Connected to database."}
|
||||
{"@fields":{"level":"info"},"@message":"Logged in to email service"}
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
||||
undefined
|
0
backend/logs/error.log
Normal file
0
backend/logs/error.log
Normal file
2473
backend/package-lock.json
generated
2473
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,7 @@
|
||||
"scripts": {
|
||||
"start": "DEV=true ts-node-transpile-only src/app.ts",
|
||||
"dev": "ts-node-dev --transpile-only src/app.ts",
|
||||
"debug": "nodemon --exec 'node --inspect=0.0.0.0:9229 --require ts-node/register src/app.ts' --ext 'ts,yml'",
|
||||
"test": "ts-mocha test/test.ts"
|
||||
},
|
||||
"keywords": [],
|
||||
@ -39,7 +40,8 @@
|
||||
"socket.io-client": "^4.0.0",
|
||||
"ts-node": "^9.1.1",
|
||||
"typescript": "^4.2.3",
|
||||
"un": "^0.0.0"
|
||||
"un": "^0.0.0",
|
||||
"winston": "^3.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.2.14",
|
||||
@ -70,6 +72,7 @@
|
||||
"chai-spies": "^1.0.0",
|
||||
"i": "^0.3.6",
|
||||
"mocha": "^8.2.1",
|
||||
"nodemon": "^2.0.14",
|
||||
"npm": "^7.6.3",
|
||||
"sazerac": "^2.0.0",
|
||||
"supertest": "^6.1.3"
|
||||
|
@ -4,7 +4,7 @@ config();
|
||||
import { connect } from 'mongoose';
|
||||
import { REST } from './rest/server';
|
||||
import Deps from './utils/deps';
|
||||
import Log from './utils/log';
|
||||
import './modules/logger';
|
||||
|
||||
connect(process.env.MONGO_URI, {
|
||||
useUnifiedTopology: true,
|
||||
@ -13,8 +13,8 @@ connect(process.env.MONGO_URI, {
|
||||
useCreateIndex: true,
|
||||
serverSelectionTimeoutMS: 0,
|
||||
}, (error) => (error)
|
||||
? Log.error(error.message, 'db')
|
||||
: Log.info(`Connected to database.`)
|
||||
? log.error(error.message, 'db')
|
||||
: log.info(`Connected to database.`)
|
||||
);
|
||||
|
||||
Deps.get<REST>(REST);
|
||||
|
@ -51,7 +51,7 @@ export const Message = model<MessageDocument>('message', new Schema({
|
||||
updatedAt: Date,
|
||||
}, { toJSON: { getters: true } })
|
||||
// TODO: refactor
|
||||
.method('toClient', function(this: MessageDocument) {
|
||||
.method('toClient', function(this: any) {
|
||||
const obj = this.toObject();
|
||||
|
||||
this.id = this._id;
|
||||
|
@ -18,8 +18,8 @@ export class Email {
|
||||
});
|
||||
|
||||
this.email.verify((error) => (error)
|
||||
? Log.error(error, 'email')
|
||||
: Log.info('Logged in to email service', 'email'));
|
||||
? log.error(error, 'email')
|
||||
: log.info('Logged in to email service', 'email'));
|
||||
|
||||
this.email.use('compile', pugEngine({
|
||||
templateDir: this.templateDir,
|
||||
|
10
backend/src/modules/deps.ts
Normal file
10
backend/src/modules/deps.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { REST } from '../rest/server';
|
||||
|
||||
interface Deps {
|
||||
rest: REST;
|
||||
}
|
||||
|
||||
export const deps: Deps = {
|
||||
rest: new REST(),
|
||||
};
|
||||
export default deps;
|
19
backend/src/modules/logger.ts
Normal file
19
backend/src/modules/logger.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import winston from 'winston';
|
||||
|
||||
const logger = winston.createLogger({
|
||||
level: 'info',
|
||||
format: winston.format.colorize(),
|
||||
defaultMeta: {},
|
||||
transports: [
|
||||
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
|
||||
new winston.transports.File({ filename: 'logs/combined.log' }),
|
||||
],
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
logger.add(new winston.transports.Console({
|
||||
format: winston.format.simple(),
|
||||
}));
|
||||
}
|
||||
|
||||
global.log = logger;
|
@ -77,7 +77,7 @@ export class REST {
|
||||
private listen() {
|
||||
const port = process.env.PORT || 8080;
|
||||
const server = this.app.listen(port, async () => {
|
||||
Log.info(`API is running on port ${port}`);
|
||||
log.info(`API is running on port ${port}`);
|
||||
await this.ws.init(server);
|
||||
});
|
||||
}
|
||||
|
@ -1,25 +0,0 @@
|
||||
import 'colors';
|
||||
|
||||
export default class Log {
|
||||
static getSource(src?: string) {
|
||||
return src?.toUpperCase() || 'OTHER';
|
||||
}
|
||||
static info(message?: any, src?: string) {
|
||||
console.log(`[${
|
||||
this.toHHMMSS(new Date()).cyan
|
||||
}] INFO [${this.getSource(src).blue}] ${message?.toString().blue}`)
|
||||
}
|
||||
static error(err?: any, src?: string) {
|
||||
const message: string = err?.message || err || 'Unknown error';
|
||||
console.error(`[${
|
||||
this.toHHMMSS(new Date()).cyan
|
||||
}] ERROR [${this.getSource(src).blue}] ${message.red}`)
|
||||
}
|
||||
|
||||
private static toHHMMSS(time: Date) {
|
||||
let hours = time.getHours().toString().padStart(2, '0');
|
||||
let minutes = time.getMinutes().toString().padStart(2, '0');
|
||||
let seconds = time.getSeconds().toString().padStart(2, '0');
|
||||
return `${hours}:${minutes}:${seconds}`;
|
||||
}
|
||||
}
|
@ -43,7 +43,7 @@ export class WebSocket {
|
||||
} catch {}
|
||||
}
|
||||
|
||||
Log.info(`Loaded ${this.events.size} handlers`, 'ws');
|
||||
log.info(`Loaded ${this.events.size} handlers`, 'ws');
|
||||
|
||||
this.io.on('connection', (client) => {
|
||||
for (const event of this.events.values())
|
||||
@ -61,7 +61,7 @@ export class WebSocket {
|
||||
});
|
||||
});
|
||||
|
||||
Log.info('Started WebSocket', 'ws');
|
||||
log.info('Started WebSocket', 'ws');
|
||||
}
|
||||
|
||||
public to(...rooms: string[]) {
|
||||
|
@ -17,7 +17,7 @@ use(chaiThings);
|
||||
use(should);
|
||||
|
||||
const space = (length = 54) => new Array(length).join(' ');
|
||||
console.log(`${space(48 * 3)}TESTS${space(54 * 2)}`.bgWhite.black);
|
||||
log.info(`${space(48 * 3)}TESTS${space(54 * 2)}`.bgWhite.black);
|
||||
|
||||
(async() => {
|
||||
try {
|
||||
@ -27,9 +27,9 @@ console.log(`${space(48 * 3)}TESTS${space(54 * 2)}`.bgWhite.black);
|
||||
useFindAndModify: false,
|
||||
useCreateIndex: true,
|
||||
});
|
||||
console.log(`Connected to ${process.env.MONGO_URI}`);
|
||||
log.info(`Connected to ${process.env.MONGO_URI}`);
|
||||
} catch {
|
||||
console.log(`Failed to connect to ${process.env.MONGO_URI}`);
|
||||
log.info(`Failed to connect to ${process.env.MONGO_URI}`);
|
||||
}
|
||||
|
||||
try {
|
||||
|
3
types/global.d.ts
vendored
Normal file
3
types/global.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export declare global {
|
||||
const log: import('winston').Logger;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user