Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2c952e96a | ||
|
|
bed578e80d |
@@ -1,5 +1,20 @@
|
|||||||
import * as TwitchAuth from "./TwitchAuth.ts";
|
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
|
type Token = TwitchAuth.TwitchToken & AccessTokenMaybeWithUserId
|
||||||
|
|
||||||
@@ -59,7 +74,7 @@ export default class SugoiAuthProvider implements AuthProvider {
|
|||||||
this.#token = null
|
this.#token = null
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAccessTokenForUser(user: string | number, ...scopeSets: string[][]) {
|
async getAccessTokenForUser(user: UserIdResolvable, ...scopeSets: string[][]) {
|
||||||
if ((!scopeSets[0]) && (this.#token)) {
|
if ((!scopeSets[0]) && (this.#token)) {
|
||||||
return this.#token as AccessTokenWithUserId
|
return this.#token as AccessTokenWithUserId
|
||||||
}
|
}
|
||||||
@@ -72,18 +87,18 @@ export default class SugoiAuthProvider implements AuthProvider {
|
|||||||
return this.#token as AccessTokenWithUserId
|
return this.#token as AccessTokenWithUserId
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAnyAccessToken(user: string | number) {
|
async getAnyAccessToken(user: UserIdResolvable) {
|
||||||
return this.#token || TwitchAuth.getAppToken(this.clientId).then(getTwurpleProxy)
|
return this.#token || TwitchAuth.getAppToken(this.clientId).then(getTwurpleProxy)
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentScopesForUser(user: string | number) {
|
getCurrentScopesForUser(user: UserIdResolvable) {
|
||||||
if (!this.#token || this.#token instanceof Promise) {
|
if (!this.#token || this.#token instanceof Promise) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return this.#token.scope
|
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)
|
this.#token = await TwitchAuth.refreshToken(this.clientId, this.#token.refresh_token).then(this.#setToken)
|
||||||
return this.#token as AccessTokenWithUserId
|
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 {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`
|
* @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.#fetch = fetch
|
||||||
this.#auth_provider = auth_provider
|
this.#auth_provider = auth_provider
|
||||||
auth_provider.getAccessTokenForUser(undefined)
|
auth_provider.getAccessTokenForUser(undefined)
|
||||||
.then(token => caches.open(token.userId + '/' + auth_provider.clientId))
|
.then(token => caches.open(token.userId + '/' + auth_provider.clientId))
|
||||||
.then(cache => this.#cache = cache)
|
.then(cache => this.#cache = cache)
|
||||||
|
if (origin) this.#origin = origin
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user