Client Referenz
Klasse: TooLostClient
TooLostClient ist der zentrale Einstiegspunkt des SDKs.
ts
new TooLostClient(options: TooLostClientOptions)Konstruktor-Optionen
| Option | Typ | Pflicht | Beschreibung |
|---|---|---|---|
clientId | string | ja | OAuth Client-ID. |
clientSecret | string | nein | OAuth Client-Secret (optional bei oeffentlichen PKCE-Clients). |
redirectUri | string | ja | OAuth Redirect-URI. |
scopes | Scope[] | nein | Scope-Liste fuer die OAuth-URL-Erzeugung. |
accessToken | string | nein | Initiales Access Token. |
refreshToken | string | nein | Initiales Refresh Token. |
autoRefresh | boolean | nein | Aktiviert Refresh vor Ablauf und bei 401. Default: true. |
retry | number | nein | Standard-Retry-Anzahl fuer REST. Default: 2. |
baseURL | string | nein | API Base-URL Override. Default: https://api.toolost.com/v1. |
authURL | string | nein | OAuth Authorize URL Override. |
tokenURL | string | nein | OAuth Token URL Override. |
registerURL | string | nein | OAuth Registration URL Override. |
fetch | typeof fetch | nein | Eigene Fetch-Implementierung. |
Exponierte Manager und Services
client.oauth: OAuthManagerclient.user: UserManagerclient.releases: ReleasesManagerclient.tracks: TracksManagerclient.preferences: PreferencesManagerclient.lookup: LookupManager
Token Getter und Setter
accessToken
ts
get accessToken(): string | undefinedrefreshToken
ts
get refreshToken(): string | undefinedsetAccessToken
ts
setAccessToken(accessToken: string, expiresIn?: number): voidWenn expiresIn gesetzt ist, wird intern expiresAt berechnet und fuer Pre-Request-Refresh verwendet.
setRefreshToken
ts
setRefreshToken(refreshToken: string): voidsetTokens
ts
setTokens(token: TokenResponse): voidSetzt Access/Refresh Tokens, berechnet Ablaufzeit und emittiert tokenRefresh.
Request-Methoden
request
ts
request<T>(method: HTTPMethod, path: string, options?: RequestOptions): Promise<T>Low-Level Request API fuer Manager.
requestData
ts
requestData<T>(method: HTTPMethod, path: string, options?: RequestOptions): Promise<T>Wie request, aber mit automatischem Unwrapping von { data: T }.
Event API
TooLostClient erweitert einen typisierten Emitter (TypedEventEmitter) mit:
ononceoffemit
Event-Namen und Payloads
request: RequestEventresponse: ResponseEventerror: ErrorEventtokenRefresh: TokenRefreshEvent
Beispiel:
ts
client.on("request", (event) => {
console.log(event.method, event.url, event.attempt);
});
client.on("tokenRefresh", (event) => {
console.log("new token expiresAt", event.expiresAt);
});Auto-Refresh und Retry-Logik
Pre-Request-Refresh
Wird vor jedem Request ausgefuehrt, wenn alle Bedingungen true sind:
autoRefresh === trueoptions.skipAuth !== truerefreshTokenexistiertexpiresAtexistiertexpiresAt - now <= 30000
401-Recovery
Wenn ein Request mit TooLostAPIError und Status 401 scheitert, dann:
- Tokens refreshen (wenn erlaubt und Refresh Token vorhanden)
- den urspruenglichen Request genau einmal wiederholen
Deduplizierung paralleler Refreshes
Parallele Refresh-Vorgaenge teilen ein gemeinsames internes Promise, um doppelte Refresh-Calls zu verhindern.
Hinweise
- Der Client benoetigt immer eine gueltige Fetch-Implementierung (global oder injiziert).
errorwird nur emittiert, wenn mindestens einerror-Listener registriert ist.- Alle Manager-Methoden bauen letztlich auf diesem Client-Verhalten auf.