/** * Browser API Abstraction - Typy na podstawie faktycznego użycia w kodzie * * Przeanalizowane pliki: * - util.ts: tabs.query, Tab.id * - tab-dropdown.tsx: tabs.query, Tab.id, Tab.title * - toolbar.tsx: tabs.query, tabs.onUpdated, Tab.url, windows.WINDOW_ID_CURRENT * - memory.ts: browserAction.*, webRequest.*, cookies.*, extension.* */ // === Tab API (util.ts, tab-dropdown.tsx, toolbar.tsx) === export interface Tab { id?: number; // util.ts: tab.id, tab-dropdown.tsx: tab.id title?: string; // tab-dropdown.tsx: tab.title url?: string; // toolbar.tsx: tab.url } export interface TabQuery { currentWindow?: boolean; // util.ts, tab-dropdown.tsx active?: boolean; // toolbar.tsx windowId?: number; // toolbar.tsx } // === Badge/BrowserAction API (memory.ts) === export interface BadgeTextDetails { text: string; // memory.ts: setBadgeText tabId?: number; // memory.ts: setBadgeText (optional) } export interface BadgeTitleDetails { title: string; // memory.ts: setTitle tabId?: number; // memory.ts: setTitle (optional) } export interface BadgeColorDetails { color: string; // memory.ts: setBadgeBackgroundColor } // === WebRequest API (memory.ts) === export interface RequestDetails { requestId: string; // memory.ts: request.requestId requestHeaders?: RequestHeader[]; // memory.ts: request.requestHeaders // Note: ExtendedRequest konstruktor używa więcej pól, // ale tu skupiamy się na tym co bezpośrednio używa browser API } export interface RequestHeader { name: string; value?: string; } export interface RequestFilter { urls: string[]; // memory.ts: { urls: [''] } } export type RequestListener = (details: RequestDetails) => void; // === Cookies API (memory.ts) === export interface Cookie { name: string; // memory.ts: cookie.name domain: string; // memory.ts: cookie.domain } export interface CookieQuery { domain?: string; // memory.ts: { domain: shorthost } } export interface CookieRemove { name: string; // memory.ts: { name: cookie.name, url: ... } url: string; // memory.ts: { url: `https://${cookie.domain}` } } // === Main Browser API Interface === 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; }; }; // 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; }; }