PageSourceSearch

https://thriftit.ai/assets/web-BkngVjpY.js

js thriftit.ai collected 2026-10-05 15:09:13 UTC 13,249 bytes, 1 lines download raw bytes

1import{C as e,N as t,S as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,u as y,v as b,w as x,x as S,y as C}from"./index-DoO6Fnth.js";var w=class extends n{constructor(){super(...arguments),this.clientId=null,this.redirectUrl=null,this.scriptLoaded=!1,this.scriptUrl=`https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js`,this.useProperTokenExchange=!1}async initialize(e,t,n=!1){this.clientId=e,this.redirectUrl=t||null,this.useProperTokenExchange=n,e&&await this.loadAppleScript()}async login(e){if(!this.clientId)throw Error(`Apple Client ID not set. Call initialize() first.`);if(!this.scriptLoaded)throw Error(`Apple Sign-In script not loaded.`);return new Promise((t,n)=>{AppleID.auth.init({clientId:this.clientId??``,scope:e.scopes?.join(` `)||`name email`,redirectURI:this.redirectUrl||window.location.href,state:e.state,nonce:e.nonce,usePopup:!0}),AppleID.auth.signIn().then(e=>{let n=null;n=this.useProperTokenExchange?null:{token:e.authorization.code||``},t({provider:`apple`,result:Object.assign({profile:{user:e.user||``,email:e.user?.email||null,givenName:e.user?.name?.firstName||null,familyName:e.user?.name?.lastName||null},accessToken:n,idToken:e.authorization.id_token||null},this.useProperTokenExchange&&{authorizationCode:e.authorization.code})})}).catch(e=>{n(x(e?.message??e?.localizedDescription??e?.error??`Apple login failed`))})})}async logout(){console.log(`Apple logout: Session should be managed on the client side`)}async isLoggedIn(){return console.log(`Apple login status should be managed on the client side`),{isLoggedIn:!1}}async getAuthorizationCode(){throw console.log(`Apple authorization code should be stored during login`),Error(`Apple authorization code not available`)}async refresh(){console.log(`Apple refresh not available on web`)}async loadAppleScript(){if(!this.scriptLoaded)return this.loadScript(this.scriptUrl).then(()=>{this.scriptLoaded=!0})}},T=class extends n{constructor(){super(...arguments),this.appId=null,this.scriptLoaded=!1,this.locale=`en_US`}async initialize(e,t){this.appId=e,t&&(this.locale=t),e&&(await this.loadFacebookScript(this.locale),FB.init({appId:this.appId,version:`v17.0`,xfbml:!0,cookie:!0}))}async login(t){if(!this.appId)throw Error(`Facebook App ID not set. Call initialize() first.`);return new Promise((n,r)=>{let i=!1,a=!1,o=e=>{if(i)return;if(!e?.accessToken||!e.userID){i=!0,r(Error(`Facebook login failed`));return}let t=e.accessToken,a=e.userID;FB.api(`/me`,{fields:`id,name,email,picture`},e=>{i=!0,n({provider:`facebook`,result:{accessToken:{token:t,userId:a},profile:{userID:e.id,name:e.name,email:e.email||null,imageURL:e.picture?.data?.url||null,friendIDs:[],birthday:null,ageRange:null,gender:null,location:null,hometown:null,profileURL:null},idToken:null}})})},s=()=>{i||a||(a=!0,this.waitForConnection().then(e=>o(e.authResponse)).catch(e=>{i||(i=!0,r(e))}))};FB.login(t=>{t.status===`connected`?o(t.authResponse):t.status===`not_authorized`||t.status===`unknown`?r(e(`Facebook login was cancelled.`)):s()},t.permissions?.length?{scope:t.permissions.join(`,`)}:void 0)})}async logout(){return new Promise(e=>{FB.logout(()=>e())})}async isLoggedIn(){return new Promise(e=>{FB.getLoginStatus(t=>{e({isLoggedIn:t.status===`connected`})})})}async getAuthorizationCode(){return new Promise((e,t)=>{FB.getLoginStatus(n=>{n.status===`connected`?e({accessToken:n.authResponse?.accessToken||``}):t(Error(`No Facebook authorization code available`))})})}async refresh(e){await this.login(e)}async getProfile(e){if(!this.appId)throw Error(`Facebook App ID not set. Call initialize() first.`);let t=Array.isArray(e)&&e.length>0?e:[`id`,`name`,`email`,`picture`];return new Promise((e,n)=>{FB.getLoginStatus(r=>{if(r.status!==`connected`){n(Error(`User is not logged in. Call login() before fetching profile.`));return}FB.api(`/me`,{fields:t.join(`,`)},t=>{if(t&&!t.error)e({profile:Object.assign(Object.assign({},t),{id:t.id??null,name:t.name??null,email:t.email??null,first_name:t.first_name??null,last_name:t.last_name??null})});else{let e=t?.error?.message??`Failed to fetch Facebook profile`;n(Error(e))}})})})}async requestTracking(){if(!this.appId)throw Error(`Facebook App ID not set. Call initialize() first.`);return{status:`authorized`}}waitForConnection(t=12e4,n=500){let r=Date.now();return new Promise((i,a)=>{let o=!1,s=()=>{o||FB.getLoginStatus(c=>{if(!o){if(c.status===`connected`&&c.authResponse?.accessToken){o=!0,i(c);return}if(c.status===`not_authorized`||c.status===`unknown`){o=!0,a(e(`Facebook login was cancelled.`));return}if(Date.now()-r>=t){o=!0,a(Error(`Facebook login failed or timed out`));return}setTimeout(s,n)}})};s()})}async loadFacebookScript(e){if(this.scriptLoaded)return;let t=document.querySelector(`script[src*="connect.facebook.net"]`);return t&&t.remove(),this.loadScript(`https://connect.facebook.net/${e}/sdk.js`).then(()=>{this.scriptLoaded=!0})}},E=class e extends t{constructor(){super(),this.googleProvider=new r,this.appleProvider=new w,this.facebookProvider=new T,this.twitterProvider=new p,this.telegramProvider=new u,this.oauth2Provider=new l,S()&&this.finishOAuthRedirectInPopup().catch(e=>{console.error(`Failed to finish OAuth redirect`,e);try{window.close()}catch{}})}async parseRedirectResult(){let t=new URL(window.location.href),n=localStorage.getItem(e.OAUTH_STATE_KEY),r=null,i,a;if(n)try{let e=JSON.parse(n);r=e.provider??null,i=e.state,a=e.nonce}catch{r=n===`true`?`google`:null}let o=null;switch(r){case`twitter`:o=await this.twitterProvider.handleOAuthRedirect(t,i);break;case`telegram`:o=await this.telegramProvider.handleOAuthRedirect(t,i);break;case`oauth2`:o=await this.oauth2Provider.handleOAuthRedirect(t,i);break;default:o=this.googleProvider.handleOAuthRedirect(t);break}return{provider:r,state:i,nonce:a,result:o}}async finishOAuthRedirectInPopup(){let e=await this.parseRedirectResult(),t=e.nonce??e.state,n;if(!e.result)n={type:`oauth-error`,provider:e.provider,error:`OAuth redirect did not contain expected parameters.`};else if(`error`in e.result){let t=e.provider??null,r=x(e.result.error);n=Object.assign({type:`oauth-error`,provider:t,error:r.message},r.code?{code:r.code}:null)}else n=Object.assign({type:`oauth-response`,provider:e.result.provider},e.result.result);a(e.provider??`google`,t,n),C();try{window.close()}catch{}}async initialize(e){let t=[];e.google?.webClientId&&t.push(this.googleProvider.initialize(e.google.webClientId,e.google.mode,e.google.hostedDomain,e.google.redirectUrl)),e.apple?.clientId&&t.push(this.appleProvider.initialize(e.apple.clientId,e.apple.redirectUrl,e.apple.useProperTokenExchange)),e.facebook?.appId&&t.pu
1sh(this.facebookProvider.initialize(e.facebook.appId,e.facebook.locale)),e.twitter?.clientId&&t.push(this.twitterProvider.initialize(e.twitter.clientId,e.twitter.redirectUrl,e.twitter.defaultScopes,e.twitter.forceLogin,e.twitter.audience)),e.telegram?.botId&&this.telegramProvider.initialize(e.telegram.botId,e.telegram.requestAccess,e.telegram.redirectUrl,e.telegram.origin,e.telegram.languageCode);let n=Object.assign({},e.oauth2??{});if(e.linkedin&&!n.linkedin&&(n[v]=y(e.linkedin)),e.tiktok){if(!e.tiktok.clientKey||!e.tiktok.redirectUrl)throw Error(`tiktok.clientKey and tiktok.redirectUrl are required`);n.tiktok||(n[m]=i(e.tiktok))}Object.keys(n).length>0&&t.push(this.oauth2Provider.initializeProviders(n)),await Promise.all(t)}async login(e){switch(e.provider){case`google`:return this.googleProvider.login(e.options);case`apple`:return this.appleProvider.login(e.options);case`facebook`:return this.facebookProvider.login(e.options);case`twitter`:return this.twitterProvider.login(e.options);case`telegram`:return this.telegramProvider.login(e.options);case`linkedin`:{let t=f(e.options??{});return t.flow===`redirect`&&t.state&&g(t.state),o(await this.oauth2Provider.login(t))}case`tiktok`:return _(await this.oauth2Provider.login(d(e.options)));case`oauth2`:return this.oauth2Provider.login(e.options);default:throw Error(`Login for ${e.provider} is not implemented on web`)}}async logout(e){switch(e.provider){case`google`:return this.googleProvider.logout();case`apple`:return this.appleProvider.logout();case`facebook`:return this.facebookProvider.logout();case`twitter`:return this.twitterProvider.logout();case`telegram`:return this.telegramProvider.logout();case`linkedin`:return this.oauth2Provider.logout(v);case`tiktok`:return this.oauth2Provider.logout(m);case`oauth2`:if(!e.providerId)throw Error(`providerId is required for oauth2 logout`);return this.oauth2Provider.logout(e.providerId);default:throw Error(`Logout for ${e.provider} is not implemented`)}}async isLoggedIn(e){switch(e.provider){case`google`:return this.googleProvider.isLoggedIn();case`apple`:return this.appleProvider.isLoggedIn();case`facebook`:return this.facebookProvider.isLoggedIn();case`twitter`:return this.twitterProvider.isLoggedIn();case`telegram`:return this.telegramProvider.isLoggedIn();case`linkedin`:return this.oauth2Provider.isLoggedIn(v);case`tiktok`:return this.oauth2Provider.isLoggedIn(m);case`oauth2`:if(!e.providerId)throw Error(`providerId is required for oauth2 isLoggedIn`);return this.oauth2Provider.isLoggedIn(e.providerId);default:throw Error(`isLoggedIn for ${e.provider} is not implemented`)}}async getAuthorizationCode(e){switch(e.provider){case`google`:return this.googleProvider.getAuthorizationCode();case`apple`:return this.appleProvider.getAuthorizationCode();case`facebook`:return this.facebookProvider.getAuthorizationCode();case`twitter`:return this.twitterProvider.getAuthorizationCode();case`linkedin`:return this.oauth2Provider.getAuthorizationCode(v);case`tiktok`:return this.oauth2Provider.getAuthorizationCode(m);case`oauth2`:if(!e.providerId)throw Error(`providerId is required for oauth2 getAuthorizationCode`);return this.oauth2Provider.getAuthorizationCode(e.providerId);default:throw Error(`getAuthorizationCode for ${e.provider} is not implemented`)}}async refresh(e){switch(e.provider){case`google`:return this.googleProvider.refresh();case`apple`:return this.appleProvider.refresh();case`facebook`:return this.facebookProvider.refresh(e.options);case`twitter`:return this.twitterProvider.refresh();case`telegram`:return this.telegramProvider.refresh();case`linkedin`:return this.oauth2Provider.refresh(v);case`tiktok`:return this.oauth2Provider.refresh(m);case`oauth2`:{let t=e.options;if(!t?.providerId)throw Error(`providerId is required for oauth2 refresh`);return this.oauth2Provider.refresh(t.providerId)}default:throw Error(`Refresh for ${e.provider} is not implemented`)}}async providerSpecificCall(e){switch(e.call){case`facebook#getProfile`:{let t=e.options?.fields;return this.facebookProvider.getProfile(t)}case`facebook#requestTracking`:return this.facebookProvider.requestTracking();case`google#createRestoreCredential`:case`google#getRestoreCredential`:case`google#clearRestoreCredential`:throw Error(`${e.call} is only available on Android`);default:throw Error(`Provider specific call for ${e.call} is not implemented`)}}async refreshToken(e){if(e.provider===`linkedin`)return this.oauth2Provider.refreshToken(v,e.refreshToken,e.additionalParameters);if(e.provider===`tiktok`)return this.oauth2Provider.refreshToken(m,e.refreshToken,e.additionalParameters);if(e.provider!==`oauth2`)throw Error(`refreshToken is only implemented for oauth2, linkedin, and tiktok on web`);return this.oauth2Provider.refreshToken(e.providerId,e.refreshToken,e.additionalParameters)}async handleRedirectCallback(){let e=await this.parseRedirectResult(),t=s(e.state??new URL(window.location.href).searchParams.get(`state`)),n=e.result;if(!n)return null;if(`error`in n)throw x(n.error);return t&&c(n)?o(n):h(n)?_(n):n}async decodeIdToken(e){let t=e?.idToken??e?.token;if(!t)throw Error(`idToken (or token) is required`);return{claims:this.oauth2Provider.decodeIdToken(t)}}async getAccessTokenExpirationDate(e){if(typeof e?.accessTokenExpirationDate!=`number`)throw Error(`accessTokenExpirationDate is required`);return{date:new Date(e.accessTokenExpirationDate).toISOString()}}async isAccessTokenAvailable(e){let t=e?.accessToken??null;return{isAvailable:typeof t==`string`&&t.length>0}}async isAccessTokenExpired(e){if(typeof e?.accessTokenExpirationDate!=`number`)throw Error(`accessTokenExpirationDate is required`);return{isExpired:e.accessTokenExpirationDate<=Date.now()}}async isRefreshTokenAvailable(e){let t=e?.refreshToken??null;return{isAvailable:typeof t==`string`&&t.length>0}}async getPluginVersion(){return{version:`web`}}async openSecureWindow(e){let t=[[`width`,600],[`height`,550],[`left`,screen.width/2-600/2],[`top`,screen.height/2-550/2]].map(e=>e.join(`=`)).join(`,`),n=window.open(e.authEndpoint,`Authorization`,t);return typeof n.focus==`function`&&n.focus(),new Promise((t,n)=>{let r=new BroadcastChannel(e.broadcastChannelName||`oauth-channel`);r.addEventListener(`message`,i=>{i.data.startsWith(e.redirectUri)?(r.close(),t({redirectedUri:i.data})):(r.close(),n(Error(`Redirect URI does not match, expected `+e.redirectUri+` but got `+i.data)))}),setTimeout(()=>{r.close(),n(Error(`The sign-in flow timed out`))},5*6e4)})}};E.OAUTH_STATE_KEY=b;export{E as SocialLoginWeb};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.