Skip to content

Conversation

mdqst
Copy link

@mdqst mdqst commented Apr 15, 2025

fixed a few issues in the code:

  1. the logger variable wasn't properly initialized. It was assigned the Logger class itself, but it needs to be an instance of the class. now it's correctly initialized as const logger = new Logger();.

  2. removed the unnecessary void in front of the await expression. using await Template.Main(process.env) is sufficient to ignore the result if needed, without wrapping it in void.

  3. the error handler was too basic. Instead of logging errors directly to the console, I added a more structured handler: catch((error) => { logger.error(error); }), so that errors are logged using the logger instance instead of just being printed out.

Copy link
Contributor

@james-a-morris james-a-morris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR - one question

assert(APP, 'Specify the application to start with "APP=appname pnpm start"');
switch (APP) {
case "template":
void (await Template.Main(process.env));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the void is to prevent the linter from throwing a warning that we have a value that isn't being saved to a var

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you write await Template.Main(process.env), the result of that operation isn’t stored, and the linter might complain because the return value is unused. In such cases, using void before the expression tells the linter that you’re intentionally ignoring the result, which suppresses the warning.

So, if you choose to keep void, it’s a valid way to silence the linter while making it clear that the return value doesn’t matter.

If the goal is to avoid linter warnings and you don’t need the result of the call, then keeping void makes sense. On the other hand, if the linter doesn’t complain, it’s also fine to leave it out.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey! This is correct - we're intentionally discarding the output

@mdqst mdqst requested a review from james-a-morris April 15, 2025 19:40
dotenv.config();

const logger = Logger;
const logger = new Logger();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm - I think Logger (where we get it from) is an already instantiated extension of winston. I think adding the new would remove the slack/pager duty specific transports.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed.

@mdqst mdqst requested a review from james-a-morris April 17, 2025 09:27
Comment on lines +39 to +41
.catch((error) => {
logger.error(error);
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts on something like this? Otherwise we may have issues with the UMA/logger package

Suggested change
.catch((error) => {
logger.error(error);
});
.catch((error) => {
logger.error({
message: "uncaught error",
at: "node::run",
error
});
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants