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
27 lines
782 B
TypeScript
27 lines
782 B
TypeScript
/**
|
|
* Browser API Abstraction - Main Export
|
|
*
|
|
* Eksportuje właściwą implementację na podstawie TARGET build variable
|
|
*/
|
|
|
|
import type { BrowserAPI } from './types';
|
|
|
|
// Build-time selection of browser API implementation
|
|
let browserApi: BrowserAPI;
|
|
|
|
// TARGET jest ustawiane przez esbuild.config.js na podstawie npm script
|
|
if (process.env.TARGET === 'chrome') {
|
|
// Chrome build - używamy chrome adapter
|
|
const { chromeAPI } = require('./chrome');
|
|
browserApi = chromeAPI;
|
|
} else {
|
|
// Firefox build (default) - używamy firefox adapter
|
|
const { firefoxAPI } = require('./firefox');
|
|
browserApi = firefoxAPI;
|
|
}
|
|
|
|
// Eksportuj jako default export
|
|
export default browserApi;
|
|
|
|
// Re-export typów dla wygody
|
|
export * from './types'; |