From b0631a428934f15d8ba0de7b245a39f73a8df5d8 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 16 May 2026 10:31:49 +0200 Subject: [PATCH] fix(01-review): IN-02 migrate Logger and ContentLogger to unknown[] args --- src/shared/logger.ts | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/shared/logger.ts b/src/shared/logger.ts index 2d73483..d5a360e 100644 --- a/src/shared/logger.ts +++ b/src/shared/logger.ts @@ -1,4 +1,11 @@ // Логгер для Service Worker +// IN-02 fix: migrated from `...args: any[]` to `...args: unknown[]` so +// the type signature matches OffscreenLogger and aligns with strict- +// mode hygiene. console.log accepts unknown[] natively (its variadic +// signature is `(...data: any[]) => void`, so passing unknown values +// works fine — the underlying console.* coerces with String() / object +// inspection). Call sites at content/popup/background passed already- +// typed values, so no widening was required. export class Logger { private context: string; @@ -6,25 +13,25 @@ export class Logger { this.context = context; } - private logWithLevel(level: 'log' | 'warn' | 'error', ...args: any[]) { + private logWithLevel(level: 'log' | 'warn' | 'error', ...args: unknown[]) { const timestamp = new Date().toISOString(); console[level](`[SW:${this.context}] ${timestamp}`, ...args); } - log(...args: any[]) { + log(...args: unknown[]) { this.logWithLevel('log', ...args); } - warn(...args: any[]) { + warn(...args: unknown[]) { this.logWithLevel('warn', ...args); } - error(...args: any[]) { + error(...args: unknown[]) { this.logWithLevel('error', ...args); } } -// Логгер для Content Script +// Логгер для Content Script (IN-02 fix: see Logger above) export class ContentLogger { private context: string; @@ -32,27 +39,27 @@ export class ContentLogger { this.context = context; } - private logWithLevel(level: 'log' | 'warn' | 'error', ...args: any[]) { + private logWithLevel(level: 'log' | 'warn' | 'error', ...args: unknown[]) { const timestamp = new Date().toISOString(); console[level](`[CS:${this.context}] ${timestamp}`, ...args); } - log(...args: any[]) { + log(...args: unknown[]) { this.logWithLevel('log', ...args); } - warn(...args: any[]) { + warn(...args: unknown[]) { this.logWithLevel('warn', ...args); } - error(...args: any[]) { + error(...args: unknown[]) { this.logWithLevel('error', ...args); } } // Логгер для Offscreen Document -// Note: uses `...args: unknown[]` (strict-mode hygiene) vs Logger / ContentLogger -// which retain the legacy `...args: any[]` — see plan 01-03 style_divergence_note. +// All three loggers now share the same `...args: unknown[]` signature +// (IN-02 fix retired the style divergence noted in plan 01-03). export class OffscreenLogger { private context: string;