Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f032477067 | ||
|
|
ada811dda2 | ||
|
|
c2c952e96a | ||
|
|
bed578e80d |
@@ -2,40 +2,24 @@ on:
|
||||
push:
|
||||
tags: [ '*' ]
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
# This is used to complete the identity challenge
|
||||
# with sigstore/fulcio when running outside of PRs.
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
- name: Install Worker Dependencies
|
||||
run: npm ci
|
||||
|
||||
- run: npm run deploy
|
||||
env:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
- run: npm pack
|
||||
- run: mv twitch-cloud-ebs*tgz twitch-cloud-ebs.tgz
|
||||
- run: git log $(git describe --tags --abbrev=0 HEAD~1)..HEAD --oneline > changelog.txt
|
||||
- uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
make_latest: true
|
||||
body_path: changelog.txt
|
||||
files: '*.tgz'
|
||||
- run: npm version from-git --allow-same-version --no-git-tag-version
|
||||
- run: npm config set registry https://gitea.sugoidogo.com/api/packages/sugoidogo/npm/
|
||||
- run: npm config set -- '//gitea.sugoidogo.com/api/packages/sugoidogo/npm/:_authToken' "$PACKAGES_KEY"
|
||||
env:
|
||||
PACKAGES_KEY: ${{ secrets.PACKAGES_KEY }}
|
||||
- run: npm publish
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "twitch-cloud-ebs",
|
||||
"name": "@sugoidogo/twitch-cloud-ebs",
|
||||
"version": "0.0.0",
|
||||
"files": [
|
||||
"static",
|
||||
|
||||
@@ -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 = (input, init) => globalThis.fetch(input, init), 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