always ensure userId is present on tokens
docker.yml / build (push) Failing after 35s

This commit is contained in:
2026-08-02 04:11:11 -07:00
parent 83f3217565
commit 2265fd39e0
+10 -4
View File
@@ -2,12 +2,17 @@ import type { AccessTokenMaybeWithUserId, AccessTokenWithUserId, AuthProvider }
import type { UserIdResolvable } from "@twurple/api"
import * as TwitchAuth from "./TwitchAuth";
async function getTwurpleProxy(token: TwitchAuth.TwitchToken): Promise<AccessTokenWithUserId> {
async function ensureUserId(token: TwitchAuth.TwitchToken): Promise<TwitchAuth.TwitchToken> {
if (!token.user_id) {
const refresh_token = token.refresh_token
token = await TwitchAuth.validateToken(token.access_token)
token.refresh_token = refresh_token
}
return token
}
async function getTwurpleProxy(token: TwitchAuth.TwitchToken): Promise<AccessTokenWithUserId> {
token=await ensureUserId(token)
return new Proxy(token, {
get(target, name, receiver) {
return target[name.toString().replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`) as keyof TwitchAuth.TwitchToken]
@@ -21,7 +26,8 @@ export class SugoiAuthProvider implements AuthProvider {
constructor(clientId:string,proxyOrigin?:string) {
this.clientId = clientId;
if (proxyOrigin) TwitchAuth.setProxyOrigin(proxyOrigin);
this.#token=TwitchAuth.getUserTokenPassive(clientId).catch()
this.#token = TwitchAuth.getUserTokenPassive(clientId)
if(!this.#token) this.#token=ensureUserId(this.#token)
}
#authorize(scopes: string[]) {
const promise = TwitchAuth.requestAuthCode(this.clientId, ...scopes)
@@ -61,8 +67,8 @@ export class SugoiAuthProvider implements AuthProvider {
const token=await this.#token
if (!token) throw new Error("unauthorized")
if (!token.refresh_token) throw new Error("missing refresh token")
this.#token = await TwitchAuth.refreshToken(this.clientId, token.refresh_token)
return getTwurpleProxy(this.#token)
this.#token = await TwitchAuth.refreshToken(this.clientId, token.refresh_token).then(ensureUserId)
return getTwurpleProxy(this.#token!)
}
}