Skip to content

Commit

Permalink
fix(stacktrace): remove stacktrace usage from log and triggers
Browse files Browse the repository at this point in the history
  • Loading branch information
sogehige committed Oct 27, 2023
1 parent c5225f9 commit df7aaec
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 51 deletions.
20 changes: 9 additions & 11 deletions src/helpers/interface/triggers.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,39 @@
import { getFunctionList } from '../../decorators/on.js';
import { debug } from '../log.js';
import { find } from '../register.js';
import { getFunctionNameFromStackTrace } from '../stacktrace.js';

export function triggerInterfaceOnMessage(opts: onEventMessage) {
trigger(opts);
trigger(opts, 'message');
}

export function triggerInterfaceOnSub(opts: onEventSub) {
trigger(opts);
trigger(opts, 'sub');
}

export function triggerInterfaceOnFollow(opts: onEventFollow) {
trigger(opts);
trigger(opts, 'follow');
}

export function triggerInterfaceOnTip(opts: onEventTip) {
trigger(opts);
trigger(opts, 'tip');
}

export function triggerInterfaceOnBit(opts: Omit<onEventTip, 'currency'>) {
trigger(opts);
trigger(opts, 'bit');
}

function trigger(opts: onEventMessage | onEventSub | onEventBit | onEventTip | onEventFollow) {
const on_trigger: 'bit' | 'tip' | 'sub' | 'follow' | 'message' = getFunctionNameFromStackTrace().replace('triggerInterfaceOn', '').toLowerCase() as any;
debug('trigger', `event ${on_trigger}`);
function trigger(opts: onEventMessage | onEventSub | onEventBit | onEventTip | onEventFollow, on: 'bit' | 'tip' | 'sub' | 'follow' | 'message') {
debug('trigger', `event ${on}`);

for (const event of getFunctionList(on_trigger)) {
for (const event of getFunctionList(on)) {
const [ type, name ] = event.path.split('.');
const self = find(type as any, name);
if (!self) {
throw new Error(`${type}.${name} not found in list`);
}

if (typeof (self as any)[event.fName] === 'function') {
debug('trigger', `event ${on_trigger} => ${self.__moduleName__}`);
debug('trigger', `event ${on} => ${self.__moduleName__}`);
(self as any)[event.fName](opts);
}
}
Expand Down
54 changes: 25 additions & 29 deletions src/helpers/log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import stripAnsi from 'strip-ansi';

import { isDebugEnabled } from './debug.js';
import { logEmitter } from './log/emitter.js';
import { getFunctionNameFromStackTrace } from './stacktrace.js';

import { isDbConnected } from '~/helpers/database.js';

Expand Down Expand Up @@ -127,10 +126,7 @@ function format(level: Levels, message: any, category?: string) {
return [timestamp, levelFormat[Levels[level] as keyof typeof Levels], category, message].filter(Boolean).join(' ');
}

function log(message: any, level?: keyof typeof Levels) {
if (!level) {
level = getFunctionNameFromStackTrace() as keyof typeof Levels;
}
function log(message: any, level: keyof typeof Levels) {
if (Levels[level] <= Levels[logLevel as keyof typeof Levels]) {
const formattedMessage = format(Levels[level as keyof typeof Levels], message);
process.stdout.write(formattedMessage + '\n');
Expand Down Expand Up @@ -161,20 +157,20 @@ export function error(message: any) {
// we have custom typeorm logger to show QueryFailedError
// stack from those errors are not usable so we don't need it
if (typeof message !== 'string' || (typeof message === 'string' && !message.startsWith('QueryFailedError: '))) {
log(message);
log(message, 'error');
}
}

export function chatIn(message: any) {
log(message);
log(message, 'chatIn');
}

const logFunction = (message: any) => {
log(message);
export const chatOut = isMochaTestRun() && sinon ? sinon.stub() : (message: any) => {
log(message, 'chatOut');
};
export const warning = isMochaTestRun() && sinon ? sinon.stub() : (message: any) => {
log(message, 'warning');
};

export const chatOut = isMochaTestRun() && sinon ? sinon.stub() : logFunction;
export const warning = isMochaTestRun() && sinon ? sinon.stub() : logFunction;
export const debug = isMochaTestRun() && sinon ? sinon.stub() : (category: string, message: any) => {
const categories = category.split('.');
if (categories.length > 2 && category !== '*') {
Expand All @@ -188,55 +184,55 @@ export const debug = isMochaTestRun() && sinon ? sinon.stub() : (category: strin
};

export function whisperIn(message: any) {
log(message);
log(message, 'whisperIn');
}
export function whisperOut(message: any) {
log(message);
log(message, 'whisperOut');
}
export function info(message: any) {
log(message);
log(message, 'info');
}
export function timeout(message: any) {
log(message);
log(message, 'timeout');
}
export function ban(message: any) {
log(message);
log(message, 'ban');
}
export function unban(message: any) {
log(message);
log(message, 'unban');
}
export function follow(message: any) {
log(message);
log(message, 'follow');
}
export function raid(message: any) {
log(message);
log(message, 'raid');
}
export function cheer(message: any) {
log(message);
log(message, 'cheer');
}
export function tip(message: any) {
log(message);
log(message, 'tip');
}
export function sub(message: any) {
log(message);
log(message, 'sub');
}
export function subgift(message: any) {
log(message);
log(message, 'subgift');
}
export function subcommunitygift(message: any) {
log(message);
log(message, 'subcommunitygift');
}
export function resub(message: any) {
log(message);
log(message, 'resub');
}
export function start(message: any) {
log(message);
log(message, 'start');
}
export function stop(message: any) {
log(message);
log(message, 'stop');
}
export function redeem(message: any) {
log(message);
log(message, 'redeem');
}

const logTimezone = async () => {
Expand Down
11 changes: 0 additions & 11 deletions src/helpers/stacktrace.ts

This file was deleted.

0 comments on commit df7aaec

Please sign in to comment.