Wprowadza infrastrukturę umożliwiającą budowanie rozszerzenia dla Chrome i Firefox z jednej bazy kodu. Mapuje różnice w API między przeglądarkami na ujednolicone interfejsy. ZMIANY: * lib/browser-api/types.ts - typy oparte na analizie rzeczywistego użycia API w kodzie * lib/browser-api/firefox.ts - adapter mapujący browser.* na BrowserAPI * lib/browser-api/chrome.ts - adapter mapujący chrome.* na BrowserAPI * lib/browser-api/index.ts - build-time selection adaptera na podstawie TARGET KLUCZOWE RÓŻNICE OBSŁUŻONE: - Firefox: browser.browserAction.* vs Chrome: chrome.action.* - Firefox: browser.tabs.* vs Chrome: chrome.tabs.* - Firefox: browser.cookies.* vs Chrome: chrome.cookies.* - Firefox: browser.webRequest.* vs Chrome: chrome.webRequest.* TYPY OPARTE NA FAKTYCZNYM UŻYCIU: Przeanalizowano 4 pliki używające browser API: - memory.ts: badge, webRequest, cookies, extension API - toolbar.tsx: tabs.query, tabs.onUpdated, windows.WINDOW_ID_CURRENT - tab-dropdown.tsx: tabs.query - util.ts: tabs.query STATUS: Preparatory change - istniejący kod pozostaje niezmieniony. Kolejne commity będą refaktorować pliki do używania nowej abstrakcji. TARGET: Umożliwienie > rentgen@0.1.10 build:firefox > TARGET=firefox node esbuild.config.js Add-on was built i > rentgen@0.1.10 build:chrome > TARGET=chrome node esbuild.config.js Add-on was built
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
/**
|
|
* Firefox Browser API Implementation
|
|
*
|
|
* Mapuje Firefox browser.* API na nasze ujednolicone BrowserAPI
|
|
*/
|
|
|
|
import type { BrowserAPI } from './types';
|
|
|
|
// Firefox używa globalnego obiektu `browser`
|
|
declare const browser: any;
|
|
|
|
export const firefoxAPI: BrowserAPI = {
|
|
// Tabs API - direct mapping
|
|
tabs: {
|
|
query: browser.tabs.query,
|
|
onUpdated: {
|
|
addListener: browser.tabs.onUpdated.addListener,
|
|
removeListener: browser.tabs.onUpdated.removeListener,
|
|
},
|
|
},
|
|
|
|
// Badge API - Firefox używa browserAction
|
|
badge: {
|
|
setBadgeText: browser.browserAction.setBadgeText,
|
|
setTitle: browser.browserAction.setTitle,
|
|
setBadgeBackgroundColor: browser.browserAction.setBadgeBackgroundColor,
|
|
},
|
|
|
|
// WebRequest API - direct mapping
|
|
webRequest: {
|
|
onBeforeRequest: {
|
|
addListener: browser.webRequest.onBeforeRequest.addListener,
|
|
},
|
|
onBeforeSendHeaders: {
|
|
addListener: browser.webRequest.onBeforeSendHeaders.addListener,
|
|
},
|
|
},
|
|
|
|
// Cookies API - direct mapping
|
|
cookies: {
|
|
getAll: browser.cookies.getAll,
|
|
remove: browser.cookies.remove,
|
|
},
|
|
|
|
// Extension API - direct mapping
|
|
extension: {
|
|
getBackgroundPage: browser.extension.getBackgroundPage,
|
|
},
|
|
|
|
// Windows API - direct mapping
|
|
windows: {
|
|
WINDOW_ID_CURRENT: browser.windows.WINDOW_ID_CURRENT,
|
|
},
|
|
}; |