Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2c952e96a | ||
|
|
bed578e80d |
@@ -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
|
||||
}
|
||||
|
||||
@@ -20,12 +20,13 @@ export default class WebStorage {
|
||||
* @param {import('@twurple/auth').AuthProvider} auth_provider used to add the authentication header to requests for web storage
|
||||
* @param {fetch} fetch defaults to `globalThis.fetch`, allows you to further customize fetch behavior via chaining, for example with `fetch-retry`
|
||||
*/
|
||||
constructor(auth_provider: import('@twurple/auth').AuthProvider, fetch: typeof globalThis.fetch = (resource,options)=>{return globalThis.fetch(resource,options)}) {
|
||||
constructor(auth_provider: import('@twurple/auth').AuthProvider, fetch: typeof globalThis.fetch = globalThis.fetch, origin?: string) {
|
||||
this.#fetch = fetch
|
||||
this.#auth_provider = auth_provider
|
||||
auth_provider.getAccessTokenForUser(undefined)
|
||||
.then(token => caches.open(token.userId + '/' + auth_provider.clientId))
|
||||
.then(cache => this.#cache = cache)
|
||||
if (origin) this.#origin = origin
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user