From 66b928760e79e678f13f4d6d66521c0feaf4c1f0 Mon Sep 17 00:00:00 2001 From: Todd Riley Date: Mon, 15 Sep 2025 11:42:39 -0400 Subject: [PATCH 1/2] Configurable log levels instead of boolean. --- browser-extension/src/lib/config.ts | 7 ++++++- browser-extension/src/lib/logger.ts | 27 ++++++++++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/browser-extension/src/lib/config.ts b/browser-extension/src/lib/config.ts index eb8b231..74725ee 100644 --- a/browser-extension/src/lib/config.ts +++ b/browser-extension/src/lib/config.ts @@ -2,9 +2,14 @@ const MODES = ['PROD', 'PLAYGROUNDS_PR'] as const export type ModeType = (typeof MODES)[number] +const LOG_LEVELS = ['DEBUG', 'INFO', 'WARN', 'ERROR'] as const + +export type LogLevel = (typeof LOG_LEVELS)[number] + export const CONFIG = { ADDED_OVERTYPE_CLASS: 'gitcasso-overtype', - DEBUG: true, // enabled debug logging + EXTENSION_NAME: 'gitcasso', // decorates logs + LOG_LEVEL: 'INFO' satisfies LogLevel, MODE: 'PROD' satisfies ModeType, } as const diff --git a/browser-extension/src/lib/logger.ts b/browser-extension/src/lib/logger.ts index d11faa3..e6111a5 100644 --- a/browser-extension/src/lib/logger.ts +++ b/browser-extension/src/lib/logger.ts @@ -1,4 +1,4 @@ -import { CONFIG } from './config' +import { CONFIG, type LogLevel } from './config' /** * Simple logging utilities for the extension @@ -9,12 +9,25 @@ const prefix = `[${CONFIG.EXTENSION_NAME}]` // No-op function for disabled logging const noop = () => {} +// Log level hierarchy - index represents priority +const LOG_LEVEL_PRIORITY: Record = { + DEBUG: 0, + ERROR: 3, + INFO: 1, + WARN: 2, +} + +// Helper function to check if a log level is enabled +const shouldLog = (level: LogLevel): boolean => { + return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[CONFIG.LOG_LEVEL] +} + // Export simple logging functions export const logger = { - debug: CONFIG.DEBUG ? console.log.bind(console, prefix) : noop, - error: console.error.bind(console, prefix), - info: CONFIG.DEBUG ? console.log.bind(console, prefix) : noop, - time: CONFIG.DEBUG ? console.time.bind(console) : noop, - timeEnd: CONFIG.DEBUG ? console.timeEnd.bind(console) : noop, - warn: console.warn.bind(console, prefix), + debug: shouldLog('DEBUG') ? console.log.bind(console, prefix) : noop, + error: shouldLog('ERROR') ? console.error.bind(console, prefix) : noop, + info: shouldLog('INFO') ? console.log.bind(console, prefix) : noop, + time: shouldLog('INFO') ? console.time.bind(console) : noop, + timeEnd: shouldLog('INFO') ? console.timeEnd.bind(console) : noop, + warn: shouldLog('WARN') ? console.warn.bind(console, prefix) : noop, } From 3f9226bd77e7a2a43f38f14c0f1ab6bf05bcd319 Mon Sep 17 00:00:00 2001 From: Todd Riley Date: Mon, 15 Sep 2025 12:10:42 -0400 Subject: [PATCH 2/2] Keep it set to debug. --- browser-extension/src/lib/config.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/browser-extension/src/lib/config.ts b/browser-extension/src/lib/config.ts index 74725ee..74b71b2 100644 --- a/browser-extension/src/lib/config.ts +++ b/browser-extension/src/lib/config.ts @@ -8,8 +8,7 @@ export type LogLevel = (typeof LOG_LEVELS)[number] export const CONFIG = { ADDED_OVERTYPE_CLASS: 'gitcasso-overtype', - EXTENSION_NAME: 'gitcasso', // decorates logs - LOG_LEVEL: 'INFO' satisfies LogLevel, + LOG_LEVEL: 'DEBUG' satisfies LogLevel, MODE: 'PROD' satisfies ModeType, } as const