initLogger function exported

Last updated: 2026-03-01T23:25:47.125Z

Metrics

LOC: 50 Complexity: 16 Params: 0

Signature

initLogger(): : Promise<void>

Summary

Inicializa o logger lendo as configurações do chrome.storage. Deve ser chamado uma vez no bootstrap de cada contexto (background, content, popup). Se chrome não estiver disponível (ex.: testes unitários), usa os padrões.

Architecture violations

View all

  • [warning] max-cyclomatic-complexity: 'initLogger' has cyclomatic complexity 16 (max 10)

Source Code

export async function initLogger(): Promise<void> {
  // Initialize the persistent log store
  await initLogStore();

  if (typeof chrome === "undefined" || !chrome.storage) {
    initializing = false;
    flushBuffer();
    return;
  }

  const SETTINGS_KEY = "fill_all_settings";

  try {
    const result = await chrome.storage.local.get(SETTINGS_KEY);
    const settings = result[SETTINGS_KEY] as
      | { debugLog?: boolean; logLevel?: LogLevel; logMaxEntries?: number }
      | undefined;

    if (settings) {
      const enabled = settings.debugLog ?? false;
      configureLogger({
        enabled,
        // Se debugLog ligado mas logLevel não salvo, assume "debug" — caso contrário "warn"
        level: settings.logLevel ?? (enabled ? "debug" : "warn"),
      });
      configureLogStore({ maxEntries: settings.logMaxEntries ?? 1000 });
    }
  } catch {
    // Silently ignore — logger stays with defaults.
  }

  // Libera a fila de mensagens acumuladas antes do init terminar.
  initializing = false;
  flushBuffer();

  // Atualiza em tempo real quando as configurações mudarem.
  chrome.storage.onChanged.addListener((changes, area) => {
    if (area !== "local" || !changes[SETTINGS_KEY]) return;
    const newSettings = changes[SETTINGS_KEY].newValue as
      | { debugLog?: boolean; logLevel?: LogLevel; logMaxEntries?: number }
      | undefined;
    if (!newSettings) return;
    const enabled = newSettings.debugLog ?? false;
    configureLogger({
      enabled,
      level: newSettings.logLevel ?? (enabled ? "debug" : "warn"),
    });
    configureLogStore({ maxEntries: newSettings.logMaxEntries ?? 1000 });
  });
}

Dependencies (Outgoing)

graph LR initLogger["initLogger"] initLogStore["initLogStore"] flushBuffer["flushBuffer"] configureLogger["configureLogger"] configureLogStore["configureLogStore"] initLogger -->|calls| initLogStore initLogger -->|calls| flushBuffer initLogger -->|calls| configureLogger initLogger -->|calls| configureLogStore style initLogger fill:#dbeafe,stroke:#2563eb,stroke-width:2px click initLogger "ad03e6e0ac6d4c9a.html" click initLogStore "e592afd94ce8e81f.html" click flushBuffer "a9a9c3e65488e23e.html" click configureLogger "b16387a5be04329d.html" click configureLogStore "2a0ad267080e2434.html"
TargetType
initLogStore calls
flushBuffer calls
configureLogger calls
configureLogStore calls
SETTINGS_KEY dynamic_call

Impact (Incoming)

graph LR initLogger["initLogger"] handleMessage["handleMessage"] FillableElement["FillableElement"] render["render"] handleMessage -->|uses| initLogger FillableElement -->|uses| initLogger render -->|uses| initLogger style initLogger fill:#dbeafe,stroke:#2563eb,stroke-width:2px click initLogger "ad03e6e0ac6d4c9a.html" click handleMessage "58fadf6b36b326d5.html" click FillableElement "2ecf5aaac3f668a8.html" click render "89e5905fc5b1676c.html"
SourceType
handleMessage uses
FillableElement uses
render uses