From 7120c06bbe88875b46ae680b07dc8a9a3728e6bf Mon Sep 17 00:00:00 2001 From: nokeo08 Date: Wed, 17 Jun 2026 16:24:56 -0500 Subject: [PATCH] Introduce named Logger interface in keeper.ts Replaces 'ReturnType' with a small named interface so simulateActivity's signature reads as (config, log: Logger) instead of a type-derivation chain. Also makes it cleaner to substitute a mock logger if simulateActivity is ever unit-tested. No behavior change. --- src/keeper.ts | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/keeper.ts b/src/keeper.ts index 540d6aa..b47e81e 100644 --- a/src/keeper.ts +++ b/src/keeper.ts @@ -41,11 +41,25 @@ const timestamp = (): string => { }; /** - * Build a verbose-gated logger. `info` is unconditional; `event` only fires - * when the caller asked for verbose output. Returning a small object keeps - * `simulateActivity` free of `if (verbose)` noise at every log site. + * Minimal log surface used by `simulateActivity` and `runKeeper`. Named so + * it can appear directly in function signatures (clearer than + * `ReturnType`) and so a test could substitute a fake + * implementation if needed. + * + * - `info(msg)` prints unconditionally. + * - `event(msg)` prints only when `--verbose` / `verbose: true` is set. */ -function makeLogger(verbose: boolean): { info(msg: string): void; event(msg: string): void } { +interface Logger { + info(msg: string): void; + event(msg: string): void; +} + +/** + * Build a verbose-gated `Logger`. `info` is unconditional; `event` only + * fires when the caller asked for verbose output. Returning a small object + * keeps `simulateActivity` free of `if (verbose)` noise at every log site. + */ +function makeLogger(verbose: boolean): Logger { return { info: (msg: string): void => { console.log(msg); @@ -79,7 +93,7 @@ function makeLogger(verbose: boolean): { info(msg: string): void; event(msg: str * so the next idle-check sees "no movement" and doesn't misread the * synthetic activity as the user returning. */ -async function simulateActivity(config: Config, log: ReturnType): Promise { +async function simulateActivity(config: Config, log: Logger): Promise { const start: Point = await mouse.getPosition(); const screenWidth: number = await screen.width(); const screenHeight: number = await screen.height();