Architektur
High-Level Design
Das SDK ist in klare Schichten aufgeteilt:
TooLostClient: Orchestrierung, Token-Status, Manager-Verkabelung.OAuthManager: OAuth-URL-Erzeugung, Code-Exchange, Token-Refresh, PKCE-Helfer.REST: HTTP-Transport, Retries, Auth-Header, Fehler-Normalisierung.Managers: Domain-spezifische Endpoint-APIs.Types: Request/Response-Vertraege nach Domain.
Runtime-Ablauf
Standard Request Flow
- Manager-Methode ruft
BaseManager.requestoderBaseManager.requestDataauf. TooLostClient.requestfuehrt den Pre-Request-Refresh-Check aus.REST.requestbaut URL und Header, emittiert Events und fuehrtfetchaus.- Response-Body wird geparst.
- Nicht-2xx-Antworten werden zu
TooLostAPIError. requestDataentpackt{ data: ... }automatisch.
Auto-Refresh-Verhalten
Der Client kann auf zwei Arten refreshen:
- Pre-Request-Refresh:
- Nur aktiv, wenn
autoRefreshtrue ist. - Benoetigt bekanntes
expiresAtundrefreshToken. - Trigger bei Ablauf in <= 30 Sekunden.
- Nur aktiv, wenn
- 401-Recovery:
- Wenn ein Request mit
TooLostAPIErrorStatus 401 scheitert. - Benoetigt
autoRefreshundrefreshToken. - Fuehrt genau einen Refresh aus und wiederholt den Request.
- Wenn ein Request mit
Event-Modell
Der Client erweitert einen typisierten EventEmitter mit:
requestresponseerrortokenRefresh
Listener-Methoden:
ononceoffemit
Modulstruktur
src/client: Client-Runtime und typisierter EventEmitter.src/oauth: OAuth Manager.src/rest: REST-Transport.src/managers: Domain-Manager.src/types: SDK-Typsystem und API-Vertraege.src/structures: normalisierte Output-Modelle.src/utils: gemeinsame Runtime-Helper und Fehlerklassen.
Typ-Architektur
API-Typen sind nach Domain unter src/types/api/ aufgeteilt:
common.tsenums.tsshared.tsuser.tsreleases.tstracks.tspreferences.tslookup.tsdeprecated.ts
Oeffentliche Kompatibilitaet wird sichergestellt durch:
src/types/api.ts(Barrel)src/types/api/index.ts(Domain-Barrel)