Sabitler (Constants)
src/shared/constants.ts — Tüm magic string'ler ve paylaşılan değerler.
Magic string'ler asla doğrudan kullanılmaz. Tüm sabitler bu modülden import edilmelidir.
Storage Anahtarları
STORAGE_KEY
Ana yapılandırma storage anahtarı.
export const STORAGE_KEY = "graytool_config";
Kullanım: chrome.storage.sync üzerinde yapılandırma kaydetme/okuma
SEARCH_HISTORY_PREFIX
Arama geçmişi storage anahtarı prefix'i.
export const SEARCH_HISTORY_PREFIX = "graytool_search_history_";
Kullanım: chrome.storage.local üzerinde ${SEARCH_HISTORY_PREFIX}${patternId} formatında
TAB_COLLAPSED_KEY
JSON viewer tab daraltma durumu anahtarı.
export const TAB_COLLAPSED_KEY = "graytool_tabs_collapsed";
Kullanım: localStorage üzerinde boolean değer
Limitler
MAX_HISTORY_ITEMS
Her URL pattern için saklanacak maksimum arama sorgusu sayısı.
export const MAX_HISTORY_ITEMS = 50;
DOM Attribute'ları
PROCESSED_ATTR
Satırın işlenip işlenmediğini belirten attribute.
export const PROCESSED_ATTR = "data-graytool-processed";
Kullanım: Log satırlarına setAttribute(PROCESSED_ATTR, "true") ile eklenir.
BTN_ID_ATTR
Buton tekrarını önleme attribute'u.
export const BTN_ID_ATTR = "data-graytool-btn-id";
Kullanım: Her enjekte edilen butonda setAttribute(BTN_ID_ATTR, buttonId) ile set edilir.
Zamanlama Değerleri
OBSERVER_DEBOUNCE_MS
MutationObserver mutation olaylarını bekleme süresi.
export const OBSERVER_DEBOUNCE_MS = 50; // 50ms
Amaç: Aşırı mutation olaylarının toplu işlenmesi
PROCESS_INTERVAL_MS
Periyodik satır tarama aralığı.
export const PROCESS_INTERVAL_MS = 2000; // 2 saniye
Amaç: Observer'ın kaçırabileceği yeni satırları yakalamak, SPA pagination geçişlerini ele almak
THEME_CHECK_INTERVAL_MS
Tema değişikliği kontrol aralığı.
export const THEME_CHECK_INTERVAL_MS = 500; // 500ms
Amaç: Graylog tema değişikliklerini algılamak (açık ↔ koyu)
Kullanım Örnekleri
import {
STORAGE_KEY,
PROCESSED_ATTR,
BTN_ID_ATTR,
OBSERVER_DEBOUNCE_MS,
PROCESS_INTERVAL_MS,
THEME_CHECK_INTERVAL_MS,
MAX_HISTORY_ITEMS,
SEARCH_HISTORY_PREFIX,
} from "../shared/constants";
// Satır işlenmiş mi kontrol et
if (row.hasAttribute(PROCESSED_ATTR)) return;
// Periyodik tarama başlat
setInterval(() => processExistingRows(config), PROCESS_INTERVAL_MS);
// Tema watcher
setInterval(() => checkTheme(), THEME_CHECK_INTERVAL_MS);