refactor: migracja wywołań API przeglądarki do abstrakcji browserAPI #127
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "refactor/build_time_abstraction"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zmigrowano wszystkie bezpośrednie wywołania browser.* API do zunifikowanej abstrakcji browserAPI, umożliwiając budowanie rozszerzenia zarówno dla Firefox (browser.browserAction) jak i Chrome (chrome.action) z jednego kodu źródłowego.
Zmigrowane pliki aplikacji (4):
1. memory.ts
Dodano import:
Zastąpiono wywołania API:
Dodano obsługę null:
2. components/toolbar/toolbar.tsx
Dodano import:
Zastąpiono wywołania API:
Zachowano całą funkcjonalność:
3. components/tab-dropdown.tsx
Zmieniono importy:
Zastąpiono wywołania API:
Poprawka typów:
4. util.ts
Dodano import:
Zastąpiono wywołania API:
Zachowano wszystkie funkcje:
Rozszerzenie abstrakcji browserAPI:
lib/browser-api/types.ts
Dlaczego rozszerzono:
Początkowy minimalny interfejs RequestDetails był niewystarczający, ponieważ brakowało kluczowych właściwości wymaganych przez konstruktor ExtendedRequest. Gdy listenery webRequest są wywoływane, przekazują kompletny obiekt Request do ExtendedRequest, a nie tylko podstawowe szczegóły.
Co zostało dodane:
Pełny typ Request z util.ts, zawierający:
Przyczyna źródłowa błędów TypeScript:
Konstruktor ExtendedRequest oczekiwał właściwości takich jak frameId, method,
originUrl, parentFrameId, documentUrl, urlClassification, etc. Minimalny
interfejs powodował błędy:
Rozwiązanie:
Używając pełnej definicji typu Request, abstrakcja browserAPI poprawnie typuje callbacki webRequest, zapewniając bezpieczeństwo typów zarówno dla buildu Firefox jak i Chrome, przy zachowaniu kompatybilności z istniejącą implementacją ExtendedRequest.
Zmiana w RequestListener:
Wpływ zmian:
Następne kroki:
Checkout
From your project repository, check out a new branch and test the changes.