/** * Browser API Abstraction - Typy na podstawie faktycznego użycia w kodzie */ // Import pełnego typu Request z util.ts export type Request = { cookieStoreId?: string; documentUrl?: string; frameId: number; incognito?: boolean; method: string; originUrl: string; parentFrameId: number; proxyInfo?: { host: string; port: number; type: string; username: string; proxyDNS: boolean; failoverTimeout: number; }; requestHeaders?: { name: string; value?: string; binaryValue?: number[] }[]; requestId: string; tabId: number; thirdParty?: boolean; timeStamp: number; type: string; url: string; urlClassification?: { firstParty: string[]; thirdParty: string[] }; }; // === Tab API === export interface Tab { id?: number; title?: string; url?: string; } export interface TabQuery { currentWindow?: boolean; active?: boolean; windowId?: number; lastFocusedWindow?: boolean; // Chrome używa tego zamiast currentWindow czasami } // === Badge/BrowserAction API === export interface BadgeTextDetails { text: string; tabId?: number; } export interface BadgeTitleDetails { title: string; tabId?: number; } export interface BadgeColorDetails { color: string; } // === WebRequest API === export interface RequestFilter { urls: string[]; } export type RequestListener = (details: Request) => void; // === Cookies API === export interface Cookie { name: string; domain: string; } export interface CookieQuery { domain?: string; } export interface CookieRemove { name: string; url: string; } // === Główny interfejs Browser API === export interface BrowserAPI { // Tabs API tabs: { query(queryInfo: TabQuery): Promise; onUpdated: { addListener(listener: (tabId: number, changeInfo: any, tab: Tab) => void): void; removeListener(listener: (tabId: number, changeInfo: any, tab: Tab) => void): void; }; onRemoved?: { addListener(listener: (tabId: number, removeInfo: any) => void): void; removeListener(listener: (tabId: number, removeInfo: any) => void): void; }; }; // Badge API (Firefox: browserAction, Chrome: action) badge: { setBadgeText(details: BadgeTextDetails): void; setTitle(details: BadgeTitleDetails): void; setBadgeBackgroundColor(details: BadgeColorDetails): void; }; // WebRequest API webRequest: { onBeforeRequest: { addListener( listener: RequestListener, filter: RequestFilter, extraInfoSpec?: string[] ): void; }; onBeforeSendHeaders: { addListener( listener: RequestListener, filter: RequestFilter, extraInfoSpec?: string[] ): void; }; }; // Cookies API cookies: { getAll(details: CookieQuery): Promise; remove(details: CookieRemove): Promise; }; // Extension API extension: { getBackgroundPage(): Window | null; }; // Windows API windows: { WINDOW_ID_CURRENT: number; }; }