Files
twitch-cloud-ebs/static/TwitchAuth.js
T

3 lines
5.4 KiB
JavaScript

var D=Object.create;var x=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var E=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var L=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of S(t))!q.call(r,o)&&o!==e&&x(r,o,{get:()=>t[o],enumerable:!(n=R(t,o))||n.enumerable});return r};var z=(r,t,e)=>(e=r!=null?D(U(r)):{},L(t||!r||!r.__esModule?x(e,"default",{value:r,enumerable:!0}):e,r));var v=E((k,_)=>{(function(r,t){typeof k=="object"&&typeof _<"u"?_.exports=t():typeof define=="function"&&define.amd?define(t):(r=typeof globalThis<"u"?globalThis:r||self,r.fetchRetry=t())})(k,function(){"use strict";var r=function(n,o){if(o=o||{},typeof n!="function")throw new e("fetch must be a function");if(typeof o!="object")throw new e("defaults must be an object");if(o.retries!==void 0&&!t(o.retries))throw new e("retries must be a positive integer");if(o.retryDelay!==void 0&&!t(o.retryDelay)&&typeof o.retryDelay!="function")throw new e("retryDelay must be a positive integer or a function returning a positive integer");if(o.retryOn!==void 0&&!Array.isArray(o.retryOn)&&typeof o.retryOn!="function")throw new e("retryOn property expects an array or function");var A={retries:3,retryDelay:1e3,retryOn:[]};return o=Object.assign(A,o),function(g,i){var l=o.retries,y=o.retryDelay,u=o.retryOn;if(i&&i.retries!==void 0)if(t(i.retries))l=i.retries;else throw new e("retries must be a positive integer");if(i&&i.retryDelay!==void 0)if(t(i.retryDelay)||typeof i.retryDelay=="function")y=i.retryDelay;else throw new e("retryDelay must be a positive integer or a function returning a positive integer");if(i&&i.retryOn)if(Array.isArray(i.retryOn)||typeof i.retryOn=="function")u=i.retryOn;else throw new e("retryOn property expects an array or function");return new Promise(function(w,h){var P=function(s){var m=typeof Request<"u"&&g instanceof Request?g.clone():g;n(m,i).then(function(a){if(Array.isArray(u)&&u.indexOf(a.status)===-1)w(a);else if(typeof u=="function")try{return Promise.resolve(u(s,null,a)).then(function(c){c?p(s,null,a):w(a)}).catch(h)}catch(c){h(c)}else s<l?p(s,null,a):w(a)}).catch(function(a){if(typeof u=="function")try{Promise.resolve(u(s,a,null)).then(function(c){c?p(s,a,null):h(a)}).catch(function(c){h(c)})}catch(c){h(c)}else s<l?p(s,a,null):h(a)})};function p(s,m,a){var c=typeof y=="function"?y(s,m,a):y;setTimeout(function(){P(++s)},c)}P(0)})}};function t(n){return Number.isInteger(n)&&n>=0}function e(n){this.name="ArgumentError",this.message=n}return r})});var O=z(v()),d=(0,O.default)(globalThis.fetch,{retries:10,retryDelay:r=>r*1e3}),f=location.origin+location.pathname,T=new URL("/oauth2/token",import.meta.url);function b(r){return r.obtainment_timestamp=Date.now(),r}function J(r){let t=new URLSearchParams({client_id:r,grant_type:"client_credentials"});return d(T,{method:"POST",body:t.toString(),headers:{"content-type":"application/x-www-form-urlencoded"}}).then(async function(e){if(!e.ok)throw new Error(await e.text());let n=await e.json();return b(n)})}function K(r,...t){console.debug("requesting access token");let e=new URL("https://id.twitch.tv/oauth2/authorize");e.searchParams.append("response_type","token"),e.searchParams.append("client_id",r),e.searchParams.append("scope",t.join(" ")),location.assign(e+"&redirect_uri="+f)}function j(r,...t){console.debug("requesting authorization code");let e=new URL("https://id.twitch.tv/oauth2/authorize");return e.searchParams.append("response_type","code"),e.searchParams.append("client_id",r),e.searchParams.append("scope",t.join(" ").trim()),location.assign(e+"&redirect_uri="+f),new Promise(()=>{})}function C(r,t){console.debug("exchanging authorization code");let e=new URLSearchParams({client_id:r,code:t,grant_type:"authorization_code"});return d(T,{method:"POST",body:e.toString()+"&redirect_uri="+f,headers:{"content-type":"application/x-www-form-urlencoded"}}).then(async function(n){if(!n.ok)throw new Error(await n.text());let o=await n.json();return b(o)})}async function I(r){return console.debug("validating token"),d("https://id.twitch.tv/oauth2/validate",{headers:{authorization:"OAuth "+r}}).then(async t=>{if(!t.ok)throw new Error(await t.text());let e=await t.json();return e.access_token=r,e.scope=e.scopes,delete e.scopes,e.token_type="bearer",b(e)})}function F(r,t){console.debug("refreshing token");let e=new URLSearchParams({client_id:r,grant_type:"refresh_token",refresh_token:t});return d(T,{method:"POST",body:e.toString(),headers:{"content-type":"application/x-www-form-urlencoded"}}).then(async function(n){if(!n.ok)throw new Error(await n.text());return await n.json()})}async function N(r,...t){let e=await B(r,...t);return e||j(r,...t)}async function B(r,...t){console.debug("scopes requested:",...t);let e=new URLSearchParams(location.search+"&"+location.hash.substring(1));if(e.has("code")){let n=e.get("code");return history.replaceState(null,"",f),C(r,n)}if(e.has("refresh_token"))return F(r,e.get("refresh_token"));if(e.has("access_token"))return I(e.get("access_token"));if(e.has("error")){let n=e.get("error")+": "+e.get("error_description");throw history.replaceState(null,"",f),new Error(n)}return null}var M=N;export{M as default,C as exchangeCode,J as getAppToken,N as getUserToken,B as getUserTokenPassive,F as refreshToken,K as requestAccessToken,j as requestAuthCode,I as validateToken};
//# sourceMappingURL=TwitchAuth.js.map