Ana içeriğe geç

Proje Yapısı

Dizin Ağacı

graytool/
├── src/ # Extension kaynak kodu ve çıktı dizini
│ ├── manifest.json # Chrome extension manifest (V3)
│ ├── background.ts # Service worker kaynak kodu
│ ├── background.js # Derlenmiş service worker
│ ├── inject/ # Content script (Graylog'a enjekte edilir)
│ │ ├── index.ts # Giriş noktası, aktivasyon koord.
│ │ ├── index.js # Derlenmiş content script
│ │ ├── button-injector.ts # Buton oluşturma ve URL çözümleme
│ │ ├── field-detector.ts # Alan keşif stratejileri
│ │ ├── observer.ts # MutationObserver (DOM değişiklikleri)
│ │ ├── row-processor.ts # Log satırı işleme
│ │ └── ui/ # Content script UI bileşenleri
│ │ ├── styles.ts # Tema algılama ve CSS
│ │ ├── json-viewer.ts # JSON görüntüleyici panel
│ │ ├── field-selector.ts # Alan seçici modal
│ │ └── search-history.ts # Arama geçmişi paneli
│ ├── options/ # Ayarlar sayfası (React)
│ │ ├── options.tsx # React giriş noktası
│ │ ├── options.js # Derlenmiş options page
│ │ ├── options.html # HTML kabuk
│ │ ├── options.css # Tailwind CSS
│ │ └── OptionsPage.tsx # Ana bileşen
│ ├── shared/ # Paylaşılan modüller
│ │ ├── types.ts # Tüm TypeScript tip tanımları
│ │ ├── storage.ts # Chrome storage soyutlaması
│ │ ├── constants.ts # Sabitler (timing, keys, attrs)
│ │ └── utils.ts # Yardımcı fonksiyonlar
│ ├── css/ # İşlenmiş CSS dosyaları
│ │ └── fontawesome.css # FontAwesome stilleri
│ ├── icons/ # Extension ikonları
│ ├── webfonts/ # FontAwesome font dosyaları
│ └── logo.svg # Options sayfasında kullanılan logo
├── tasks/ # Build scriptleri
│ ├── build.js # esbuild yapılandırması
│ ├── clean.js # Temizleme scripti
│ └── release.js # Release paketleme scripti
├── docs/ # Bu dokümantasyon sitesi
├── package.json # Bağımlılıklar ve scriptler
├── tsconfig.json # TypeScript yapılandırması
├── AGENTS.md # AI kodlama agent'ları için rehber
├── README.md # Proje tanıtımı
├── CONTRIBUTING.md # Katkı rehberi
├── SECURITY.md # Güvenlik politikası
├── CODE_OF_CONDUCT.md # Davranış kuralları
└── LICENSE # Lisans

Modül Sorumlulukları

src/shared/ — Paylaşılan Katman

Tüm diğer modüller tarafından kullanılan ortak kod. Bu katmana bağımlılık tek yönlüdür — shared diğer katmanlara bağımlı değildir.

DosyaSorumluluk
types.tsTüm TypeScript interface ve type tanımları
storage.tsChrome storage.sync ve storage.local soyutlaması
constants.tsMagic string'ler, timing değerleri, DOM attribute isimleri
utils.tsXSS koruması (escape), clipboard erişimi

src/inject/ — Content Script

Graylog sayfalarına enjekte edilen kod. DOM erişimi vardır.

DosyaSorumluluk
index.tsAktivasyon/deaktivasyon koordinasyonu
button-injector.tsButon DOM elementleri oluşturma, URL çözümleme
field-detector.tsÜç strateji ile alan keşfi
observer.tsYeni satır tespiti (MutationObserver)
row-processor.tsTekil satır işleme orkestrasyon
ui/styles.tsTema algılama, CSS enjeksiyonu
ui/json-viewer.tsJSON görüntüleyici tüm özellikleri
ui/field-selector.tsVarsayılan alan seçici modal
ui/search-history.tsArama yakalama ve geçmiş paneli

src/background.ts — Service Worker

Chrome'un arka plan sürecinde çalışır. DOM erişimi yoktur.

src/options/ — Ayarlar Sayfası

React ile yazılmış bağımsız SPA. chrome://extensions/ → Options ile açılır.

Bağımlılık Grafiği

shared/types.ts ←── Her modül
shared/constants.ts ←── Her modül
shared/storage.ts ←── background.ts, inject/index.ts, options/OptionsPage.tsx
shared/utils.ts ←── inject/button-injector.ts, inject/ui/json-viewer.ts

inject/index.ts
├── inject/row-processor.ts
│ ├── inject/field-detector.ts
│ └── inject/button-injector.ts
├── inject/observer.ts
├── inject/ui/styles.ts
├── inject/ui/json-viewer.ts
├── inject/ui/field-selector.ts
└── inject/ui/search-history.ts