@capgo/capacitor-social-login 8.3.13 → 8.3.14
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/android/src/main/java/ee/forgr/capacitor/social/login/SocialLoginPlugin.java +1 -1
- package/dist/esm/auth-connect.js +1 -11
- package/dist/esm/auth-connect.js.map +1 -1
- package/dist/esm/oauth2-provider.js +1 -11
- package/dist/esm/oauth2-provider.js.map +1 -1
- package/dist/esm/twitter-provider.js +1 -11
- package/dist/esm/twitter-provider.js.map +1 -1
- package/dist/plugin.cjs.js +35 -34
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +35 -34
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/SocialLoginPlugin/SocialLoginPlugin.swift +1 -1
- package/package.json +7 -3
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/social-login.js","esm/auth-connect.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';\nexport const SocialLoginBase = registerPlugin('SocialLogin', {\n web: () => import('./web').then((m) => new m.SocialLoginWeb()),\n});\n//# sourceMappingURL=social-login.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 { SocialLoginBase } from './social-login';\nconst AUTH_CONNECT_PROVIDERS = ['auth0', 'azure', 'cognito', 'okta', 'onelogin'];\nconst DEFAULT_SCOPES = {\n auth0: 'openid profile email offline_access',\n azure: 'openid profile email',\n cognito: 'openid profile email',\n okta: 'openid profile email offline_access',\n onelogin: 'openid profile email',\n};\nconst DEFAULT_RESOURCE_URLS = {\n azure: 'https://graph.microsoft.com/v1.0/me',\n};\nconst DEFAULT_AUTHORITY_HOST = 'https://login.microsoftonline.com';\nconst ensureProtocol = (value) => {\n if (value.startsWith('http://') || value.startsWith('https://')) {\n return value;\n }\n return `https://${value}`;\n};\nconst trimTrailingSlash = (value) => value.replace(/\\/+$/, '');\nconst joinUrl = (base, path) => {\n const sanitizedBase = trimTrailingSlash(base);\n const sanitizedPath = path.replace(/^\\/+/, '');\n return `${sanitizedBase}/${sanitizedPath}`;\n};\nconst mergeRecords = (base, overrides) => {\n if (!base && !overrides) {\n return undefined;\n }\n return Object.assign(Object.assign({}, (base !== null && base !== void 0 ? base : {})), (overrides !== null && overrides !== void 0 ? overrides : {}));\n};\nconst validatePreset = (providerId, preset) => {\n if (!preset.clientId) {\n throw new Error(`[authConnect] ${providerId} requires clientId.`);\n }\n if (!preset.redirectUrl) {\n throw new Error(`[authConnect] ${providerId} requires redirectUrl.`);\n }\n};\nconst buildAuth0Config = (preset) => {\n validatePreset('auth0', preset);\n if (!preset.domain) {\n throw new Error('[authConnect] auth0 requires domain.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.domain));\n return buildConfigFromPreset('auth0', preset, {\n authorizationBaseUrl: joinUrl(base, 'authorize'),\n accessTokenEndpoint: joinUrl(base, 'oauth/token'),\n resourceUrl: joinUrl(base, 'userinfo'),\n logoutUrl: joinUrl(base, 'v2/logout'),\n additionalParameters: preset.audience ? { audience: preset.audience } : undefined,\n });\n};\nconst buildAzureConfig = (preset) => {\n var _a, _b;\n validatePreset('azure', preset);\n const tenantId = (_a = preset.tenantId) !== null && _a !== void 0 ? _a : 'common';\n const authorityHost = trimTrailingSlash(ensureProtocol((_b = preset.authorityHost) !== null && _b !== void 0 ? _b : DEFAULT_AUTHORITY_HOST));\n const base = joinUrl(authorityHost, `${tenantId}/oauth2/v2.0`);\n return buildConfigFromPreset('azure', preset, {\n authorizationBaseUrl: joinUrl(base, 'authorize'),\n accessTokenEndpoint: joinUrl(base, 'token'),\n resourceUrl: DEFAULT_RESOURCE_URLS.azure,\n });\n};\nconst buildCognitoConfig = (preset) => {\n validatePreset('cognito', preset);\n if (!preset.domain) {\n throw new Error('[authConnect] cognito requires domain.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.domain));\n return buildConfigFromPreset('cognito', preset, {\n authorizationBaseUrl: joinUrl(base, 'oauth2/authorize'),\n accessTokenEndpoint: joinUrl(base, 'oauth2/token'),\n resourceUrl: joinUrl(base, 'oauth2/userInfo'),\n logoutUrl: joinUrl(base, 'logout'),\n });\n};\nconst buildOktaConfig = (preset) => {\n validatePreset('okta', preset);\n if (!preset.issuer) {\n throw new Error('[authConnect] okta requires issuer.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.issuer));\n return buildConfigFromPreset('okta', preset, {\n authorizationBaseUrl: joinUrl(base, 'v1/authorize'),\n accessTokenEndpoint: joinUrl(base, 'v1/token'),\n resourceUrl: joinUrl(base, 'v1/userinfo'),\n logoutUrl: joinUrl(base, 'v1/logout'),\n });\n};\nconst buildOneLoginConfig = (preset) => {\n validatePreset('onelogin', preset);\n if (!preset.issuer) {\n throw new Error('[authConnect] onelogin requires issuer.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.issuer));\n return buildConfigFromPreset('onelogin', preset, {\n authorizationBaseUrl: joinUrl(base, 'auth'),\n accessTokenEndpoint: joinUrl(base, 'token'),\n resourceUrl: joinUrl(base, 'me'),\n logoutUrl: joinUrl(base, 'logout'),\n });\n};\nconst buildConfigFromPreset = (providerId, preset, defaults) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const additionalParameters = mergeRecords(defaults.additionalParameters, preset.additionalParameters);\n const additionalResourceHeaders = mergeRecords(defaults.additionalResourceHeaders, preset.additionalResourceHeaders);\n const config = {\n appId: preset.clientId,\n authorizationBaseUrl: (_b = (_a = preset.authorizationBaseUrl) !== null && _a !== void 0 ? _a : defaults.authorizationBaseUrl) !== null && _b !== void 0 ? _b : '',\n accessTokenEndpoint: (_c = preset.accessTokenEndpoint) !== null && _c !== void 0 ? _c : defaults.accessTokenEndpoint,\n redirectUrl: preset.redirectUrl,\n resourceUrl: (_d = preset.resourceUrl) !== null && _d !== void 0 ? _d : defaults.resourceUrl,\n responseType: (_f = (_e = preset.responseType) !== null && _e !== void 0 ? _e : defaults.responseType) !== null && _f !== void 0 ? _f : 'code',\n pkceEnabled: (_h = (_g = preset.pkceEnabled) !== null && _g !== void 0 ? _g : defaults.pkceEnabled) !== null && _h !== void 0 ? _h : true,\n scope: (_k = (_j = preset.scope) !== null && _j !== void 0 ? _j : defaults.scope) !== null && _k !== void 0 ? _k : DEFAULT_SCOPES[providerId],\n additionalParameters,\n additionalResourceHeaders,\n logoutUrl: (_l = preset.logoutUrl) !== null && _l !== void 0 ? _l : defaults.logoutUrl,\n logsEnabled: (_m = preset.logsEnabled) !== null && _m !== void 0 ? _m : defaults.logsEnabled,\n };\n if (!config.authorizationBaseUrl) {\n throw new Error(`[authConnect] ${providerId} authorizationBaseUrl is required.`);\n }\n return config;\n};\nconst buildAuthConnectProviders = (presets) => {\n if (!presets) {\n return {};\n }\n const providers = {};\n if (presets.auth0) {\n providers.auth0 = buildAuth0Config(presets.auth0);\n }\n if (presets.azure) {\n providers.azure = buildAzureConfig(presets.azure);\n }\n if (presets.cognito) {\n providers.cognito = buildCognitoConfig(presets.cognito);\n }\n if (presets.okta) {\n providers.okta = buildOktaConfig(presets.okta);\n }\n if (presets.onelogin) {\n providers.onelogin = buildOneLoginConfig(presets.onelogin);\n }\n return providers;\n};\nconst isAuthConnectProvider = (provider) => AUTH_CONNECT_PROVIDERS.includes(provider);\nconst isAuthConnectProviderOptions = (options) => isAuthConnectProvider(options.provider);\nconst isAuthConnectLoginOptions = (options) => isAuthConnectProvider(options.provider);\nconst mapLoginOptions = (options) => {\n var _a;\n if (isAuthConnectLoginOptions(options)) {\n return {\n provider: 'oauth2',\n options: Object.assign({ providerId: options.provider }, ((_a = options.options) !== null && _a !== void 0 ? _a : {})),\n };\n }\n return options;\n};\nconst mapProviderOptions = (options) => {\n if (isAuthConnectProviderOptions(options)) {\n return {\n provider: 'oauth2',\n providerId: options.provider,\n };\n }\n return options;\n};\nconst mapRefreshOptions = (options) => mapLoginOptions(options);\nconst mergeOAuth2Configs = (presets, oauth2) => {\n if (!Object.keys(presets).length && !oauth2) {\n return oauth2;\n }\n return Object.assign(Object.assign({}, presets), (oauth2 !== null && oauth2 !== void 0 ? oauth2 : {}));\n};\nconst createAuthConnectClient = (client) => ({\n initialize: async (options) => {\n const { authConnect, oauth2 } = options, rest = __rest(options, [\"authConnect\", \"oauth2\"]);\n const presetProviders = buildAuthConnectProviders(authConnect);\n const mergedOauth2 = mergeOAuth2Configs(presetProviders, oauth2);\n const payload = Object.assign(Object.assign({}, rest), (mergedOauth2 ? { oauth2: mergedOauth2 } : {}));\n return client.initialize(payload);\n },\n login: async (options) => {\n if (isAuthConnectProvider(options.provider)) {\n const mapped = mapLoginOptions(options);\n const response = await client.login(mapped);\n return {\n provider: options.provider,\n result: response.result,\n };\n }\n return client.login(options);\n },\n logout: async (options) => client.logout(mapProviderOptions(options)),\n isLoggedIn: async (options) => client.isLoggedIn(mapProviderOptions(options)),\n getAuthorizationCode: async (options) => client.getAuthorizationCode(mapProviderOptions(options)),\n refresh: async (options) => client.refresh(mapRefreshOptions(options)),\n providerSpecificCall: async (options) => client.providerSpecificCall(options),\n getPluginVersion: async () => client.getPluginVersion(),\n});\nconst SocialLoginAuthConnect = createAuthConnectClient(SocialLoginBase);\nexport { createAuthConnectClient, SocialLoginAuthConnect };\n//# sourceMappingURL=auth-connect.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, nonce }));\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `google_oauth_${nonce || Date.now()}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_b) {\n // BroadcastChannel not supported, fall back to postMessage only\n }\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 cleanup = () => {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const processOAuthResponse = (data) => {\n if (this.loginType === 'online') {\n const { accessToken, idToken } = 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 else {\n reject(new Error('Invalid OAuth response: missing accessToken or idToken'));\n }\n }\n else {\n const { serverAuthCode } = data;\n if (!serverAuthCode) {\n reject(new Error('Invalid OAuth response: missing serverAuthCode'));\n return;\n }\n resolve({\n provider: 'google',\n result: {\n responseType: 'offline',\n serverAuthCode,\n },\n });\n }\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 cleanup();\n processOAuthResponse(event.data);\n }\n else if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) === 'oauth-error') {\n cleanup();\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 // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n var _a;\n const data = event.data;\n if ((_a = data === null || data === void 0 ? void 0 : data.source) === null || _a === void 0 ? void 0 : _a.toString().startsWith('angular'))\n return;\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n cleanup();\n processOAuthResponse(data);\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n cleanup();\n const errorMessage = data.error || 'User cancelled the OAuth flow';\n reject(new Error(errorMessage));\n }\n };\n }\n window.addEventListener('message', handleMessage);\n // Timeout after 5 minutes\n timeoutHandle = setTimeout(() => {\n cleanup();\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('OAuth timeout'));\n }, 300000);\n popupClosedInterval = setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup();\n reject(new Error('Popup closed'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we rely on timeout and message handlers.\n clearInterval(popupClosedInterval);\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 normalizeScopeValue(scope) {\n if (!scope)\n return '';\n if (typeof scope === 'string')\n return scope;\n if (Array.isArray(scope))\n return scope.filter(Boolean).join(' ');\n return '';\n }\n normalizeConfig(providerId, config) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const appId = (_a = config.appId) !== null && _a !== void 0 ? _a : config.clientId;\n const authorizationBaseUrl = (_b = config.authorizationBaseUrl) !== null && _b !== void 0 ? _b : config.authorizationEndpoint;\n const accessTokenEndpoint = (_c = config.accessTokenEndpoint) !== null && _c !== void 0 ? _c : config.tokenEndpoint;\n const logoutUrl = (_d = config.logoutUrl) !== null && _d !== void 0 ? _d : config.endSessionEndpoint;\n const scopeSource = (_e = config.scope) !== null && _e !== void 0 ? _e : config.scopes;\n if (!appId) {\n throw new Error(`OAuth2 provider '${providerId}' requires appId (or clientId).`);\n }\n if (!config.redirectUrl) {\n throw new Error(`OAuth2 provider '${providerId}' requires redirectUrl.`);\n }\n if (!authorizationBaseUrl && !config.issuerUrl) {\n throw new Error(`OAuth2 provider '${providerId}' requires authorizationBaseUrl (or authorizationEndpoint) or issuerUrl.`);\n }\n return {\n appId,\n issuerUrl: config.issuerUrl,\n authorizationBaseUrl,\n accessTokenEndpoint,\n redirectUrl: config.redirectUrl,\n resourceUrl: config.resourceUrl,\n responseType: ((_f = config.responseType) !== null && _f !== void 0 ? _f : 'code'),\n pkceEnabled: (_g = config.pkceEnabled) !== null && _g !== void 0 ? _g : true,\n scope: this.normalizeScopeValue(scopeSource),\n additionalParameters: config.additionalParameters,\n loginHint: config.loginHint,\n prompt: config.prompt,\n additionalTokenParameters: config.additionalTokenParameters,\n additionalResourceHeaders: config.additionalResourceHeaders,\n logoutUrl,\n postLogoutRedirectUrl: config.postLogoutRedirectUrl,\n additionalLogoutParameters: config.additionalLogoutParameters,\n logsEnabled: (_h = config.logsEnabled) !== null && _h !== void 0 ? _h : false,\n };\n }\n async ensureDiscovered(providerId) {\n const config = this.providers.get(providerId);\n if (!(config === null || config === void 0 ? void 0 : config.issuerUrl))\n return;\n // Resolve endpoints lazily.\n if (config.authorizationBaseUrl && config.accessTokenEndpoint)\n return;\n const issuer = config.issuerUrl.replace(/\\/+$/, '');\n const discoveryUrl = `${issuer}/.well-known/openid-configuration`;\n const resp = await fetch(discoveryUrl);\n if (!resp.ok) {\n const text = await resp.text().catch(() => '');\n throw new Error(`OAuth2 discovery failed (${resp.status}): ${text || discoveryUrl}`);\n }\n const payload = (await resp.json());\n const authorizationEndpoint = payload['authorization_endpoint'];\n const tokenEndpoint = payload['token_endpoint'];\n const endSessionEndpoint = payload['end_session_endpoint'];\n if (!config.authorizationBaseUrl && typeof authorizationEndpoint === 'string') {\n config.authorizationBaseUrl = authorizationEndpoint;\n }\n if (!config.accessTokenEndpoint && typeof tokenEndpoint === 'string') {\n config.accessTokenEndpoint = tokenEndpoint;\n }\n if (!config.logoutUrl && typeof endSessionEndpoint === 'string') {\n config.logoutUrl = endSessionEndpoint;\n }\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Discovery resolved`, {\n authorizationBaseUrl: config.authorizationBaseUrl,\n accessTokenEndpoint: config.accessTokenEndpoint,\n logoutUrl: config.logoutUrl,\n });\n }\n }\n /**\n * Initialize multiple OAuth2 providers\n */\n async initializeProviders(configs) {\n for (const [providerId, config] of Object.entries(configs)) {\n const internalConfig = this.normalizeConfig(providerId, config);\n this.providers.set(providerId, internalConfig);\n if (internalConfig.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Initialized with config:`, {\n appId: internalConfig.appId,\n issuerUrl: internalConfig.issuerUrl,\n authorizationBaseUrl: internalConfig.authorizationBaseUrl,\n redirectUrl: internalConfig.redirectUrl,\n responseType: internalConfig.responseType,\n pkceEnabled: internalConfig.pkceEnabled,\n });\n }\n // Pre-resolve discovery on web if issuerUrl is provided.\n await this.ensureDiscovered(providerId);\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, _e, _f, _g, _h, _j;\n const { providerId } = options;\n const config = this.getProvider(providerId);\n await this.ensureDiscovered(providerId);\n const redirectUri = (_a = options.redirectUrl) !== null && _a !== void 0 ? _a : config.redirectUrl;\n const scope = this.normalizeScopeValue((_c = (_b = options.scope) !== null && _b !== void 0 ? _b : options.scopes) !== null && _c !== void 0 ? _c : config.scope);\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 // 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 // Convenience OIDC options\n const mergedAdditionalParams = Object.assign(Object.assign({}, ((_f = config.additionalParameters) !== null && _f !== void 0 ? _f : {})), ((_g = options.additionalParameters) !== null && _g !== void 0 ? _g : {}));\n const loginHint = (_h = options.loginHint) !== null && _h !== void 0 ? _h : config.loginHint;\n const prompt = (_j = options.prompt) !== null && _j !== void 0 ? _j : config.prompt;\n if (loginHint && !('login_hint' in mergedAdditionalParams)) {\n mergedAdditionalParams.login_hint = loginHint;\n }\n if (prompt && !('prompt' in mergedAdditionalParams)) {\n mergedAdditionalParams.prompt = prompt;\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 merged additional parameters\n for (const [key, value] of Object.entries(mergedAdditionalParams)) {\n if (value !== undefined) {\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 if (!config.authorizationBaseUrl) {\n throw new Error(`OAuth2 provider '${providerId}' is missing authorizationBaseUrl (discovery may have failed).`);\n }\n const authUrl = `${config.authorizationBaseUrl}?${params.toString()}`;\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Opening authorization URL:`, authUrl);\n }\n if (options.flow === 'redirect') {\n // Trigger a full-page redirect. The promise will not resolve because the page navigates away.\n window.location.assign(authUrl);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return new Promise(() => { });\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `oauth2_${state}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_a) {\n // BroadcastChannel not supported, fall back to postMessage only\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] BroadcastChannel not supported, using postMessage only`);\n }\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const handleOAuthMessage = (data) => {\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'oauth2') {\n return false;\n }\n // Check providerId matches if present\n if ((data === null || data === void 0 ? void 0 : data.providerId) && data.providerId !== providerId) {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _a = data, { provider: _ignoredProvider, type: _ignoredType } = _a, payload = __rest(_a, [\"provider\", \"type\"]);\n resolve({\n provider: 'oauth2',\n result: payload,\n });\n return true;\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'oauth2') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(data.error || 'OAuth2 login was cancelled.'));\n return true;\n }\n return false;\n };\n // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n handleOAuthMessage(event.data);\n };\n }\n const messageHandler = (event) => {\n if (event.origin !== window.location.origin) {\n return;\n }\n handleOAuthMessage(event.data);\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('OAuth2 login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error('OAuth2 login window was closed.'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we just rely on the timeout\n // and message handlers. Clear the interval to avoid repeated errors.\n clearInterval(popupClosedInterval);\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Cannot check popup.closed due to cross-origin restrictions. ` +\n 'Relying on message handlers and timeout.');\n }\n }\n }, 1000);\n });\n }\n async logout(providerId) {\n await this.ensureDiscovered(providerId);\n const config = this.providers.get(providerId);\n const stored = this.getStoredTokens(providerId);\n localStorage.removeItem(this.getTokensKey(providerId));\n // If logout URL is configured, build an end-session URL (OIDC) when possible.\n if (config === null || config === void 0 ? void 0 : config.logoutUrl) {\n try {\n const url = new URL(config.logoutUrl);\n if (stored === null || stored === void 0 ? void 0 : stored.idToken) {\n url.searchParams.set('id_token_hint', stored.idToken);\n }\n const postLogout = config.postLogoutRedirectUrl;\n if (postLogout) {\n url.searchParams.set('post_logout_redirect_uri', postLogout);\n }\n if (config.additionalLogoutParameters) {\n for (const [k, v] of Object.entries(config.additionalLogoutParameters)) {\n url.searchParams.set(k, v);\n }\n }\n window.open(url.toString(), '_blank');\n }\n catch (_a) {\n window.open(config.logoutUrl, '_blank');\n }\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 await this.refreshToken(providerId);\n }\n async refreshToken(providerId, refreshToken, additionalParameters) {\n var _a, _b, _c, _d, _e, _f;\n await this.ensureDiscovered(providerId);\n const config = this.getProvider(providerId);\n const stored = this.getStoredTokens(providerId);\n const effectiveRefreshToken = refreshToken !== null && refreshToken !== void 0 ? refreshToken : stored === null || stored === void 0 ? void 0 : stored.refreshToken;\n if (!effectiveRefreshToken) {\n throw new Error(`No OAuth2 refresh token is available for provider '${providerId}'. Include offline_access scope to receive one.`);\n }\n if (!config.accessTokenEndpoint) {\n throw new Error(`No accessTokenEndpoint configured for provider '${providerId}'.`);\n }\n const tokenResponse = await this.refreshWithRefreshToken(providerId, effectiveRefreshToken, additionalParameters);\n const expiresAt = tokenResponse.expires_in ? Date.now() + tokenResponse.expires_in * 1000 : Date.now() + 3600000;\n const scopeArray = (_c = (_b = (_a = tokenResponse.scope) === null || _a === void 0 ? void 0 : _a.split(' ').filter(Boolean)) !== null && _b !== void 0 ? _b : stored === null || stored === void 0 ? void 0 : stored.scope) !== null && _c !== void 0 ? _c : [];\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 const nextRefreshToken = (_d = tokenResponse.refresh_token) !== null && _d !== void 0 ? _d : effectiveRefreshToken;\n this.persistTokens(providerId, {\n accessToken: tokenResponse.access_token,\n refreshToken: nextRefreshToken,\n idToken: tokenResponse.id_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n });\n return {\n providerId,\n accessToken: {\n token: tokenResponse.access_token,\n tokenType: tokenResponse.token_type,\n expires: new Date(expiresAt).toISOString(),\n refreshToken: nextRefreshToken,\n },\n idToken: (_e = tokenResponse.id_token) !== null && _e !== void 0 ? _e : null,\n refreshToken: nextRefreshToken !== null && nextRefreshToken !== void 0 ? nextRefreshToken : null,\n resourceData,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n expiresIn: (_f = tokenResponse.expires_in) !== null && _f !== void 0 ? _f : null,\n };\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 await this.ensureDiscovered(providerId);\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.additionalTokenParameters) {\n for (const [k, v] of Object.entries(config.additionalTokenParameters)) {\n params.set(k, v);\n }\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, additionalParameters) {\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 if (config.additionalTokenParameters) {\n for (const [k, v] of Object.entries(config.additionalTokenParameters)) {\n params.set(k, v);\n }\n }\n if (additionalParameters) {\n for (const [k, v] of Object.entries(additionalParameters)) {\n params.set(k, v);\n }\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 return (await response.json());\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 decodeIdToken(idToken) {\n const parts = idToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid JWT: missing parts');\n }\n const payload = parts[1];\n const normalized = payload.replace(/-/g, '+').replace(/_/g, '/');\n const padded = normalized + '='.repeat((4 - (normalized.length % 4)) % 4);\n const json = atob(padded);\n return JSON.parse(json);\n }\n getAccessTokenExpirationDate(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.expiresAt))\n return { expirationDate: null };\n return { expirationDate: new Date(tokens.expiresAt).toISOString() };\n }\n isAccessTokenAvailable(providerId) {\n const tokens = this.getStoredTokens(providerId);\n return { isAvailable: !!(tokens === null || tokens === void 0 ? void 0 : tokens.accessToken) };\n }\n isAccessTokenExpired(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.expiresAt))\n return { isExpired: true };\n return { isExpired: tokens.expiresAt <= Date.now() };\n }\n isRefreshTokenAvailable(providerId) {\n const tokens = this.getStoredTokens(providerId);\n return { isAvailable: !!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken) };\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `twitter_oauth_${state}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_a) {\n // BroadcastChannel not supported, fall back to postMessage only\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const handleOAuthMessage = (data) => {\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'twitter') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _a = data, { provider: _ignoredProvider, type: _ignoredType } = _a, payload = __rest(_a, [\"provider\", \"type\"]);\n resolve({\n provider: 'twitter',\n result: payload,\n });\n return true;\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'twitter') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(data.error || 'Twitter login was cancelled.'));\n return true;\n }\n return false;\n };\n // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n handleOAuthMessage(event.data);\n };\n }\n const messageHandler = (event) => {\n if (event.origin !== window.location.origin) {\n return;\n }\n handleOAuthMessage(event.data);\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('Twitter login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error('Twitter login window was closed.'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we rely on timeout and message handlers.\n clearInterval(popupClosedInterval);\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 // Auto-finish OAuth redirects only when running inside a popup window.\n // For redirect-based flows (full page navigation), the app should call `handleRedirectCallback()` explicitly.\n const hasPending = !!localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY);\n const isPopup = !!window.opener || SocialLoginWeb.POPUP_WINDOW_NAMES.has(window.name);\n if (hasPending && isPopup) {\n this.finishOAuthRedirectInPopup().catch((error) => {\n console.error('Failed to finish OAuth redirect', error);\n try {\n window.close();\n }\n catch (_a) {\n // ignore\n }\n });\n }\n }\n async parseRedirectResult() {\n var _a;\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 let nonce;\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 nonce = parsed.nonce;\n }\n catch (_b) {\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 return { provider, state, nonce, result };\n }\n async finishOAuthRedirectInPopup() {\n var _a;\n const parsed = await this.parseRedirectResult();\n const result = parsed.result;\n if (!result)\n return;\n // Build the message to send\n let message;\n if ('error' in result) {\n const resolvedProvider = (_a = parsed.provider) !== null && _a !== void 0 ? _a : null;\n message = {\n type: 'oauth-error',\n provider: resolvedProvider,\n error: result.error,\n };\n }\n else {\n message = Object.assign({ type: 'oauth-response', provider: result.provider }, result.result);\n }\n // Try postMessage first (works when window.opener is accessible)\n try {\n if (window.opener) {\n window.opener.postMessage(message, window.location.origin);\n }\n }\n catch (_b) {\n // Cross-origin error - window.opener may not be accessible\n console.log('postMessage to opener failed, using BroadcastChannel');\n }\n // Also use BroadcastChannel as a fallback (works across same-origin windows\n // even when window.opener is not accessible due to cross-origin navigation)\n try {\n // Determine the channel name based on provider and state/nonce\n let channelName = null;\n if (parsed.provider === 'oauth2' && parsed.state) {\n channelName = `oauth2_${parsed.state}`;\n }\n else if (parsed.provider === 'twitter' && parsed.state) {\n channelName = `twitter_oauth_${parsed.state}`;\n }\n else if (parsed.provider === 'google' && parsed.nonce) {\n channelName = `google_oauth_${parsed.nonce}`;\n }\n if (channelName) {\n const channel = new BroadcastChannel(channelName);\n channel.postMessage(message);\n channel.close();\n }\n }\n catch (_c) {\n // BroadcastChannel not supported or other error\n console.log('BroadcastChannel not available');\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 refreshToken(options) {\n if (options.provider !== 'oauth2') {\n throw new Error('refreshToken is only implemented for oauth2 on web');\n }\n return this.oauth2Provider.refreshToken(options.providerId, options.refreshToken, options.additionalParameters);\n }\n async handleRedirectCallback() {\n const parsed = await this.parseRedirectResult();\n const result = parsed.result;\n if (!result)\n return null;\n if ('error' in result) {\n throw new Error(result.error);\n }\n return result;\n }\n async decodeIdToken(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.idToken) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.token;\n if (!token) {\n throw new Error('idToken (or token) is required');\n }\n const claims = this.oauth2Provider.decodeIdToken(token);\n return { claims };\n }\n async getAccessTokenExpirationDate(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.accessTokenExpirationDate) !== 'number') {\n throw new Error('accessTokenExpirationDate is required');\n }\n return { date: new Date(options.accessTokenExpirationDate).toISOString() };\n }\n async isAccessTokenAvailable(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.accessToken) !== null && _a !== void 0 ? _a : null;\n return { isAvailable: typeof token === 'string' && token.length > 0 };\n }\n async isAccessTokenExpired(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.accessTokenExpirationDate) !== 'number') {\n throw new Error('accessTokenExpirationDate is required');\n }\n return { isExpired: options.accessTokenExpirationDate <= Date.now() };\n }\n async isRefreshTokenAvailable(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.refreshToken) !== null && _a !== void 0 ? _a : null;\n return { isAvailable: typeof token === 'string' && token.length > 0 };\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n async openSecureWindow(options) {\n const w = 600;\n const h = 550;\n const settings = [\n ['width', w],\n ['height', h],\n ['left', screen.width / 2 - w / 2],\n ['top', screen.height / 2 - h / 2],\n ]\n .map((x) => x.join('='))\n .join(',');\n const popup = window.open(options.authEndpoint, 'Authorization', settings);\n if (typeof popup.focus === 'function') {\n popup.focus();\n }\n return new Promise((resolve, reject) => {\n const bc = new BroadcastChannel(options.broadcastChannelName || 'oauth-channel');\n bc.addEventListener('message', (event) => {\n if (event.data.startsWith(options.redirectUri)) {\n bc.close();\n resolve({ redirectedUri: event.data });\n }\n else {\n bc.close();\n reject(new Error('Redirect URI does not match, expected ' + options.redirectUri + ' but got ' + event.data));\n }\n });\n setTimeout(() => {\n bc.close();\n reject(new Error('The sign-in flow timed out'));\n }, 5 * 60000);\n });\n }\n}\nSocialLoginWeb.OAUTH_STATE_KEY = 'social_login_oauth_pending';\nSocialLoginWeb.POPUP_WINDOW_NAMES = new Set(['OAuth2Login', 'XLogin', 'Google Sign In', 'Authorization']);\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","__rest","this","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/social-login.js","../node_modules/tslib/tslib.es6.mjs","esm/auth-connect.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';\nexport const SocialLoginBase = registerPlugin('SocialLogin', {\n web: () => import('./web').then((m) => new m.SocialLoginWeb()),\n});\n//# sourceMappingURL=social-login.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(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}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __rest } from \"tslib\";\nimport { SocialLoginBase } from './social-login';\nconst AUTH_CONNECT_PROVIDERS = ['auth0', 'azure', 'cognito', 'okta', 'onelogin'];\nconst DEFAULT_SCOPES = {\n auth0: 'openid profile email offline_access',\n azure: 'openid profile email',\n cognito: 'openid profile email',\n okta: 'openid profile email offline_access',\n onelogin: 'openid profile email',\n};\nconst DEFAULT_RESOURCE_URLS = {\n azure: 'https://graph.microsoft.com/v1.0/me',\n};\nconst DEFAULT_AUTHORITY_HOST = 'https://login.microsoftonline.com';\nconst ensureProtocol = (value) => {\n if (value.startsWith('http://') || value.startsWith('https://')) {\n return value;\n }\n return `https://${value}`;\n};\nconst trimTrailingSlash = (value) => value.replace(/\\/+$/, '');\nconst joinUrl = (base, path) => {\n const sanitizedBase = trimTrailingSlash(base);\n const sanitizedPath = path.replace(/^\\/+/, '');\n return `${sanitizedBase}/${sanitizedPath}`;\n};\nconst mergeRecords = (base, overrides) => {\n if (!base && !overrides) {\n return undefined;\n }\n return Object.assign(Object.assign({}, (base !== null && base !== void 0 ? base : {})), (overrides !== null && overrides !== void 0 ? overrides : {}));\n};\nconst validatePreset = (providerId, preset) => {\n if (!preset.clientId) {\n throw new Error(`[authConnect] ${providerId} requires clientId.`);\n }\n if (!preset.redirectUrl) {\n throw new Error(`[authConnect] ${providerId} requires redirectUrl.`);\n }\n};\nconst buildAuth0Config = (preset) => {\n validatePreset('auth0', preset);\n if (!preset.domain) {\n throw new Error('[authConnect] auth0 requires domain.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.domain));\n return buildConfigFromPreset('auth0', preset, {\n authorizationBaseUrl: joinUrl(base, 'authorize'),\n accessTokenEndpoint: joinUrl(base, 'oauth/token'),\n resourceUrl: joinUrl(base, 'userinfo'),\n logoutUrl: joinUrl(base, 'v2/logout'),\n additionalParameters: preset.audience ? { audience: preset.audience } : undefined,\n });\n};\nconst buildAzureConfig = (preset) => {\n var _a, _b;\n validatePreset('azure', preset);\n const tenantId = (_a = preset.tenantId) !== null && _a !== void 0 ? _a : 'common';\n const authorityHost = trimTrailingSlash(ensureProtocol((_b = preset.authorityHost) !== null && _b !== void 0 ? _b : DEFAULT_AUTHORITY_HOST));\n const base = joinUrl(authorityHost, `${tenantId}/oauth2/v2.0`);\n return buildConfigFromPreset('azure', preset, {\n authorizationBaseUrl: joinUrl(base, 'authorize'),\n accessTokenEndpoint: joinUrl(base, 'token'),\n resourceUrl: DEFAULT_RESOURCE_URLS.azure,\n });\n};\nconst buildCognitoConfig = (preset) => {\n validatePreset('cognito', preset);\n if (!preset.domain) {\n throw new Error('[authConnect] cognito requires domain.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.domain));\n return buildConfigFromPreset('cognito', preset, {\n authorizationBaseUrl: joinUrl(base, 'oauth2/authorize'),\n accessTokenEndpoint: joinUrl(base, 'oauth2/token'),\n resourceUrl: joinUrl(base, 'oauth2/userInfo'),\n logoutUrl: joinUrl(base, 'logout'),\n });\n};\nconst buildOktaConfig = (preset) => {\n validatePreset('okta', preset);\n if (!preset.issuer) {\n throw new Error('[authConnect] okta requires issuer.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.issuer));\n return buildConfigFromPreset('okta', preset, {\n authorizationBaseUrl: joinUrl(base, 'v1/authorize'),\n accessTokenEndpoint: joinUrl(base, 'v1/token'),\n resourceUrl: joinUrl(base, 'v1/userinfo'),\n logoutUrl: joinUrl(base, 'v1/logout'),\n });\n};\nconst buildOneLoginConfig = (preset) => {\n validatePreset('onelogin', preset);\n if (!preset.issuer) {\n throw new Error('[authConnect] onelogin requires issuer.');\n }\n const base = trimTrailingSlash(ensureProtocol(preset.issuer));\n return buildConfigFromPreset('onelogin', preset, {\n authorizationBaseUrl: joinUrl(base, 'auth'),\n accessTokenEndpoint: joinUrl(base, 'token'),\n resourceUrl: joinUrl(base, 'me'),\n logoutUrl: joinUrl(base, 'logout'),\n });\n};\nconst buildConfigFromPreset = (providerId, preset, defaults) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const additionalParameters = mergeRecords(defaults.additionalParameters, preset.additionalParameters);\n const additionalResourceHeaders = mergeRecords(defaults.additionalResourceHeaders, preset.additionalResourceHeaders);\n const config = {\n appId: preset.clientId,\n authorizationBaseUrl: (_b = (_a = preset.authorizationBaseUrl) !== null && _a !== void 0 ? _a : defaults.authorizationBaseUrl) !== null && _b !== void 0 ? _b : '',\n accessTokenEndpoint: (_c = preset.accessTokenEndpoint) !== null && _c !== void 0 ? _c : defaults.accessTokenEndpoint,\n redirectUrl: preset.redirectUrl,\n resourceUrl: (_d = preset.resourceUrl) !== null && _d !== void 0 ? _d : defaults.resourceUrl,\n responseType: (_f = (_e = preset.responseType) !== null && _e !== void 0 ? _e : defaults.responseType) !== null && _f !== void 0 ? _f : 'code',\n pkceEnabled: (_h = (_g = preset.pkceEnabled) !== null && _g !== void 0 ? _g : defaults.pkceEnabled) !== null && _h !== void 0 ? _h : true,\n scope: (_k = (_j = preset.scope) !== null && _j !== void 0 ? _j : defaults.scope) !== null && _k !== void 0 ? _k : DEFAULT_SCOPES[providerId],\n additionalParameters,\n additionalResourceHeaders,\n logoutUrl: (_l = preset.logoutUrl) !== null && _l !== void 0 ? _l : defaults.logoutUrl,\n logsEnabled: (_m = preset.logsEnabled) !== null && _m !== void 0 ? _m : defaults.logsEnabled,\n };\n if (!config.authorizationBaseUrl) {\n throw new Error(`[authConnect] ${providerId} authorizationBaseUrl is required.`);\n }\n return config;\n};\nconst buildAuthConnectProviders = (presets) => {\n if (!presets) {\n return {};\n }\n const providers = {};\n if (presets.auth0) {\n providers.auth0 = buildAuth0Config(presets.auth0);\n }\n if (presets.azure) {\n providers.azure = buildAzureConfig(presets.azure);\n }\n if (presets.cognito) {\n providers.cognito = buildCognitoConfig(presets.cognito);\n }\n if (presets.okta) {\n providers.okta = buildOktaConfig(presets.okta);\n }\n if (presets.onelogin) {\n providers.onelogin = buildOneLoginConfig(presets.onelogin);\n }\n return providers;\n};\nconst isAuthConnectProvider = (provider) => AUTH_CONNECT_PROVIDERS.includes(provider);\nconst isAuthConnectProviderOptions = (options) => isAuthConnectProvider(options.provider);\nconst isAuthConnectLoginOptions = (options) => isAuthConnectProvider(options.provider);\nconst mapLoginOptions = (options) => {\n var _a;\n if (isAuthConnectLoginOptions(options)) {\n return {\n provider: 'oauth2',\n options: Object.assign({ providerId: options.provider }, ((_a = options.options) !== null && _a !== void 0 ? _a : {})),\n };\n }\n return options;\n};\nconst mapProviderOptions = (options) => {\n if (isAuthConnectProviderOptions(options)) {\n return {\n provider: 'oauth2',\n providerId: options.provider,\n };\n }\n return options;\n};\nconst mapRefreshOptions = (options) => mapLoginOptions(options);\nconst mergeOAuth2Configs = (presets, oauth2) => {\n if (!Object.keys(presets).length && !oauth2) {\n return oauth2;\n }\n return Object.assign(Object.assign({}, presets), (oauth2 !== null && oauth2 !== void 0 ? oauth2 : {}));\n};\nconst createAuthConnectClient = (client) => ({\n initialize: async (options) => {\n const { authConnect, oauth2 } = options, rest = __rest(options, [\"authConnect\", \"oauth2\"]);\n const presetProviders = buildAuthConnectProviders(authConnect);\n const mergedOauth2 = mergeOAuth2Configs(presetProviders, oauth2);\n const payload = Object.assign(Object.assign({}, rest), (mergedOauth2 ? { oauth2: mergedOauth2 } : {}));\n return client.initialize(payload);\n },\n login: async (options) => {\n if (isAuthConnectProvider(options.provider)) {\n const mapped = mapLoginOptions(options);\n const response = await client.login(mapped);\n return {\n provider: options.provider,\n result: response.result,\n };\n }\n return client.login(options);\n },\n logout: async (options) => client.logout(mapProviderOptions(options)),\n isLoggedIn: async (options) => client.isLoggedIn(mapProviderOptions(options)),\n getAuthorizationCode: async (options) => client.getAuthorizationCode(mapProviderOptions(options)),\n refresh: async (options) => client.refresh(mapRefreshOptions(options)),\n providerSpecificCall: async (options) => client.providerSpecificCall(options),\n getPluginVersion: async () => client.getPluginVersion(),\n});\nconst SocialLoginAuthConnect = createAuthConnectClient(SocialLoginBase);\nexport { createAuthConnectClient, SocialLoginAuthConnect };\n//# sourceMappingURL=auth-connect.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, nonce }));\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `google_oauth_${nonce || Date.now()}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_b) {\n // BroadcastChannel not supported, fall back to postMessage only\n }\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 cleanup = () => {\n window.removeEventListener('message', handleMessage);\n clearInterval(popupClosedInterval);\n clearTimeout(timeoutHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const processOAuthResponse = (data) => {\n if (this.loginType === 'online') {\n const { accessToken, idToken } = 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 else {\n reject(new Error('Invalid OAuth response: missing accessToken or idToken'));\n }\n }\n else {\n const { serverAuthCode } = data;\n if (!serverAuthCode) {\n reject(new Error('Invalid OAuth response: missing serverAuthCode'));\n return;\n }\n resolve({\n provider: 'google',\n result: {\n responseType: 'offline',\n serverAuthCode,\n },\n });\n }\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 cleanup();\n processOAuthResponse(event.data);\n }\n else if (((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) === 'oauth-error') {\n cleanup();\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 // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n var _a;\n const data = event.data;\n if ((_a = data === null || data === void 0 ? void 0 : data.source) === null || _a === void 0 ? void 0 : _a.toString().startsWith('angular'))\n return;\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n cleanup();\n processOAuthResponse(data);\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n cleanup();\n const errorMessage = data.error || 'User cancelled the OAuth flow';\n reject(new Error(errorMessage));\n }\n };\n }\n window.addEventListener('message', handleMessage);\n // Timeout after 5 minutes\n timeoutHandle = setTimeout(() => {\n cleanup();\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('OAuth timeout'));\n }, 300000);\n popupClosedInterval = setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup();\n reject(new Error('Popup closed'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we rely on timeout and message handlers.\n clearInterval(popupClosedInterval);\n }\n }, 1000);\n });\n }\n}\n//# sourceMappingURL=google-provider.js.map","import { __rest } from \"tslib\";\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 normalizeScopeValue(scope) {\n if (!scope)\n return '';\n if (typeof scope === 'string')\n return scope;\n if (Array.isArray(scope))\n return scope.filter(Boolean).join(' ');\n return '';\n }\n normalizeConfig(providerId, config) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const appId = (_a = config.appId) !== null && _a !== void 0 ? _a : config.clientId;\n const authorizationBaseUrl = (_b = config.authorizationBaseUrl) !== null && _b !== void 0 ? _b : config.authorizationEndpoint;\n const accessTokenEndpoint = (_c = config.accessTokenEndpoint) !== null && _c !== void 0 ? _c : config.tokenEndpoint;\n const logoutUrl = (_d = config.logoutUrl) !== null && _d !== void 0 ? _d : config.endSessionEndpoint;\n const scopeSource = (_e = config.scope) !== null && _e !== void 0 ? _e : config.scopes;\n if (!appId) {\n throw new Error(`OAuth2 provider '${providerId}' requires appId (or clientId).`);\n }\n if (!config.redirectUrl) {\n throw new Error(`OAuth2 provider '${providerId}' requires redirectUrl.`);\n }\n if (!authorizationBaseUrl && !config.issuerUrl) {\n throw new Error(`OAuth2 provider '${providerId}' requires authorizationBaseUrl (or authorizationEndpoint) or issuerUrl.`);\n }\n return {\n appId,\n issuerUrl: config.issuerUrl,\n authorizationBaseUrl,\n accessTokenEndpoint,\n redirectUrl: config.redirectUrl,\n resourceUrl: config.resourceUrl,\n responseType: ((_f = config.responseType) !== null && _f !== void 0 ? _f : 'code'),\n pkceEnabled: (_g = config.pkceEnabled) !== null && _g !== void 0 ? _g : true,\n scope: this.normalizeScopeValue(scopeSource),\n additionalParameters: config.additionalParameters,\n loginHint: config.loginHint,\n prompt: config.prompt,\n additionalTokenParameters: config.additionalTokenParameters,\n additionalResourceHeaders: config.additionalResourceHeaders,\n logoutUrl,\n postLogoutRedirectUrl: config.postLogoutRedirectUrl,\n additionalLogoutParameters: config.additionalLogoutParameters,\n logsEnabled: (_h = config.logsEnabled) !== null && _h !== void 0 ? _h : false,\n };\n }\n async ensureDiscovered(providerId) {\n const config = this.providers.get(providerId);\n if (!(config === null || config === void 0 ? void 0 : config.issuerUrl))\n return;\n // Resolve endpoints lazily.\n if (config.authorizationBaseUrl && config.accessTokenEndpoint)\n return;\n const issuer = config.issuerUrl.replace(/\\/+$/, '');\n const discoveryUrl = `${issuer}/.well-known/openid-configuration`;\n const resp = await fetch(discoveryUrl);\n if (!resp.ok) {\n const text = await resp.text().catch(() => '');\n throw new Error(`OAuth2 discovery failed (${resp.status}): ${text || discoveryUrl}`);\n }\n const payload = (await resp.json());\n const authorizationEndpoint = payload['authorization_endpoint'];\n const tokenEndpoint = payload['token_endpoint'];\n const endSessionEndpoint = payload['end_session_endpoint'];\n if (!config.authorizationBaseUrl && typeof authorizationEndpoint === 'string') {\n config.authorizationBaseUrl = authorizationEndpoint;\n }\n if (!config.accessTokenEndpoint && typeof tokenEndpoint === 'string') {\n config.accessTokenEndpoint = tokenEndpoint;\n }\n if (!config.logoutUrl && typeof endSessionEndpoint === 'string') {\n config.logoutUrl = endSessionEndpoint;\n }\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Discovery resolved`, {\n authorizationBaseUrl: config.authorizationBaseUrl,\n accessTokenEndpoint: config.accessTokenEndpoint,\n logoutUrl: config.logoutUrl,\n });\n }\n }\n /**\n * Initialize multiple OAuth2 providers\n */\n async initializeProviders(configs) {\n for (const [providerId, config] of Object.entries(configs)) {\n const internalConfig = this.normalizeConfig(providerId, config);\n this.providers.set(providerId, internalConfig);\n if (internalConfig.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Initialized with config:`, {\n appId: internalConfig.appId,\n issuerUrl: internalConfig.issuerUrl,\n authorizationBaseUrl: internalConfig.authorizationBaseUrl,\n redirectUrl: internalConfig.redirectUrl,\n responseType: internalConfig.responseType,\n pkceEnabled: internalConfig.pkceEnabled,\n });\n }\n // Pre-resolve discovery on web if issuerUrl is provided.\n await this.ensureDiscovered(providerId);\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, _e, _f, _g, _h, _j;\n const { providerId } = options;\n const config = this.getProvider(providerId);\n await this.ensureDiscovered(providerId);\n const redirectUri = (_a = options.redirectUrl) !== null && _a !== void 0 ? _a : config.redirectUrl;\n const scope = this.normalizeScopeValue((_c = (_b = options.scope) !== null && _b !== void 0 ? _b : options.scopes) !== null && _c !== void 0 ? _c : config.scope);\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 // 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 // Convenience OIDC options\n const mergedAdditionalParams = Object.assign(Object.assign({}, ((_f = config.additionalParameters) !== null && _f !== void 0 ? _f : {})), ((_g = options.additionalParameters) !== null && _g !== void 0 ? _g : {}));\n const loginHint = (_h = options.loginHint) !== null && _h !== void 0 ? _h : config.loginHint;\n const prompt = (_j = options.prompt) !== null && _j !== void 0 ? _j : config.prompt;\n if (loginHint && !('login_hint' in mergedAdditionalParams)) {\n mergedAdditionalParams.login_hint = loginHint;\n }\n if (prompt && !('prompt' in mergedAdditionalParams)) {\n mergedAdditionalParams.prompt = prompt;\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 merged additional parameters\n for (const [key, value] of Object.entries(mergedAdditionalParams)) {\n if (value !== undefined) {\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 if (!config.authorizationBaseUrl) {\n throw new Error(`OAuth2 provider '${providerId}' is missing authorizationBaseUrl (discovery may have failed).`);\n }\n const authUrl = `${config.authorizationBaseUrl}?${params.toString()}`;\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Opening authorization URL:`, authUrl);\n }\n if (options.flow === 'redirect') {\n // Trigger a full-page redirect. The promise will not resolve because the page navigates away.\n window.location.assign(authUrl);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return new Promise(() => { });\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `oauth2_${state}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_a) {\n // BroadcastChannel not supported, fall back to postMessage only\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] BroadcastChannel not supported, using postMessage only`);\n }\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const handleOAuthMessage = (data) => {\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'oauth2') {\n return false;\n }\n // Check providerId matches if present\n if ((data === null || data === void 0 ? void 0 : data.providerId) && data.providerId !== providerId) {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _a = data, { provider: _ignoredProvider, type: _ignoredType } = _a, payload = __rest(_a, [\"provider\", \"type\"]);\n resolve({\n provider: 'oauth2',\n result: payload,\n });\n return true;\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'oauth2') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(data.error || 'OAuth2 login was cancelled.'));\n return true;\n }\n return false;\n };\n // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n handleOAuthMessage(event.data);\n };\n }\n const messageHandler = (event) => {\n if (event.origin !== window.location.origin) {\n return;\n }\n handleOAuthMessage(event.data);\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('OAuth2 login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error('OAuth2 login window was closed.'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we just rely on the timeout\n // and message handlers. Clear the interval to avoid repeated errors.\n clearInterval(popupClosedInterval);\n if (config.logsEnabled) {\n console.log(`[OAuth2:${providerId}] Cannot check popup.closed due to cross-origin restrictions. ` +\n 'Relying on message handlers and timeout.');\n }\n }\n }, 1000);\n });\n }\n async logout(providerId) {\n await this.ensureDiscovered(providerId);\n const config = this.providers.get(providerId);\n const stored = this.getStoredTokens(providerId);\n localStorage.removeItem(this.getTokensKey(providerId));\n // If logout URL is configured, build an end-session URL (OIDC) when possible.\n if (config === null || config === void 0 ? void 0 : config.logoutUrl) {\n try {\n const url = new URL(config.logoutUrl);\n if (stored === null || stored === void 0 ? void 0 : stored.idToken) {\n url.searchParams.set('id_token_hint', stored.idToken);\n }\n const postLogout = config.postLogoutRedirectUrl;\n if (postLogout) {\n url.searchParams.set('post_logout_redirect_uri', postLogout);\n }\n if (config.additionalLogoutParameters) {\n for (const [k, v] of Object.entries(config.additionalLogoutParameters)) {\n url.searchParams.set(k, v);\n }\n }\n window.open(url.toString(), '_blank');\n }\n catch (_a) {\n window.open(config.logoutUrl, '_blank');\n }\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 await this.refreshToken(providerId);\n }\n async refreshToken(providerId, refreshToken, additionalParameters) {\n var _a, _b, _c, _d, _e, _f;\n await this.ensureDiscovered(providerId);\n const config = this.getProvider(providerId);\n const stored = this.getStoredTokens(providerId);\n const effectiveRefreshToken = refreshToken !== null && refreshToken !== void 0 ? refreshToken : stored === null || stored === void 0 ? void 0 : stored.refreshToken;\n if (!effectiveRefreshToken) {\n throw new Error(`No OAuth2 refresh token is available for provider '${providerId}'. Include offline_access scope to receive one.`);\n }\n if (!config.accessTokenEndpoint) {\n throw new Error(`No accessTokenEndpoint configured for provider '${providerId}'.`);\n }\n const tokenResponse = await this.refreshWithRefreshToken(providerId, effectiveRefreshToken, additionalParameters);\n const expiresAt = tokenResponse.expires_in ? Date.now() + tokenResponse.expires_in * 1000 : Date.now() + 3600000;\n const scopeArray = (_c = (_b = (_a = tokenResponse.scope) === null || _a === void 0 ? void 0 : _a.split(' ').filter(Boolean)) !== null && _b !== void 0 ? _b : stored === null || stored === void 0 ? void 0 : stored.scope) !== null && _c !== void 0 ? _c : [];\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 const nextRefreshToken = (_d = tokenResponse.refresh_token) !== null && _d !== void 0 ? _d : effectiveRefreshToken;\n this.persistTokens(providerId, {\n accessToken: tokenResponse.access_token,\n refreshToken: nextRefreshToken,\n idToken: tokenResponse.id_token,\n expiresAt,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n });\n return {\n providerId,\n accessToken: {\n token: tokenResponse.access_token,\n tokenType: tokenResponse.token_type,\n expires: new Date(expiresAt).toISOString(),\n refreshToken: nextRefreshToken,\n },\n idToken: (_e = tokenResponse.id_token) !== null && _e !== void 0 ? _e : null,\n refreshToken: nextRefreshToken !== null && nextRefreshToken !== void 0 ? nextRefreshToken : null,\n resourceData,\n scope: scopeArray,\n tokenType: tokenResponse.token_type,\n expiresIn: (_f = tokenResponse.expires_in) !== null && _f !== void 0 ? _f : null,\n };\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 await this.ensureDiscovered(providerId);\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.additionalTokenParameters) {\n for (const [k, v] of Object.entries(config.additionalTokenParameters)) {\n params.set(k, v);\n }\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, additionalParameters) {\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 if (config.additionalTokenParameters) {\n for (const [k, v] of Object.entries(config.additionalTokenParameters)) {\n params.set(k, v);\n }\n }\n if (additionalParameters) {\n for (const [k, v] of Object.entries(additionalParameters)) {\n params.set(k, v);\n }\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 return (await response.json());\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 decodeIdToken(idToken) {\n const parts = idToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid JWT: missing parts');\n }\n const payload = parts[1];\n const normalized = payload.replace(/-/g, '+').replace(/_/g, '/');\n const padded = normalized + '='.repeat((4 - (normalized.length % 4)) % 4);\n const json = atob(padded);\n return JSON.parse(json);\n }\n getAccessTokenExpirationDate(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.expiresAt))\n return { expirationDate: null };\n return { expirationDate: new Date(tokens.expiresAt).toISOString() };\n }\n isAccessTokenAvailable(providerId) {\n const tokens = this.getStoredTokens(providerId);\n return { isAvailable: !!(tokens === null || tokens === void 0 ? void 0 : tokens.accessToken) };\n }\n isAccessTokenExpired(providerId) {\n const tokens = this.getStoredTokens(providerId);\n if (!(tokens === null || tokens === void 0 ? void 0 : tokens.expiresAt))\n return { isExpired: true };\n return { isExpired: tokens.expiresAt <= Date.now() };\n }\n isRefreshTokenAvailable(providerId) {\n const tokens = this.getStoredTokens(providerId);\n return { isAvailable: !!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken) };\n }\n}\n//# sourceMappingURL=oauth2-provider.js.map","import { __rest } from \"tslib\";\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 // Use BroadcastChannel for cross-origin communication (works when postMessage doesn't)\n const channelName = `twitter_oauth_${state}`;\n let broadcastChannel = null;\n try {\n broadcastChannel = new BroadcastChannel(channelName);\n }\n catch (_a) {\n // BroadcastChannel not supported, fall back to postMessage only\n }\n const cleanup = (messageHandler, timeoutHandle, intervalHandle) => {\n window.removeEventListener('message', messageHandler);\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n if (broadcastChannel) {\n broadcastChannel.close();\n }\n };\n const handleOAuthMessage = (data) => {\n if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-response') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'twitter') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _a = data, { provider: _ignoredProvider, type: _ignoredType } = _a, payload = __rest(_a, [\"provider\", \"type\"]);\n resolve({\n provider: 'twitter',\n result: payload,\n });\n return true;\n }\n else if ((data === null || data === void 0 ? void 0 : data.type) === 'oauth-error') {\n if ((data === null || data === void 0 ? void 0 : data.provider) && data.provider !== 'twitter') {\n return false;\n }\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error(data.error || 'Twitter login was cancelled.'));\n return true;\n }\n return false;\n };\n // Listen for BroadcastChannel messages\n if (broadcastChannel) {\n broadcastChannel.onmessage = (event) => {\n handleOAuthMessage(event.data);\n };\n }\n const messageHandler = (event) => {\n if (event.origin !== window.location.origin) {\n return;\n }\n handleOAuthMessage(event.data);\n };\n window.addEventListener('message', messageHandler);\n const timeoutHandle = window.setTimeout(() => {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n try {\n popup.close();\n }\n catch (_a) {\n // Ignore cross-origin errors when closing\n }\n reject(new Error('Twitter login timed out.'));\n }, 300000);\n const popupClosedInterval = window.setInterval(() => {\n try {\n // Check if popup is closed - this may throw cross-origin errors for some providers\n if (popup.closed) {\n cleanup(messageHandler, timeoutHandle, popupClosedInterval);\n reject(new Error('Twitter login window was closed.'));\n }\n }\n catch (_a) {\n // Cross-origin error when checking popup.closed - this happens when the popup\n // navigates to a third-party OAuth provider with strict security settings.\n // We can't detect if the window was closed, so we rely on timeout and message handlers.\n clearInterval(popupClosedInterval);\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 // Auto-finish OAuth redirects only when running inside a popup window.\n // For redirect-based flows (full page navigation), the app should call `handleRedirectCallback()` explicitly.\n const hasPending = !!localStorage.getItem(SocialLoginWeb.OAUTH_STATE_KEY);\n const isPopup = !!window.opener || SocialLoginWeb.POPUP_WINDOW_NAMES.has(window.name);\n if (hasPending && isPopup) {\n this.finishOAuthRedirectInPopup().catch((error) => {\n console.error('Failed to finish OAuth redirect', error);\n try {\n window.close();\n }\n catch (_a) {\n // ignore\n }\n });\n }\n }\n async parseRedirectResult() {\n var _a;\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 let nonce;\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 nonce = parsed.nonce;\n }\n catch (_b) {\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 return { provider, state, nonce, result };\n }\n async finishOAuthRedirectInPopup() {\n var _a;\n const parsed = await this.parseRedirectResult();\n const result = parsed.result;\n if (!result)\n return;\n // Build the message to send\n let message;\n if ('error' in result) {\n const resolvedProvider = (_a = parsed.provider) !== null && _a !== void 0 ? _a : null;\n message = {\n type: 'oauth-error',\n provider: resolvedProvider,\n error: result.error,\n };\n }\n else {\n message = Object.assign({ type: 'oauth-response', provider: result.provider }, result.result);\n }\n // Try postMessage first (works when window.opener is accessible)\n try {\n if (window.opener) {\n window.opener.postMessage(message, window.location.origin);\n }\n }\n catch (_b) {\n // Cross-origin error - window.opener may not be accessible\n console.log('postMessage to opener failed, using BroadcastChannel');\n }\n // Also use BroadcastChannel as a fallback (works across same-origin windows\n // even when window.opener is not accessible due to cross-origin navigation)\n try {\n // Determine the channel name based on provider and state/nonce\n let channelName = null;\n if (parsed.provider === 'oauth2' && parsed.state) {\n channelName = `oauth2_${parsed.state}`;\n }\n else if (parsed.provider === 'twitter' && parsed.state) {\n channelName = `twitter_oauth_${parsed.state}`;\n }\n else if (parsed.provider === 'google' && parsed.nonce) {\n channelName = `google_oauth_${parsed.nonce}`;\n }\n if (channelName) {\n const channel = new BroadcastChannel(channelName);\n channel.postMessage(message);\n channel.close();\n }\n }\n catch (_c) {\n // BroadcastChannel not supported or other error\n console.log('BroadcastChannel not available');\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 refreshToken(options) {\n if (options.provider !== 'oauth2') {\n throw new Error('refreshToken is only implemented for oauth2 on web');\n }\n return this.oauth2Provider.refreshToken(options.providerId, options.refreshToken, options.additionalParameters);\n }\n async handleRedirectCallback() {\n const parsed = await this.parseRedirectResult();\n const result = parsed.result;\n if (!result)\n return null;\n if ('error' in result) {\n throw new Error(result.error);\n }\n return result;\n }\n async decodeIdToken(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.idToken) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.token;\n if (!token) {\n throw new Error('idToken (or token) is required');\n }\n const claims = this.oauth2Provider.decodeIdToken(token);\n return { claims };\n }\n async getAccessTokenExpirationDate(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.accessTokenExpirationDate) !== 'number') {\n throw new Error('accessTokenExpirationDate is required');\n }\n return { date: new Date(options.accessTokenExpirationDate).toISOString() };\n }\n async isAccessTokenAvailable(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.accessToken) !== null && _a !== void 0 ? _a : null;\n return { isAvailable: typeof token === 'string' && token.length > 0 };\n }\n async isAccessTokenExpired(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.accessTokenExpirationDate) !== 'number') {\n throw new Error('accessTokenExpirationDate is required');\n }\n return { isExpired: options.accessTokenExpirationDate <= Date.now() };\n }\n async isRefreshTokenAvailable(options) {\n var _a;\n const token = (_a = options === null || options === void 0 ? void 0 : options.refreshToken) !== null && _a !== void 0 ? _a : null;\n return { isAvailable: typeof token === 'string' && token.length > 0 };\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n async openSecureWindow(options) {\n const w = 600;\n const h = 550;\n const settings = [\n ['width', w],\n ['height', h],\n ['left', screen.width / 2 - w / 2],\n ['top', screen.height / 2 - h / 2],\n ]\n .map((x) => x.join('='))\n .join(',');\n const popup = window.open(options.authEndpoint, 'Authorization', settings);\n if (typeof popup.focus === 'function') {\n popup.focus();\n }\n return new Promise((resolve, reject) => {\n const bc = new BroadcastChannel(options.broadcastChannelName || 'oauth-channel');\n bc.addEventListener('message', (event) => {\n if (event.data.startsWith(options.redirectUri)) {\n bc.close();\n resolve({ redirectedUri: event.data });\n }\n else {\n bc.close();\n reject(new Error('Redirect URI does not match, expected ' + options.redirectUri + ' but got ' + event.data));\n }\n });\n setTimeout(() => {\n bc.close();\n reject(new Error('The sign-in flow timed out'));\n }, 5 * 60000);\n });\n }\n}\nSocialLoginWeb.OAUTH_STATE_KEY = 'social_login_oauth_pending';\nSocialLoginWeb.POPUP_WINDOW_NAMES = new Set(['OAuth2Login', 'XLogin', 'Google Sign In', 'Authorization']);\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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","x_google_ignoreList":[1]}
|