@capgo/capacitor-social-login 8.1.1 → 8.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +215 -35
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/ee/forgr/capacitor/social/login/OAuth2LoginActivity.java +110 -0
- package/android/src/main/java/ee/forgr/capacitor/social/login/OAuth2Provider.java +848 -0
- package/android/src/main/java/ee/forgr/capacitor/social/login/SocialLoginPlugin.java +27 -1
- package/dist/docs.json +352 -22
- package/dist/esm/definitions.d.ts +167 -3
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/oauth2-provider.d.ts +41 -0
- package/dist/esm/oauth2-provider.js +444 -0
- package/dist/esm/oauth2-provider.js.map +1 -0
- package/dist/esm/web.d.ts +3 -1
- package/dist/esm/web.js +32 -0
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +474 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +474 -0
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/SocialLoginPlugin/OAuth2Provider.swift +575 -0
- package/ios/Sources/SocialLoginPlugin/SocialLoginPlugin.swift +111 -2
- package/package.json +2 -1
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/base.js","esm/apple-provider.js","esm/facebook-provider.js","esm/google-provider.js","esm/twitter-provider.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst SocialLogin = registerPlugin('SocialLogin', {\n web: () => import('./web').then((m) => new m.SocialLoginWeb()),\n});\nexport * from './definitions';\nexport { SocialLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class BaseSocialLogin extends WebPlugin {\n constructor() {\n super();\n }\n parseJwt(token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n return JSON.parse(jsonPayload);\n }\n async loadScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.onload = () => {\n resolve();\n };\n script.onerror = reject;\n document.body.appendChild(script);\n });\n }\n}\nBaseSocialLogin.OAUTH_STATE_KEY = 'social_login_oauth_pending';\n//# sourceMappingURL=base.js.map","import { BaseSocialLogin } from './base';\nexport class AppleSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.redirectUrl = null;\n this.scriptLoaded = false;\n this.scriptUrl = 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js';\n this.useProperTokenExchange = false;\n }\n async initialize(clientId, redirectUrl, useProperTokenExchange = false) {\n this.clientId = clientId;\n this.redirectUrl = redirectUrl || null;\n this.useProperTokenExchange = useProperTokenExchange;\n if (clientId) {\n await this.loadAppleScript();\n }\n }\n async login(options) {\n if (!this.clientId) {\n throw new Error('Apple Client ID not set. Call initialize() first.');\n }\n if (!this.scriptLoaded) {\n throw new Error('Apple Sign-In script not loaded.');\n }\n return new Promise((resolve, reject) => {\n var _a, _b;\n AppleID.auth.init({\n clientId: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n scope: ((_b = options.scopes) === null || _b === void 0 ? void 0 : _b.join(' ')) || 'name email',\n redirectURI: this.redirectUrl || window.location.href,\n state: options.state,\n nonce: options.nonce,\n usePopup: true,\n });\n AppleID.auth\n .signIn()\n .then((res) => {\n var _a, _b, _c, _d, _e;\n let accessToken = null;\n if (this.useProperTokenExchange) {\n // When using proper token exchange, the authorization code should be exchanged\n // for a proper access token on the backend. For now, we set accessToken to null\n // and provide the authorization code in a separate field for backend processing.\n accessToken = null;\n }\n else {\n // Legacy behavior: use authorization code as access token for backward compatibility\n accessToken = {\n token: res.authorization.code || '',\n };\n }\n const result = Object.assign({ profile: {\n user: res.user || '',\n email: ((_a = res.user) === null || _a === void 0 ? void 0 : _a.email) || null,\n givenName: ((_c = (_b = res.user) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.firstName) || null,\n familyName: ((_e = (_d = res.user) === null || _d === void 0 ? void 0 : _d.name) === null || _e === void 0 ? void 0 : _e.lastName) || null,\n }, accessToken: accessToken, idToken: res.authorization.id_token || null }, (this.useProperTokenExchange && { authorizationCode: res.authorization.code }));\n resolve({ provider: 'apple', result });\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n async logout() {\n // Apple doesn't provide a logout method for web\n console.log('Apple logout: Session should be managed on the client side');\n }\n async isLoggedIn() {\n // Apple doesn't provide a method to check login status on web\n console.log('Apple login status should be managed on the client side');\n return { isLoggedIn: false };\n }\n async getAuthorizationCode() {\n // Apple authorization code should be obtained during login\n console.log('Apple authorization code should be stored during login');\n throw new Error('Apple authorization code not available');\n }\n async refresh() {\n // Apple doesn't provide a refresh method for web\n console.log('Apple refresh not available on web');\n }\n async loadAppleScript() {\n if (this.scriptLoaded)\n return;\n return this.loadScript(this.scriptUrl).then(() => {\n this.scriptLoaded = true;\n });\n }\n}\n//# sourceMappingURL=apple-provider.js.map","import { BaseSocialLogin } from './base';\nexport class FacebookSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.appId = null;\n this.scriptLoaded = false;\n this.locale = 'en_US';\n }\n async initialize(appId, locale) {\n this.appId = appId;\n if (locale) {\n this.locale = locale;\n }\n if (appId) {\n // Load with the specified locale or default\n await this.loadFacebookScript(this.locale);\n FB.init({\n appId: this.appId,\n version: 'v17.0',\n xfbml: true,\n cookie: true,\n });\n }\n }\n async login(options) {\n if (!this.appId) {\n throw new Error('Facebook App ID not set. Call initialize() first.');\n }\n return new Promise((resolve, reject) => {\n FB.login((response) => {\n if (response.status === 'connected') {\n FB.api('/me', { fields: 'id,name,email,picture' }, (userInfo) => {\n var _a, _b;\n const result = {\n accessToken: {\n token: response.authResponse.accessToken,\n userId: response.authResponse.userID,\n },\n profile: {\n userID: userInfo.id,\n name: userInfo.name,\n email: userInfo.email || null,\n imageURL: ((_b = (_a = userInfo.picture) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.url) || null,\n friendIDs: [],\n birthday: null,\n ageRange: null,\n gender: null,\n location: null,\n hometown: null,\n profileURL: null,\n },\n idToken: null,\n };\n resolve({ provider: 'facebook', result });\n });\n }\n else {\n reject(new Error('Facebook login failed'));\n }\n }, { scope: options.permissions.join(',') });\n });\n }\n async logout() {\n return new Promise((resolve) => {\n FB.logout(() => resolve());\n });\n }\n async isLoggedIn() {\n return new Promise((resolve) => {\n FB.getLoginStatus((response) => {\n resolve({ isLoggedIn: response.status === 'connected' });\n });\n });\n }\n async getAuthorizationCode() {\n return new Promise((resolve, reject) => {\n FB.getLoginStatus((response) => {\n var _a;\n if (response.status === 'connected') {\n resolve({ accessToken: ((_a = response.authResponse) === null || _a === void 0 ? void 0 : _a.accessToken) || '' });\n }\n else {\n reject(new Error('No Facebook authorization code available'));\n }\n });\n });\n }\n async refresh(options) {\n await this.login(options);\n }\n async loadFacebookScript(locale) {\n if (this.scriptLoaded)\n return;\n // Remove any existing Facebook SDK script\n const existingScript = document.querySelector('script[src*=\"connect.facebook.net\"]');\n if (existingScript) {\n existingScript.remove();\n }\n return this.loadScript(`https://connect.facebook.net/${locale}/sdk.js`).then(() => {\n this.scriptLoaded = true;\n });\n }\n}\n//# sourceMappingURL=facebook-provider.js.map","import { BaseSocialLogin } from './base';\nexport class GoogleSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.loginType = 'online';\n this.GOOGLE_TOKEN_REQUEST_URL = 'https://www.googleapis.com/oauth2/v3/tokeninfo';\n this.GOOGLE_STATE_KEY = 'capgo_social_login_google_state';\n }\n async initialize(clientId, mode, hostedDomain, redirectUrl) {\n this.clientId = clientId;\n if (mode) {\n this.loginType = mode;\n }\n this.hostedDomain = hostedDomain;\n this.redirectUrl = redirectUrl;\n }\n async login(options) {\n if (!this.clientId) {\n throw new Error('Google Client ID not set. Call initialize() first.');\n }\n let scopes = options.scopes || [];\n if (scopes.length > 0) {\n // If scopes are provided, directly use the traditional OAuth flow\n if (!scopes.includes('https://www.googleapis.com/auth/userinfo.email')) {\n scopes.push('https://www.googleapis.com/auth/userinfo.email');\n }\n if (!scopes.includes('https://www.googleapis.com/auth/userinfo.profile')) {\n scopes.push('https://www.googleapis.com/auth/userinfo.profile');\n }\n if (!scopes.includes('openid')) {\n scopes.push('openid');\n }\n }\n else {\n scopes = [\n 'https://www.googleapis.com/auth/userinfo.email',\n 'https://www.googleapis.com/auth/userinfo.profile',\n 'openid',\n ];\n }\n const nonce = options.nonce || Math.random().toString(36).substring(2);\n // If scopes are provided, directly use the traditional OAuth flow\n return this.traditionalOAuth({\n scopes,\n nonce,\n hostedDomain: this.hostedDomain,\n prompt: options.prompt,\n });\n }\n async logout() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. logout is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n return;\n await this.rawLogoutGoogle(state.accessToken);\n }\n async isLoggedIn() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. isLoggedIn is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n return { isLoggedIn: false };\n try {\n const isValidAccessToken = await this.accessTokenIsValid(state.accessToken);\n const isValidIdToken = this.idTokenValid(state.idToken);\n if (isValidAccessToken && isValidIdToken) {\n return { isLoggedIn: true };\n }\n else {\n try {\n await this.rawLogoutGoogle(state.accessToken, false);\n }\n catch (e) {\n console.error('Access token is not valid, but cannot logout', e);\n }\n return { isLoggedIn: false };\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n async getAuthorizationCode() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. getAuthorizationCode is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n throw new Error('No Google authorization code available');\n try {\n const isValidAccessToken = await this.accessTokenIsValid(state.accessToken);\n const isValidIdToken = this.idTokenValid(state.idToken);\n if (isValidAccessToken && isValidIdToken) {\n return { accessToken: state.accessToken, jwt: state.idToken };\n }\n else {\n try {\n await this.rawLogoutGoogle(state.accessToken, false);\n }\n catch (e) {\n console.error('Access token is not valid, but cannot logout', e);\n }\n throw new Error('No Google authorization code available');\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n async refresh() {\n // For Google, we can prompt for re-authentication\n return Promise.reject('Not implemented');\n }\n handleOAuthRedirect(url) {\n const paramsRaw = url.searchParams;\n // Check for errors in search params first (for offline mode)\n const errorInParams = paramsRaw.get('error');\n if (errorInParams) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const errorDescription = paramsRaw.get('error_description') || errorInParams;\n return { error: errorDescription };\n }\n const code = paramsRaw.get('code');\n if (code && paramsRaw.has('scope')) {\n return {\n provider: 'google',\n result: {\n serverAuthCode: code,\n responseType: 'offline',\n },\n };\n }\n const hash = url.hash.substring(1);\n console.log('handleOAuthRedirect', url.hash);\n if (!hash)\n return null;\n const params = new URLSearchParams(hash);\n // Check for error cases in hash (e.g., user cancelled)\n const error = params.get('error');\n if (error) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const errorDescription = params.get('error_description') || error;\n return { error: errorDescription };\n }\n console.log('handleOAuthRedirect ok');\n const accessToken = params.get('access_token');\n const idToken = params.get('id_token');\n if (accessToken && idToken) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const profile = this.parseJwt(idToken);\n return {\n provider: 'google',\n result: {\n accessToken: {\n token: accessToken,\n },\n idToken,\n profile: {\n email: profile.email || null,\n familyName: profile.family_name || null,\n givenName: profile.given_name || null,\n id: profile.sub || null,\n name: profile.name || null,\n imageUrl: profile.picture || null,\n },\n responseType: 'online',\n },\n };\n }\n return null;\n }\n async accessTokenIsValid(accessToken) {\n const url = `${this.GOOGLE_TOKEN_REQUEST_URL}?access_token=${encodeURIComponent(accessToken)}`;\n try {\n // Make the GET request using fetch\n const response = await fetch(url);\n // Check if the response is successful\n if (!response.ok) {\n console.log(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response not successful. Status code: ${response.status}. Assuming that the token is not valid`);\n return false;\n }\n // Get the response body as text\n const responseBody = await response.text();\n if (!responseBody) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is null`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is null`);\n }\n // Parse the response body as JSON\n let jsonObject;\n try {\n jsonObject = JSON.parse(responseBody);\n }\n catch (e) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is not valid JSON. Error: ${e}`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is not valid JSON. Error: ${e}`);\n }\n // Extract the 'expires_in' field\n const expiresInStr = jsonObject['expires_in'];\n if (expiresInStr === undefined || expiresInStr === null) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response JSON does not include 'expires_in'.`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response JSON does not include 'expires_in'.`);\n }\n // Parse 'expires_in' as an integer\n let expiresInInt;\n try {\n expiresInInt = parseInt(expiresInStr, 10);\n if (isNaN(expiresInInt)) {\n throw new Error(`'expires_in' is not a valid integer`);\n }\n }\n catch (e) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. 'expires_in': ${expiresInStr} is not a valid integer. Error: ${e}`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. 'expires_in': ${expiresInStr} is not a valid integer. Error: ${e}`);\n }\n // Determine if the access token is valid based on 'expires_in'\n return expiresInInt > 5;\n }\n catch (error) {\n console.error(error);\n throw error;\n }\n }\n idTokenValid(idToken) {\n try {\n const parsed = this.parseJwt(idToken);\n const currentTime = Math.ceil(Date.now() / 1000) + 5; // Convert current time to seconds since epoch\n return parsed.exp && currentTime < parsed.exp;\n }\n catch (e) {\n return false;\n }\n }\n async rawLogoutGoogle(accessToken, tokenValid = null) {\n if (tokenValid === null) {\n tokenValid = await this.accessTokenIsValid(accessToken);\n }\n if (tokenValid === true) {\n try {\n await fetch(`https://accounts.google.com/o/oauth2/revoke?token=${encodeURIComponent(accessToken)}`);\n this.clearStateGoogle();\n }\n catch (e) {\n // ignore\n }\n return;\n }\n else {\n this.clearStateGoogle();\n return;\n }\n }\n persistStateGoogle(accessToken, idToken) {\n try {\n window.localStorage.setItem(this.GOOGLE_STATE_KEY, JSON.stringify({ accessToken, idToken }));\n }\n catch (e) {\n console.error('Cannot persist state google', e);\n }\n }\n clearStateGoogle() {\n try {\n window.localStorage.removeItem(this.GOOGLE_STATE_KEY);\n }\n catch (e) {\n console.error('Cannot clear state google', e);\n }\n }\n getGoogleState() {\n try {\n const state = window.localStorage.getItem(this.GOOGLE_STATE_KEY);\n if (!state)\n return null;\n const { accessToken, idToken } = JSON.parse(state);\n return { accessToken, idToken };\n }\n catch (e) {\n console.error('Cannot get state google', e);\n return null;\n }\n }\n async traditionalOAuth({ scopes, hostedDomain, nonce, prompt, }) {\n var _a;\n const uniqueScopes = [...new Set([...(scopes || []), 'openid'])];\n const params = new URLSearchParams(Object.assign(Object.assign({ client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '', redirect_uri: this.redirectUrl || window.location.origin + window.location.pathname, response_type: this.loginType === 'offline' ? 'code' : 'token id_token', scope: uniqueScopes.join(' ') }, (nonce && { nonce })), { include_granted_scopes: 'true', state: 'popup' }));\n if (hostedDomain !== undefined) {\n params.append('hd', hostedDomain);\n }\n if (prompt !== undefined) {\n params.append('prompt', prompt);\n }\n const url = `https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`;\n const width = 500;\n const height = 600;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2;\n localStorage.setItem(BaseSocialLogin.OAUTH_STATE_KEY, JSON.stringify({ provider: 'google', loginType: this.loginType }));\n const popup = window.open(url, 'Google Sign In', `width=${width},height=${height},left=${left},top=${top},popup=1`);\n let popupClosedInterval;\n let timeoutHandle;\n // This may never return...\n return new Promise((resolve, reject) => {\n if (!popup) {\n reject(new Error('Failed to open popup'));\n return;\n }\n const handleMessage = (event) => {\n var _a, _b, _c, _d;\n if (event.origin !== window.location.origin || ((_b = (_a = event.data) === null || _a === void 0 ? void 0 : _a.source) === null || _b === void 0 ? void 0 : _b.startsWith('angular')))\n return;\n if (((_c = event.data) === null || _c === void 0 ? void 0 : _c.type) === 'oauth-response') {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n if (this.loginType === 'online') {\n const { accessToken, idToken } = event.data;\n if (accessToken && idToken) {\n const profile = this.parseJwt(idToken);\n this.persistStateGoogle(accessToken.token, idToken);\n resolve({\n provider: 'google',\n result: {\n accessToken: {\n token: accessToken.token,\n },\n idToken,\n profile: {\n email: profile.email || null,\n familyName: profile.family_name || null,\n givenName: profile.given_name || null,\n id: profile.sub || null,\n name: profile.name || null,\n imageUrl: profile.picture || null,\n },\n responseType: 'online',\n },\n });\n }\n }\n else {\n const { serverAuthCode } = event.data;\n resolve({\n provider: 'google',\n result: {\n responseType: 'offline',\n serverAuthCode,\n },\n });\n }\n }\n else if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) === 'oauth-error') {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n const errorMessage = event.data.error || 'User cancelled the OAuth flow';\n reject(new Error(errorMessage));\n }\n // Don't reject for non-OAuth messages, just ignore them\n };\n window.addEventListener('message', handleMessage);\n // Timeout after 5 minutes\n timeoutHandle = setTimeout(() => {\n clearTimeout(timeoutHandle);\n window.removeEventListener('message', handleMessage);\n popup.close();\n reject(new Error('OAuth timeout'));\n }, 300000);\n popupClosedInterval = setInterval(() => {\n if (popup.closed) {\n clearInterval(popupClosedInterval);\n reject(new Error('Popup closed'));\n }\n }, 1000);\n });\n }\n}\n//# sourceMappingURL=google-provider.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { BaseSocialLogin } from './base';\nexport class TwitterSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.redirectUrl = null;\n this.defaultScopes = ['tweet.read', 'users.read'];\n this.forceLogin = false;\n this.TOKENS_KEY = 'capgo_social_login_twitter_tokens_v1';\n this.STATE_PREFIX = 'capgo_social_login_twitter_state_';\n }\n async initialize(clientId, redirectUrl, defaultScopes, forceLogin, audience) {\n this.clientId = clientId;\n this.redirectUrl = redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null;\n if (defaultScopes === null || defaultScopes === void 0 ? void 0 : defaultScopes.length) {\n this.defaultScopes = defaultScopes;\n }\n this.forceLogin = forceLogin !== null && forceLogin !== void 0 ? forceLogin : false;\n this.audience = audience !== null && audience !== void 0 ? audience : undefined;\n }\n async login(options) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.clientId) {\n throw new Error('Twitter Client ID not configured. Call initialize() first.');\n }\n const redirectUri = (_b = (_a = options.redirectUrl) !== null && _a !== void 0 ? _a : this.redirectUrl) !== null && _b !== void 0 ? _b : window.location.origin + window.location.pathname;\n const scopes = ((_c = options.scopes) === null || _c === void 0 ? void 0 : _c.length) ? options.scopes : this.defaultScopes;\n const state = (_d = options.state) !== null && _d !== void 0 ? _d : this.generateState();\n const codeVerifier = (_e = options.codeVerifier) !== null && _e !== void 0 ? _e : this.generateCodeVerifier();\n const codeChallenge = await this.generateCodeChallenge(codeVerifier);\n this.persistPendingLogin(state, {\n codeVerifier,\n redirectUri,\n scopes,\n });\n localStorage.setItem(BaseSocialLogin.OAUTH_STATE_KEY, JSON.stringify({ provider: 'twitter', state }));\n const params = new URLSearchParams({\n response_type: 'code',\n client_id: this.clientId,\n redirect_uri: redirectUri,\n scope: scopes.join(' '),\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n if (((_f = options.forceLogin) !== null && _f !== void 0 ? _f : this.forceLogin) === true) {\n params.set('force_login', 'true');\n }\n if (this.audience) {\n params.set('audience', this.audience);\n }\n const authUrl = `https://x.com/i/oauth2/authorize?${params.toString()}`;\n const width = 500;\n const height = 650;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2;\n const popup = window.open(authUrl, 'XLogin', `width=${width},height=${height},left=${left},top=${top},popup=1`);\n return new Promise((resolve, reject) => {\n if (!popup) {\n reject(new Error('Unable to open login window. Please allow popups.'));\n return;\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n };\n const messageHandler = (event) => {\n var _a, _b, _c, _d;\n if (event.origin !== window.location.origin) {\n return;\n }\n if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === 'oauth-response') {\n if (((_b = event.data) === null || _b === void 0 ? void 0 : _b.provider) && event.data.provider !== 'twitter') {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _e = event.data, { provider: _ignoredProvider } = _e, payload = __rest(_e, [\"provider\"]);\n resolve({\n provider: 'twitter',\n result: payload,\n });\n }\n else if (((_c = event.data) === null || _c === void 0 ? void 0 : _c.type) === 'oauth-error') {\n if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.provider) && event.data.provider !== 'twitter') {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(event.data.error || 'Twitter login was cancelled.'));\n }\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n window.removeEventListener('message', messageHandler);\n popup.close();\n reject(new Error('Twitter login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n if (popup.closed) {\n window.removeEventListener('message', messageHandler);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n reject(new Error('Twitter login window was closed.'));\n }\n }, 1000);\n });\n }\n async logout() {\n localStorage.removeItem(this.TOKENS_KEY);\n }\n async isLoggedIn() {\n const tokens = this.getStoredTokens();\n if (!tokens) {\n return { isLoggedIn: false };\n }\n const isValid = tokens.expiresAt > Date.now();\n if (!isValid) {\n localStorage.removeItem(this.TOKENS_KEY);\n }\n return { isLoggedIn: isValid };\n }\n async getAuthorizationCode() {\n const tokens = this.getStoredTokens();\n if (!tokens) {\n throw new Error('Twitter access token is not available.');\n }\n return {\n accessToken: tokens.accessToken,\n };\n }\n async refresh() {\n const tokens = this.getStoredTokens();\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken)) {\n throw new Error('No Twitter refresh token is available. Include offline.access scope to receive one.');\n }\n await this.refreshWithRefreshToken(tokens.refreshToken);\n }\n async handleOAuthRedirect(url, expectedState) {\n const params = url.searchParams;\n const stateFromUrl = expectedState !== null && expectedState !== void 0 ? expectedState : params.get('state');\n if (!stateFromUrl) {\n return null;\n }\n const pending = this.consumePendingLogin(stateFromUrl);\n if (!pending) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'Twitter login session expired or state mismatch.' };\n }\n const error = params.get('error');\n if (error) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: params.get('error_description') || error };\n }\n const code = params.get('code');\n if (!code) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'Twitter authorization code missing from redirect.' };\n }\n try {\n const tokens = await this.exchangeAuthorizationCode(code, pending);\n const profile = await this.fetchProfile(tokens.access_token);\n const expiresAt = Date.now() + tokens.expires_in * 1000;\n const scopeArray = tokens.scope.split(' ').filter(Boolean);\n this.persistTokens({\n accessToken: tokens.access_token,\n refreshToken: tokens.refresh_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokens.token_type,\n userId: profile.id,\n profile,\n });\n return {\n provider: 'twitter',\n result: {\n accessToken: {\n token: tokens.access_token,\n tokenType: tokens.token_type,\n expires: new Date(expiresAt).toISOString(),\n userId: profile.id,\n },\n refreshToken: tokens.refresh_token,\n scope: scopeArray,\n tokenType: tokens.token_type,\n expiresIn: tokens.expires_in,\n profile,\n },\n };\n }\n catch (err) {\n if (err instanceof Error) {\n return { error: err.message };\n }\n return { error: 'Twitter login failed unexpectedly.' };\n }\n finally {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n }\n }\n async exchangeAuthorizationCode(code, pending) {\n var _a;\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n code,\n redirect_uri: pending.redirectUri,\n code_verifier: pending.codeVerifier,\n });\n const response = await fetch('https://api.x.com/2/oauth2/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Twitter token exchange failed (${response.status}): ${text}`);\n }\n return (await response.json());\n }\n async refreshWithRefreshToken(refreshToken) {\n var _a, _b;\n const params = new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n });\n const response = await fetch('https://api.x.com/2/oauth2/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Twitter refresh failed (${response.status}): ${text}`);\n }\n const tokens = (await response.json());\n const profile = await this.fetchProfile(tokens.access_token);\n const expiresAt = Date.now() + tokens.expires_in * 1000;\n const scopeArray = tokens.scope.split(' ').filter(Boolean);\n this.persistTokens({\n accessToken: tokens.access_token,\n refreshToken: (_b = tokens.refresh_token) !== null && _b !== void 0 ? _b : refreshToken,\n expiresAt,\n scope: scopeArray,\n tokenType: tokens.token_type,\n userId: profile.id,\n profile,\n });\n }\n async fetchProfile(accessToken) {\n var _a, _b, _c, _d;\n const fields = ['profile_image_url', 'verified', 'name', 'username'];\n const response = await fetch(`https://api.x.com/2/users/me?user.fields=${fields.join(',')}`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Unable to fetch Twitter profile (${response.status}): ${text}`);\n }\n const payload = (await response.json());\n if (!payload.data) {\n throw new Error('Twitter profile payload is missing data.');\n }\n return {\n id: payload.data.id,\n username: payload.data.username,\n name: (_a = payload.data.name) !== null && _a !== void 0 ? _a : null,\n profileImageUrl: (_b = payload.data.profile_image_url) !== null && _b !== void 0 ? _b : null,\n verified: (_c = payload.data.verified) !== null && _c !== void 0 ? _c : false,\n email: (_d = payload.data.email) !== null && _d !== void 0 ? _d : null,\n };\n }\n persistTokens(tokens) {\n localStorage.setItem(this.TOKENS_KEY, JSON.stringify(tokens));\n }\n getStoredTokens() {\n const raw = localStorage.getItem(this.TOKENS_KEY);\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn('Failed to parse stored Twitter tokens', err);\n return null;\n }\n }\n persistPendingLogin(state, payload) {\n localStorage.setItem(`${this.STATE_PREFIX}${state}`, JSON.stringify(payload));\n }\n consumePendingLogin(state) {\n const key = `${this.STATE_PREFIX}${state}`;\n const raw = localStorage.getItem(key);\n localStorage.removeItem(key);\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn('Failed to parse pending Twitter login payload', err);\n return null;\n }\n }\n generateState() {\n return [...crypto.getRandomValues(new Uint8Array(16))].map((b) => b.toString(16).padStart(2, '0')).join('');\n }\n generateCodeVerifier() {\n const array = new Uint8Array(64);\n crypto.getRandomValues(array);\n return Array.from(array)\n .map((b) => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~'[b % 66])\n .join('');\n }\n async generateCodeChallenge(codeVerifier) {\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest('SHA-256', data);\n return this.base64UrlEncode(new Uint8Array(digest));\n }\n base64UrlEncode(buffer) {\n let binary = '';\n buffer.forEach((b) => (binary += String.fromCharCode(b)));\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n }\n}\n//# sourceMappingURL=twitter-provider.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AppleSocialLogin } from './apple-provider';\nimport { FacebookSocialLogin } from './facebook-provider';\nimport { GoogleSocialLogin } from './google-provider';\nimport { TwitterSocialLogin } from './twitter-provider';\nexport class SocialLoginWeb extends WebPlugin {\n constructor() {\n super();\n this.googleProvider = new GoogleSocialLogin();\n this.appleProvider = new AppleSocialLogin();\n this.facebookProvider = new FacebookSocialLogin();\n this.twitterProvider = new TwitterSocialLogin();\n // Set up listener for OAuth redirects if we have a pending OAuth flow\n if (localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY)) {\n console.log('OAUTH_STATE_KEY found');\n this.handleOAuthRedirect().catch((error) => {\n console.error('Failed to finish OAuth redirect', error);\n window.close();\n });\n }\n }\n async handleOAuthRedirect() {\n var _a, _b, _c;\n const url = new URL(window.location.href);\n const stateRaw = localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY);\n let provider = null;\n let state;\n if (stateRaw) {\n try {\n const parsed = JSON.parse(stateRaw);\n provider = (_a = parsed.provider) !== null && _a !== void 0 ? _a : null;\n state = parsed.state;\n }\n catch (_d) {\n provider = stateRaw === 'true' ? 'google' : null;\n }\n }\n let result = null;\n switch (provider) {\n case 'twitter':\n result = await this.twitterProvider.handleOAuthRedirect(url, state);\n break;\n case 'google':\n default:\n result = this.googleProvider.handleOAuthRedirect(url);\n break;\n }\n if (!result) {\n return;\n }\n if ('error' in result) {\n const resolvedProvider = provider !== null && provider !== void 0 ? provider : null;\n (_b = window.opener) === null || _b === void 0 ? void 0 : _b.postMessage({\n type: 'oauth-error',\n provider: resolvedProvider,\n error: result.error,\n }, window.location.origin);\n }\n else {\n (_c = window.opener) === null || _c === void 0 ? void 0 : _c.postMessage(Object.assign({ type: 'oauth-response', provider: result.provider }, result.result), window.location.origin);\n }\n window.close();\n }\n async initialize(options) {\n var _a, _b, _c, _d;\n const initPromises = [];\n if ((_a = options.google) === null || _a === void 0 ? void 0 : _a.webClientId) {\n initPromises.push(this.googleProvider.initialize(options.google.webClientId, options.google.mode, options.google.hostedDomain, options.google.redirectUrl));\n }\n if ((_b = options.apple) === null || _b === void 0 ? void 0 : _b.clientId) {\n initPromises.push(this.appleProvider.initialize(options.apple.clientId, options.apple.redirectUrl, options.apple.useProperTokenExchange));\n }\n if ((_c = options.facebook) === null || _c === void 0 ? void 0 : _c.appId) {\n initPromises.push(this.facebookProvider.initialize(options.facebook.appId, options.facebook.locale));\n }\n if ((_d = options.twitter) === null || _d === void 0 ? void 0 : _d.clientId) {\n initPromises.push(this.twitterProvider.initialize(options.twitter.clientId, options.twitter.redirectUrl, options.twitter.defaultScopes, options.twitter.forceLogin, options.twitter.audience));\n }\n await Promise.all(initPromises);\n }\n async login(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.login(options.options);\n case 'apple':\n return this.appleProvider.login(options.options);\n case 'facebook':\n return this.facebookProvider.login(options.options);\n case 'twitter':\n return this.twitterProvider.login(options.options);\n default:\n throw new Error(`Login for ${options.provider} is not implemented on web`);\n }\n }\n async logout(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.logout();\n case 'apple':\n return this.appleProvider.logout();\n case 'facebook':\n return this.facebookProvider.logout();\n case 'twitter':\n return this.twitterProvider.logout();\n default:\n throw new Error(`Logout for ${options.provider} is not implemented`);\n }\n }\n async isLoggedIn(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.isLoggedIn();\n case 'apple':\n return this.appleProvider.isLoggedIn();\n case 'facebook':\n return this.facebookProvider.isLoggedIn();\n case 'twitter':\n return this.twitterProvider.isLoggedIn();\n default:\n throw new Error(`isLoggedIn for ${options.provider} is not implemented`);\n }\n }\n async getAuthorizationCode(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.getAuthorizationCode();\n case 'apple':\n return this.appleProvider.getAuthorizationCode();\n case 'facebook':\n return this.facebookProvider.getAuthorizationCode();\n case 'twitter':\n return this.twitterProvider.getAuthorizationCode();\n default:\n throw new Error(`getAuthorizationCode for ${options.provider} is not implemented`);\n }\n }\n async refresh(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.refresh();\n case 'apple':\n return this.appleProvider.refresh();\n case 'facebook':\n return this.facebookProvider.refresh(options.options);\n case 'twitter':\n return this.twitterProvider.refresh();\n default:\n throw new Error(`Refresh for ${options.provider} is not implemented`);\n }\n }\n async providerSpecificCall(options) {\n throw new Error(`Provider specific call for ${options.call} is not implemented`);\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\nSocialLoginWeb.OAUTH_STATE_KEY = 'social_login_oauth_pending';\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin","this"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/base.js","esm/apple-provider.js","esm/facebook-provider.js","esm/google-provider.js","esm/oauth2-provider.js","esm/twitter-provider.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst SocialLogin = registerPlugin('SocialLogin', {\n web: () => import('./web').then((m) => new m.SocialLoginWeb()),\n});\nexport * from './definitions';\nexport { SocialLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class BaseSocialLogin extends WebPlugin {\n constructor() {\n super();\n }\n parseJwt(token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n return JSON.parse(jsonPayload);\n }\n async loadScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.onload = () => {\n resolve();\n };\n script.onerror = reject;\n document.body.appendChild(script);\n });\n }\n}\nBaseSocialLogin.OAUTH_STATE_KEY = 'social_login_oauth_pending';\n//# sourceMappingURL=base.js.map","import { BaseSocialLogin } from './base';\nexport class AppleSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.redirectUrl = null;\n this.scriptLoaded = false;\n this.scriptUrl = 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js';\n this.useProperTokenExchange = false;\n }\n async initialize(clientId, redirectUrl, useProperTokenExchange = false) {\n this.clientId = clientId;\n this.redirectUrl = redirectUrl || null;\n this.useProperTokenExchange = useProperTokenExchange;\n if (clientId) {\n await this.loadAppleScript();\n }\n }\n async login(options) {\n if (!this.clientId) {\n throw new Error('Apple Client ID not set. Call initialize() first.');\n }\n if (!this.scriptLoaded) {\n throw new Error('Apple Sign-In script not loaded.');\n }\n return new Promise((resolve, reject) => {\n var _a, _b;\n AppleID.auth.init({\n clientId: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n scope: ((_b = options.scopes) === null || _b === void 0 ? void 0 : _b.join(' ')) || 'name email',\n redirectURI: this.redirectUrl || window.location.href,\n state: options.state,\n nonce: options.nonce,\n usePopup: true,\n });\n AppleID.auth\n .signIn()\n .then((res) => {\n var _a, _b, _c, _d, _e;\n let accessToken = null;\n if (this.useProperTokenExchange) {\n // When using proper token exchange, the authorization code should be exchanged\n // for a proper access token on the backend. For now, we set accessToken to null\n // and provide the authorization code in a separate field for backend processing.\n accessToken = null;\n }\n else {\n // Legacy behavior: use authorization code as access token for backward compatibility\n accessToken = {\n token: res.authorization.code || '',\n };\n }\n const result = Object.assign({ profile: {\n user: res.user || '',\n email: ((_a = res.user) === null || _a === void 0 ? void 0 : _a.email) || null,\n givenName: ((_c = (_b = res.user) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.firstName) || null,\n familyName: ((_e = (_d = res.user) === null || _d === void 0 ? void 0 : _d.name) === null || _e === void 0 ? void 0 : _e.lastName) || null,\n }, accessToken: accessToken, idToken: res.authorization.id_token || null }, (this.useProperTokenExchange && { authorizationCode: res.authorization.code }));\n resolve({ provider: 'apple', result });\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n async logout() {\n // Apple doesn't provide a logout method for web\n console.log('Apple logout: Session should be managed on the client side');\n }\n async isLoggedIn() {\n // Apple doesn't provide a method to check login status on web\n console.log('Apple login status should be managed on the client side');\n return { isLoggedIn: false };\n }\n async getAuthorizationCode() {\n // Apple authorization code should be obtained during login\n console.log('Apple authorization code should be stored during login');\n throw new Error('Apple authorization code not available');\n }\n async refresh() {\n // Apple doesn't provide a refresh method for web\n console.log('Apple refresh not available on web');\n }\n async loadAppleScript() {\n if (this.scriptLoaded)\n return;\n return this.loadScript(this.scriptUrl).then(() => {\n this.scriptLoaded = true;\n });\n }\n}\n//# sourceMappingURL=apple-provider.js.map","import { BaseSocialLogin } from './base';\nexport class FacebookSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.appId = null;\n this.scriptLoaded = false;\n this.locale = 'en_US';\n }\n async initialize(appId, locale) {\n this.appId = appId;\n if (locale) {\n this.locale = locale;\n }\n if (appId) {\n // Load with the specified locale or default\n await this.loadFacebookScript(this.locale);\n FB.init({\n appId: this.appId,\n version: 'v17.0',\n xfbml: true,\n cookie: true,\n });\n }\n }\n async login(options) {\n if (!this.appId) {\n throw new Error('Facebook App ID not set. Call initialize() first.');\n }\n return new Promise((resolve, reject) => {\n FB.login((response) => {\n if (response.status === 'connected') {\n FB.api('/me', { fields: 'id,name,email,picture' }, (userInfo) => {\n var _a, _b;\n const result = {\n accessToken: {\n token: response.authResponse.accessToken,\n userId: response.authResponse.userID,\n },\n profile: {\n userID: userInfo.id,\n name: userInfo.name,\n email: userInfo.email || null,\n imageURL: ((_b = (_a = userInfo.picture) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.url) || null,\n friendIDs: [],\n birthday: null,\n ageRange: null,\n gender: null,\n location: null,\n hometown: null,\n profileURL: null,\n },\n idToken: null,\n };\n resolve({ provider: 'facebook', result });\n });\n }\n else {\n reject(new Error('Facebook login failed'));\n }\n }, { scope: options.permissions.join(',') });\n });\n }\n async logout() {\n return new Promise((resolve) => {\n FB.logout(() => resolve());\n });\n }\n async isLoggedIn() {\n return new Promise((resolve) => {\n FB.getLoginStatus((response) => {\n resolve({ isLoggedIn: response.status === 'connected' });\n });\n });\n }\n async getAuthorizationCode() {\n return new Promise((resolve, reject) => {\n FB.getLoginStatus((response) => {\n var _a;\n if (response.status === 'connected') {\n resolve({ accessToken: ((_a = response.authResponse) === null || _a === void 0 ? void 0 : _a.accessToken) || '' });\n }\n else {\n reject(new Error('No Facebook authorization code available'));\n }\n });\n });\n }\n async refresh(options) {\n await this.login(options);\n }\n async loadFacebookScript(locale) {\n if (this.scriptLoaded)\n return;\n // Remove any existing Facebook SDK script\n const existingScript = document.querySelector('script[src*=\"connect.facebook.net\"]');\n if (existingScript) {\n existingScript.remove();\n }\n return this.loadScript(`https://connect.facebook.net/${locale}/sdk.js`).then(() => {\n this.scriptLoaded = true;\n });\n }\n}\n//# sourceMappingURL=facebook-provider.js.map","import { BaseSocialLogin } from './base';\nexport class GoogleSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.loginType = 'online';\n this.GOOGLE_TOKEN_REQUEST_URL = 'https://www.googleapis.com/oauth2/v3/tokeninfo';\n this.GOOGLE_STATE_KEY = 'capgo_social_login_google_state';\n }\n async initialize(clientId, mode, hostedDomain, redirectUrl) {\n this.clientId = clientId;\n if (mode) {\n this.loginType = mode;\n }\n this.hostedDomain = hostedDomain;\n this.redirectUrl = redirectUrl;\n }\n async login(options) {\n if (!this.clientId) {\n throw new Error('Google Client ID not set. Call initialize() first.');\n }\n let scopes = options.scopes || [];\n if (scopes.length > 0) {\n // If scopes are provided, directly use the traditional OAuth flow\n if (!scopes.includes('https://www.googleapis.com/auth/userinfo.email')) {\n scopes.push('https://www.googleapis.com/auth/userinfo.email');\n }\n if (!scopes.includes('https://www.googleapis.com/auth/userinfo.profile')) {\n scopes.push('https://www.googleapis.com/auth/userinfo.profile');\n }\n if (!scopes.includes('openid')) {\n scopes.push('openid');\n }\n }\n else {\n scopes = [\n 'https://www.googleapis.com/auth/userinfo.email',\n 'https://www.googleapis.com/auth/userinfo.profile',\n 'openid',\n ];\n }\n const nonce = options.nonce || Math.random().toString(36).substring(2);\n // If scopes are provided, directly use the traditional OAuth flow\n return this.traditionalOAuth({\n scopes,\n nonce,\n hostedDomain: this.hostedDomain,\n prompt: options.prompt,\n });\n }\n async logout() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. logout is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n return;\n await this.rawLogoutGoogle(state.accessToken);\n }\n async isLoggedIn() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. isLoggedIn is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n return { isLoggedIn: false };\n try {\n const isValidAccessToken = await this.accessTokenIsValid(state.accessToken);\n const isValidIdToken = this.idTokenValid(state.idToken);\n if (isValidAccessToken && isValidIdToken) {\n return { isLoggedIn: true };\n }\n else {\n try {\n await this.rawLogoutGoogle(state.accessToken, false);\n }\n catch (e) {\n console.error('Access token is not valid, but cannot logout', e);\n }\n return { isLoggedIn: false };\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n async getAuthorizationCode() {\n if (this.loginType === 'offline') {\n return Promise.reject(\"Offline login doesn't store tokens. getAuthorizationCode is not available\");\n }\n // eslint-disable-next-line\n const state = this.getGoogleState();\n if (!state)\n throw new Error('No Google authorization code available');\n try {\n const isValidAccessToken = await this.accessTokenIsValid(state.accessToken);\n const isValidIdToken = this.idTokenValid(state.idToken);\n if (isValidAccessToken && isValidIdToken) {\n return { accessToken: state.accessToken, jwt: state.idToken };\n }\n else {\n try {\n await this.rawLogoutGoogle(state.accessToken, false);\n }\n catch (e) {\n console.error('Access token is not valid, but cannot logout', e);\n }\n throw new Error('No Google authorization code available');\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n async refresh() {\n // For Google, we can prompt for re-authentication\n return Promise.reject('Not implemented');\n }\n handleOAuthRedirect(url) {\n const paramsRaw = url.searchParams;\n // Check for errors in search params first (for offline mode)\n const errorInParams = paramsRaw.get('error');\n if (errorInParams) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const errorDescription = paramsRaw.get('error_description') || errorInParams;\n return { error: errorDescription };\n }\n const code = paramsRaw.get('code');\n if (code && paramsRaw.has('scope')) {\n return {\n provider: 'google',\n result: {\n serverAuthCode: code,\n responseType: 'offline',\n },\n };\n }\n const hash = url.hash.substring(1);\n console.log('handleOAuthRedirect', url.hash);\n if (!hash)\n return null;\n const params = new URLSearchParams(hash);\n // Check for error cases in hash (e.g., user cancelled)\n const error = params.get('error');\n if (error) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const errorDescription = params.get('error_description') || error;\n return { error: errorDescription };\n }\n console.log('handleOAuthRedirect ok');\n const accessToken = params.get('access_token');\n const idToken = params.get('id_token');\n if (accessToken && idToken) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n const profile = this.parseJwt(idToken);\n return {\n provider: 'google',\n result: {\n accessToken: {\n token: accessToken,\n },\n idToken,\n profile: {\n email: profile.email || null,\n familyName: profile.family_name || null,\n givenName: profile.given_name || null,\n id: profile.sub || null,\n name: profile.name || null,\n imageUrl: profile.picture || null,\n },\n responseType: 'online',\n },\n };\n }\n return null;\n }\n async accessTokenIsValid(accessToken) {\n const url = `${this.GOOGLE_TOKEN_REQUEST_URL}?access_token=${encodeURIComponent(accessToken)}`;\n try {\n // Make the GET request using fetch\n const response = await fetch(url);\n // Check if the response is successful\n if (!response.ok) {\n console.log(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response not successful. Status code: ${response.status}. Assuming that the token is not valid`);\n return false;\n }\n // Get the response body as text\n const responseBody = await response.text();\n if (!responseBody) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is null`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is null`);\n }\n // Parse the response body as JSON\n let jsonObject;\n try {\n jsonObject = JSON.parse(responseBody);\n }\n catch (e) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is not valid JSON. Error: ${e}`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response body is not valid JSON. Error: ${e}`);\n }\n // Extract the 'expires_in' field\n const expiresInStr = jsonObject['expires_in'];\n if (expiresInStr === undefined || expiresInStr === null) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response JSON does not include 'expires_in'.`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. Response JSON does not include 'expires_in'.`);\n }\n // Parse 'expires_in' as an integer\n let expiresInInt;\n try {\n expiresInInt = parseInt(expiresInStr, 10);\n if (isNaN(expiresInInt)) {\n throw new Error(`'expires_in' is not a valid integer`);\n }\n }\n catch (e) {\n console.error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. 'expires_in': ${expiresInStr} is not a valid integer. Error: ${e}`);\n throw new Error(`Invalid response from ${this.GOOGLE_TOKEN_REQUEST_URL}. 'expires_in': ${expiresInStr} is not a valid integer. Error: ${e}`);\n }\n // Determine if the access token is valid based on 'expires_in'\n return expiresInInt > 5;\n }\n catch (error) {\n console.error(error);\n throw error;\n }\n }\n idTokenValid(idToken) {\n try {\n const parsed = this.parseJwt(idToken);\n const currentTime = Math.ceil(Date.now() / 1000) + 5; // Convert current time to seconds since epoch\n return parsed.exp && currentTime < parsed.exp;\n }\n catch (e) {\n return false;\n }\n }\n async rawLogoutGoogle(accessToken, tokenValid = null) {\n if (tokenValid === null) {\n tokenValid = await this.accessTokenIsValid(accessToken);\n }\n if (tokenValid === true) {\n try {\n await fetch(`https://accounts.google.com/o/oauth2/revoke?token=${encodeURIComponent(accessToken)}`);\n this.clearStateGoogle();\n }\n catch (e) {\n // ignore\n }\n return;\n }\n else {\n this.clearStateGoogle();\n return;\n }\n }\n persistStateGoogle(accessToken, idToken) {\n try {\n window.localStorage.setItem(this.GOOGLE_STATE_KEY, JSON.stringify({ accessToken, idToken }));\n }\n catch (e) {\n console.error('Cannot persist state google', e);\n }\n }\n clearStateGoogle() {\n try {\n window.localStorage.removeItem(this.GOOGLE_STATE_KEY);\n }\n catch (e) {\n console.error('Cannot clear state google', e);\n }\n }\n getGoogleState() {\n try {\n const state = window.localStorage.getItem(this.GOOGLE_STATE_KEY);\n if (!state)\n return null;\n const { accessToken, idToken } = JSON.parse(state);\n return { accessToken, idToken };\n }\n catch (e) {\n console.error('Cannot get state google', e);\n return null;\n }\n }\n async traditionalOAuth({ scopes, hostedDomain, nonce, prompt, }) {\n var _a;\n const uniqueScopes = [...new Set([...(scopes || []), 'openid'])];\n const params = new URLSearchParams(Object.assign(Object.assign({ client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '', redirect_uri: this.redirectUrl || window.location.origin + window.location.pathname, response_type: this.loginType === 'offline' ? 'code' : 'token id_token', scope: uniqueScopes.join(' ') }, (nonce && { nonce })), { include_granted_scopes: 'true', state: 'popup' }));\n if (hostedDomain !== undefined) {\n params.append('hd', hostedDomain);\n }\n if (prompt !== undefined) {\n params.append('prompt', prompt);\n }\n const url = `https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`;\n const width = 500;\n const height = 600;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2;\n localStorage.setItem(BaseSocialLogin.OAUTH_STATE_KEY, JSON.stringify({ provider: 'google', loginType: this.loginType }));\n const popup = window.open(url, 'Google Sign In', `width=${width},height=${height},left=${left},top=${top},popup=1`);\n let popupClosedInterval;\n let timeoutHandle;\n // This may never return...\n return new Promise((resolve, reject) => {\n if (!popup) {\n reject(new Error('Failed to open popup'));\n return;\n }\n const handleMessage = (event) => {\n var _a, _b, _c, _d;\n if (event.origin !== window.location.origin || ((_b = (_a = event.data) === null || _a === void 0 ? void 0 : _a.source) === null || _b === void 0 ? void 0 : _b.startsWith('angular')))\n return;\n if (((_c = event.data) === null || _c === void 0 ? void 0 : _c.type) === 'oauth-response') {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n if (this.loginType === 'online') {\n const { accessToken, idToken } = event.data;\n if (accessToken && idToken) {\n const profile = this.parseJwt(idToken);\n this.persistStateGoogle(accessToken.token, idToken);\n resolve({\n provider: 'google',\n result: {\n accessToken: {\n token: accessToken.token,\n },\n idToken,\n profile: {\n email: profile.email || null,\n familyName: profile.family_name || null,\n givenName: profile.given_name || null,\n id: profile.sub || null,\n name: profile.name || null,\n imageUrl: profile.picture || null,\n },\n responseType: 'online',\n },\n });\n }\n }\n else {\n const { serverAuthCode } = event.data;\n resolve({\n provider: 'google',\n result: {\n responseType: 'offline',\n serverAuthCode,\n },\n });\n }\n }\n else if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) === 'oauth-error') {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n const errorMessage = event.data.error || 'User cancelled the OAuth flow';\n reject(new Error(errorMessage));\n }\n // Don't reject for non-OAuth messages, just ignore them\n };\n window.addEventListener('message', handleMessage);\n // Timeout after 5 minutes\n timeoutHandle = setTimeout(() => {\n clearTimeout(timeoutHandle);\n window.removeEventListener('message', handleMessage);\n popup.close();\n reject(new Error('OAuth timeout'));\n }, 300000);\n popupClosedInterval = setInterval(() => {\n if (popup.closed) {\n clearInterval(popupClosedInterval);\n reject(new Error('Popup closed'));\n }\n }, 1000);\n });\n }\n}\n//# sourceMappingURL=google-provider.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { BaseSocialLogin } from './base';\n/**\n * OAuth2 Social Login Manager\n * Supports multiple OAuth2 provider configurations\n */\nexport class OAuth2SocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.providers = new Map();\n this.TOKENS_KEY_PREFIX = 'capgo_social_login_oauth2_tokens_';\n this.STATE_PREFIX = 'capgo_social_login_oauth2_state_';\n }\n /**\n * Initialize multiple OAuth2 providers\n */\n async initializeProviders(configs) {\n var _a, _b, _c, _d;\n for (const [providerId, config] of Object.entries(configs)) {\n if (!config.appId || !config.authorizationBaseUrl || !config.redirectUrl) {\n throw new Error(`OAuth2 provider '${providerId}' requires appId, authorizationBaseUrl, and redirectUrl`);\n }\n const internalConfig = Object.assign(Object.assign({}, config), { responseType: (_a = config.responseType) !== null && _a !== void 0 ? _a : 'code', pkceEnabled: (_b = config.pkceEnabled) !== null && _b !== void 0 ? _b : true, scope: (_c = config.scope) !== null && _c !== void 0 ? _c : '', logsEnabled: (_d = config.logsEnabled) !== null && _d !== void 0 ? _d : false });\n this.providers.set(providerId, internalConfig);\n if (internalConfig.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Initialized with config:`, {\n appId: config.appId,\n authorizationBaseUrl: config.authorizationBaseUrl,\n redirectUrl: config.redirectUrl,\n responseType: internalConfig.responseType,\n pkceEnabled: internalConfig.pkceEnabled,\n });\n }\n }\n }\n getProvider(providerId) {\n const config = this.providers.get(providerId);\n if (!config) {\n throw new Error(`OAuth2 provider '${providerId}' not configured. Call initialize() first.`);\n }\n return config;\n }\n getTokensKey(providerId) {\n return `${this.TOKENS_KEY_PREFIX}${providerId}`;\n }\n async login(options) {\n var _a, _b, _c, _d;\n const { providerId } = options;\n const config = this.getProvider(providerId);\n const redirectUri = (_a = options.redirectUrl) !== null && _a !== void 0 ? _a : config.redirectUrl;\n const scope = (_b = options.scope) !== null && _b !== void 0 ? _b : config.scope;\n const state = (_c = options.state) !== null && _c !== void 0 ? _c : this.generateState();\n const codeVerifier = (_d = options.codeVerifier) !== null && _d !== void 0 ? _d : this.generateCodeVerifier();\n // Build authorization URL\n const params = new URLSearchParams({\n response_type: config.responseType,\n client_id: config.appId,\n redirect_uri: redirectUri,\n state,\n });\n if (scope) {\n params.set('scope', scope);\n }\n // Add PKCE for code flow\n if (config.responseType === 'code' && config.pkceEnabled) {\n const codeChallenge = await this.generateCodeChallenge(codeVerifier);\n params.set('code_challenge', codeChallenge);\n params.set('code_challenge_method', 'S256');\n }\n // Add additional parameters from config\n if (config.additionalParameters) {\n for (const [key, value] of Object.entries(config.additionalParameters)) {\n params.set(key, value);\n }\n }\n // Add additional parameters from login options\n if (options.additionalParameters) {\n for (const [key, value] of Object.entries(options.additionalParameters)) {\n params.set(key, value);\n }\n }\n // Store pending login state\n this.persistPendingLogin(state, {\n providerId,\n codeVerifier,\n redirectUri,\n scope,\n });\n localStorage.setItem(BaseSocialLogin.OAUTH_STATE_KEY, JSON.stringify({ provider: 'oauth2', providerId, state }));\n const authUrl = `${config.authorizationBaseUrl}?${params.toString()}`;\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Opening authorization URL:`, authUrl);\n }\n // Open popup window\n const width = 500;\n const height = 650;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2;\n const popup = window.open(authUrl, 'OAuth2Login', `width=${width},height=${height},left=${left},top=${top},popup=1`);\n return new Promise((resolve, reject) => {\n if (!popup) {\n reject(new Error('Unable to open login window. Please allow popups.'));\n return;\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n };\n const messageHandler = (event) => {\n var _a, _b, _c, _d, _e;\n if (event.origin !== window.location.origin) {\n return;\n }\n if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === 'oauth-response') {\n if (((_b = event.data) === null || _b === void 0 ? void 0 : _b.provider) && event.data.provider !== 'oauth2') {\n return;\n }\n // Check providerId matches if present\n if (((_c = event.data) === null || _c === void 0 ? void 0 : _c.providerId) && event.data.providerId !== providerId) {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _f = event.data, { provider: _ignoredProvider, type: _ignoredType } = _f, payload = __rest(_f, [\"provider\", \"type\"]);\n resolve({\n provider: 'oauth2',\n result: payload,\n });\n }\n else if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) === 'oauth-error') {\n if (((_e = event.data) === null || _e === void 0 ? void 0 : _e.provider) && event.data.provider !== 'oauth2') {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(event.data.error || 'OAuth2 login was cancelled.'));\n }\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n window.removeEventListener('message', messageHandler);\n popup.close();\n reject(new Error('OAuth2 login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n if (popup.closed) {\n window.removeEventListener('message', messageHandler);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n reject(new Error('OAuth2 login window was closed.'));\n }\n }, 1000);\n });\n }\n async logout(providerId) {\n const config = this.providers.get(providerId);\n localStorage.removeItem(this.getTokensKey(providerId));\n // If logout URL is configured, redirect to it\n if (config === null || config === void 0 ? void 0 : config.logoutUrl) {\n window.open(config.logoutUrl, '_blank');\n }\n }\n async isLoggedIn(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!tokens) {\n return { isLoggedIn: false };\n }\n const isValid = tokens.expiresAt > Date.now();\n if (!isValid) {\n localStorage.removeItem(this.getTokensKey(providerId));\n }\n return { isLoggedIn: isValid };\n }\n async getAuthorizationCode(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!tokens) {\n throw new Error(`OAuth2 access token is not available for provider '${providerId}'.`);\n }\n return {\n accessToken: tokens.accessToken,\n jwt: tokens.idToken,\n };\n }\n async refresh(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken)) {\n throw new Error(`No OAuth2 refresh token is available for provider '${providerId}'. Include offline_access scope to receive one.`);\n }\n const config = this.getProvider(providerId);\n if (!config.accessTokenEndpoint) {\n throw new Error(`No accessTokenEndpoint configured for provider '${providerId}'.`);\n }\n await this.refreshWithRefreshToken(providerId, tokens.refreshToken);\n }\n async handleOAuthRedirect(url, expectedState) {\n var _a, _b, _c, _d, _e;\n // Check both query params and hash fragment\n const params = new URLSearchParams(url.search);\n const hashParams = new URLSearchParams(url.hash.slice(1));\n // Merge params, hash takes priority (for implicit flow)\n hashParams.forEach((value, key) => {\n params.set(key, value);\n });\n const stateFromUrl = expectedState !== null && expectedState !== void 0 ? expectedState : params.get('state');\n if (!stateFromUrl) {\n return null;\n }\n const pending = this.consumePendingLogin(stateFromUrl);\n if (!pending) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'OAuth2 login session expired or state mismatch.' };\n }\n const { providerId } = pending;\n const config = this.providers.get(providerId);\n if (!config) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: `OAuth2 provider '${providerId}' configuration not found.` };\n }\n const error = params.get('error');\n if (error) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: params.get('error_description') || error };\n }\n try {\n let tokenResponse;\n // Check response type\n if (params.has('code')) {\n // Authorization code flow\n const code = params.get('code');\n if (!code) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'OAuth2 authorization code missing from redirect.' };\n }\n tokenResponse = await this.exchangeAuthorizationCode(providerId, code, pending);\n }\n else if (params.has('access_token')) {\n // Implicit flow\n tokenResponse = {\n access_token: params.get('access_token'),\n token_type: params.get('token_type') || 'bearer',\n expires_in: params.has('expires_in') ? parseInt(params.get('expires_in'), 10) : undefined,\n scope: params.get('scope') || undefined,\n id_token: params.get('id_token') || undefined,\n };\n }\n else {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'No authorization code or access token in redirect.' };\n }\n const expiresAt = tokenResponse.expires_in ? Date.now() + tokenResponse.expires_in * 1000 : Date.now() + 3600000;\n const scopeArray = (_b = (_a = tokenResponse.scope) === null || _a === void 0 ? void 0 : _a.split(' ').filter(Boolean)) !== null && _b !== void 0 ? _b : [];\n // Fetch resource data if configured\n let resourceData = null;\n if (config.resourceUrl) {\n resourceData = await this.fetchResource(providerId, tokenResponse.access_token);\n }\n this.persistTokens(providerId, {\n accessToken: tokenResponse.access_token,\n refreshToken: tokenResponse.refresh_token,\n idToken: tokenResponse.id_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n });\n return {\n provider: 'oauth2',\n result: {\n providerId,\n accessToken: {\n token: tokenResponse.access_token,\n tokenType: tokenResponse.token_type,\n expires: new Date(expiresAt).toISOString(),\n refreshToken: tokenResponse.refresh_token,\n },\n idToken: (_c = tokenResponse.id_token) !== null && _c !== void 0 ? _c : null,\n refreshToken: (_d = tokenResponse.refresh_token) !== null && _d !== void 0 ? _d : null,\n resourceData,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n expiresIn: (_e = tokenResponse.expires_in) !== null && _e !== void 0 ? _e : null,\n },\n };\n }\n catch (err) {\n if (err instanceof Error) {\n return { error: err.message };\n }\n return { error: 'OAuth2 login failed unexpectedly.' };\n }\n finally {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n }\n }\n async exchangeAuthorizationCode(providerId, code, pending) {\n const config = this.getProvider(providerId);\n if (!config.accessTokenEndpoint) {\n throw new Error(`No accessTokenEndpoint configured for provider '${providerId}'.`);\n }\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: config.appId,\n code,\n redirect_uri: pending.redirectUri,\n });\n if (config.pkceEnabled) {\n params.set('code_verifier', pending.codeVerifier);\n }\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Exchanging code at:`, config.accessTokenEndpoint);\n }\n const response = await fetch(config.accessTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`OAuth2 token exchange failed (${response.status}): ${text}`);\n }\n return (await response.json());\n }\n async refreshWithRefreshToken(providerId, refreshToken) {\n var _a, _b, _c;\n const config = this.getProvider(providerId);\n if (!config.accessTokenEndpoint) {\n throw new Error(`No accessTokenEndpoint configured for provider '${providerId}'.`);\n }\n const params = new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: config.appId,\n });\n const response = await fetch(config.accessTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`OAuth2 refresh failed (${response.status}): ${text}`);\n }\n const tokens = (await response.json());\n const expiresAt = tokens.expires_in ? Date.now() + tokens.expires_in * 1000 : Date.now() + 3600000;\n const scopeArray = (_b = (_a = tokens.scope) === null || _a === void 0 ? void 0 : _a.split(' ').filter(Boolean)) !== null && _b !== void 0 ? _b : [];\n this.persistTokens(providerId, {\n accessToken: tokens.access_token,\n refreshToken: (_c = tokens.refresh_token) !== null && _c !== void 0 ? _c : refreshToken,\n idToken: tokens.id_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokens.token_type,\n });\n }\n async fetchResource(providerId, accessToken) {\n const config = this.getProvider(providerId);\n if (!config.resourceUrl) {\n throw new Error(`No resourceUrl configured for provider '${providerId}'.`);\n }\n const headers = {\n Authorization: `Bearer ${accessToken}`,\n };\n if (config.additionalResourceHeaders) {\n Object.assign(headers, config.additionalResourceHeaders);\n }\n const response = await fetch(config.resourceUrl, {\n headers,\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Unable to fetch OAuth2 resource (${response.status}): ${text}`);\n }\n return (await response.json());\n }\n persistTokens(providerId, tokens) {\n localStorage.setItem(this.getTokensKey(providerId), JSON.stringify(tokens));\n }\n getStoredTokens(providerId) {\n const raw = localStorage.getItem(this.getTokensKey(providerId));\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn(`Failed to parse stored OAuth2 tokens for provider '${providerId}'`, err);\n return null;\n }\n }\n persistPendingLogin(state, payload) {\n localStorage.setItem(`${this.STATE_PREFIX}${state}`, JSON.stringify(payload));\n }\n consumePendingLogin(state) {\n const key = `${this.STATE_PREFIX}${state}`;\n const raw = localStorage.getItem(key);\n localStorage.removeItem(key);\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn('Failed to parse pending OAuth2 login payload', err);\n return null;\n }\n }\n generateState() {\n return [...crypto.getRandomValues(new Uint8Array(16))].map((b) => b.toString(16).padStart(2, '0')).join('');\n }\n generateCodeVerifier() {\n const array = new Uint8Array(64);\n crypto.getRandomValues(array);\n return Array.from(array)\n .map((b) => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~'[b % 66])\n .join('');\n }\n async generateCodeChallenge(codeVerifier) {\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest('SHA-256', data);\n return this.base64UrlEncode(new Uint8Array(digest));\n }\n base64UrlEncode(buffer) {\n let binary = '';\n buffer.forEach((b) => (binary += String.fromCharCode(b)));\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n }\n}\n//# sourceMappingURL=oauth2-provider.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { BaseSocialLogin } from './base';\nexport class TwitterSocialLogin extends BaseSocialLogin {\n constructor() {\n super(...arguments);\n this.clientId = null;\n this.redirectUrl = null;\n this.defaultScopes = ['tweet.read', 'users.read'];\n this.forceLogin = false;\n this.TOKENS_KEY = 'capgo_social_login_twitter_tokens_v1';\n this.STATE_PREFIX = 'capgo_social_login_twitter_state_';\n }\n async initialize(clientId, redirectUrl, defaultScopes, forceLogin, audience) {\n this.clientId = clientId;\n this.redirectUrl = redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null;\n if (defaultScopes === null || defaultScopes === void 0 ? void 0 : defaultScopes.length) {\n this.defaultScopes = defaultScopes;\n }\n this.forceLogin = forceLogin !== null && forceLogin !== void 0 ? forceLogin : false;\n this.audience = audience !== null && audience !== void 0 ? audience : undefined;\n }\n async login(options) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.clientId) {\n throw new Error('Twitter Client ID not configured. Call initialize() first.');\n }\n const redirectUri = (_b = (_a = options.redirectUrl) !== null && _a !== void 0 ? _a : this.redirectUrl) !== null && _b !== void 0 ? _b : window.location.origin + window.location.pathname;\n const scopes = ((_c = options.scopes) === null || _c === void 0 ? void 0 : _c.length) ? options.scopes : this.defaultScopes;\n const state = (_d = options.state) !== null && _d !== void 0 ? _d : this.generateState();\n const codeVerifier = (_e = options.codeVerifier) !== null && _e !== void 0 ? _e : this.generateCodeVerifier();\n const codeChallenge = await this.generateCodeChallenge(codeVerifier);\n this.persistPendingLogin(state, {\n codeVerifier,\n redirectUri,\n scopes,\n });\n localStorage.setItem(BaseSocialLogin.OAUTH_STATE_KEY, JSON.stringify({ provider: 'twitter', state }));\n const params = new URLSearchParams({\n response_type: 'code',\n client_id: this.clientId,\n redirect_uri: redirectUri,\n scope: scopes.join(' '),\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n if (((_f = options.forceLogin) !== null && _f !== void 0 ? _f : this.forceLogin) === true) {\n params.set('force_login', 'true');\n }\n if (this.audience) {\n params.set('audience', this.audience);\n }\n const authUrl = `https://x.com/i/oauth2/authorize?${params.toString()}`;\n const width = 500;\n const height = 650;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2;\n const popup = window.open(authUrl, 'XLogin', `width=${width},height=${height},left=${left},top=${top},popup=1`);\n return new Promise((resolve, reject) => {\n if (!popup) {\n reject(new Error('Unable to open login window. Please allow popups.'));\n return;\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n };\n const messageHandler = (event) => {\n var _a, _b, _c, _d;\n if (event.origin !== window.location.origin) {\n return;\n }\n if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === 'oauth-response') {\n if (((_b = event.data) === null || _b === void 0 ? void 0 : _b.provider) && event.data.provider !== 'twitter') {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _e = event.data, { provider: _ignoredProvider } = _e, payload = __rest(_e, [\"provider\"]);\n resolve({\n provider: 'twitter',\n result: payload,\n });\n }\n else if (((_c = event.data) === null || _c === void 0 ? void 0 : _c.type) === 'oauth-error') {\n if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.provider) && event.data.provider !== 'twitter') {\n return;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(event.data.error || 'Twitter login was cancelled.'));\n }\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n window.removeEventListener('message', messageHandler);\n popup.close();\n reject(new Error('Twitter login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n if (popup.closed) {\n window.removeEventListener('message', messageHandler);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n reject(new Error('Twitter login window was closed.'));\n }\n }, 1000);\n });\n }\n async logout() {\n localStorage.removeItem(this.TOKENS_KEY);\n }\n async isLoggedIn() {\n const tokens = this.getStoredTokens();\n if (!tokens) {\n return { isLoggedIn: false };\n }\n const isValid = tokens.expiresAt > Date.now();\n if (!isValid) {\n localStorage.removeItem(this.TOKENS_KEY);\n }\n return { isLoggedIn: isValid };\n }\n async getAuthorizationCode() {\n const tokens = this.getStoredTokens();\n if (!tokens) {\n throw new Error('Twitter access token is not available.');\n }\n return {\n accessToken: tokens.accessToken,\n };\n }\n async refresh() {\n const tokens = this.getStoredTokens();\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken)) {\n throw new Error('No Twitter refresh token is available. Include offline.access scope to receive one.');\n }\n await this.refreshWithRefreshToken(tokens.refreshToken);\n }\n async handleOAuthRedirect(url, expectedState) {\n const params = url.searchParams;\n const stateFromUrl = expectedState !== null && expectedState !== void 0 ? expectedState : params.get('state');\n if (!stateFromUrl) {\n return null;\n }\n const pending = this.consumePendingLogin(stateFromUrl);\n if (!pending) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'Twitter login session expired or state mismatch.' };\n }\n const error = params.get('error');\n if (error) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: params.get('error_description') || error };\n }\n const code = params.get('code');\n if (!code) {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n return { error: 'Twitter authorization code missing from redirect.' };\n }\n try {\n const tokens = await this.exchangeAuthorizationCode(code, pending);\n const profile = await this.fetchProfile(tokens.access_token);\n const expiresAt = Date.now() + tokens.expires_in * 1000;\n const scopeArray = tokens.scope.split(' ').filter(Boolean);\n this.persistTokens({\n accessToken: tokens.access_token,\n refreshToken: tokens.refresh_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokens.token_type,\n userId: profile.id,\n profile,\n });\n return {\n provider: 'twitter',\n result: {\n accessToken: {\n token: tokens.access_token,\n tokenType: tokens.token_type,\n expires: new Date(expiresAt).toISOString(),\n userId: profile.id,\n },\n refreshToken: tokens.refresh_token,\n scope: scopeArray,\n tokenType: tokens.token_type,\n expiresIn: tokens.expires_in,\n profile,\n },\n };\n }\n catch (err) {\n if (err instanceof Error) {\n return { error: err.message };\n }\n return { error: 'Twitter login failed unexpectedly.' };\n }\n finally {\n localStorage.removeItem(BaseSocialLogin.OAUTH_STATE_KEY);\n }\n }\n async exchangeAuthorizationCode(code, pending) {\n var _a;\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n code,\n redirect_uri: pending.redirectUri,\n code_verifier: pending.codeVerifier,\n });\n const response = await fetch('https://api.x.com/2/oauth2/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Twitter token exchange failed (${response.status}): ${text}`);\n }\n return (await response.json());\n }\n async refreshWithRefreshToken(refreshToken) {\n var _a, _b;\n const params = new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: (_a = this.clientId) !== null && _a !== void 0 ? _a : '',\n });\n const response = await fetch('https://api.x.com/2/oauth2/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Twitter refresh failed (${response.status}): ${text}`);\n }\n const tokens = (await response.json());\n const profile = await this.fetchProfile(tokens.access_token);\n const expiresAt = Date.now() + tokens.expires_in * 1000;\n const scopeArray = tokens.scope.split(' ').filter(Boolean);\n this.persistTokens({\n accessToken: tokens.access_token,\n refreshToken: (_b = tokens.refresh_token) !== null && _b !== void 0 ? _b : refreshToken,\n expiresAt,\n scope: scopeArray,\n tokenType: tokens.token_type,\n userId: profile.id,\n profile,\n });\n }\n async fetchProfile(accessToken) {\n var _a, _b, _c, _d;\n const fields = ['profile_image_url', 'verified', 'name', 'username'];\n const response = await fetch(`https://api.x.com/2/users/me?user.fields=${fields.join(',')}`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Unable to fetch Twitter profile (${response.status}): ${text}`);\n }\n const payload = (await response.json());\n if (!payload.data) {\n throw new Error('Twitter profile payload is missing data.');\n }\n return {\n id: payload.data.id,\n username: payload.data.username,\n name: (_a = payload.data.name) !== null && _a !== void 0 ? _a : null,\n profileImageUrl: (_b = payload.data.profile_image_url) !== null && _b !== void 0 ? _b : null,\n verified: (_c = payload.data.verified) !== null && _c !== void 0 ? _c : false,\n email: (_d = payload.data.email) !== null && _d !== void 0 ? _d : null,\n };\n }\n persistTokens(tokens) {\n localStorage.setItem(this.TOKENS_KEY, JSON.stringify(tokens));\n }\n getStoredTokens() {\n const raw = localStorage.getItem(this.TOKENS_KEY);\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn('Failed to parse stored Twitter tokens', err);\n return null;\n }\n }\n persistPendingLogin(state, payload) {\n localStorage.setItem(`${this.STATE_PREFIX}${state}`, JSON.stringify(payload));\n }\n consumePendingLogin(state) {\n const key = `${this.STATE_PREFIX}${state}`;\n const raw = localStorage.getItem(key);\n localStorage.removeItem(key);\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw);\n }\n catch (err) {\n console.warn('Failed to parse pending Twitter login payload', err);\n return null;\n }\n }\n generateState() {\n return [...crypto.getRandomValues(new Uint8Array(16))].map((b) => b.toString(16).padStart(2, '0')).join('');\n }\n generateCodeVerifier() {\n const array = new Uint8Array(64);\n crypto.getRandomValues(array);\n return Array.from(array)\n .map((b) => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~'[b % 66])\n .join('');\n }\n async generateCodeChallenge(codeVerifier) {\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest('SHA-256', data);\n return this.base64UrlEncode(new Uint8Array(digest));\n }\n base64UrlEncode(buffer) {\n let binary = '';\n buffer.forEach((b) => (binary += String.fromCharCode(b)));\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n }\n}\n//# sourceMappingURL=twitter-provider.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AppleSocialLogin } from './apple-provider';\nimport { FacebookSocialLogin } from './facebook-provider';\nimport { GoogleSocialLogin } from './google-provider';\nimport { OAuth2SocialLogin } from './oauth2-provider';\nimport { TwitterSocialLogin } from './twitter-provider';\nexport class SocialLoginWeb extends WebPlugin {\n constructor() {\n super();\n this.googleProvider = new GoogleSocialLogin();\n this.appleProvider = new AppleSocialLogin();\n this.facebookProvider = new FacebookSocialLogin();\n this.twitterProvider = new TwitterSocialLogin();\n this.oauth2Provider = new OAuth2SocialLogin();\n // Set up listener for OAuth redirects if we have a pending OAuth flow\n if (localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY)) {\n console.log('OAUTH_STATE_KEY found');\n this.handleOAuthRedirect().catch((error) => {\n console.error('Failed to finish OAuth redirect', error);\n window.close();\n });\n }\n }\n async handleOAuthRedirect() {\n var _a, _b, _c;\n const url = new URL(window.location.href);\n const stateRaw = localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY);\n let provider = null;\n let state;\n if (stateRaw) {\n try {\n const parsed = JSON.parse(stateRaw);\n provider = (_a = parsed.provider) !== null && _a !== void 0 ? _a : null;\n state = parsed.state;\n }\n catch (_d) {\n provider = stateRaw === 'true' ? 'google' : null;\n }\n }\n let result = null;\n switch (provider) {\n case 'twitter':\n result = await this.twitterProvider.handleOAuthRedirect(url, state);\n break;\n case 'oauth2':\n result = await this.oauth2Provider.handleOAuthRedirect(url, state);\n break;\n case 'google':\n default:\n result = this.googleProvider.handleOAuthRedirect(url);\n break;\n }\n if (!result) {\n return;\n }\n if ('error' in result) {\n const resolvedProvider = provider !== null && provider !== void 0 ? provider : null;\n (_b = window.opener) === null || _b === void 0 ? void 0 : _b.postMessage({\n type: 'oauth-error',\n provider: resolvedProvider,\n error: result.error,\n }, window.location.origin);\n }\n else {\n (_c = window.opener) === null || _c === void 0 ? void 0 : _c.postMessage(Object.assign({ type: 'oauth-response', provider: result.provider }, result.result), window.location.origin);\n }\n window.close();\n }\n async initialize(options) {\n var _a, _b, _c, _d;\n const initPromises = [];\n if ((_a = options.google) === null || _a === void 0 ? void 0 : _a.webClientId) {\n initPromises.push(this.googleProvider.initialize(options.google.webClientId, options.google.mode, options.google.hostedDomain, options.google.redirectUrl));\n }\n if ((_b = options.apple) === null || _b === void 0 ? void 0 : _b.clientId) {\n initPromises.push(this.appleProvider.initialize(options.apple.clientId, options.apple.redirectUrl, options.apple.useProperTokenExchange));\n }\n if ((_c = options.facebook) === null || _c === void 0 ? void 0 : _c.appId) {\n initPromises.push(this.facebookProvider.initialize(options.facebook.appId, options.facebook.locale));\n }\n if ((_d = options.twitter) === null || _d === void 0 ? void 0 : _d.clientId) {\n initPromises.push(this.twitterProvider.initialize(options.twitter.clientId, options.twitter.redirectUrl, options.twitter.defaultScopes, options.twitter.forceLogin, options.twitter.audience));\n }\n if (options.oauth2 && Object.keys(options.oauth2).length > 0) {\n initPromises.push(this.oauth2Provider.initializeProviders(options.oauth2));\n }\n await Promise.all(initPromises);\n }\n async login(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.login(options.options);\n case 'apple':\n return this.appleProvider.login(options.options);\n case 'facebook':\n return this.facebookProvider.login(options.options);\n case 'twitter':\n return this.twitterProvider.login(options.options);\n case 'oauth2':\n return this.oauth2Provider.login(options.options);\n default:\n throw new Error(`Login for ${options.provider} is not implemented on web`);\n }\n }\n async logout(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.logout();\n case 'apple':\n return this.appleProvider.logout();\n case 'facebook':\n return this.facebookProvider.logout();\n case 'twitter':\n return this.twitterProvider.logout();\n case 'oauth2':\n if (!options.providerId) {\n throw new Error('providerId is required for oauth2 logout');\n }\n return this.oauth2Provider.logout(options.providerId);\n default:\n throw new Error(`Logout for ${options.provider} is not implemented`);\n }\n }\n async isLoggedIn(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.isLoggedIn();\n case 'apple':\n return this.appleProvider.isLoggedIn();\n case 'facebook':\n return this.facebookProvider.isLoggedIn();\n case 'twitter':\n return this.twitterProvider.isLoggedIn();\n case 'oauth2':\n if (!options.providerId) {\n throw new Error('providerId is required for oauth2 isLoggedIn');\n }\n return this.oauth2Provider.isLoggedIn(options.providerId);\n default:\n throw new Error(`isLoggedIn for ${options.provider} is not implemented`);\n }\n }\n async getAuthorizationCode(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.getAuthorizationCode();\n case 'apple':\n return this.appleProvider.getAuthorizationCode();\n case 'facebook':\n return this.facebookProvider.getAuthorizationCode();\n case 'twitter':\n return this.twitterProvider.getAuthorizationCode();\n case 'oauth2':\n if (!options.providerId) {\n throw new Error('providerId is required for oauth2 getAuthorizationCode');\n }\n return this.oauth2Provider.getAuthorizationCode(options.providerId);\n default:\n throw new Error(`getAuthorizationCode for ${options.provider} is not implemented`);\n }\n }\n async refresh(options) {\n switch (options.provider) {\n case 'google':\n return this.googleProvider.refresh();\n case 'apple':\n return this.appleProvider.refresh();\n case 'facebook':\n return this.facebookProvider.refresh(options.options);\n case 'twitter':\n return this.twitterProvider.refresh();\n case 'oauth2': {\n const oauth2Options = options.options;\n if (!(oauth2Options === null || oauth2Options === void 0 ? void 0 : oauth2Options.providerId)) {\n throw new Error('providerId is required for oauth2 refresh');\n }\n return this.oauth2Provider.refresh(oauth2Options.providerId);\n }\n default:\n throw new Error(`Refresh for ${options.provider} is not implemented`);\n }\n }\n async providerSpecificCall(options) {\n throw new Error(`Provider specific call for ${options.call} is not implemented`);\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\nSocialLoginWeb.OAUTH_STATE_KEY = 'social_login_oauth_pending';\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin","__rest","this"],"mappings":"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"}
|