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

3 lines
5.6 KiB
JavaScript

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