All files / src index.ts

100% Statements 25/25
100% Branches 5/5
100% Functions 2/2
100% Lines 25/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 261x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x  
import { resolveTwitchRuntimeEnv } from "@workspace/env/twitch"
import { createLogger, serializeLogError } from "@workspace/logger"
 
import { TwitchClient } from "./classes/TwitchClient"
 
export async function main(): Promise<void> {
  const logger = createLogger("twitch-bot")
  const abort = new AbortController()
  const shutdown = () => abort.abort()
  process.once("SIGTERM", shutdown)
  process.once("SIGINT", shutdown)
  try {
    const config = resolveTwitchRuntimeEnv()
    await new TwitchClient(config, logger).run(abort.signal)
  } catch (error) {
    logger.error(
      "Twitch startup or runtime failed. Check configuration and readiness.",
      { error: serializeLogError(error) }
    )
    process.exitCode = 1
  } finally {
    process.removeListener("SIGTERM", shutdown)
    process.removeListener("SIGINT", shutdown)
  }
}