diff --git a/static_src/SugoiAuthProvider.ts b/static_src/SugoiAuthProvider.ts index 73361e8..4447d83 100644 --- a/static_src/SugoiAuthProvider.ts +++ b/static_src/SugoiAuthProvider.ts @@ -1,5 +1,20 @@ import * as TwitchAuth from "./TwitchAuth.ts"; -import { AccessTokenMaybeWithUserId, AuthProvider, AccessToken, AccessTokenWithUserId } from "@twurple/auth"; +import { AccessTokenMaybeWithUserId, AuthProvider, AccessTokenWithUserId } from "@twurple/auth"; + +/** + * A type that represents a user and contains a user ID. + */ +interface UserIdResolvableType { + /** + * The ID of the user. + */ + id: string; +} + +/** + * A user ID or a user or channel object. + */ +type UserIdResolvable = string | number | UserIdResolvableType; type Token = TwitchAuth.TwitchToken & AccessTokenMaybeWithUserId @@ -59,7 +74,7 @@ export default class SugoiAuthProvider implements AuthProvider { this.#token = null } - async getAccessTokenForUser(user: string | number, ...scopeSets: string[][]) { + async getAccessTokenForUser(user: UserIdResolvable, ...scopeSets: string[][]) { if ((!scopeSets[0]) && (this.#token)) { return this.#token as AccessTokenWithUserId } @@ -72,18 +87,18 @@ export default class SugoiAuthProvider implements AuthProvider { return this.#token as AccessTokenWithUserId } - async getAnyAccessToken(user: string | number) { + async getAnyAccessToken(user: UserIdResolvable) { return this.#token || TwitchAuth.getAppToken(this.clientId).then(getTwurpleProxy) } - getCurrentScopesForUser(user: string | number) { + getCurrentScopesForUser(user: UserIdResolvable) { if (!this.#token || this.#token instanceof Promise) { return [] } return this.#token.scope } - async refreshAccessTokenForUser(user: string | number) { + async refreshAccessTokenForUser(user: UserIdResolvable) { this.#token = await TwitchAuth.refreshToken(this.clientId, this.#token.refresh_token).then(this.#setToken) return this.#token as AccessTokenWithUserId }